├── .distignore ├── .editorconfig ├── .github └── workflows │ ├── push-asset-readme-update.yml.yml │ └── push-to-deploy.yml ├── .gitignore ├── .wordpress-org ├── banner-1544x500.png ├── banner-772x250.png ├── icon-128x128.png ├── icon-256x256.png ├── screenshot-1.png ├── screenshot-2.png ├── screenshot-3.png ├── screenshot-4.png └── screenshot-5.png ├── Gruntfile.js ├── README.md ├── admin ├── bsf-analytics │ ├── assets │ │ └── css │ │ │ ├── minified │ │ │ ├── style-rtl.min.css │ │ │ └── style.min.css │ │ │ └── unminified │ │ │ ├── style-rtl.css │ │ │ └── style.css │ ├── class-bsf-analytics-loader.php │ ├── class-bsf-analytics-stats.php │ ├── class-bsf-analytics.php │ └── version.json └── notices │ ├── class-astra-notices.php │ └── notices.js ├── assets └── css │ ├── fullwidth-template-no-header-footer.css │ ├── fullwidth-template-no-sidebar.css │ └── fullwidth-template.css ├── class-fullwidth-page-templates.php ├── fullwidth-page-template.php ├── index.php ├── languages └── fullwidth-templates.pot ├── package-lock.json ├── package.json ├── readme.txt └── templates ├── default ├── index.php ├── template-helpers.php ├── template-page-builder-no-header-footer.php ├── template-page-builder-no-sidebar.php └── template-page-builder.php └── index.php /.distignore: -------------------------------------------------------------------------------- 1 | # A set of files you probably don't want in your WordPress.org distribution 2 | .distignore 3 | .editorconfig 4 | .git 5 | .gitignore 6 | .gitlab-ci.yml 7 | .travis.yml 8 | .DS_Store 9 | Thumbs.db 10 | behat.yml 11 | bin 12 | circle.yml 13 | composer.json 14 | composer.lock 15 | Gruntfile.js 16 | package.json 17 | phpunit.xml 18 | phpunit.xml.dist 19 | multisite.xml 20 | multisite.xml.dist 21 | phpcs.xml 22 | phpcs.xml.dist 23 | README.md 24 | wp-cli.local.yml 25 | yarn.lock 26 | tests 27 | vendor 28 | node_modules 29 | *.sql 30 | *.tar.gz 31 | *.zip 32 | package-lock.json 33 | .github 34 | .wordpress-org 35 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # This file is for unifying the coding style for different editors and IDEs 2 | # editorconfig.org 3 | 4 | # WordPress Coding Standards 5 | # https://make.wordpress.org/core/handbook/coding-standards/ 6 | 7 | root = true 8 | 9 | [*] 10 | charset = utf-8 11 | end_of_line = lf 12 | insert_final_newline = true 13 | trim_trailing_whitespace = true 14 | indent_style = tab 15 | indent_size = 4 16 | 17 | [{.jshintrc,*.json,*.yml}] 18 | indent_style = space 19 | indent_size = 2 20 | 21 | [{*.txt,wp-config-sample.php}] 22 | end_of_line = crlf 23 | -------------------------------------------------------------------------------- /.github/workflows/push-asset-readme-update.yml.yml: -------------------------------------------------------------------------------- 1 | name: Plugin asset/readme update 2 | on: 3 | push: 4 | branches: 5 | - master 6 | jobs: 7 | master: 8 | name: Push to master 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@master 12 | - name: WordPress.org plugin asset/readme update 13 | uses: 10up/action-wordpress-plugin-asset-update@stable 14 | env: 15 | SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} 16 | SVN_USERNAME: ${{ secrets.SVN_USERNAME }} 17 | -------------------------------------------------------------------------------- /.github/workflows/push-to-deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to WordPress.org 2 | on: 3 | push: 4 | tags: 5 | - "*" 6 | jobs: 7 | tag: 8 | name: New tag 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@master 12 | - name: WordPress Plugin Deploy 13 | uses: 10up/action-wordpress-plugin-asset-update@stable 14 | env: 15 | SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} 16 | SVN_USERNAME: ${{ secrets.SVN_USERNAME }} 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | Thumbs.db 3 | wp-cli.local.yml 4 | node_modules/ 5 | *.zip 6 | *.tar.gz 7 | -------------------------------------------------------------------------------- /.wordpress-org/banner-1544x500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brainstormforce/fullwidth-templates/16a95b9d3bd791f4fbc812bb01d4faf180955192/.wordpress-org/banner-1544x500.png -------------------------------------------------------------------------------- /.wordpress-org/banner-772x250.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brainstormforce/fullwidth-templates/16a95b9d3bd791f4fbc812bb01d4faf180955192/.wordpress-org/banner-772x250.png -------------------------------------------------------------------------------- /.wordpress-org/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brainstormforce/fullwidth-templates/16a95b9d3bd791f4fbc812bb01d4faf180955192/.wordpress-org/icon-128x128.png -------------------------------------------------------------------------------- /.wordpress-org/icon-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brainstormforce/fullwidth-templates/16a95b9d3bd791f4fbc812bb01d4faf180955192/.wordpress-org/icon-256x256.png -------------------------------------------------------------------------------- /.wordpress-org/screenshot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brainstormforce/fullwidth-templates/16a95b9d3bd791f4fbc812bb01d4faf180955192/.wordpress-org/screenshot-1.png -------------------------------------------------------------------------------- /.wordpress-org/screenshot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brainstormforce/fullwidth-templates/16a95b9d3bd791f4fbc812bb01d4faf180955192/.wordpress-org/screenshot-2.png -------------------------------------------------------------------------------- /.wordpress-org/screenshot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brainstormforce/fullwidth-templates/16a95b9d3bd791f4fbc812bb01d4faf180955192/.wordpress-org/screenshot-3.png -------------------------------------------------------------------------------- /.wordpress-org/screenshot-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brainstormforce/fullwidth-templates/16a95b9d3bd791f4fbc812bb01d4faf180955192/.wordpress-org/screenshot-4.png -------------------------------------------------------------------------------- /.wordpress-org/screenshot-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brainstormforce/fullwidth-templates/16a95b9d3bd791f4fbc812bb01d4faf180955192/.wordpress-org/screenshot-5.png -------------------------------------------------------------------------------- /Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function( grunt ) { 2 | 3 | 'use strict'; 4 | var banner = '/**\n * <%= pkg.homepage %>\n * Copyright (c) <%= grunt.template.today("yyyy") %>\n * This file is generated automatically. Do not edit.\n */\n'; 5 | // Project configuration 6 | grunt.initConfig( { 7 | 8 | pkg: grunt.file.readJSON( 'package.json' ), 9 | 10 | addtextdomain: { 11 | options: { 12 | textdomain: 'fullwidth-templates', 13 | }, 14 | target: { 15 | files: { 16 | src: [ '*.php', '**/*.php', '!node_modules/**', '!php-tests/**', '!bin/**' ] 17 | } 18 | } 19 | }, 20 | 21 | wp_readme_to_markdown: { 22 | your_target: { 23 | files: { 24 | 'README.md': 'readme.txt' 25 | } 26 | }, 27 | }, 28 | 29 | makepot: { 30 | target: { 31 | options: { 32 | domainPath: '/languages', 33 | mainFile: 'fullwidth-page-template.php', 34 | potFilename: 'fullwidth-templates.pot', 35 | potHeaders: { 36 | poedit: true, 37 | 'x-poedit-keywordslist': true 38 | }, 39 | type: 'wp-plugin', 40 | updateTimestamp: true 41 | } 42 | } 43 | }, 44 | } ); 45 | 46 | grunt.loadNpmTasks( 'grunt-wp-i18n' ); 47 | grunt.loadNpmTasks( 'grunt-wp-readme-to-markdown' ); 48 | grunt.registerTask( 'i18n', ['addtextdomain', 'makepot'] ); 49 | grunt.registerTask( 'readme', ['wp_readme_to_markdown'] ); 50 | 51 | grunt.util.linefeed = '\n'; 52 | 53 | }; 54 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fullwidth Templates for Any Theme & Page Builder # 2 | **Contributors:** [brainstormforce](https://profiles.wordpress.org/brainstormforce), [WPCrafter](https://profiles.wordpress.org/WPCrafter), [ramiy](https://profiles.wordpress.org/ramiy) 3 | **Tags:** full width, fullwidth, template, beaver builder, elementor, genesis, primer, full width template, remove sidebar, page builder 4 | **Donate link:** https://www.paypal.me/BrainstormForce 5 | **Requires at least:** 4.2 6 | **Tested up to:** 6.8 7 | **Stable tag:** 1.1.1 8 | **License:** GPLv2 or later 9 | **License URI:** http://www.gnu.org/licenses/gpl-2.0.html 10 | 11 | When using a Page Builder, things like page title, boxed layout usually limit your creativity. This plugin helps you go fullwidth on any* theme. 12 | 13 | ## Description ## 14 | **Full Width Page Templates For Your Website** 15 | 16 | Does your theme offer full width page templates? Need freedom to design beautiful full width layouts with page builder like Beaver Builder, Elementor? Need a complete blank template without header or footer for your landing pages? 17 | 18 | This plugin adds Fullwidth Page Templates to overcome these limitations. 19 | 20 | ### Here is a quick video explaining how this plugin works ### 21 | 22 | [youtube https://www.youtube.com/watch?v=LsIrXPHC0xM] 23 | 24 | [Try it out on a free dummy site](https://bsf.io/fullwidth-templates-demo) 25 | 26 | **Blank Template** 27 | 28 | * Removes header, footer, sidebar, comments, title and leaves you with a plain canvas 29 | * Awesome for landing pages where you need complete control over your layout 30 | 31 | **Full Width Template** 32 | 33 | * Removes Sidebar, page title, comments and stretches the layout to full width 34 | * Ideal if you're using a Page Builder 35 | 36 | **Bonus - No Sidebar Template** 37 | 38 | * Just Removes Sidebar 39 | * Perfect if your theme does not have No Sidebar option. 40 | * Rest of the layout & styling will remain intact. 41 | 42 | 43 | **Made to work with Page Builders** 44 | When you're using a Page Builder, things like the default page title, boxed layout, extra margin and padding usually get in your way. This plugin puts you in absolute control and removes all unnecessary elements from your layout. 45 | 46 | **Dead Simple** 47 | It adds three simple options for your pages & posts. Just choose the one and you should be all set. 48 | 49 | **Potable & No Lock-in** 50 | If you're anything like us, you care what happens when you switch your themes. Generally changing theme means, you will need to edit all your pages and change templates. But if you're using a plugin like this - you won't have to worry about it. 51 | 52 | **Supported & Actively Developed** 53 | Need help with something? Have an issue to report? [Get in touch][1] with us on GitHub. 54 | 55 | **Some of the popular themes** 56 | 57 | * Genesis Framework by StudioPress 58 | * Primer Theme by GoDaddy 59 | * Twenty Sixteen 60 | 61 |
62 | ### Disclaimer - ### 63 | 64 | This option works on most of the themes; but it might not work on few depending on it's layout structure. 65 | Please open up an issue on GitHub or send us a pull request for adding compatibility with your theme. 66 |

