├── .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 |
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 |
405 | >
406 |
414 |
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 |