67 |
68 | 69 | Project by [Brainstorm Force][3]. 70 | [1]: https://github.com/brainstormforce/fullwidth-templates/ 71 | [2]: https://github.com/brainstormforce/fullwidth-templates/ 72 | [3]: https://www.brainstormforce.com/ 73 | 74 | ## Installation ## 75 | 76 | 1. Install Fullwidth Templates either via the WordPress plugin directory or by uploading the files to your server at wp-content/plugins. 77 | 2. Activate the plugin through the 'Plugins' menu in WordPress 78 | 3. When creating or editing pages you will see options to select the fullwidth templates in the template selection dropdown, select any of the three templates and update the page. 79 | 80 | Check Screenshots for more details. 81 | 82 | ## Screenshots ## 83 | 1. Extra Template Selection Options for Pages & Posts 84 | 2. Default View on Primer Parent Theme 85 | 3. No Sidebar Template 86 | 4. Fullwidth Template 87 | 5. Blank - No Header / Footer Template 88 | 89 | ## Changelog ## 90 | 91 | ### 1.1.1 ### 92 | - Fix: Fixed compatibility with other plugins with respect to the admin notice. 93 | 94 | ### 1.1.0 ### 95 | - New: Users can now share non-personal usage data to help us test and develop better products. ( Know More ) 96 | 97 | ### 1.0.3 ### 98 | - Make the plugin translation compatible. 99 | 100 | ### 1.0.2 ### 101 | - Prevent direct access to php files. 102 | - Prevent direct access to directories. 103 | - i18n: Load plugin translations. 104 | - i18n: Use translation function for text strings. 105 | 106 | ### 1.0.1 ### 107 | - New: Support for storefront theme. 108 | - New: Support Custom Post types created by plugin Custom Post Type UI. 109 | 110 | ### 1.0.0 ### 111 | - Initial Release 112 | -------------------------------------------------------------------------------- /admin/bsf-analytics/assets/css/minified/style-rtl.min.css: -------------------------------------------------------------------------------- 1 | [ID*="-optin-notice"]{padding:1px 12px;border-right-color:#007cba}[ID*="-optin-notice"] .notice-container{padding-top:10px;padding-bottom:12px}[ID*="-optin-notice"] .notice-content{margin:0}[ID*="-optin-notice"] .notice-heading{padding:0 0 12px 20px}[ID*="-optin-notice"] .button-primary{margin-left:5px} -------------------------------------------------------------------------------- /admin/bsf-analytics/assets/css/minified/style.min.css: -------------------------------------------------------------------------------- 1 | [ID*="-optin-notice"]{padding:1px 12px;border-left-color:#007cba}[ID*="-optin-notice"] .notice-container{padding-top:10px;padding-bottom:12px}[ID*="-optin-notice"] .notice-content{margin:0}[ID*="-optin-notice"] .notice-heading{padding:0 20px 12px 0}[ID*="-optin-notice"] .button-primary{margin-right:5px} -------------------------------------------------------------------------------- /admin/bsf-analytics/assets/css/unminified/style-rtl.css: -------------------------------------------------------------------------------- 1 | [ID*="-optin-notice"] { 2 | padding: 1px 12px; 3 | border-right-color: #007cba; 4 | } 5 | 6 | [ID*="-optin-notice"] .notice-container { 7 | padding-top: 10px; 8 | padding-bottom: 12px; 9 | } 10 | 11 | [ID*="-optin-notice"] .notice-content { 12 | margin: 0; 13 | } 14 | 15 | [ID*="-optin-notice"] .notice-heading { 16 | padding: 0 0 12px 20px; 17 | } 18 | 19 | [ID*="-optin-notice"] .button-primary { 20 | margin-left: 5px; 21 | } -------------------------------------------------------------------------------- /admin/bsf-analytics/assets/css/unminified/style.css: -------------------------------------------------------------------------------- 1 | [ID*="-optin-notice"] { 2 | padding: 1px 12px; 3 | border-left-color: #007cba; 4 | } 5 | 6 | [ID*="-optin-notice"] .notice-container { 7 | padding-top: 10px; 8 | padding-bottom: 12px; 9 | } 10 | 11 | [ID*="-optin-notice"] .notice-content { 12 | margin: 0; 13 | } 14 | 15 | [ID*="-optin-notice"] .notice-heading { 16 | padding: 0 20px 12px 0; 17 | } 18 | 19 | [ID*="-optin-notice"] .button-primary { 20 | margin-right: 5px; 21 | } -------------------------------------------------------------------------------- /admin/bsf-analytics/class-bsf-analytics-loader.php: -------------------------------------------------------------------------------- 1 | entities, $data ); 79 | } 80 | 81 | /** 82 | * Load Analytics library. 83 | * 84 | * @return void 85 | */ 86 | public function load_analytics() { 87 | $unique_entities = array(); 88 | 89 | if ( ! empty( $this->entities ) ) { 90 | foreach ( $this->entities as $entity ) { 91 | foreach ( $entity as $key => $data ) { 92 | 93 | if ( isset( $data['path'] ) ) { 94 | if ( file_exists( $data['path'] . '/version.json' ) ) { 95 | $file_contents = file_get_contents( $data['path'] . '/version.json' ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents 96 | $analytics_version = json_decode( $file_contents, 1 ); 97 | $analytics_version = $analytics_version['bsf-analytics-ver']; 98 | 99 | if ( version_compare( $analytics_version, $this->analytics_version, '>' ) ) { 100 | $this->analytics_version = $analytics_version; 101 | $this->analytics_path = $data['path']; 102 | } 103 | } 104 | } 105 | 106 | if ( ! isset( $unique_entities[ $key ] ) ) { 107 | $unique_entities[ $key ] = $data; 108 | } 109 | } 110 | } 111 | 112 | if ( file_exists( $this->analytics_path ) && ! class_exists( 'BSF_Analytics' ) ) { 113 | require_once $this->analytics_path . '/class-bsf-analytics.php'; 114 | new BSF_Analytics( $unique_entities, $this->analytics_path, $this->analytics_version ); 115 | } 116 | } 117 | } 118 | } 119 | -------------------------------------------------------------------------------- /admin/bsf-analytics/class-bsf-analytics-stats.php: -------------------------------------------------------------------------------- 1 | get_default_stats() ); 58 | } 59 | 60 | /** 61 | * Retrieve stats for site. 62 | * 63 | * @return array stats data. 64 | * @since 1.0.0 65 | */ 66 | private function get_default_stats() { 67 | return array( 68 | 'graupi_version' => defined( 'BSF_UPDATER_VERSION' ) ? BSF_UPDATER_VERSION : false, 69 | 'domain_name' => get_site_url(), 70 | 'php_os' => PHP_OS, 71 | 'server_software' => isset( $_SERVER['SERVER_SOFTWARE'] ) ? filter_var( wp_unslash( $_SERVER['SERVER_SOFTWARE'] ), FILTER_SANITIZE_STRING ) : '', 72 | 'mysql_version' => $this->get_mysql_version(), 73 | 'php_version' => $this->get_php_version(), 74 | 'php_max_input_vars' => ini_get( 'max_input_vars' ), // phpcs:ignore:PHPCompatibility.IniDirectives.NewIniDirectives.max_input_varsFound 75 | 'php_post_max_size' => ini_get( 'post_max_size' ), 76 | 'php_max_execution_time' => ini_get( 'max_execution_time' ), 77 | 'php_memory_limit' => ini_get( 'memory_limit' ), 78 | 'zip_installed' => extension_loaded( 'zip' ), 79 | 'imagick_availabile' => extension_loaded( 'imagick' ), 80 | 'xmlreader_exists' => class_exists( 'XMLReader' ), 81 | 'gd_available' => extension_loaded( 'gd' ), 82 | 'curl_version' => $this->get_curl_version(), 83 | 'curl_ssl_version' => $this->get_curl_ssl_version(), 84 | 'is_writable' => $this->is_content_writable(), 85 | 86 | 'wp_version' => get_bloginfo( 'version' ), 87 | 'user_count' => $this->get_user_count(), 88 | 'site_language' => get_locale(), 89 | 'timezone' => wp_timezone_string(), 90 | 'is_ssl' => is_ssl(), 91 | 'is_multisite' => is_multisite(), 92 | 'network_url' => network_site_url(), 93 | 'external_object_cache' => (bool) wp_using_ext_object_cache(), 94 | 'wp_debug' => WP_DEBUG, 95 | 'wp_debug_display' => WP_DEBUG_DISPLAY, 96 | 'script_debug' => SCRIPT_DEBUG, 97 | 98 | 'active_plugins' => $this->get_active_plugins(), 99 | 100 | 'active_theme' => get_template(), 101 | 'active_stylesheet' => get_stylesheet(), 102 | ); 103 | } 104 | 105 | /** 106 | * Get installed PHP version. 107 | * 108 | * @return float PHP version. 109 | * @since 1.0.0 110 | */ 111 | private function get_php_version() { 112 | if ( defined( 'PHP_MAJOR_VERSION' ) && defined( 'PHP_MINOR_VERSION' ) && defined( 'PHP_RELEASE_VERSION' ) ) { // phpcs:ignore 113 | return PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION; 114 | } 115 | 116 | return phpversion(); 117 | } 118 | 119 | /** 120 | * User count on site. 121 | * 122 | * @return int User count. 123 | * @since 1.0.0 124 | */ 125 | private function get_user_count() { 126 | if ( is_multisite() ) { 127 | $user_count = get_user_count(); 128 | } else { 129 | $count = count_users(); 130 | $user_count = $count['total_users']; 131 | } 132 | 133 | return $user_count; 134 | } 135 | 136 | /** 137 | * Get active plugin's data. 138 | * 139 | * @return array active plugin's list. 140 | * @since 1.0.0 141 | */ 142 | private function get_active_plugins() { 143 | if ( ! $this->plugins ) { 144 | // Ensure get_plugin_data function is loaded. 145 | if ( ! function_exists( 'get_plugin_data' ) ) { 146 | require_once ABSPATH . 'wp-admin/includes/plugin.php'; 147 | } 148 | 149 | $plugins = wp_get_active_and_valid_plugins(); 150 | $plugins = array_map( 'get_plugin_data', $plugins ); 151 | $this->plugins = array_map( array( $this, 'format_plugin' ), $plugins ); 152 | } 153 | 154 | return $this->plugins; 155 | } 156 | 157 | /** 158 | * Format plugin data. 159 | * 160 | * @param string $plugin plugin. 161 | * @return array formatted plugin data. 162 | * @since 1.0.0 163 | */ 164 | public function format_plugin( $plugin ) { 165 | return array( 166 | 'name' => html_entity_decode( $plugin['Name'], ENT_COMPAT, 'UTF-8' ), 167 | 'url' => $plugin['PluginURI'], 168 | 'version' => $plugin['Version'], 169 | 'slug' => $plugin['TextDomain'], 170 | 'author_name' => html_entity_decode( wp_strip_all_tags( $plugin['Author'] ), ENT_COMPAT, 'UTF-8' ), 171 | 'author_url' => $plugin['AuthorURI'], 172 | ); 173 | } 174 | 175 | /** 176 | * Curl SSL version. 177 | * 178 | * @return float SSL version. 179 | * @since 1.0.0 180 | */ 181 | private function get_curl_ssl_version() { 182 | $curl = array(); 183 | if ( function_exists( 'curl_version' ) ) { 184 | $curl = curl_version(); // phpcs:ignore WordPress.WP.AlternativeFunctions.curl_curl_version 185 | } 186 | 187 | return isset( $curl['ssl_version'] ) ? $curl['ssl_version'] : false; 188 | } 189 | 190 | /** 191 | * Get cURL version. 192 | * 193 | * @return float cURL version. 194 | * @since 1.0.0 195 | */ 196 | private function get_curl_version() { 197 | if ( function_exists( 'curl_version' ) ) { 198 | $curl = curl_version(); // phpcs:ignore WordPress.WP.AlternativeFunctions.curl_curl_version 199 | } 200 | 201 | return isset( $curl['version'] ) ? $curl['version'] : false; 202 | } 203 | 204 | /** 205 | * Get MySQL version. 206 | * 207 | * @return float MySQL version. 208 | * @since 1.0.0 209 | */ 210 | private function get_mysql_version() { 211 | global $wpdb; 212 | return $wpdb->db_version(); 213 | } 214 | 215 | /** 216 | * Check if content directory is writable. 217 | * 218 | * @return bool 219 | * @since 1.0.0 220 | */ 221 | private function is_content_writable() { 222 | $upload_dir = wp_upload_dir(); 223 | return wp_is_writable( $upload_dir['basedir'] ); 224 | } 225 | } 226 | } 227 | 228 | /** 229 | * Polyfill for sites using WP version less than 5.3 230 | */ 231 | if ( ! function_exists( 'wp_timezone_string' ) ) { 232 | /** 233 | * Get timezone string. 234 | * 235 | * @return string timezone string. 236 | * @since 1.0.0 237 | */ 238 | function wp_timezone_string() { 239 | $timezone_string = get_option( 'timezone_string' ); 240 | 241 | if ( $timezone_string ) { 242 | return $timezone_string; 243 | } 244 | 245 | $offset = (float) get_option( 'gmt_offset' ); 246 | $hours = (int) $offset; 247 | $minutes = ( $offset - $hours ); 248 | 249 | $sign = ( $offset < 0 ) ? '-' : '+'; 250 | $abs_hour = abs( $hours ); 251 | $abs_mins = abs( $minutes * 60 ); 252 | $tz_offset = sprintf( '%s%02d:%02d', $sign, $abs_hour, $abs_mins ); 253 | 254 | return $tz_offset; 255 | } 256 | } 257 | -------------------------------------------------------------------------------- /admin/bsf-analytics/class-bsf-analytics.php: -------------------------------------------------------------------------------- 1 | entities = $args; 51 | 52 | define( 'BSF_ANALYTICS_VERSION', $analytics_version ); 53 | define( 'BSF_ANALYTICS_URI', $this->get_analytics_url( $analytics_path ) ); 54 | 55 | add_action( 'admin_init', array( $this, 'handle_optin_optout' ) ); 56 | add_action( 'admin_notices', array( $this, 'option_notice' ) ); 57 | add_action( 'init', array( $this, 'maybe_track_analytics' ), 99 ); 58 | 59 | $this->set_actions(); 60 | 61 | add_action( 'admin_init', array( $this, 'register_usage_tracking_setting' ) ); 62 | 63 | $this->includes(); 64 | } 65 | 66 | /** 67 | * Setup actions for admin notice style and analytics cron event. 68 | * 69 | * @since 1.0.4 70 | */ 71 | public function set_actions() { 72 | 73 | foreach ( $this->entities as $key => $data ) { 74 | add_action( 'astra_notice_before_markup_' . $key . '-optin-notice', array( $this, 'enqueue_assets' ) ); 75 | add_action( 'update_option_' . $key . '_analytics_optin', array( $this, 'update_analytics_option_callback' ), 10, 3 ); 76 | add_action( 'add_option_' . $key . '_analytics_optin', array( $this, 'add_analytics_option_callback' ), 10, 2 ); 77 | } 78 | } 79 | 80 | /** 81 | * BSF Analytics URL 82 | * 83 | * @param string $analytics_path directory path to analytics library. 84 | * @return String URL of bsf-analytics directory. 85 | * @since 1.0.0 86 | */ 87 | public function get_analytics_url( $analytics_path ) { 88 | 89 | $content_dir_path = wp_normalize_path( WP_CONTENT_DIR ); 90 | 91 | $analytics_path = wp_normalize_path( $analytics_path ); 92 | 93 | return str_replace( $content_dir_path, content_url(), $analytics_path ); 94 | } 95 | 96 | /** 97 | * Get API URL for sending analytics. 98 | * 99 | * @return string API URL. 100 | * @since 1.0.0 101 | */ 102 | private function get_api_url() { 103 | return defined( 'BSF_API_URL' ) ? BSF_API_URL : 'https://support.brainstormforce.com/'; 104 | } 105 | 106 | /** 107 | * Enqueue Scripts. 108 | * 109 | * @since 1.0.0 110 | * @return void 111 | */ 112 | public function enqueue_assets() { 113 | 114 | /** 115 | * Load unminified if SCRIPT_DEBUG is true. 116 | * 117 | * Directory and Extensions. 118 | */ 119 | $dir_name = ( SCRIPT_DEBUG ) ? 'unminified' : 'minified'; 120 | $file_rtl = ( is_rtl() ) ? '-rtl' : ''; 121 | $css_ext = ( SCRIPT_DEBUG ) ? '.css' : '.min.css'; 122 | 123 | $css_uri = BSF_ANALYTICS_URI . '/assets/css/' . $dir_name . '/style' . $file_rtl . $css_ext; 124 | 125 | wp_enqueue_style( 'bsf-analytics-admin-style', $css_uri, false, BSF_ANALYTICS_VERSION, 'all' ); 126 | } 127 | 128 | /** 129 | * Send analytics API call. 130 | * 131 | * @since 1.0.0 132 | */ 133 | public function send() { 134 | wp_remote_post( 135 | $this->get_api_url() . 'wp-json/bsf-core/v1/analytics/', 136 | array( 137 | 'body' => BSF_Analytics_Stats::instance()->get_stats(), 138 | 'timeout' => 5, 139 | 'blocking' => false, 140 | ) 141 | ); 142 | } 143 | 144 | /** 145 | * Check if usage tracking is enabled. 146 | * 147 | * @return bool 148 | * @since 1.0.0 149 | */ 150 | public function is_tracking_enabled() { 151 | 152 | foreach ( $this->entities as $key => $data ) { 153 | 154 | $is_enabled = get_site_option( $key . '_analytics_optin' ) === 'yes' ? true : false; 155 | $is_enabled = $this->is_white_label_enabled( $key ) ? false : $is_enabled; 156 | 157 | if ( apply_filters( $key . '_tracking_enabled', $is_enabled ) ) { 158 | return true; 159 | } 160 | } 161 | 162 | return false; 163 | } 164 | 165 | /** 166 | * Check if WHITE label is enabled for BSF products. 167 | * 168 | * @param string $source source of analytics. 169 | * @return bool 170 | * @since 1.0.0 171 | */ 172 | public function is_white_label_enabled( $source ) { 173 | 174 | $options = apply_filters( $source . '_white_label_options', array() ); 175 | $is_enabled = false; 176 | 177 | if ( is_array( $options ) ) { 178 | foreach ( $options as $option ) { 179 | if ( true === $option ) { 180 | $is_enabled = true; 181 | break; 182 | } 183 | } 184 | } 185 | 186 | return $is_enabled; 187 | } 188 | 189 | /** 190 | * Display admin notice for usage tracking. 191 | * 192 | * @since 1.0.0 193 | */ 194 | public function option_notice() { 195 | 196 | if ( ! current_user_can( 'manage_options' ) ) { 197 | return; 198 | } 199 | 200 | foreach ( $this->entities as $key => $data ) { 201 | 202 | $time_to_display = isset( $data['time_to_display'] ) ? $data['time_to_display'] : '+24 hours'; 203 | $usage_doc_link = isset( $data['usage_doc_link'] ) ? $data['usage_doc_link'] : $this->usage_doc_link; 204 | 205 | // Don't display the notice if tracking is disabled or White Label is enabled for any of our plugins. 206 | if ( false !== get_site_option( $key . '_analytics_optin', false ) || $this->is_white_label_enabled( $key ) ) { 207 | continue; 208 | } 209 | 210 | // Show tracker consent notice after 24 hours from installed time. 211 | if ( strtotime( $time_to_display, $this->get_analytics_install_time( $key ) ) > time() ) { 212 | continue; 213 | } 214 | 215 | /* translators: %s product name */ 216 | $notice_string = __( 'Want to help make %1s even more awesome? Allow us to collect non-sensitive diagnostic data and usage information. ', 'fullwidth-templates' ); 217 | 218 | if ( is_multisite() ) { 219 | $notice_string .= __( 'This will be applicable for all sites from the network.', 'fullwidth-templates' ); 220 | } 221 | 222 | $language_dir = is_rtl() ? 'rtl' : 'ltr'; 223 | 224 | Astra_Notices::add_notice( 225 | array( 226 | 'id' => $key . '-optin-notice', 227 | 'type' => '', 228 | 'message' => sprintf( 229 | '
230 |
231 | %1$s 232 |
233 |
234 | 235 | %3$s 236 | 237 | 238 | %6$s 239 | 240 |
241 |
', 242 | /* translators: %s usage doc link */ 243 | sprintf( $notice_string . '%4s', esc_html( $data['product_name'] ), $language_dir, esc_url( $usage_doc_link ), __( ' Know More.', 'astra', 'fullwidth-templates' ) ), 244 | add_query_arg( 245 | array( 246 | $key . '_analytics_optin' => 'yes', 247 | $key . '_analytics_nonce' => wp_create_nonce( $key . '_analytics_optin' ), 248 | 'bsf_analytics_source' => $key, 249 | ) 250 | ), 251 | __( 'Yes! Allow it', 'fullwidth-templates' ), 252 | add_query_arg( 253 | array( 254 | $key . '_analytics_optin' => 'no', 255 | $key . '_analytics_nonce' => wp_create_nonce( $key . '_analytics_optin' ), 256 | 'bsf_analytics_source' => $key, 257 | ) 258 | ), 259 | MONTH_IN_SECONDS, 260 | __( 'No Thanks', 'fullwidth-templates' ) 261 | ), 262 | 'show_if' => true, 263 | 'repeat-notice-after' => false, 264 | 'priority' => 18, 265 | 'display-with-other-notices' => true, 266 | ) 267 | ); 268 | } 269 | } 270 | 271 | /** 272 | * Process usage tracking opt out. 273 | * 274 | * @since 1.0.0 275 | */ 276 | public function handle_optin_optout() { 277 | 278 | if ( ! current_user_can( 'manage_options' ) ) { 279 | return; 280 | } 281 | 282 | $source = isset( $_GET['bsf_analytics_source'] ) ? sanitize_text_field( wp_unslash( $_GET['bsf_analytics_source'] ) ) : ''; 283 | 284 | if ( ! isset( $_GET[ $source . '_analytics_nonce' ] ) ) { 285 | return; 286 | } 287 | 288 | if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET[ $source . '_analytics_nonce' ] ) ), $source . '_analytics_optin' ) ) { 289 | return; 290 | } 291 | 292 | $optin_status = isset( $_GET[ $source . '_analytics_optin' ] ) ? sanitize_text_field( wp_unslash( $_GET[ $source . '_analytics_optin' ] ) ) : ''; 293 | 294 | if ( 'yes' === $optin_status ) { 295 | $this->optin( $source ); 296 | } elseif ( 'no' === $optin_status ) { 297 | $this->optout( $source ); 298 | } 299 | 300 | wp_safe_redirect( 301 | remove_query_arg( 302 | array( 303 | $source . '_analytics_optin', 304 | $source . '_analytics_nonce', 305 | 'bsf_analytics_source', 306 | ) 307 | ) 308 | ); 309 | } 310 | 311 | /** 312 | * Opt in to usage tracking. 313 | * 314 | * @param string $source source of analytics. 315 | * @since 1.0.0 316 | */ 317 | private function optin( $source ) { 318 | update_site_option( $source . '_analytics_optin', 'yes' ); 319 | } 320 | 321 | /** 322 | * Opt out to usage tracking. 323 | * 324 | * @param string $source source of analytics. 325 | * @since 1.0.0 326 | */ 327 | private function optout( $source ) { 328 | update_site_option( $source . '_analytics_optin', 'no' ); 329 | } 330 | 331 | /** 332 | * Load analytics stat class. 333 | * 334 | * @since 1.0.0 335 | */ 336 | private function includes() { 337 | require_once __DIR__ . '/class-bsf-analytics-stats.php'; 338 | } 339 | 340 | /** 341 | * Register usage tracking option in General settings page. 342 | * 343 | * @since 1.0.0 344 | */ 345 | public function register_usage_tracking_setting() { 346 | 347 | foreach ( $this->entities as $key => $data ) { 348 | 349 | if ( ! apply_filters( $key . '_tracking_enabled', true ) || $this->is_white_label_enabled( $key ) ) { 350 | return; 351 | } 352 | 353 | $usage_doc_link = isset( $data['usage_doc_link'] ) ? $data['usage_doc_link'] : $this->usage_doc_link; 354 | $author = isset( $data['author'] ) ? $data['author'] : 'Brainstorm Force'; 355 | 356 | register_setting( 357 | 'general', // Options group. 358 | $key . '_analytics_optin', // Option name/database. 359 | array( 'sanitize_callback' => array( $this, 'sanitize_option' ) ) // sanitize callback function. 360 | ); 361 | 362 | add_settings_field( 363 | $key . '-analytics-optin', // Field ID. 364 | __( 'Usage Tracking', 'fullwidth-templates' ), // Field title. 365 | array( $this, 'render_settings_field_html' ), // Field callback function. 366 | 'general', 367 | 'default', // Settings page slug. 368 | array( 369 | 'type' => 'checkbox', 370 | 'title' => $author, 371 | 'name' => $key . '_analytics_optin', 372 | 'label_for' => $key . '-analytics-optin', 373 | 'id' => $key . '-analytics-optin', 374 | 'usage_doc_link' => $usage_doc_link, 375 | ) 376 | ); 377 | } 378 | } 379 | 380 | /** 381 | * Sanitize Callback Function 382 | * 383 | * @param bool $input Option value. 384 | * @since 1.0.0 385 | */ 386 | public function sanitize_option( $input ) { 387 | 388 | if ( ! $input || 'no' === $input ) { 389 | return 'no'; 390 | } 391 | 392 | return 'yes'; 393 | } 394 | 395 | /** 396 | * Print settings field HTML. 397 | * 398 | * @param array $args arguments to field. 399 | * @since 1.0.0 400 | */ 401 | public function render_settings_field_html( $args ) { 402 | ?> 403 |
404 | 415 | %2s', esc_url( $args['usage_doc_link'] ), __( 'Learn More.', 'fullwidth-templates' ) ) ); 417 | ?> 418 |
419 | add_option_to_network( $option, $value ); 452 | } 453 | } 454 | 455 | /** 456 | * Analytics option add callback. 457 | * 458 | * @param string $option Option name. 459 | * @param string $value value of option. 460 | * @since 1.0.0 461 | */ 462 | public function add_analytics_option_callback( $option, $value ) { 463 | if ( is_multisite() ) { 464 | $this->add_option_to_network( $option, $value ); 465 | } 466 | } 467 | 468 | /** 469 | * Send analaytics track event if tracking is enabled. 470 | * 471 | * @since 1.0.0 472 | */ 473 | public function maybe_track_analytics() { 474 | 475 | if ( ! $this->is_tracking_enabled() ) { 476 | return; 477 | } 478 | 479 | $analytics_track = get_site_transient( 'bsf_analytics_track' ); 480 | 481 | // If the last data sent is 2 days old i.e. transient is expired. 482 | if ( ! $analytics_track ) { 483 | $this->send(); 484 | set_site_transient( 'bsf_analytics_track', true, 2 * DAY_IN_SECONDS ); 485 | } 486 | } 487 | 488 | /** 489 | * Save analytics option to network. 490 | * 491 | * @param string $option name of option. 492 | * @param string $value value of option. 493 | * @since 1.0.0 494 | */ 495 | public function add_option_to_network( $option, $value ) { 496 | 497 | // If action coming from general settings page. 498 | if ( isset( $_POST['option_page'] ) && 'general' === $_POST['option_page'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Missing 499 | 500 | if ( get_site_option( $option ) ) { 501 | update_site_option( $option, $value ); 502 | } else { 503 | add_site_option( $option, $value ); 504 | } 505 | } 506 | } 507 | } 508 | } 509 | -------------------------------------------------------------------------------- /admin/bsf-analytics/version.json: -------------------------------------------------------------------------------- 1 | { 2 | "bsf-analytics-ver": "1.1.0" 3 | } 4 | -------------------------------------------------------------------------------- /admin/notices/class-astra-notices.php: -------------------------------------------------------------------------------- 1 | Create custom close notice link in the notice markup. E.g. 11 | * `` 12 | * It close the notice for 30 days. 13 | * 14 | * @package Astra Sites 15 | * @since 1.4.0 16 | */ 17 | 18 | if ( ! defined( 'ABSPATH' ) ) { 19 | exit; // Exit if accessed directly. 20 | } 21 | 22 | if ( ! class_exists( 'Astra_Notices' ) ) : 23 | 24 | /** 25 | * Astra_Notices 26 | * 27 | * @since 1.4.0 28 | */ 29 | class Astra_Notices { 30 | 31 | /** 32 | * Notices 33 | * 34 | * @access private 35 | * @var array Notices. 36 | * @since 1.4.0 37 | */ 38 | private static $version = '1.1.5'; 39 | 40 | /** 41 | * Notices 42 | * 43 | * @access private 44 | * @var array Notices. 45 | * @since 1.4.0 46 | */ 47 | private static $notices = array(); 48 | 49 | /** 50 | * Instance 51 | * 52 | * @access private 53 | * @var object Class object. 54 | * @since 1.4.0 55 | */ 56 | private static $instance; 57 | 58 | /** 59 | * Initiator 60 | * 61 | * @since 1.4.0 62 | * @return object initialized object of class. 63 | */ 64 | public static function get_instance() { 65 | if ( ! isset( self::$instance ) ) { 66 | self::$instance = new self(); 67 | } 68 | return self::$instance; 69 | } 70 | 71 | /** 72 | * Constructor 73 | * 74 | * @since 1.4.0 75 | */ 76 | public function __construct() { 77 | add_action( 'admin_notices', array( $this, 'show_notices' ), 30 ); 78 | add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); 79 | add_action( 'wp_ajax_astra-notice-dismiss', array( $this, 'dismiss_notice' ) ); 80 | add_filter( 'wp_kses_allowed_html', array( $this, 'add_data_attributes' ), 10, 2 ); 81 | } 82 | 83 | /** 84 | * Filters and Returns a list of allowed tags and attributes for a given context. 85 | * 86 | * @param Array $allowedposttags Array of allowed tags. 87 | * @param String $context Context type (explicit). 88 | * @since 1.4.0 89 | * @return Array 90 | */ 91 | public function add_data_attributes( $allowedposttags, $context ) { 92 | $allowedposttags['a']['data-repeat-notice-after'] = true; 93 | 94 | return $allowedposttags; 95 | } 96 | 97 | /** 98 | * Add Notice. 99 | * 100 | * @since 1.4.0 101 | * @param array $args Notice arguments. 102 | * @return void 103 | */ 104 | public static function add_notice( $args = array() ) { 105 | self::$notices[] = $args; 106 | } 107 | 108 | /** 109 | * Dismiss Notice. 110 | * 111 | * @since 1.4.0 112 | * @return void 113 | */ 114 | public function dismiss_notice() { 115 | $notice_id = ( isset( $_POST['notice_id'] ) ) ? sanitize_key( $_POST['notice_id'] ) : ''; 116 | $repeat_notice_after = ( isset( $_POST['repeat_notice_after'] ) ) ? absint( $_POST['repeat_notice_after'] ) : ''; 117 | $nonce = ( isset( $_POST['nonce'] ) ) ? sanitize_key( $_POST['nonce'] ) : ''; 118 | 119 | if ( false === wp_verify_nonce( $nonce, 'astra-notices' ) ) { 120 | wp_send_json_error( _e( 'WordPress Nonce not validated.', 'fullwidth-templates' ) ); 121 | } 122 | 123 | // Valid inputs? 124 | if ( ! empty( $notice_id ) ) { 125 | if ( ! empty( $repeat_notice_after ) ) { 126 | set_transient( $notice_id, true, $repeat_notice_after ); 127 | } else { 128 | update_user_meta( get_current_user_id(), $notice_id, 'notice-dismissed' ); 129 | } 130 | 131 | wp_send_json_success(); 132 | } 133 | 134 | wp_send_json_error(); 135 | } 136 | 137 | /** 138 | * Enqueue Scripts. 139 | * 140 | * @since 1.4.0 141 | * @return void 142 | */ 143 | public function enqueue_scripts() { 144 | wp_register_script( 'astra-notices', self::_get_uri() . 'notices.js', array( 'jquery' ), self::$version, true ); 145 | wp_localize_script( 146 | 'astra-notices', 147 | 'astraNotices', 148 | array( 149 | '_notice_nonce' => wp_create_nonce( 'astra-notices' ), 150 | ) 151 | ); 152 | } 153 | 154 | /** 155 | * Rating priority sort 156 | * 157 | * @since 1.5.2 158 | * @param array $array1 array one. 159 | * @param array $array2 array two. 160 | * @return array 161 | */ 162 | public function sort_notices( $array1, $array2 ) { 163 | if ( ! isset( $array1['priority'] ) ) { 164 | $array1['priority'] = 10; 165 | } 166 | if ( ! isset( $array2['priority'] ) ) { 167 | $array2['priority'] = 10; 168 | } 169 | 170 | return $array1['priority'] - $array2['priority']; 171 | } 172 | 173 | /** 174 | * Notice Types 175 | * 176 | * @since 1.4.0 177 | * @return void 178 | */ 179 | public function show_notices() { 180 | $defaults = array( 181 | 'id' => '', // Optional, Notice ID. If empty it set `astra-notices-id-<$array-index>`. 182 | 'type' => 'info', // Optional, Notice type. Default `info`. Expected [info, warning, notice, error]. 183 | 'message' => '', // Optional, Message. 184 | 'show_if' => true, // Optional, Show notice on custom condition. E.g. 'show_if' => if( is_admin() ) ? true, false, . 185 | 'repeat-notice-after' => '', // Optional, Dismiss-able notice time. It'll auto show after given time. 186 | 'display-notice-after' => false, // Optional, Dismiss-able notice time. It'll auto show after given time. 187 | 'class' => '', // Optional, Additional notice wrapper class. 188 | 'priority' => 10, // Priority of the notice. 189 | 'display-with-other-notices' => true, // Should the notice be displayed if other notices are being displayed from Astra_Notices. 190 | 'is_dismissible' => true, 191 | ); 192 | 193 | // Count for the notices that are rendered. 194 | $notices_displayed = 0; 195 | 196 | // sort the array with priority. 197 | usort( self::$notices, array( $this, 'sort_notices' ) ); 198 | 199 | foreach ( self::$notices as $key => $notice ) { 200 | $notice = wp_parse_args( $notice, $defaults ); 201 | 202 | $notice['id'] = self::get_notice_id( $notice, $key ); 203 | 204 | $notice['classes'] = self::get_wrap_classes( $notice ); 205 | 206 | // Notices visible after transient expire. 207 | if ( isset( $notice['show_if'] ) && true === $notice['show_if'] ) { 208 | 209 | // don't display the notice if it is not supposed to be displayed with other notices. 210 | if ( 0 !== $notices_displayed && false === $notice['display-with-other-notices'] ) { 211 | continue; 212 | } 213 | 214 | if ( self::is_expired( $notice ) ) { 215 | self::markup( $notice ); 216 | ++$notices_displayed; 217 | } 218 | } 219 | } 220 | } 221 | 222 | /** 223 | * Markup Notice. 224 | * 225 | * @since 1.4.0 226 | * @param array $notice Notice markup. 227 | * @return void 228 | */ 229 | public static function markup( $notice = array() ) { 230 | wp_enqueue_script( 'astra-notices' ); 231 | 232 | do_action( 'astra_notice_before_markup' ); 233 | 234 | do_action( "astra_notice_before_markup_{$notice['id']}" ); 235 | 236 | ?> 237 |
238 |
239 | 240 | 241 |
242 |
243 | #wrapper, 6 | .fpt-template.fpt-template-evolve .content > .row, 7 | .fpt-template #page, 8 | .fpt-template, 9 | .fpt-template.fpt-template-storefront.page-template-template-page-builder #content .col-full { 10 | max-width: 100% !important; 11 | width: 100% !important; 12 | padding: 0 !important; 13 | margin: 0 !important; 14 | } 15 | 16 | body.fpt-template-twentysixteen.page-template-template-page-builder-no-sidebar-php #page, 17 | body.fpt-template-twentysixteen.page-template-template-page-builder-no-header-footer-php #page, 18 | body.fpt-template-twentysixteen.page-template-template-page-builder-php #page { 19 | margin: 0; 20 | } 21 | 22 | body.page-template-template-page-builder-no-sidebar-php:not(.custom-background-image):before, 23 | body.page-template-template-page-builder-no-header-footer-php:not(.custom-background-image):before, 24 | body.page-template-template-page-builder-php:not(.custom-background-image):before, 25 | body.page-template-template-page-builder-no-sidebar-php:not(.custom-background-image):after, 26 | body.page-template-template-page-builder-no-header-footer-php:not(.custom-background-image):after, 27 | body.page-template-template-page-builder-php:not(.custom-background-image):after { 28 | height: 0; 29 | } 30 | 31 | .fpt-template.fpt-template-Spacious #main { 32 | padding: 0; 33 | } 34 | 35 | .fpt-template.fpt-template-Spacious .header-post-title-container { 36 | display: none; 37 | } 38 | 39 | .fpt-template.fpt-template-Spacious #main .inner-wrap{ 40 | max-width: 100% !important; 41 | width: 100% !important; 42 | padding: 0 !important; 43 | margin: 0 !important; 44 | } 45 | 46 | .fpt-template.fpt-template-Sparkling .container.main-content-area { 47 | max-width: 100% !important; 48 | width: 100% !important; 49 | padding: 0 !important; 50 | margin: 0 !important; 51 | } 52 | 53 | .fpt-template.fpt-template-Sparkling .container.main-content-area .row { 54 | margin: 0; 55 | } 56 | 57 | .fpt-template.fpt-template-Sparkling .container.main-content-area .main-content-inner { 58 | float: none; 59 | width: 100%; 60 | padding: 0; 61 | } 62 | 63 | .page-template-template-page-builder-no-sidebar .side-pull-left .main-content-inner { 64 | width: 100%; 65 | float: none; 66 | } 67 | 68 | /* Storefront Theme */ 69 | .fpt-template.fpt-template-storefront.no-wc-breadcrumb .site-header { 70 | margin-bottom: 0; 71 | } -------------------------------------------------------------------------------- /class-fullwidth-page-templates.php: -------------------------------------------------------------------------------- 1 | includes(); 19 | 20 | $this->templates = array( 21 | 'template-page-builder-no-sidebar.php' => esc_html__( 'FW No Sidebar', 'fullwidth-templates' ), 22 | 'template-page-builder.php' => esc_html__( 'FW Fullwidth', 'fullwidth-templates' ), 23 | 'template-page-builder-no-header-footer.php' => esc_html__( 'FW Fullwidth No Header Footer', 'fullwidth-templates' ), 24 | ); 25 | 26 | // Add a filter to the attributes metabox to inject template into the cache. 27 | if ( version_compare( floatval( get_bloginfo( 'version' ) ), '4.7', '<' ) ) { 28 | // 4.6 and older 29 | add_filter( 30 | 'page_attributes_dropdown_pages_args', 31 | array( $this, 'fpt_register_project_templates' ) 32 | ); 33 | } else { 34 | // Add a filter to the wp 4.7 version attributes metabox 35 | add_action( 'init', array( $this, 'post_type_template' ), 999 ); 36 | } 37 | 38 | // Add a filter to the save post to inject out template into the page cache 39 | add_filter( 'wp_insert_post_data', array( $this, 'fpt_register_project_templates' ) ); 40 | add_filter( 'template_include', array( $this, 'fpt_view_project_template' ) ); 41 | 42 | add_action( 'wp_enqueue_scripts', array( $this, 'enqueue' ) ); 43 | add_filter( 'body_class', array( $this, 'body_class' ) ); 44 | add_filter( 'wp', array( $this, 'theme_support' ) ); 45 | } 46 | 47 | public function body_class( $body_Class ) { 48 | 49 | $template = get_page_template_slug(); 50 | 51 | if ( false !== $template && $this->is_template_active() ) { 52 | $body_Class[] = 'fpt-template'; 53 | } 54 | 55 | $body_Class[] = 'fpt-template-' . get_template(); 56 | 57 | return $body_Class; 58 | } 59 | 60 | public function theme_support() { 61 | 62 | if ( $this->is_template_active() ) { 63 | add_filter( 'primer_the_page_title', '__return_false' ); 64 | } 65 | 66 | } 67 | 68 | public function is_template_active() { 69 | 70 | $template = get_page_template_slug(); 71 | 72 | if ( false !== $template && array_key_exists( $template, $this->templates ) ) { 73 | return true; 74 | } 75 | 76 | return false; 77 | } 78 | 79 | public function enqueue() { 80 | if ( is_page_template( 'template-page-builder.php' ) ) { 81 | wp_register_style( 'fullwidth-template', plugins_url( 'assets/css/fullwidth-template.css', __FILE__ ) ); 82 | wp_enqueue_style( 'fullwidth-template' ); 83 | } 84 | 85 | if ( is_page_template( 'template-page-builder-no-sidebar.php' ) ) { 86 | wp_register_style( 'fullwidth-template-no-sidebar', plugins_url( 'assets/css/fullwidth-template-no-sidebar.css', __FILE__ ) ); 87 | wp_enqueue_style( 'fullwidth-template-no-sidebar' ); 88 | } 89 | 90 | if( is_page_template( 'template-page-builder-no-header-footer.php' ) ) { 91 | wp_register_style( 'fullwidth-template-no-header-footer', plugins_url( 'assets/css/fullwidth-template-no-header-footer.css', __FILE__ ) ); 92 | wp_enqueue_style( 'fullwidth-template-no-header-footer' ); 93 | } 94 | } 95 | 96 | private function includes() { 97 | require_once FPT_DIR . '/templates/default/template-helpers.php'; 98 | // Astra Notices. 99 | require_once FPT_DIR . '/admin/notices/class-astra-notices.php'; 100 | // BSF Analytics. 101 | if ( ! class_exists( 'BSF_Analytics_Loader' ) ) { 102 | require_once FPT_DIR . 'admin/bsf-analytics/class-bsf-analytics-loader.php'; 103 | } 104 | 105 | $bsf_analytics = BSF_Analytics_Loader::get_instance(); 106 | 107 | $bsf_analytics->set_entity( 108 | array( 109 | 'bsf' => array( 110 | 'product_name' => 'Fullwidth Templates for Any Theme & Page Builder', 111 | 'path' => FPT_DIR . 'admin/bsf-analytics', 112 | 'author' => 'Brainstorm Force', 113 | 'time_to_display' => '+24 hours', 114 | ), 115 | ) 116 | ); 117 | } 118 | 119 | public function post_type_template() { 120 | $args = array( 121 | 'public' => true 122 | ); 123 | 124 | $post_types = get_post_types( $args, 'names', 'and' ); 125 | 126 | // Disable some of the known unwanted post types. 127 | unset( $post_types['attachment'] ); 128 | 129 | if ( ! empty( $post_types ) ) { 130 | 131 | foreach ( $post_types as $post_type ) { 132 | add_filter( 'theme_' . $post_type . '_templates', array( $this, 'add_new_template' ) ); 133 | } 134 | 135 | } 136 | } 137 | 138 | /** 139 | * Adds our template to the page dropdown for v4.7+ 140 | * 141 | */ 142 | public function add_new_template( $posts_templates ) { 143 | $posts_templates = array_merge( $posts_templates, $this->templates ); 144 | return $posts_templates; 145 | } 146 | 147 | function fpt_register_project_templates( $atts ) { 148 | 149 | // Create the key used for the themes cache 150 | $cache_key = 'page_templates-' . md5( get_theme_root() . '/' . get_stylesheet() ); 151 | 152 | $templates = wp_get_theme()->get_page_templates(); 153 | if ( empty( $templates ) ) { 154 | $templates = array(); 155 | } 156 | 157 | wp_cache_delete( $cache_key, 'themes' ); 158 | 159 | $templates = array_merge( $templates, $this->templates ); 160 | wp_cache_add( $cache_key, $templates, 'themes', 1800 ); 161 | 162 | return $atts; 163 | } 164 | 165 | function fpt_view_project_template( $template ) { 166 | 167 | global $post; 168 | 169 | // If it is nont a single post/page/post-type, don't apply the template from the plugin. 170 | if ( ! is_singular() ) { 171 | return $template; 172 | } 173 | 174 | if ( ! isset( $this->templates[ get_post_meta( $post->ID, '_wp_page_template', true ) ] ) ) { 175 | 176 | return $template; 177 | } 178 | 179 | $file = FPT_DIR . '/templates/default/' . get_post_meta( $post->ID, '_wp_page_template', true ); 180 | 181 | // Just to be safe, we check if the file exist first 182 | if ( file_exists( $file ) ) { 183 | return $file; 184 | } else { 185 | echo $file; 186 | } 187 | 188 | return $template; 189 | } 190 | 191 | } -------------------------------------------------------------------------------- /fullwidth-page-template.php: -------------------------------------------------------------------------------- 1 | \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: en\n" 16 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 17 | "X-Poedit-Country: United States\n" 18 | "X-Poedit-SourceCharset: UTF-8\n" 19 | "X-Poedit-KeywordsList: " 20 | "__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_" 21 | "attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n" 22 | "X-Poedit-Basepath: ../\n" 23 | "X-Poedit-SearchPath-0: .\n" 24 | "X-Poedit-Bookmarks: \n" 25 | "X-Textdomain-Support: yes\n" 26 | "X-Generator: grunt-wp-i18n 1.0.3\n" 27 | 28 | #: admin/bsf-analytics/class-bsf-analytics.php:216 29 | #. translators: %s product name 30 | msgid "" 31 | "Want to help make %1s even more awesome? Allow us to " 32 | "collect non-sensitive diagnostic data and usage information. " 33 | msgstr "" 34 | 35 | #: admin/bsf-analytics/class-bsf-analytics.php:219 36 | msgid "This will be applicable for all sites from the network." 37 | msgstr "" 38 | 39 | #: admin/bsf-analytics/class-bsf-analytics.php:243 40 | #. translators: %s usage doc link 41 | msgid " Know More." 42 | msgstr "" 43 | 44 | #: admin/bsf-analytics/class-bsf-analytics.php:251 45 | msgid "Yes! Allow it" 46 | msgstr "" 47 | 48 | #: admin/bsf-analytics/class-bsf-analytics.php:260 49 | msgid "No Thanks" 50 | msgstr "" 51 | 52 | #: admin/bsf-analytics/class-bsf-analytics.php:364 53 | msgid "Usage Tracking" 54 | msgstr "" 55 | 56 | #: admin/bsf-analytics/class-bsf-analytics.php:408 57 | #. translators: %s Product title 58 | msgid "Allow %s products to track non-sensitive usage tracking data." 59 | msgstr "" 60 | 61 | #: admin/bsf-analytics/class-bsf-analytics.php:411 62 | msgid " This will be applicable for all sites from the network." 63 | msgstr "" 64 | 65 | #: admin/bsf-analytics/class-bsf-analytics.php:416 66 | msgid "Learn More." 67 | msgstr "" 68 | 69 | #: admin/notices/class-astra-notices.php:120 70 | msgid "WordPress Nonce not validated." 71 | msgstr "" 72 | 73 | #: class-fullwidth-page-templates.php:21 74 | msgid "FW No Sidebar" 75 | msgstr "" 76 | 77 | #: class-fullwidth-page-templates.php:22 78 | msgid "FW Fullwidth" 79 | msgstr "" 80 | 81 | #: class-fullwidth-page-templates.php:23 82 | msgid "FW Fullwidth No Header Footer" 83 | msgstr "" 84 | 85 | #. Plugin Name of the plugin/theme 86 | msgid "Fullwidth Page Templates" 87 | msgstr "" 88 | 89 | #. Author URI of the plugin/theme 90 | msgid "https://www.brainstormforce.com" 91 | msgstr "" 92 | 93 | #. Description of the plugin/theme 94 | msgid "Create Full width landing pages with any theme." 95 | msgstr "" 96 | 97 | #. Author of the plugin/theme 98 | msgid "Brainstorm Force" 99 | msgstr "" -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bb-header-footer", 3 | "version": "0.1.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "abbrev": { 8 | "version": "1.1.1", 9 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 10 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 11 | "dev": true 12 | }, 13 | "ansi-styles": { 14 | "version": "3.2.1", 15 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 16 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 17 | "dev": true, 18 | "requires": { 19 | "color-convert": "^1.9.0" 20 | } 21 | }, 22 | "argparse": { 23 | "version": "1.0.10", 24 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 25 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 26 | "dev": true, 27 | "requires": { 28 | "sprintf-js": "~1.0.2" 29 | }, 30 | "dependencies": { 31 | "sprintf-js": { 32 | "version": "1.0.3", 33 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 34 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 35 | "dev": true 36 | } 37 | } 38 | }, 39 | "arr-diff": { 40 | "version": "4.0.0", 41 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", 42 | "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", 43 | "dev": true 44 | }, 45 | "arr-flatten": { 46 | "version": "1.1.0", 47 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 48 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 49 | "dev": true 50 | }, 51 | "arr-union": { 52 | "version": "3.1.0", 53 | "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", 54 | "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", 55 | "dev": true 56 | }, 57 | "array-each": { 58 | "version": "1.0.1", 59 | "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", 60 | "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", 61 | "dev": true 62 | }, 63 | "array-slice": { 64 | "version": "1.1.0", 65 | "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", 66 | "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", 67 | "dev": true 68 | }, 69 | "array-unique": { 70 | "version": "0.3.2", 71 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", 72 | "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", 73 | "dev": true 74 | }, 75 | "assign-symbols": { 76 | "version": "1.0.0", 77 | "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", 78 | "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", 79 | "dev": true 80 | }, 81 | "async": { 82 | "version": "1.5.2", 83 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 84 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", 85 | "dev": true 86 | }, 87 | "atob": { 88 | "version": "2.1.2", 89 | "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", 90 | "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", 91 | "dev": true 92 | }, 93 | "balanced-match": { 94 | "version": "1.0.0", 95 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 96 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 97 | "dev": true 98 | }, 99 | "base": { 100 | "version": "0.11.2", 101 | "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", 102 | "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", 103 | "dev": true, 104 | "requires": { 105 | "cache-base": "^1.0.1", 106 | "class-utils": "^0.3.5", 107 | "component-emitter": "^1.2.1", 108 | "define-property": "^1.0.0", 109 | "isobject": "^3.0.1", 110 | "mixin-deep": "^1.2.0", 111 | "pascalcase": "^0.1.1" 112 | }, 113 | "dependencies": { 114 | "define-property": { 115 | "version": "1.0.0", 116 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 117 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 118 | "dev": true, 119 | "requires": { 120 | "is-descriptor": "^1.0.0" 121 | } 122 | }, 123 | "is-accessor-descriptor": { 124 | "version": "1.0.0", 125 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 126 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 127 | "dev": true, 128 | "requires": { 129 | "kind-of": "^6.0.0" 130 | } 131 | }, 132 | "is-data-descriptor": { 133 | "version": "1.0.0", 134 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 135 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 136 | "dev": true, 137 | "requires": { 138 | "kind-of": "^6.0.0" 139 | } 140 | }, 141 | "is-descriptor": { 142 | "version": "1.0.2", 143 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 144 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 145 | "dev": true, 146 | "requires": { 147 | "is-accessor-descriptor": "^1.0.0", 148 | "is-data-descriptor": "^1.0.0", 149 | "kind-of": "^6.0.2" 150 | } 151 | } 152 | } 153 | }, 154 | "bluebird": { 155 | "version": "3.5.5", 156 | "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", 157 | "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", 158 | "dev": true 159 | }, 160 | "brace-expansion": { 161 | "version": "1.1.11", 162 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 163 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 164 | "dev": true, 165 | "requires": { 166 | "balanced-match": "^1.0.0", 167 | "concat-map": "0.0.1" 168 | } 169 | }, 170 | "braces": { 171 | "version": "2.3.2", 172 | "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", 173 | "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", 174 | "dev": true, 175 | "requires": { 176 | "arr-flatten": "^1.1.0", 177 | "array-unique": "^0.3.2", 178 | "extend-shallow": "^2.0.1", 179 | "fill-range": "^4.0.0", 180 | "isobject": "^3.0.1", 181 | "repeat-element": "^1.1.2", 182 | "snapdragon": "^0.8.1", 183 | "snapdragon-node": "^2.0.1", 184 | "split-string": "^3.0.2", 185 | "to-regex": "^3.0.1" 186 | }, 187 | "dependencies": { 188 | "extend-shallow": { 189 | "version": "2.0.1", 190 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 191 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 192 | "dev": true, 193 | "requires": { 194 | "is-extendable": "^0.1.0" 195 | } 196 | } 197 | } 198 | }, 199 | "cache-base": { 200 | "version": "1.0.1", 201 | "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", 202 | "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", 203 | "dev": true, 204 | "requires": { 205 | "collection-visit": "^1.0.0", 206 | "component-emitter": "^1.2.1", 207 | "get-value": "^2.0.6", 208 | "has-value": "^1.0.0", 209 | "isobject": "^3.0.1", 210 | "set-value": "^2.0.0", 211 | "to-object-path": "^0.3.0", 212 | "union-value": "^1.0.0", 213 | "unset-value": "^1.0.0" 214 | } 215 | }, 216 | "chalk": { 217 | "version": "2.4.2", 218 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 219 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 220 | "dev": true, 221 | "requires": { 222 | "ansi-styles": "^3.2.1", 223 | "escape-string-regexp": "^1.0.5", 224 | "supports-color": "^5.3.0" 225 | } 226 | }, 227 | "class-utils": { 228 | "version": "0.3.6", 229 | "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", 230 | "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", 231 | "dev": true, 232 | "requires": { 233 | "arr-union": "^3.1.0", 234 | "define-property": "^0.2.5", 235 | "isobject": "^3.0.0", 236 | "static-extend": "^0.1.1" 237 | }, 238 | "dependencies": { 239 | "define-property": { 240 | "version": "0.2.5", 241 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 242 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 243 | "dev": true, 244 | "requires": { 245 | "is-descriptor": "^0.1.0" 246 | } 247 | } 248 | } 249 | }, 250 | "cli": { 251 | "version": "1.0.1", 252 | "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", 253 | "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", 254 | "dev": true, 255 | "requires": { 256 | "exit": "0.1.2", 257 | "glob": "^7.1.1" 258 | }, 259 | "dependencies": { 260 | "glob": { 261 | "version": "7.1.6", 262 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 263 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 264 | "dev": true, 265 | "requires": { 266 | "fs.realpath": "^1.0.0", 267 | "inflight": "^1.0.4", 268 | "inherits": "2", 269 | "minimatch": "^3.0.4", 270 | "once": "^1.3.0", 271 | "path-is-absolute": "^1.0.0" 272 | } 273 | } 274 | } 275 | }, 276 | "collection-visit": { 277 | "version": "1.0.0", 278 | "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", 279 | "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", 280 | "dev": true, 281 | "requires": { 282 | "map-visit": "^1.0.0", 283 | "object-visit": "^1.0.0" 284 | } 285 | }, 286 | "color-convert": { 287 | "version": "1.9.3", 288 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 289 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 290 | "dev": true, 291 | "requires": { 292 | "color-name": "1.1.3" 293 | } 294 | }, 295 | "color-name": { 296 | "version": "1.1.3", 297 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 298 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 299 | "dev": true 300 | }, 301 | "colors": { 302 | "version": "1.1.2", 303 | "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", 304 | "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", 305 | "dev": true 306 | }, 307 | "component-emitter": { 308 | "version": "1.3.0", 309 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", 310 | "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", 311 | "dev": true 312 | }, 313 | "concat-map": { 314 | "version": "0.0.1", 315 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 316 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 317 | "dev": true 318 | }, 319 | "console-browserify": { 320 | "version": "1.1.0", 321 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", 322 | "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", 323 | "dev": true, 324 | "requires": { 325 | "date-now": "^0.1.4" 326 | } 327 | }, 328 | "copy-descriptor": { 329 | "version": "0.1.1", 330 | "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", 331 | "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", 332 | "dev": true 333 | }, 334 | "core-util-is": { 335 | "version": "1.0.2", 336 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 337 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 338 | "dev": true 339 | }, 340 | "date-now": { 341 | "version": "0.1.4", 342 | "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", 343 | "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", 344 | "dev": true 345 | }, 346 | "dateformat": { 347 | "version": "3.0.3", 348 | "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", 349 | "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", 350 | "dev": true 351 | }, 352 | "debug": { 353 | "version": "2.6.9", 354 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 355 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 356 | "dev": true, 357 | "requires": { 358 | "ms": "2.0.0" 359 | } 360 | }, 361 | "decode-uri-component": { 362 | "version": "0.2.0", 363 | "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", 364 | "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", 365 | "dev": true 366 | }, 367 | "define-property": { 368 | "version": "2.0.2", 369 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", 370 | "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", 371 | "dev": true, 372 | "requires": { 373 | "is-descriptor": "^1.0.2", 374 | "isobject": "^3.0.1" 375 | }, 376 | "dependencies": { 377 | "is-accessor-descriptor": { 378 | "version": "1.0.0", 379 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 380 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 381 | "dev": true, 382 | "requires": { 383 | "kind-of": "^6.0.0" 384 | } 385 | }, 386 | "is-data-descriptor": { 387 | "version": "1.0.0", 388 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 389 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 390 | "dev": true, 391 | "requires": { 392 | "kind-of": "^6.0.0" 393 | } 394 | }, 395 | "is-descriptor": { 396 | "version": "1.0.2", 397 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 398 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 399 | "dev": true, 400 | "requires": { 401 | "is-accessor-descriptor": "^1.0.0", 402 | "is-data-descriptor": "^1.0.0", 403 | "kind-of": "^6.0.2" 404 | } 405 | } 406 | } 407 | }, 408 | "detect-file": { 409 | "version": "1.0.0", 410 | "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", 411 | "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", 412 | "dev": true 413 | }, 414 | "dom-serializer": { 415 | "version": "0.2.2", 416 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", 417 | "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", 418 | "dev": true, 419 | "requires": { 420 | "domelementtype": "^2.0.1", 421 | "entities": "^2.0.0" 422 | }, 423 | "dependencies": { 424 | "domelementtype": { 425 | "version": "2.1.0", 426 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", 427 | "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", 428 | "dev": true 429 | }, 430 | "entities": { 431 | "version": "2.2.0", 432 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 433 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", 434 | "dev": true 435 | } 436 | } 437 | }, 438 | "domelementtype": { 439 | "version": "1.3.1", 440 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", 441 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", 442 | "dev": true 443 | }, 444 | "domhandler": { 445 | "version": "2.3.0", 446 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", 447 | "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", 448 | "dev": true, 449 | "requires": { 450 | "domelementtype": "1" 451 | } 452 | }, 453 | "domutils": { 454 | "version": "1.5.1", 455 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", 456 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", 457 | "dev": true, 458 | "requires": { 459 | "dom-serializer": "0", 460 | "domelementtype": "1" 461 | } 462 | }, 463 | "encoding": { 464 | "version": "0.1.12", 465 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", 466 | "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", 467 | "dev": true, 468 | "requires": { 469 | "iconv-lite": "~0.4.13" 470 | } 471 | }, 472 | "entities": { 473 | "version": "1.0.0", 474 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", 475 | "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", 476 | "dev": true 477 | }, 478 | "escape-string-regexp": { 479 | "version": "1.0.5", 480 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 481 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 482 | "dev": true 483 | }, 484 | "esprima": { 485 | "version": "4.0.1", 486 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 487 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 488 | "dev": true 489 | }, 490 | "eventemitter2": { 491 | "version": "0.4.14", 492 | "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", 493 | "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=", 494 | "dev": true 495 | }, 496 | "exit": { 497 | "version": "0.1.2", 498 | "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", 499 | "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", 500 | "dev": true 501 | }, 502 | "expand-brackets": { 503 | "version": "2.1.4", 504 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", 505 | "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", 506 | "dev": true, 507 | "requires": { 508 | "debug": "^2.3.3", 509 | "define-property": "^0.2.5", 510 | "extend-shallow": "^2.0.1", 511 | "posix-character-classes": "^0.1.0", 512 | "regex-not": "^1.0.0", 513 | "snapdragon": "^0.8.1", 514 | "to-regex": "^3.0.1" 515 | }, 516 | "dependencies": { 517 | "define-property": { 518 | "version": "0.2.5", 519 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 520 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 521 | "dev": true, 522 | "requires": { 523 | "is-descriptor": "^0.1.0" 524 | } 525 | }, 526 | "extend-shallow": { 527 | "version": "2.0.1", 528 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 529 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 530 | "dev": true, 531 | "requires": { 532 | "is-extendable": "^0.1.0" 533 | } 534 | } 535 | } 536 | }, 537 | "expand-tilde": { 538 | "version": "2.0.2", 539 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 540 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 541 | "dev": true, 542 | "requires": { 543 | "homedir-polyfill": "^1.0.1" 544 | } 545 | }, 546 | "extend": { 547 | "version": "3.0.2", 548 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", 549 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", 550 | "dev": true 551 | }, 552 | "extend-shallow": { 553 | "version": "3.0.2", 554 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", 555 | "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", 556 | "dev": true, 557 | "requires": { 558 | "assign-symbols": "^1.0.0", 559 | "is-extendable": "^1.0.1" 560 | }, 561 | "dependencies": { 562 | "is-extendable": { 563 | "version": "1.0.1", 564 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 565 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 566 | "dev": true, 567 | "requires": { 568 | "is-plain-object": "^2.0.4" 569 | } 570 | } 571 | } 572 | }, 573 | "extglob": { 574 | "version": "2.0.4", 575 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", 576 | "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", 577 | "dev": true, 578 | "requires": { 579 | "array-unique": "^0.3.2", 580 | "define-property": "^1.0.0", 581 | "expand-brackets": "^2.1.4", 582 | "extend-shallow": "^2.0.1", 583 | "fragment-cache": "^0.2.1", 584 | "regex-not": "^1.0.0", 585 | "snapdragon": "^0.8.1", 586 | "to-regex": "^3.0.1" 587 | }, 588 | "dependencies": { 589 | "define-property": { 590 | "version": "1.0.0", 591 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 592 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 593 | "dev": true, 594 | "requires": { 595 | "is-descriptor": "^1.0.0" 596 | } 597 | }, 598 | "extend-shallow": { 599 | "version": "2.0.1", 600 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 601 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 602 | "dev": true, 603 | "requires": { 604 | "is-extendable": "^0.1.0" 605 | } 606 | }, 607 | "is-accessor-descriptor": { 608 | "version": "1.0.0", 609 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 610 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 611 | "dev": true, 612 | "requires": { 613 | "kind-of": "^6.0.0" 614 | } 615 | }, 616 | "is-data-descriptor": { 617 | "version": "1.0.0", 618 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 619 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 620 | "dev": true, 621 | "requires": { 622 | "kind-of": "^6.0.0" 623 | } 624 | }, 625 | "is-descriptor": { 626 | "version": "1.0.2", 627 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 628 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 629 | "dev": true, 630 | "requires": { 631 | "is-accessor-descriptor": "^1.0.0", 632 | "is-data-descriptor": "^1.0.0", 633 | "kind-of": "^6.0.2" 634 | } 635 | } 636 | } 637 | }, 638 | "fill-range": { 639 | "version": "4.0.0", 640 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", 641 | "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", 642 | "dev": true, 643 | "requires": { 644 | "extend-shallow": "^2.0.1", 645 | "is-number": "^3.0.0", 646 | "repeat-string": "^1.6.1", 647 | "to-regex-range": "^2.1.0" 648 | }, 649 | "dependencies": { 650 | "extend-shallow": { 651 | "version": "2.0.1", 652 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 653 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 654 | "dev": true, 655 | "requires": { 656 | "is-extendable": "^0.1.0" 657 | } 658 | } 659 | } 660 | }, 661 | "findup-sync": { 662 | "version": "0.3.0", 663 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", 664 | "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", 665 | "dev": true, 666 | "requires": { 667 | "glob": "~5.0.0" 668 | }, 669 | "dependencies": { 670 | "glob": { 671 | "version": "5.0.15", 672 | "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 673 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 674 | "dev": true, 675 | "requires": { 676 | "inflight": "^1.0.4", 677 | "inherits": "2", 678 | "minimatch": "2 || 3", 679 | "once": "^1.3.0", 680 | "path-is-absolute": "^1.0.0" 681 | } 682 | } 683 | } 684 | }, 685 | "fined": { 686 | "version": "1.2.0", 687 | "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", 688 | "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", 689 | "dev": true, 690 | "requires": { 691 | "expand-tilde": "^2.0.2", 692 | "is-plain-object": "^2.0.3", 693 | "object.defaults": "^1.1.0", 694 | "object.pick": "^1.2.0", 695 | "parse-filepath": "^1.0.1" 696 | } 697 | }, 698 | "flagged-respawn": { 699 | "version": "1.0.1", 700 | "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", 701 | "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", 702 | "dev": true 703 | }, 704 | "for-in": { 705 | "version": "1.0.2", 706 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 707 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 708 | "dev": true 709 | }, 710 | "for-own": { 711 | "version": "1.0.0", 712 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 713 | "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", 714 | "dev": true, 715 | "requires": { 716 | "for-in": "^1.0.1" 717 | } 718 | }, 719 | "fragment-cache": { 720 | "version": "0.2.1", 721 | "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", 722 | "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", 723 | "dev": true, 724 | "requires": { 725 | "map-cache": "^0.2.2" 726 | } 727 | }, 728 | "fs.realpath": { 729 | "version": "1.0.0", 730 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 731 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 732 | "dev": true 733 | }, 734 | "function-bind": { 735 | "version": "1.1.1", 736 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 737 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 738 | "dev": true 739 | }, 740 | "get-value": { 741 | "version": "2.0.6", 742 | "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", 743 | "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", 744 | "dev": true 745 | }, 746 | "getobject": { 747 | "version": "0.1.0", 748 | "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz", 749 | "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=", 750 | "dev": true 751 | }, 752 | "gettext-parser": { 753 | "version": "3.1.1", 754 | "resolved": "https://registry.npmjs.org/gettext-parser/-/gettext-parser-3.1.1.tgz", 755 | "integrity": "sha512-vNhWcqXEtZPs5Ft1ReA34g7ByWotpcOIeJvXVy2jF3/G2U9v6W0wG4Z4hXzcU8R//jArqkgHcVCGgGqa4vxVlQ==", 756 | "dev": true, 757 | "requires": { 758 | "encoding": "^0.1.12", 759 | "readable-stream": "^3.2.0", 760 | "safe-buffer": "^5.1.2" 761 | } 762 | }, 763 | "glob": { 764 | "version": "7.0.6", 765 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", 766 | "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", 767 | "dev": true, 768 | "requires": { 769 | "fs.realpath": "^1.0.0", 770 | "inflight": "^1.0.4", 771 | "inherits": "2", 772 | "minimatch": "^3.0.2", 773 | "once": "^1.3.0", 774 | "path-is-absolute": "^1.0.0" 775 | } 776 | }, 777 | "global-modules": { 778 | "version": "1.0.0", 779 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", 780 | "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", 781 | "dev": true, 782 | "requires": { 783 | "global-prefix": "^1.0.1", 784 | "is-windows": "^1.0.1", 785 | "resolve-dir": "^1.0.0" 786 | } 787 | }, 788 | "global-prefix": { 789 | "version": "1.0.2", 790 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", 791 | "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", 792 | "dev": true, 793 | "requires": { 794 | "expand-tilde": "^2.0.2", 795 | "homedir-polyfill": "^1.0.1", 796 | "ini": "^1.3.4", 797 | "is-windows": "^1.0.1", 798 | "which": "^1.2.14" 799 | } 800 | }, 801 | "grunt": { 802 | "version": "1.3.0", 803 | "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.3.0.tgz", 804 | "integrity": "sha512-6ILlMXv11/4cxuhSMfSU+SfvbxrPuqZrAtLN64+tZpQ3DAKfSQPQHRbTjSbdtxfyQhGZPtN0bDZJ/LdCM5WXXA==", 805 | "dev": true, 806 | "requires": { 807 | "dateformat": "~3.0.3", 808 | "eventemitter2": "~0.4.13", 809 | "exit": "~0.1.2", 810 | "findup-sync": "~0.3.0", 811 | "glob": "~7.1.6", 812 | "grunt-cli": "~1.3.2", 813 | "grunt-known-options": "~1.1.0", 814 | "grunt-legacy-log": "~3.0.0", 815 | "grunt-legacy-util": "~2.0.0", 816 | "iconv-lite": "~0.4.13", 817 | "js-yaml": "~3.14.0", 818 | "minimatch": "~3.0.4", 819 | "mkdirp": "~1.0.4", 820 | "nopt": "~3.0.6", 821 | "rimraf": "~3.0.2" 822 | }, 823 | "dependencies": { 824 | "glob": { 825 | "version": "7.1.6", 826 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 827 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 828 | "dev": true, 829 | "requires": { 830 | "fs.realpath": "^1.0.0", 831 | "inflight": "^1.0.4", 832 | "inherits": "2", 833 | "minimatch": "^3.0.4", 834 | "once": "^1.3.0", 835 | "path-is-absolute": "^1.0.0" 836 | } 837 | }, 838 | "grunt-cli": { 839 | "version": "1.3.2", 840 | "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.3.2.tgz", 841 | "integrity": "sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ==", 842 | "dev": true, 843 | "requires": { 844 | "grunt-known-options": "~1.1.0", 845 | "interpret": "~1.1.0", 846 | "liftoff": "~2.5.0", 847 | "nopt": "~4.0.1", 848 | "v8flags": "~3.1.1" 849 | }, 850 | "dependencies": { 851 | "nopt": { 852 | "version": "4.0.3", 853 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", 854 | "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", 855 | "dev": true, 856 | "requires": { 857 | "abbrev": "1", 858 | "osenv": "^0.1.4" 859 | } 860 | } 861 | } 862 | }, 863 | "mkdirp": { 864 | "version": "1.0.4", 865 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 866 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 867 | "dev": true 868 | } 869 | } 870 | }, 871 | "grunt-contrib-jshint": { 872 | "version": "2.1.0", 873 | "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-2.1.0.tgz", 874 | "integrity": "sha512-65S2/C/6RfjY/umTxfwXXn+wVvaYmykHkHSsW6Q6rhkbv3oudTEgqnFFZvWzWCoHUb+3GMZLbP3oSrNyvshmIQ==", 875 | "dev": true, 876 | "requires": { 877 | "chalk": "^2.4.2", 878 | "hooker": "^0.2.3", 879 | "jshint": "~2.10.2" 880 | } 881 | }, 882 | "grunt-known-options": { 883 | "version": "1.1.1", 884 | "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz", 885 | "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==", 886 | "dev": true 887 | }, 888 | "grunt-legacy-log": { 889 | "version": "3.0.0", 890 | "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz", 891 | "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==", 892 | "dev": true, 893 | "requires": { 894 | "colors": "~1.1.2", 895 | "grunt-legacy-log-utils": "~2.1.0", 896 | "hooker": "~0.2.3", 897 | "lodash": "~4.17.19" 898 | }, 899 | "dependencies": { 900 | "lodash": { 901 | "version": "4.17.21", 902 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 903 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 904 | "dev": true 905 | } 906 | } 907 | }, 908 | "grunt-legacy-log-utils": { 909 | "version": "2.1.0", 910 | "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz", 911 | "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==", 912 | "dev": true, 913 | "requires": { 914 | "chalk": "~4.1.0", 915 | "lodash": "~4.17.19" 916 | }, 917 | "dependencies": { 918 | "ansi-styles": { 919 | "version": "4.3.0", 920 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 921 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 922 | "dev": true, 923 | "requires": { 924 | "color-convert": "^2.0.1" 925 | } 926 | }, 927 | "chalk": { 928 | "version": "4.1.0", 929 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", 930 | "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", 931 | "dev": true, 932 | "requires": { 933 | "ansi-styles": "^4.1.0", 934 | "supports-color": "^7.1.0" 935 | } 936 | }, 937 | "color-convert": { 938 | "version": "2.0.1", 939 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 940 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 941 | "dev": true, 942 | "requires": { 943 | "color-name": "~1.1.4" 944 | } 945 | }, 946 | "color-name": { 947 | "version": "1.1.4", 948 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 949 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 950 | "dev": true 951 | }, 952 | "has-flag": { 953 | "version": "4.0.0", 954 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 955 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 956 | "dev": true 957 | }, 958 | "lodash": { 959 | "version": "4.17.21", 960 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 961 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 962 | "dev": true 963 | }, 964 | "supports-color": { 965 | "version": "7.2.0", 966 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 967 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 968 | "dev": true, 969 | "requires": { 970 | "has-flag": "^4.0.0" 971 | } 972 | } 973 | } 974 | }, 975 | "grunt-legacy-util": { 976 | "version": "2.0.0", 977 | "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.0.tgz", 978 | "integrity": "sha512-ZEmYFB44bblwPE2oz3q3ygfF6hseQja9tx8I3UZIwbUik32FMWewA+d1qSFicMFB+8dNXDkh35HcDCWlpRsGlA==", 979 | "dev": true, 980 | "requires": { 981 | "async": "~1.5.2", 982 | "exit": "~0.1.1", 983 | "getobject": "~0.1.0", 984 | "hooker": "~0.2.3", 985 | "lodash": "~4.17.20", 986 | "underscore.string": "~3.3.5", 987 | "which": "~1.3.0" 988 | }, 989 | "dependencies": { 990 | "lodash": { 991 | "version": "4.17.21", 992 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 993 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 994 | "dev": true 995 | } 996 | } 997 | }, 998 | "grunt-wp-i18n": { 999 | "version": "1.0.3", 1000 | "resolved": "https://registry.npmjs.org/grunt-wp-i18n/-/grunt-wp-i18n-1.0.3.tgz", 1001 | "integrity": "sha512-CJNbEKeBeOSAPeaJ9B8iCgSwtaG63UR9/uT46a4OsIqnFhOJpeAi138JTlvjfIbnDVoBrzvdrKJe1svveLjUtA==", 1002 | "dev": true, 1003 | "requires": { 1004 | "grunt": "^1.0.3", 1005 | "node-wp-i18n": "^1.2.2" 1006 | } 1007 | }, 1008 | "grunt-wp-readme-to-markdown": { 1009 | "version": "2.0.1", 1010 | "resolved": "https://registry.npmjs.org/grunt-wp-readme-to-markdown/-/grunt-wp-readme-to-markdown-2.0.1.tgz", 1011 | "integrity": "sha1-QGzV6YmIWA3B0W6AXE4uYJJWhVI=", 1012 | "dev": true 1013 | }, 1014 | "has": { 1015 | "version": "1.0.3", 1016 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1017 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1018 | "dev": true, 1019 | "requires": { 1020 | "function-bind": "^1.1.1" 1021 | } 1022 | }, 1023 | "has-flag": { 1024 | "version": "3.0.0", 1025 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1026 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1027 | "dev": true 1028 | }, 1029 | "has-value": { 1030 | "version": "1.0.0", 1031 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", 1032 | "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", 1033 | "dev": true, 1034 | "requires": { 1035 | "get-value": "^2.0.6", 1036 | "has-values": "^1.0.0", 1037 | "isobject": "^3.0.0" 1038 | } 1039 | }, 1040 | "has-values": { 1041 | "version": "1.0.0", 1042 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", 1043 | "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", 1044 | "dev": true, 1045 | "requires": { 1046 | "is-number": "^3.0.0", 1047 | "kind-of": "^4.0.0" 1048 | }, 1049 | "dependencies": { 1050 | "kind-of": { 1051 | "version": "4.0.0", 1052 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 1053 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1054 | "dev": true, 1055 | "requires": { 1056 | "is-buffer": "^1.1.5" 1057 | } 1058 | } 1059 | } 1060 | }, 1061 | "homedir-polyfill": { 1062 | "version": "1.0.3", 1063 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", 1064 | "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", 1065 | "dev": true, 1066 | "requires": { 1067 | "parse-passwd": "^1.0.0" 1068 | } 1069 | }, 1070 | "hooker": { 1071 | "version": "0.2.3", 1072 | "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz", 1073 | "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=", 1074 | "dev": true 1075 | }, 1076 | "htmlparser2": { 1077 | "version": "3.8.3", 1078 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", 1079 | "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", 1080 | "dev": true, 1081 | "requires": { 1082 | "domelementtype": "1", 1083 | "domhandler": "2.3", 1084 | "domutils": "1.5", 1085 | "entities": "1.0", 1086 | "readable-stream": "1.1" 1087 | }, 1088 | "dependencies": { 1089 | "readable-stream": { 1090 | "version": "1.1.14", 1091 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 1092 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 1093 | "dev": true, 1094 | "requires": { 1095 | "core-util-is": "~1.0.0", 1096 | "inherits": "~2.0.1", 1097 | "isarray": "0.0.1", 1098 | "string_decoder": "~0.10.x" 1099 | } 1100 | }, 1101 | "string_decoder": { 1102 | "version": "0.10.31", 1103 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 1104 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 1105 | "dev": true 1106 | } 1107 | } 1108 | }, 1109 | "iconv-lite": { 1110 | "version": "0.4.24", 1111 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1112 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1113 | "dev": true, 1114 | "requires": { 1115 | "safer-buffer": ">= 2.1.2 < 3" 1116 | } 1117 | }, 1118 | "inflight": { 1119 | "version": "1.0.6", 1120 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1121 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 1122 | "dev": true, 1123 | "requires": { 1124 | "once": "^1.3.0", 1125 | "wrappy": "1" 1126 | } 1127 | }, 1128 | "inherits": { 1129 | "version": "2.0.4", 1130 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1131 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1132 | "dev": true 1133 | }, 1134 | "ini": { 1135 | "version": "1.3.8", 1136 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 1137 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", 1138 | "dev": true 1139 | }, 1140 | "interpret": { 1141 | "version": "1.1.0", 1142 | "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", 1143 | "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", 1144 | "dev": true 1145 | }, 1146 | "is-absolute": { 1147 | "version": "1.0.0", 1148 | "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", 1149 | "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", 1150 | "dev": true, 1151 | "requires": { 1152 | "is-relative": "^1.0.0", 1153 | "is-windows": "^1.0.1" 1154 | } 1155 | }, 1156 | "is-accessor-descriptor": { 1157 | "version": "0.1.6", 1158 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", 1159 | "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", 1160 | "dev": true, 1161 | "requires": { 1162 | "kind-of": "^3.0.2" 1163 | }, 1164 | "dependencies": { 1165 | "kind-of": { 1166 | "version": "3.2.2", 1167 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1168 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1169 | "dev": true, 1170 | "requires": { 1171 | "is-buffer": "^1.1.5" 1172 | } 1173 | } 1174 | } 1175 | }, 1176 | "is-buffer": { 1177 | "version": "1.1.6", 1178 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1179 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1180 | "dev": true 1181 | }, 1182 | "is-core-module": { 1183 | "version": "2.2.0", 1184 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", 1185 | "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", 1186 | "dev": true, 1187 | "requires": { 1188 | "has": "^1.0.3" 1189 | } 1190 | }, 1191 | "is-data-descriptor": { 1192 | "version": "0.1.4", 1193 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", 1194 | "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", 1195 | "dev": true, 1196 | "requires": { 1197 | "kind-of": "^3.0.2" 1198 | }, 1199 | "dependencies": { 1200 | "kind-of": { 1201 | "version": "3.2.2", 1202 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1203 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1204 | "dev": true, 1205 | "requires": { 1206 | "is-buffer": "^1.1.5" 1207 | } 1208 | } 1209 | } 1210 | }, 1211 | "is-descriptor": { 1212 | "version": "0.1.6", 1213 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", 1214 | "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", 1215 | "dev": true, 1216 | "requires": { 1217 | "is-accessor-descriptor": "^0.1.6", 1218 | "is-data-descriptor": "^0.1.4", 1219 | "kind-of": "^5.0.0" 1220 | }, 1221 | "dependencies": { 1222 | "kind-of": { 1223 | "version": "5.1.0", 1224 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", 1225 | "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", 1226 | "dev": true 1227 | } 1228 | } 1229 | }, 1230 | "is-extendable": { 1231 | "version": "0.1.1", 1232 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1233 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1234 | "dev": true 1235 | }, 1236 | "is-extglob": { 1237 | "version": "2.1.1", 1238 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1239 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1240 | "dev": true 1241 | }, 1242 | "is-glob": { 1243 | "version": "3.1.0", 1244 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 1245 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 1246 | "dev": true, 1247 | "requires": { 1248 | "is-extglob": "^2.1.0" 1249 | } 1250 | }, 1251 | "is-number": { 1252 | "version": "3.0.0", 1253 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1254 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1255 | "dev": true, 1256 | "requires": { 1257 | "kind-of": "^3.0.2" 1258 | }, 1259 | "dependencies": { 1260 | "kind-of": { 1261 | "version": "3.2.2", 1262 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1263 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1264 | "dev": true, 1265 | "requires": { 1266 | "is-buffer": "^1.1.5" 1267 | } 1268 | } 1269 | } 1270 | }, 1271 | "is-plain-object": { 1272 | "version": "2.0.4", 1273 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1274 | "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", 1275 | "dev": true, 1276 | "requires": { 1277 | "isobject": "^3.0.1" 1278 | } 1279 | }, 1280 | "is-relative": { 1281 | "version": "1.0.0", 1282 | "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", 1283 | "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", 1284 | "dev": true, 1285 | "requires": { 1286 | "is-unc-path": "^1.0.0" 1287 | } 1288 | }, 1289 | "is-unc-path": { 1290 | "version": "1.0.0", 1291 | "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", 1292 | "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", 1293 | "dev": true, 1294 | "requires": { 1295 | "unc-path-regex": "^0.1.2" 1296 | } 1297 | }, 1298 | "is-windows": { 1299 | "version": "1.0.2", 1300 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", 1301 | "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", 1302 | "dev": true 1303 | }, 1304 | "isarray": { 1305 | "version": "0.0.1", 1306 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1307 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 1308 | "dev": true 1309 | }, 1310 | "isexe": { 1311 | "version": "2.0.0", 1312 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1313 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1314 | "dev": true 1315 | }, 1316 | "isobject": { 1317 | "version": "3.0.1", 1318 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1319 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1320 | "dev": true 1321 | }, 1322 | "js-yaml": { 1323 | "version": "3.14.1", 1324 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1325 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1326 | "dev": true, 1327 | "requires": { 1328 | "argparse": "^1.0.7", 1329 | "esprima": "^4.0.0" 1330 | } 1331 | }, 1332 | "jshint": { 1333 | "version": "2.10.3", 1334 | "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.3.tgz", 1335 | "integrity": "sha512-d8AoXcNNYzmm7cdmulQ3dQApbrPYArtVBO6n4xOICe4QsXGNHCAKDcFORzqP52LhK61KX0VhY39yYzCsNq+bxQ==", 1336 | "dev": true, 1337 | "requires": { 1338 | "cli": "~1.0.0", 1339 | "console-browserify": "1.1.x", 1340 | "exit": "0.1.x", 1341 | "htmlparser2": "3.8.x", 1342 | "lodash": "~4.17.11", 1343 | "minimatch": "~3.0.2", 1344 | "shelljs": "0.3.x", 1345 | "strip-json-comments": "1.0.x" 1346 | } 1347 | }, 1348 | "kind-of": { 1349 | "version": "6.0.3", 1350 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", 1351 | "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", 1352 | "dev": true 1353 | }, 1354 | "liftoff": { 1355 | "version": "2.5.0", 1356 | "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.5.0.tgz", 1357 | "integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=", 1358 | "dev": true, 1359 | "requires": { 1360 | "extend": "^3.0.0", 1361 | "findup-sync": "^2.0.0", 1362 | "fined": "^1.0.1", 1363 | "flagged-respawn": "^1.0.0", 1364 | "is-plain-object": "^2.0.4", 1365 | "object.map": "^1.0.0", 1366 | "rechoir": "^0.6.2", 1367 | "resolve": "^1.1.7" 1368 | }, 1369 | "dependencies": { 1370 | "findup-sync": { 1371 | "version": "2.0.0", 1372 | "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", 1373 | "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", 1374 | "dev": true, 1375 | "requires": { 1376 | "detect-file": "^1.0.0", 1377 | "is-glob": "^3.1.0", 1378 | "micromatch": "^3.0.4", 1379 | "resolve-dir": "^1.0.1" 1380 | } 1381 | } 1382 | } 1383 | }, 1384 | "lodash": { 1385 | "version": "4.17.15", 1386 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", 1387 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", 1388 | "dev": true 1389 | }, 1390 | "make-iterator": { 1391 | "version": "1.0.1", 1392 | "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", 1393 | "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", 1394 | "dev": true, 1395 | "requires": { 1396 | "kind-of": "^6.0.2" 1397 | } 1398 | }, 1399 | "map-cache": { 1400 | "version": "0.2.2", 1401 | "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 1402 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 1403 | "dev": true 1404 | }, 1405 | "map-visit": { 1406 | "version": "1.0.0", 1407 | "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", 1408 | "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", 1409 | "dev": true, 1410 | "requires": { 1411 | "object-visit": "^1.0.0" 1412 | } 1413 | }, 1414 | "micromatch": { 1415 | "version": "3.1.10", 1416 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", 1417 | "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", 1418 | "dev": true, 1419 | "requires": { 1420 | "arr-diff": "^4.0.0", 1421 | "array-unique": "^0.3.2", 1422 | "braces": "^2.3.1", 1423 | "define-property": "^2.0.2", 1424 | "extend-shallow": "^3.0.2", 1425 | "extglob": "^2.0.4", 1426 | "fragment-cache": "^0.2.1", 1427 | "kind-of": "^6.0.2", 1428 | "nanomatch": "^1.2.9", 1429 | "object.pick": "^1.3.0", 1430 | "regex-not": "^1.0.0", 1431 | "snapdragon": "^0.8.1", 1432 | "to-regex": "^3.0.2" 1433 | } 1434 | }, 1435 | "minimatch": { 1436 | "version": "3.0.4", 1437 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1438 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1439 | "dev": true, 1440 | "requires": { 1441 | "brace-expansion": "^1.1.7" 1442 | } 1443 | }, 1444 | "minimist": { 1445 | "version": "1.2.5", 1446 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1447 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1448 | "dev": true 1449 | }, 1450 | "mixin-deep": { 1451 | "version": "1.3.2", 1452 | "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", 1453 | "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", 1454 | "dev": true, 1455 | "requires": { 1456 | "for-in": "^1.0.2", 1457 | "is-extendable": "^1.0.1" 1458 | }, 1459 | "dependencies": { 1460 | "is-extendable": { 1461 | "version": "1.0.1", 1462 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", 1463 | "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", 1464 | "dev": true, 1465 | "requires": { 1466 | "is-plain-object": "^2.0.4" 1467 | } 1468 | } 1469 | } 1470 | }, 1471 | "mkdirp": { 1472 | "version": "0.5.5", 1473 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1474 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1475 | "dev": true, 1476 | "requires": { 1477 | "minimist": "^1.2.5" 1478 | } 1479 | }, 1480 | "ms": { 1481 | "version": "2.0.0", 1482 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1483 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1484 | "dev": true 1485 | }, 1486 | "nanomatch": { 1487 | "version": "1.2.13", 1488 | "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", 1489 | "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", 1490 | "dev": true, 1491 | "requires": { 1492 | "arr-diff": "^4.0.0", 1493 | "array-unique": "^0.3.2", 1494 | "define-property": "^2.0.2", 1495 | "extend-shallow": "^3.0.2", 1496 | "fragment-cache": "^0.2.1", 1497 | "is-windows": "^1.0.2", 1498 | "kind-of": "^6.0.2", 1499 | "object.pick": "^1.3.0", 1500 | "regex-not": "^1.0.0", 1501 | "snapdragon": "^0.8.1", 1502 | "to-regex": "^3.0.1" 1503 | } 1504 | }, 1505 | "node-wp-i18n": { 1506 | "version": "1.2.3", 1507 | "resolved": "https://registry.npmjs.org/node-wp-i18n/-/node-wp-i18n-1.2.3.tgz", 1508 | "integrity": "sha512-YMzMcsjXbGYDB9vHyb289CYXAGmXhcNLbeTlOnWgPNkZd9xrovcbRd7cQyKd9BQHOjS7Nw8WCbJ7nvtR7rc0rg==", 1509 | "dev": true, 1510 | "requires": { 1511 | "bluebird": "^3.4.1", 1512 | "gettext-parser": "^3.1.0", 1513 | "glob": "^7.0.5", 1514 | "lodash": "^4.14.2", 1515 | "minimist": "^1.2.0", 1516 | "mkdirp": "^0.5.1", 1517 | "tmp": "^0.0.33" 1518 | } 1519 | }, 1520 | "nopt": { 1521 | "version": "3.0.6", 1522 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", 1523 | "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", 1524 | "dev": true, 1525 | "requires": { 1526 | "abbrev": "1" 1527 | } 1528 | }, 1529 | "object-copy": { 1530 | "version": "0.1.0", 1531 | "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", 1532 | "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", 1533 | "dev": true, 1534 | "requires": { 1535 | "copy-descriptor": "^0.1.0", 1536 | "define-property": "^0.2.5", 1537 | "kind-of": "^3.0.3" 1538 | }, 1539 | "dependencies": { 1540 | "define-property": { 1541 | "version": "0.2.5", 1542 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1543 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1544 | "dev": true, 1545 | "requires": { 1546 | "is-descriptor": "^0.1.0" 1547 | } 1548 | }, 1549 | "kind-of": { 1550 | "version": "3.2.2", 1551 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1552 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1553 | "dev": true, 1554 | "requires": { 1555 | "is-buffer": "^1.1.5" 1556 | } 1557 | } 1558 | } 1559 | }, 1560 | "object-visit": { 1561 | "version": "1.0.1", 1562 | "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", 1563 | "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", 1564 | "dev": true, 1565 | "requires": { 1566 | "isobject": "^3.0.0" 1567 | } 1568 | }, 1569 | "object.defaults": { 1570 | "version": "1.1.0", 1571 | "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 1572 | "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", 1573 | "dev": true, 1574 | "requires": { 1575 | "array-each": "^1.0.1", 1576 | "array-slice": "^1.0.0", 1577 | "for-own": "^1.0.0", 1578 | "isobject": "^3.0.0" 1579 | } 1580 | }, 1581 | "object.map": { 1582 | "version": "1.0.1", 1583 | "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", 1584 | "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", 1585 | "dev": true, 1586 | "requires": { 1587 | "for-own": "^1.0.0", 1588 | "make-iterator": "^1.0.0" 1589 | } 1590 | }, 1591 | "object.pick": { 1592 | "version": "1.3.0", 1593 | "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 1594 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 1595 | "dev": true, 1596 | "requires": { 1597 | "isobject": "^3.0.1" 1598 | } 1599 | }, 1600 | "once": { 1601 | "version": "1.4.0", 1602 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1603 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1604 | "dev": true, 1605 | "requires": { 1606 | "wrappy": "1" 1607 | } 1608 | }, 1609 | "os-homedir": { 1610 | "version": "1.0.2", 1611 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1612 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 1613 | "dev": true 1614 | }, 1615 | "os-tmpdir": { 1616 | "version": "1.0.2", 1617 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1618 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1619 | "dev": true 1620 | }, 1621 | "osenv": { 1622 | "version": "0.1.5", 1623 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", 1624 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", 1625 | "dev": true, 1626 | "requires": { 1627 | "os-homedir": "^1.0.0", 1628 | "os-tmpdir": "^1.0.0" 1629 | } 1630 | }, 1631 | "parse-filepath": { 1632 | "version": "1.0.2", 1633 | "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", 1634 | "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", 1635 | "dev": true, 1636 | "requires": { 1637 | "is-absolute": "^1.0.0", 1638 | "map-cache": "^0.2.0", 1639 | "path-root": "^0.1.1" 1640 | } 1641 | }, 1642 | "parse-passwd": { 1643 | "version": "1.0.0", 1644 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 1645 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", 1646 | "dev": true 1647 | }, 1648 | "pascalcase": { 1649 | "version": "0.1.1", 1650 | "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", 1651 | "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", 1652 | "dev": true 1653 | }, 1654 | "path-is-absolute": { 1655 | "version": "1.0.1", 1656 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1657 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1658 | "dev": true 1659 | }, 1660 | "path-parse": { 1661 | "version": "1.0.6", 1662 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", 1663 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", 1664 | "dev": true 1665 | }, 1666 | "path-root": { 1667 | "version": "0.1.1", 1668 | "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", 1669 | "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", 1670 | "dev": true, 1671 | "requires": { 1672 | "path-root-regex": "^0.1.0" 1673 | } 1674 | }, 1675 | "path-root-regex": { 1676 | "version": "0.1.2", 1677 | "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", 1678 | "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", 1679 | "dev": true 1680 | }, 1681 | "posix-character-classes": { 1682 | "version": "0.1.1", 1683 | "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", 1684 | "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", 1685 | "dev": true 1686 | }, 1687 | "readable-stream": { 1688 | "version": "3.4.0", 1689 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", 1690 | "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", 1691 | "dev": true, 1692 | "requires": { 1693 | "inherits": "^2.0.3", 1694 | "string_decoder": "^1.1.1", 1695 | "util-deprecate": "^1.0.1" 1696 | } 1697 | }, 1698 | "rechoir": { 1699 | "version": "0.6.2", 1700 | "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 1701 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 1702 | "dev": true, 1703 | "requires": { 1704 | "resolve": "^1.1.6" 1705 | } 1706 | }, 1707 | "regex-not": { 1708 | "version": "1.0.2", 1709 | "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", 1710 | "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", 1711 | "dev": true, 1712 | "requires": { 1713 | "extend-shallow": "^3.0.2", 1714 | "safe-regex": "^1.1.0" 1715 | } 1716 | }, 1717 | "repeat-element": { 1718 | "version": "1.1.3", 1719 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", 1720 | "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", 1721 | "dev": true 1722 | }, 1723 | "repeat-string": { 1724 | "version": "1.6.1", 1725 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1726 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 1727 | "dev": true 1728 | }, 1729 | "resolve": { 1730 | "version": "1.20.0", 1731 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 1732 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 1733 | "dev": true, 1734 | "requires": { 1735 | "is-core-module": "^2.2.0", 1736 | "path-parse": "^1.0.6" 1737 | } 1738 | }, 1739 | "resolve-dir": { 1740 | "version": "1.0.1", 1741 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", 1742 | "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", 1743 | "dev": true, 1744 | "requires": { 1745 | "expand-tilde": "^2.0.0", 1746 | "global-modules": "^1.0.0" 1747 | } 1748 | }, 1749 | "resolve-url": { 1750 | "version": "0.2.1", 1751 | "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", 1752 | "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", 1753 | "dev": true 1754 | }, 1755 | "ret": { 1756 | "version": "0.1.15", 1757 | "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", 1758 | "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", 1759 | "dev": true 1760 | }, 1761 | "rimraf": { 1762 | "version": "3.0.2", 1763 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1764 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1765 | "dev": true, 1766 | "requires": { 1767 | "glob": "^7.1.3" 1768 | }, 1769 | "dependencies": { 1770 | "glob": { 1771 | "version": "7.1.6", 1772 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 1773 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 1774 | "dev": true, 1775 | "requires": { 1776 | "fs.realpath": "^1.0.0", 1777 | "inflight": "^1.0.4", 1778 | "inherits": "2", 1779 | "minimatch": "^3.0.4", 1780 | "once": "^1.3.0", 1781 | "path-is-absolute": "^1.0.0" 1782 | } 1783 | } 1784 | } 1785 | }, 1786 | "safe-buffer": { 1787 | "version": "5.2.0", 1788 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", 1789 | "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", 1790 | "dev": true 1791 | }, 1792 | "safe-regex": { 1793 | "version": "1.1.0", 1794 | "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", 1795 | "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", 1796 | "dev": true, 1797 | "requires": { 1798 | "ret": "~0.1.10" 1799 | } 1800 | }, 1801 | "safer-buffer": { 1802 | "version": "2.1.2", 1803 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1804 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1805 | "dev": true 1806 | }, 1807 | "set-value": { 1808 | "version": "2.0.1", 1809 | "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", 1810 | "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", 1811 | "dev": true, 1812 | "requires": { 1813 | "extend-shallow": "^2.0.1", 1814 | "is-extendable": "^0.1.1", 1815 | "is-plain-object": "^2.0.3", 1816 | "split-string": "^3.0.1" 1817 | }, 1818 | "dependencies": { 1819 | "extend-shallow": { 1820 | "version": "2.0.1", 1821 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1822 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1823 | "dev": true, 1824 | "requires": { 1825 | "is-extendable": "^0.1.0" 1826 | } 1827 | } 1828 | } 1829 | }, 1830 | "shelljs": { 1831 | "version": "0.3.0", 1832 | "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", 1833 | "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", 1834 | "dev": true 1835 | }, 1836 | "snapdragon": { 1837 | "version": "0.8.2", 1838 | "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", 1839 | "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", 1840 | "dev": true, 1841 | "requires": { 1842 | "base": "^0.11.1", 1843 | "debug": "^2.2.0", 1844 | "define-property": "^0.2.5", 1845 | "extend-shallow": "^2.0.1", 1846 | "map-cache": "^0.2.2", 1847 | "source-map": "^0.5.6", 1848 | "source-map-resolve": "^0.5.0", 1849 | "use": "^3.1.0" 1850 | }, 1851 | "dependencies": { 1852 | "define-property": { 1853 | "version": "0.2.5", 1854 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1855 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1856 | "dev": true, 1857 | "requires": { 1858 | "is-descriptor": "^0.1.0" 1859 | } 1860 | }, 1861 | "extend-shallow": { 1862 | "version": "2.0.1", 1863 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 1864 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 1865 | "dev": true, 1866 | "requires": { 1867 | "is-extendable": "^0.1.0" 1868 | } 1869 | } 1870 | } 1871 | }, 1872 | "snapdragon-node": { 1873 | "version": "2.1.1", 1874 | "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", 1875 | "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", 1876 | "dev": true, 1877 | "requires": { 1878 | "define-property": "^1.0.0", 1879 | "isobject": "^3.0.0", 1880 | "snapdragon-util": "^3.0.1" 1881 | }, 1882 | "dependencies": { 1883 | "define-property": { 1884 | "version": "1.0.0", 1885 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", 1886 | "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", 1887 | "dev": true, 1888 | "requires": { 1889 | "is-descriptor": "^1.0.0" 1890 | } 1891 | }, 1892 | "is-accessor-descriptor": { 1893 | "version": "1.0.0", 1894 | "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", 1895 | "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", 1896 | "dev": true, 1897 | "requires": { 1898 | "kind-of": "^6.0.0" 1899 | } 1900 | }, 1901 | "is-data-descriptor": { 1902 | "version": "1.0.0", 1903 | "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", 1904 | "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", 1905 | "dev": true, 1906 | "requires": { 1907 | "kind-of": "^6.0.0" 1908 | } 1909 | }, 1910 | "is-descriptor": { 1911 | "version": "1.0.2", 1912 | "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", 1913 | "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", 1914 | "dev": true, 1915 | "requires": { 1916 | "is-accessor-descriptor": "^1.0.0", 1917 | "is-data-descriptor": "^1.0.0", 1918 | "kind-of": "^6.0.2" 1919 | } 1920 | } 1921 | } 1922 | }, 1923 | "snapdragon-util": { 1924 | "version": "3.0.1", 1925 | "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", 1926 | "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", 1927 | "dev": true, 1928 | "requires": { 1929 | "kind-of": "^3.2.0" 1930 | }, 1931 | "dependencies": { 1932 | "kind-of": { 1933 | "version": "3.2.2", 1934 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1935 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1936 | "dev": true, 1937 | "requires": { 1938 | "is-buffer": "^1.1.5" 1939 | } 1940 | } 1941 | } 1942 | }, 1943 | "source-map": { 1944 | "version": "0.5.7", 1945 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1946 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1947 | "dev": true 1948 | }, 1949 | "source-map-resolve": { 1950 | "version": "0.5.3", 1951 | "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", 1952 | "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", 1953 | "dev": true, 1954 | "requires": { 1955 | "atob": "^2.1.2", 1956 | "decode-uri-component": "^0.2.0", 1957 | "resolve-url": "^0.2.1", 1958 | "source-map-url": "^0.4.0", 1959 | "urix": "^0.1.0" 1960 | } 1961 | }, 1962 | "source-map-url": { 1963 | "version": "0.4.1", 1964 | "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", 1965 | "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", 1966 | "dev": true 1967 | }, 1968 | "split-string": { 1969 | "version": "3.1.0", 1970 | "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", 1971 | "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", 1972 | "dev": true, 1973 | "requires": { 1974 | "extend-shallow": "^3.0.0" 1975 | } 1976 | }, 1977 | "sprintf-js": { 1978 | "version": "1.1.2", 1979 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 1980 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", 1981 | "dev": true 1982 | }, 1983 | "static-extend": { 1984 | "version": "0.1.2", 1985 | "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", 1986 | "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", 1987 | "dev": true, 1988 | "requires": { 1989 | "define-property": "^0.2.5", 1990 | "object-copy": "^0.1.0" 1991 | }, 1992 | "dependencies": { 1993 | "define-property": { 1994 | "version": "0.2.5", 1995 | "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", 1996 | "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", 1997 | "dev": true, 1998 | "requires": { 1999 | "is-descriptor": "^0.1.0" 2000 | } 2001 | } 2002 | } 2003 | }, 2004 | "string_decoder": { 2005 | "version": "1.3.0", 2006 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2007 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2008 | "dev": true, 2009 | "requires": { 2010 | "safe-buffer": "~5.2.0" 2011 | } 2012 | }, 2013 | "strip-json-comments": { 2014 | "version": "1.0.4", 2015 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", 2016 | "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", 2017 | "dev": true 2018 | }, 2019 | "supports-color": { 2020 | "version": "5.5.0", 2021 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2022 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2023 | "dev": true, 2024 | "requires": { 2025 | "has-flag": "^3.0.0" 2026 | } 2027 | }, 2028 | "tmp": { 2029 | "version": "0.0.33", 2030 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 2031 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 2032 | "dev": true, 2033 | "requires": { 2034 | "os-tmpdir": "~1.0.2" 2035 | } 2036 | }, 2037 | "to-object-path": { 2038 | "version": "0.3.0", 2039 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", 2040 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", 2041 | "dev": true, 2042 | "requires": { 2043 | "kind-of": "^3.0.2" 2044 | }, 2045 | "dependencies": { 2046 | "kind-of": { 2047 | "version": "3.2.2", 2048 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 2049 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 2050 | "dev": true, 2051 | "requires": { 2052 | "is-buffer": "^1.1.5" 2053 | } 2054 | } 2055 | } 2056 | }, 2057 | "to-regex": { 2058 | "version": "3.0.2", 2059 | "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", 2060 | "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", 2061 | "dev": true, 2062 | "requires": { 2063 | "define-property": "^2.0.2", 2064 | "extend-shallow": "^3.0.2", 2065 | "regex-not": "^1.0.2", 2066 | "safe-regex": "^1.1.0" 2067 | } 2068 | }, 2069 | "to-regex-range": { 2070 | "version": "2.1.1", 2071 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", 2072 | "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", 2073 | "dev": true, 2074 | "requires": { 2075 | "is-number": "^3.0.0", 2076 | "repeat-string": "^1.6.1" 2077 | } 2078 | }, 2079 | "unc-path-regex": { 2080 | "version": "0.1.2", 2081 | "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 2082 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 2083 | "dev": true 2084 | }, 2085 | "underscore.string": { 2086 | "version": "3.3.5", 2087 | "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz", 2088 | "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==", 2089 | "dev": true, 2090 | "requires": { 2091 | "sprintf-js": "^1.0.3", 2092 | "util-deprecate": "^1.0.2" 2093 | } 2094 | }, 2095 | "union-value": { 2096 | "version": "1.0.1", 2097 | "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", 2098 | "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", 2099 | "dev": true, 2100 | "requires": { 2101 | "arr-union": "^3.1.0", 2102 | "get-value": "^2.0.6", 2103 | "is-extendable": "^0.1.1", 2104 | "set-value": "^2.0.1" 2105 | } 2106 | }, 2107 | "unset-value": { 2108 | "version": "1.0.0", 2109 | "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", 2110 | "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", 2111 | "dev": true, 2112 | "requires": { 2113 | "has-value": "^0.3.1", 2114 | "isobject": "^3.0.0" 2115 | }, 2116 | "dependencies": { 2117 | "has-value": { 2118 | "version": "0.3.1", 2119 | "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", 2120 | "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", 2121 | "dev": true, 2122 | "requires": { 2123 | "get-value": "^2.0.3", 2124 | "has-values": "^0.1.4", 2125 | "isobject": "^2.0.0" 2126 | }, 2127 | "dependencies": { 2128 | "isobject": { 2129 | "version": "2.1.0", 2130 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 2131 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 2132 | "dev": true, 2133 | "requires": { 2134 | "isarray": "1.0.0" 2135 | } 2136 | } 2137 | } 2138 | }, 2139 | "has-values": { 2140 | "version": "0.1.4", 2141 | "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", 2142 | "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", 2143 | "dev": true 2144 | }, 2145 | "isarray": { 2146 | "version": "1.0.0", 2147 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2148 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2149 | "dev": true 2150 | } 2151 | } 2152 | }, 2153 | "urix": { 2154 | "version": "0.1.0", 2155 | "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", 2156 | "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", 2157 | "dev": true 2158 | }, 2159 | "use": { 2160 | "version": "3.1.1", 2161 | "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", 2162 | "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", 2163 | "dev": true 2164 | }, 2165 | "util-deprecate": { 2166 | "version": "1.0.2", 2167 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2168 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2169 | "dev": true 2170 | }, 2171 | "v8flags": { 2172 | "version": "3.1.3", 2173 | "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", 2174 | "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", 2175 | "dev": true, 2176 | "requires": { 2177 | "homedir-polyfill": "^1.0.1" 2178 | } 2179 | }, 2180 | "which": { 2181 | "version": "1.3.1", 2182 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 2183 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 2184 | "dev": true, 2185 | "requires": { 2186 | "isexe": "^2.0.0" 2187 | } 2188 | }, 2189 | "wrappy": { 2190 | "version": "1.0.2", 2191 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2192 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2193 | "dev": true 2194 | } 2195 | } 2196 | } 2197 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "bb-header-footer", 3 | "version": "0.1.0", 4 | "main": "Gruntfile.js", 5 | "author": "YOUR NAME HERE", 6 | "devDependencies": { 7 | "grunt": "^1.3.0", 8 | "grunt-contrib-jshint": "^2.1.0", 9 | "grunt-wp-i18n": "~1.0.3", 10 | "grunt-wp-readme-to-markdown": "~2.0.1", 11 | "minimist": ">=1.2.3" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | === Fullwidth Templates for Any Theme & Page Builder === 2 | Contributors: brainstormforce, WPCrafter, ramiy 3 | Tags: full width, fullwidth, template, beaver builder, elementor, genesis, primer, full width template, remove sidebar, page builder 4 | Donate link: https://www.paypal.me/BrainstormForce 5 | Requires at least: 4.2 6 | Tested up to: 6.8 7 | Stable tag: 1.1.1 8 | License: GPLv2 or later 9 | License URI: http://www.gnu.org/licenses/gpl-2.0.html 10 | 11 | When using a Page Builder, things like page title, boxed layout usually limit your creativity. This plugin helps you go fullwidth on any* theme. 12 | 13 | == Description == 14 | **Full Width Page Templates For Your Website** 15 | 16 | Does your theme offer full width page templates? Need freedom to design beautiful full width layouts with page builder like Beaver Builder, Elementor? Need a complete blank template without header or footer for your landing pages? 17 | 18 | This plugin adds Fullwidth Page Templates to overcome these limitations. 19 | 20 | = Here is a quick video explaining how this plugin works = 21 | 22 | [youtube https://www.youtube.com/watch?v=LsIrXPHC0xM] 23 | 24 | [Try it out on a free dummy site](https://bsf.io/fullwidth-templates-demo) 25 | 26 | **Blank Template** 27 | 28 | * Removes header, footer, sidebar, comments, title and leaves you with a plain canvas 29 | * Awesome for landing pages where you need complete control over your layout 30 | 31 | **Full Width Template** 32 | 33 | * Removes Sidebar, page title, comments and stretches the layout to full width 34 | * Ideal if you're using a Page Builder 35 | 36 | **Bonus - No Sidebar Template** 37 | 38 | * Just Removes Sidebar 39 | * Perfect if your theme does not have No Sidebar option. 40 | * Rest of the layout & styling will remain intact. 41 | 42 | 43 | **Made to work with Page Builders** 44 | When you're using a Page Builder, things like the default page title, boxed layout, extra margin and padding usually get in your way. This plugin puts you in absolute control and removes all unnecessary elements from your layout. 45 | 46 | **Dead Simple** 47 | It adds three simple options for your pages & posts. Just choose the one and you should be all set. 48 | 49 | **Potable & No Lock-in** 50 | If you're anything like us, you care what happens when you switch your themes. Generally changing theme means, you will need to edit all your pages and change templates. But if you're using a plugin like this - you won't have to worry about it. 51 | 52 | **Supported & Actively Developed** 53 | Need help with something? Have an issue to report? [Get in touch][1] with us on GitHub. 54 | 55 | **Some of the popular themes** 56 | 57 | * Genesis Framework by StudioPress 58 | * Primer Theme by GoDaddy 59 | * Twenty Sixteen 60 | 61 |
62 | = Disclaimer - = 63 | 64 | This option works on most of the themes; but it might not work on few depending on it's layout structure. 65 | Please open up an issue on GitHub or send us a pull request for adding compatibility with your theme. 66 |

67 |
68 | 69 | Project by [Brainstorm Force][3]. 70 | [1]: https://github.com/brainstormforce/fullwidth-templates/ 71 | [2]: https://github.com/brainstormforce/fullwidth-templates/ 72 | [3]: https://www.brainstormforce.com/ 73 | 74 | == Installation == 75 | 76 | 1. Install Fullwidth Templates either via the WordPress plugin directory or by uploading the files to your server at wp-content/plugins. 77 | 2. Activate the plugin through the 'Plugins' menu in WordPress 78 | 3. When creating or editing pages you will see options to select the fullwidth templates in the template selection dropdown, select any of the three templates and update the page. 79 | 80 | Check Screenshots for more details. 81 | 82 | == Screenshots == 83 | 1. Extra Template Selection Options for Pages & Posts 84 | 2. Default View on Primer Parent Theme 85 | 3. No Sidebar Template 86 | 4. Fullwidth Template 87 | 5. Blank - No Header / Footer Template 88 | 89 | == Changelog == 90 | 91 | = 1.1.1 = 92 | - Fix: Fixed compatibility with other plugins with respect to the admin notice. 93 | 94 | = 1.1.0 = 95 | - New: Users can now share non-personal usage data to help us test and develop better products. (
Know More ) 96 | 97 | = 1.0.3 = 98 | - Make the plugin translation compatible. 99 | 100 | = 1.0.2 = 101 | - Prevent direct access to php files. 102 | - Prevent direct access to directories. 103 | - i18n: Load plugin translations. 104 | - i18n: Use translation function for text strings. 105 | 106 | = 1.0.1 = 107 | - New: Support for storefront theme. 108 | - New: Support Custom Post types created by plugin Custom Post Type UI. 109 | 110 | = 1.0.0 = 111 | - Initial Release 112 | -------------------------------------------------------------------------------- /templates/default/index.php: -------------------------------------------------------------------------------- 1 | 6 | 7 | class="no-js"> 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | > 16 | 25 | 26 | 27 |