Version Description
Release date: Dec 4th, 2018
- New feature: Added auto-update settings for individual plugins and themes.
- New feature: Added limited-lifetime download links for archive files.
- New feature: Added import backup archive from URL address.
- New feature: Added progress bar to show status of backups.
- New feature: Adding the ability to set and title and description to a backup.
- New feature: Adding the ability to flag a backup as being proteced (excluded from retention).
- Update: Update protection is now valid for 1 hour after a full backup from the WordPress Updates or Plugins page.
- Update: Made the Backup Archives page the default page in the admin menu.
- Bug fix: Set a default backup directory if path in settings is not valid. Remove filters before fixing home and siteurl on restore.
- Bug fix: Some HTML was caught in translations.
- Bug fix: Duplicate emails were sent when a backup was complete, fixed.
- Bug fix: Preserve timestamp on ftp / sftp uploads.
- Bug fix: Fixed CLI support detection on some EA4 servers.
- Update: Save settings and reload to the current section.
- Update: Reorganized settings sections.
Download this release
Release Info
Developer | boldgrid |
Plugin | Total Upkeep – WordPress Backup Plugin plus Restore & Migrate by BoldGrid |
Version | 1.7.0 |
Comparing to | |
See all releases |
Code changes from version 1.6.6 to 1.7.0
- admin/class-boldgrid-backup-admin-archive-actions.php +93 -0
- admin/class-boldgrid-backup-admin-archive-details.php +33 -1
- admin/class-boldgrid-backup-admin-archive-log.php +15 -5
- admin/class-boldgrid-backup-admin-archive.php +118 -7
- admin/class-boldgrid-backup-admin-archives.php +23 -7
- admin/class-boldgrid-backup-admin-auto-rollback.php +47 -5
- admin/class-boldgrid-backup-admin-backup-dir.php +48 -2
- admin/class-boldgrid-backup-admin-config.php +9 -4
- admin/class-boldgrid-backup-admin-core.php +95 -56
- admin/class-boldgrid-backup-admin-db-dump.php +8 -0
- admin/class-boldgrid-backup-admin-email.php +1 -1
- admin/class-boldgrid-backup-admin-go-pro.php +19 -2
- admin/class-boldgrid-backup-admin-in-progress-data.php +123 -0
- admin/class-boldgrid-backup-admin-in-progress.php +64 -9
- admin/class-boldgrid-backup-admin-notice.php +19 -0
- admin/class-boldgrid-backup-admin-remote.php +4 -10
- admin/class-boldgrid-backup-admin-settings.php +78 -142
- admin/class-boldgrid-backup-admin-support.php +82 -0
- admin/class-boldgrid-backup-admin-test.php +77 -55
- admin/class-boldgrid-backup-admin-upload.php +144 -18
- admin/class-boldgrid-backup-admin-utility.php +19 -0
- admin/class-boldgrid-backup-admin-xhprof.php +6 -3
- admin/class-boldgrid-backup-admin.php +19 -0
- admin/compressor/class-boldgrid-backup-admin-compressor-php-zip.php +54 -2
- admin/css/boldgrid-backup-admin-home.css +4 -0
- admin/css/boldgrid-backup-admin-settings.css +5 -1
- admin/css/boldgrid-backup-admin.css +127 -3
- admin/js/boldgrid-backup-admin-archive-actions.js +97 -0
- admin/js/boldgrid-backup-admin-archive-details.js +75 -1
- admin/js/boldgrid-backup-admin-backup-now.js +7 -1
- admin/js/boldgrid-backup-admin-ftp-settings.js +15 -7
- admin/js/boldgrid-backup-admin-home.js +98 -0
- admin/js/boldgrid-backup-admin-in-progress.js +446 -0
- admin/js/boldgrid-backup-admin-settings-autoupdate.js +195 -0
- admin/js/boldgrid-backup-admin-settings.js +0 -27
- admin/js/boldgrid-backup-admin-update-selectors.js +4 -1
- admin/js/boldgrid-backup-admin.js +0 -63
- admin/partials/archives/add-new.php +13 -3
- admin/partials/backup-now-modal/title.php +28 -0
- admin/partials/boldgrid-backup-admin-archive-details.php +80 -28
- admin/partials/boldgrid-backup-admin-backup-button.php +5 -2
- admin/partials/boldgrid-backup-admin-backup-modal.php +4 -1
- admin/partials/boldgrid-backup-admin-home.php +9 -4
- admin/partials/boldgrid-backup-admin-settings.php +35 -26
- admin/partials/boldgrid-backup-admin-test.php +10 -0
- admin/partials/remote/ftp.php +1 -8
- admin/partials/remote/local.php +33 -0
- admin/partials/settings/auto-backup.php +69 -0
- admin/partials/settings/auto-rollback.php +62 -0
- admin/partials/settings/auto-updates.php +0 -192
- admin/partials/settings/backup-directory.php +17 -18
- admin/partials/settings/connect-key.php +7 -58
- admin/partials/settings/retention.php +18 -32
- admin/partials/settings/scheduler.php +9 -7
- admin/partials/settings/storage.php +9 -10
- admin/partials/tools/local-remote.php +2 -1
- admin/remote/class-boldgrid-backup-admin-ftp-hooks.php +15 -7
- admin/remote/class-boldgrid-backup-admin-ftp-page.php +54 -25
- admin/remote/class-boldgrid-backup-admin-ftp.php +83 -10
- admin/storage/class-boldgrid-backup-admin-storage-local.php +210 -0
- boldgrid-backup.php +14 -33
- build/clipboard.min.js +7 -0
- cron/cli-support.php +8 -4
- includes/class-boldgrid-backup-activator.php +15 -13
- includes/class-boldgrid-backup-authentication.php +80 -0
- includes/class-boldgrid-backup-download.php +67 -0
- includes/class-boldgrid-backup-file.php +70 -0
- includes/class-boldgrid-backup.php +33 -2
- includes/config/config.plugin.php +4 -12
- includes/config/config.sample.php +3 -3
- readme.txt +24 -9
- vendor/autoload.php +1 -1
- vendor/boldgrid/library/.gitignore +1 -0
- vendor/boldgrid/library/.travis.yml +22 -54
- vendor/boldgrid/library/README.md +59 -0
- vendor/boldgrid/library/composer.json +5 -0
- vendor/boldgrid/library/gulpfile.js +8 -0
- vendor/boldgrid/library/package-lock.json +0 -1907
- vendor/boldgrid/library/package.json +5 -2
- vendor/boldgrid/library/src/Library/Api/Call.php +1 -1
- vendor/boldgrid/library/src/Library/Editor.php +42 -0
- vendor/boldgrid/library/src/Library/License.php +26 -10
- vendor/boldgrid/library/src/Library/Menu/External.php +5 -5
- vendor/boldgrid/library/src/Library/Menu/Reseller.php +5 -5
- vendor/boldgrid/library/src/Library/Notice.php +10 -1
- vendor/boldgrid/library/src/Library/Notice/KeyPrompt.php +17 -2
- vendor/boldgrid/library/src/Library/Page/Connect.php +158 -6
- vendor/boldgrid/library/src/Library/Plugin/Checker.php +3 -3
- vendor/boldgrid/library/src/Library/ReleaseChannel.php +33 -28
- vendor/boldgrid/library/src/Library/Start.php +1 -0
- vendor/boldgrid/library/src/Library/Ui.php +15 -1
- vendor/boldgrid/library/src/Library/Update.php +144 -4
- vendor/boldgrid/library/src/Library/Views/Connect.php +69 -3
- vendor/boldgrid/library/src/Library/Views/Connect/AutoUpdates.php +358 -0
- vendor/boldgrid/library/src/Library/Views/Connect/ConnectKey.php +15 -0
- vendor/boldgrid/library/src/Library/Views/Connect/UpdateChannels.php +165 -0
- vendor/boldgrid/library/src/Library/Views/EnvatoFreeKey.php +3 -3
- vendor/boldgrid/library/src/Library/Views/KeyPrompt.php +23 -23
- vendor/boldgrid/library/src/Library/Views/KeyPromptMini.php +73 -0
- vendor/boldgrid/library/src/Util/Load.php +17 -0
- vendor/boldgrid/library/src/Util/Option.php +4 -5
- vendor/boldgrid/library/src/Util/Version.php +9 -2
- vendor/boldgrid/library/src/assets/css/admin.css +131 -1
- vendor/boldgrid/library/src/assets/css/api-notice.css +34 -0
- vendor/boldgrid/library/src/assets/css/attributes.css +39 -0
- vendor/boldgrid/library/src/assets/css/ui.css +4 -0
- vendor/boldgrid/library/src/assets/fonts/boldgrid.eot +0 -0
- vendor/boldgrid/library/src/assets/fonts/boldgrid.svg +5 -4
- vendor/boldgrid/library/src/assets/fonts/boldgrid.ttf +0 -0
- vendor/boldgrid/library/src/assets/fonts/boldgrid.woff +0 -0
- vendor/boldgrid/library/src/assets/js/api-notice.js +108 -68
- vendor/boldgrid/library/src/assets/js/attributes.js +255 -0
- vendor/boldgrid/library/src/assets/js/connect.js +111 -4
- vendor/boldgrid/library/src/assets/js/license.js +6 -8
- vendor/boldgrid/library/src/assets/js/notice.js +4 -5
- vendor/boldgrid/library/src/assets/js/sticky.js +306 -276
- vendor/boldgrid/library/src/assets/js/ui.js +24 -4
- vendor/boldgrid/library/yarn.lock +2112 -153
- vendor/cbschuld/browser.php +1 -1
- vendor/composer/ClassLoader.php +1 -1
- vendor/composer/autoload_classmap.php +44 -0
- vendor/composer/autoload_real.php +7 -7
- vendor/composer/autoload_static.php +51 -3
- vendor/composer/installed.json +16 -16
- vendor/phpseclib/phpseclib/README.md +1 -1
- vendor/phpseclib/phpseclib/appveyor.yml +27 -0
- vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php +3 -3
- vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php +78 -20
- vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php +5 -4
- vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php +12 -0
- vendor/phpseclib/phpseclib/phpseclib/File/X509.php +10 -2
- vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php +0 -1
- vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php +11 -1
- vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php +175 -19
- vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php +2 -0
- vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php +12 -0
admin/class-boldgrid-backup-admin-archive-actions.php
CHANGED
@@ -58,7 +58,18 @@ class Boldgrid_Backup_Admin_Archive_Actions {
|
|
58 |
'boldgrid-backup'
|
59 |
);
|
60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
$handle = 'boldgrid-backup-admin-archive-actions';
|
|
|
62 |
wp_register_script(
|
63 |
$handle,
|
64 |
plugin_dir_url( __FILE__ ) . 'js/' . $handle . '.js',
|
@@ -66,14 +77,32 @@ class Boldgrid_Backup_Admin_Archive_Actions {
|
|
66 |
BOLDGRID_BACKUP_VERSION,
|
67 |
false
|
68 |
);
|
|
|
69 |
$translation = array(
|
70 |
'accessType' => $access_type,
|
71 |
'archiveNonce' => $archive_nonce,
|
72 |
'deleteConfirmText' => $delete_confirm_text,
|
73 |
'restoreConfirmText' => $restore_confirm_text,
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
);
|
|
|
75 |
wp_localize_script( $handle, 'BoldGridBackupAdminArchiveActions', $translation );
|
76 |
wp_enqueue_script( $handle );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
}
|
78 |
|
79 |
/**
|
@@ -190,4 +219,68 @@ class Boldgrid_Backup_Admin_Archive_Actions {
|
|
190 |
|
191 |
return $button;
|
192 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
}
|
58 |
'boldgrid-backup'
|
59 |
);
|
60 |
|
61 |
+
$link_error_text = __( 'Could not generate link.', 'boldgrid-backup' );
|
62 |
+
$unknown_error_text = __( 'Unknown error.', 'boldgrid-backup' );
|
63 |
+
$copy_text = __( 'Copy Link', 'boldgrid-backup' );
|
64 |
+
$copied_text = __( 'Copied!', 'boldgrid-backup' );
|
65 |
+
$expires_text = __( 'This link expires in:', 'boldgrid-backup' );
|
66 |
+
$link_disclaimer_text = __(
|
67 |
+
'Please keep this link private, as the download file contains sensitive data.',
|
68 |
+
'boldgrid-backup'
|
69 |
+
);
|
70 |
+
|
71 |
$handle = 'boldgrid-backup-admin-archive-actions';
|
72 |
+
|
73 |
wp_register_script(
|
74 |
$handle,
|
75 |
plugin_dir_url( __FILE__ ) . 'js/' . $handle . '.js',
|
77 |
BOLDGRID_BACKUP_VERSION,
|
78 |
false
|
79 |
);
|
80 |
+
|
81 |
$translation = array(
|
82 |
'accessType' => $access_type,
|
83 |
'archiveNonce' => $archive_nonce,
|
84 |
'deleteConfirmText' => $delete_confirm_text,
|
85 |
'restoreConfirmText' => $restore_confirm_text,
|
86 |
+
'linkErrorText' => $link_error_text,
|
87 |
+
'unknownErrorText' => $unknown_error_text,
|
88 |
+
'copyText' => $copy_text,
|
89 |
+
'copiedText' => $copied_text,
|
90 |
+
'expiresText' => $expires_text,
|
91 |
+
'linkDisclaimerText' => $link_disclaimer_text,
|
92 |
);
|
93 |
+
|
94 |
wp_localize_script( $handle, 'BoldGridBackupAdminArchiveActions', $translation );
|
95 |
wp_enqueue_script( $handle );
|
96 |
+
|
97 |
+
// Enqueue the external clipboard script.
|
98 |
+
wp_enqueue_script(
|
99 |
+
'clipboard',
|
100 |
+
plugin_dir_url( BOLDGRID_BACKUP_PATH . '/boldgrid-backup.php' ) .
|
101 |
+
'/build/clipboard.min.js',
|
102 |
+
array( 'jquery' ),
|
103 |
+
'2.0.1',
|
104 |
+
true
|
105 |
+
);
|
106 |
}
|
107 |
|
108 |
/**
|
219 |
|
220 |
return $button;
|
221 |
}
|
222 |
+
|
223 |
+
/**
|
224 |
+
* Return a button link to request to generate a public link to download an archive file.
|
225 |
+
*
|
226 |
+
* @since 1.7.0
|
227 |
+
*
|
228 |
+
* @param string $filename Filename.
|
229 |
+
* @return string
|
230 |
+
*/
|
231 |
+
public function get_download_link_button( $filename ) {
|
232 |
+
$link = '';
|
233 |
+
$archive = $this->core->archive->get_by_name( $filename );
|
234 |
+
|
235 |
+
if ( ! empty( $archive ) ) {
|
236 |
+
$link = sprintf(
|
237 |
+
'<a
|
238 |
+
id="download-link-button"
|
239 |
+
class="button"
|
240 |
+
href="#"
|
241 |
+
data-filename="%1$s"
|
242 |
+
data-nonce="%2$s"
|
243 |
+
>
|
244 |
+
%3$s
|
245 |
+
</a>
|
246 |
+
<span class="spinner"></span>
|
247 |
+
',
|
248 |
+
/* 1 */ $archive['filename'],
|
249 |
+
/* 2 */ wp_create_nonce( 'boldgrid_backup_download_link' ),
|
250 |
+
/* 3 */ __( 'Get Download Link', 'boldgrid-backup' )
|
251 |
+
);
|
252 |
+
}
|
253 |
+
|
254 |
+
return $link;
|
255 |
+
}
|
256 |
+
|
257 |
+
/**
|
258 |
+
* Callback function for generating a public link to download an archive file.
|
259 |
+
*
|
260 |
+
* Used on the backup archive details page. The link is only valid for a limited time, which
|
261 |
+
* is configurable in a configuration file.
|
262 |
+
*
|
263 |
+
* @since 1.7.0
|
264 |
+
*
|
265 |
+
* @see Boldgrid_Backup_Admin_Archive::generate_download_link()
|
266 |
+
*
|
267 |
+
* @uses $_POST['archive_filename'] Backup archive filename.
|
268 |
+
*
|
269 |
+
* @return string
|
270 |
+
*/
|
271 |
+
public function wp_ajax_generate_download_link() {
|
272 |
+
$archive_filename = ! empty( $_POST['archive_filename'] ) ?
|
273 |
+
sanitize_file_name( $_POST['archive_filename'] ) : null;
|
274 |
+
|
275 |
+
if ( check_admin_referer( 'boldgrid_backup_download_link', 'archive_auth' ) &&
|
276 |
+
current_user_can( 'update_plugins' ) && $archive_filename ) {
|
277 |
+
wp_send_json_success(
|
278 |
+
$this->core->archive->generate_download_link(
|
279 |
+
$archive_filename
|
280 |
+
)
|
281 |
+
);
|
282 |
+
} else {
|
283 |
+
wp_send_json_error();
|
284 |
+
}
|
285 |
+
}
|
286 |
}
|
admin/class-boldgrid-backup-admin-archive-details.php
CHANGED
@@ -110,6 +110,9 @@ class Boldgrid_Backup_Admin_Archive_Details {
|
|
110 |
|
111 |
wp_enqueue_style( 'bglib-ui-css' );
|
112 |
|
|
|
|
|
|
|
113 |
/**
|
114 |
* Allow other plugins to enqueue scripts on this page.
|
115 |
*
|
@@ -149,12 +152,14 @@ class Boldgrid_Backup_Admin_Archive_Details {
|
|
149 |
} else {
|
150 |
$archive = array(
|
151 |
'filename' => $filename,
|
152 |
-
'filepath' => $this->core->backup_dir->get_path_to( $
|
153 |
);
|
154 |
}
|
155 |
|
156 |
// Initialize the archive. We will need it in our included template below.
|
157 |
$this->core->archive->init( $archive['filepath'] );
|
|
|
|
|
158 |
|
159 |
include BOLDGRID_BACKUP_PATH . '/admin/partials/boldgrid-backup-admin-archive-details.php';
|
160 |
}
|
@@ -174,4 +179,31 @@ class Boldgrid_Backup_Admin_Archive_Details {
|
|
174 |
public function validate_nonce() {
|
175 |
return check_ajax_referer( 'boldgrid_backup_remote_storage_upload', 'security', false );
|
176 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
}
|
110 |
|
111 |
wp_enqueue_style( 'bglib-ui-css' );
|
112 |
|
113 |
+
wp_enqueue_script( 'bglib-attributes-js' );
|
114 |
+
wp_enqueue_style( 'bglib-attributes-css' );
|
115 |
+
|
116 |
/**
|
117 |
* Allow other plugins to enqueue scripts on this page.
|
118 |
*
|
152 |
} else {
|
153 |
$archive = array(
|
154 |
'filename' => $filename,
|
155 |
+
'filepath' => $this->core->backup_dir->get_path_to( $filename ),
|
156 |
);
|
157 |
}
|
158 |
|
159 |
// Initialize the archive. We will need it in our included template below.
|
160 |
$this->core->archive->init( $archive['filepath'] );
|
161 |
+
$title = $this->core->archive->get_attribute( 'title' );
|
162 |
+
$description = $this->core->archive->get_attribute( 'description' );
|
163 |
|
164 |
include BOLDGRID_BACKUP_PATH . '/admin/partials/boldgrid-backup-admin-archive-details.php';
|
165 |
}
|
179 |
public function validate_nonce() {
|
180 |
return check_ajax_referer( 'boldgrid_backup_remote_storage_upload', 'security', false );
|
181 |
}
|
182 |
+
|
183 |
+
/**
|
184 |
+
* Handle the ajax request to "Update" from a backup archive page.
|
185 |
+
*
|
186 |
+
* @since 1.7.0
|
187 |
+
*/
|
188 |
+
public function wp_ajax_update() {
|
189 |
+
if ( ! $this->validate_nonce() ) {
|
190 |
+
wp_send_json_error( __( 'Permission denied.', 'boldgrid-backup' ) );
|
191 |
+
}
|
192 |
+
|
193 |
+
$filename = ! empty( $_POST['filename'] ) ? sanitize_file_name( $_POST['filename'] ) : false; // phpcs:ignore WordPress.CSRF.NonceVerification
|
194 |
+
$filepath = $this->core->backup_dir->get_path_to( $filename );
|
195 |
+
if ( empty( $filename ) || ! $this->core->wp_filesystem->exists( $filepath ) ) {
|
196 |
+
wp_send_json_error( __( 'Invalid archive filepath.', 'boldgrid-backup' ) );
|
197 |
+
}
|
198 |
+
|
199 |
+
$this->core->archive->init( $filepath );
|
200 |
+
|
201 |
+
if ( ! empty( $_POST['attributes'] ) ) { // phpcs:ignore WordPress.CSRF.NonceVerification
|
202 |
+
foreach ( $_POST['attributes'] as $key => $value ) { // phpcs:ignore WordPress.CSRF.NonceVerification
|
203 |
+
$this->core->archive->set_attribute( $key, stripslashes( $value ) );
|
204 |
+
}
|
205 |
+
}
|
206 |
+
|
207 |
+
wp_send_json_success();
|
208 |
+
}
|
209 |
}
|
admin/class-boldgrid-backup-admin-archive-log.php
CHANGED
@@ -129,16 +129,19 @@ class Boldgrid_Backup_Admin_Archive_Log {
|
|
129 |
*
|
130 |
* @since 1.6.0
|
131 |
*
|
132 |
-
* @param string $filepath
|
|
|
133 |
*/
|
134 |
-
public function restore_by_zip( $filepath ) {
|
135 |
$log_filepath = $this->path_from_zip( $filepath );
|
136 |
-
$log_filename = basename( $log_filepath );
|
137 |
|
138 |
if ( $this->core->wp_filesystem->exists( $log_filepath ) ) {
|
139 |
return true;
|
140 |
}
|
141 |
|
|
|
|
|
|
|
142 |
// Extract the log file to ABSPATH.
|
143 |
$zip = new Boldgrid_Backup_Admin_Compressor_Pcl_Zip( $this->core );
|
144 |
$status = $zip->extract_one( $filepath, $log_filename );
|
@@ -148,8 +151,9 @@ class Boldgrid_Backup_Admin_Archive_Log {
|
|
148 |
|
149 |
// Move the log file from the ABSPATH to the backup dir.
|
150 |
$old_path = ABSPATH . $log_filename;
|
151 |
-
$new_path = $this->core->backup_dir->get_path_to( $
|
152 |
-
|
|
|
153 |
}
|
154 |
|
155 |
/**
|
@@ -178,6 +182,9 @@ class Boldgrid_Backup_Admin_Archive_Log {
|
|
178 |
}
|
179 |
|
180 |
// Add the log file to the archive file, as of 1.5.4.
|
|
|
|
|
|
|
181 |
$archive = new PclZip( $info['filepath'] );
|
182 |
if ( 0 === $archive ) {
|
183 |
return false;
|
@@ -194,6 +201,9 @@ class Boldgrid_Backup_Admin_Archive_Log {
|
|
194 |
return false;
|
195 |
}
|
196 |
|
|
|
|
|
|
|
197 |
return true;
|
198 |
}
|
199 |
}
|
129 |
*
|
130 |
* @since 1.6.0
|
131 |
*
|
132 |
+
* @param string $filepath Archive file path.
|
133 |
+
* @param string $alt_log_filename Optional log file path. Default is to get from filepath.
|
134 |
*/
|
135 |
+
public function restore_by_zip( $filepath, $alt_log_filename = null ) {
|
136 |
$log_filepath = $this->path_from_zip( $filepath );
|
|
|
137 |
|
138 |
if ( $this->core->wp_filesystem->exists( $log_filepath ) ) {
|
139 |
return true;
|
140 |
}
|
141 |
|
142 |
+
$log_filename = ! empty( $alt_log_filename ) ?
|
143 |
+
$alt_log_filename : basename( $log_filepath );
|
144 |
+
|
145 |
// Extract the log file to ABSPATH.
|
146 |
$zip = new Boldgrid_Backup_Admin_Compressor_Pcl_Zip( $this->core );
|
147 |
$status = $zip->extract_one( $filepath, $log_filename );
|
151 |
|
152 |
// Move the log file from the ABSPATH to the backup dir.
|
153 |
$old_path = ABSPATH . $log_filename;
|
154 |
+
$new_path = $this->core->backup_dir->get_path_to( basename( $log_filepath ) );
|
155 |
+
|
156 |
+
return $this->core->wp_filesystem->move( $old_path, $new_path, true );
|
157 |
}
|
158 |
|
159 |
/**
|
182 |
}
|
183 |
|
184 |
// Add the log file to the archive file, as of 1.5.4.
|
185 |
+
if ( ! class_exists( 'PclZip' ) ) {
|
186 |
+
require_once ABSPATH . 'wp-admin/includes/class-pclzip.php';
|
187 |
+
}
|
188 |
$archive = new PclZip( $info['filepath'] );
|
189 |
if ( 0 === $archive ) {
|
190 |
return false;
|
201 |
return false;
|
202 |
}
|
203 |
|
204 |
+
// Ensure the act updating the log file does not change the backup file's timestamp.
|
205 |
+
$this->core->wp_filesystem->touch( $info['filepath'], $info['lastmodunix'] );
|
206 |
+
|
207 |
return true;
|
208 |
}
|
209 |
}
|
admin/class-boldgrid-backup-admin-archive.php
CHANGED
@@ -121,6 +121,18 @@ class Boldgrid_Backup_Admin_Archive {
|
|
121 |
return $deleted;
|
122 |
}
|
123 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
/**
|
125 |
* Get an archive by name.
|
126 |
*
|
@@ -190,7 +202,6 @@ class Boldgrid_Backup_Admin_Archive {
|
|
190 |
* @param string $filepath File path.
|
191 |
*/
|
192 |
public function init( $filepath ) {
|
193 |
-
|
194 |
$filepath = strip_tags( $filepath );
|
195 |
|
196 |
if ( ! empty( $this->filepath ) && $filepath === $this->filepath ) {
|
@@ -199,8 +210,6 @@ class Boldgrid_Backup_Admin_Archive {
|
|
199 |
|
200 |
$this->reset();
|
201 |
|
202 |
-
$zip = new Boldgrid_Backup_Admin_Compressor_Pcl_Zip( $this->core );
|
203 |
-
|
204 |
$this->filepath = $filepath;
|
205 |
$this->filename = basename( $this->filepath );
|
206 |
|
@@ -213,7 +222,6 @@ class Boldgrid_Backup_Admin_Archive {
|
|
213 |
$have_log = $this->core->archive_log->restore_by_zip( $this->filepath );
|
214 |
}
|
215 |
|
216 |
-
// Init our log.
|
217 |
if ( $have_log ) {
|
218 |
$this->log = $this->core->archive_log->get_by_zip( $this->filepath );
|
219 |
}
|
@@ -227,8 +235,6 @@ class Boldgrid_Backup_Admin_Archive {
|
|
227 |
$this->compressor = ! empty( $this->log['compressor'] ) ? $this->log['compressor'] : 'php_zip';
|
228 |
|
229 |
$this->view_details_url = admin_url( 'admin.php?page=boldgrid-backup-archive-details&filename=' . $this->filename );
|
230 |
-
|
231 |
-
unset( $zip );
|
232 |
}
|
233 |
|
234 |
/**
|
@@ -337,6 +343,21 @@ class Boldgrid_Backup_Admin_Archive {
|
|
337 |
$this->compressor = null;
|
338 |
}
|
339 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
340 |
/**
|
341 |
* Update an archive's timestamp based on the time in the log.
|
342 |
*
|
@@ -347,7 +368,6 @@ class Boldgrid_Backup_Admin_Archive {
|
|
347 |
* timestamp from the log and configure the last modified appropriately.
|
348 |
*/
|
349 |
public function update_timestamp() {
|
350 |
-
|
351 |
// If we don't have what we need, abort.
|
352 |
if ( empty( $this->filepath ) || empty( $this->log['lastmodunix'] ) ) {
|
353 |
return false;
|
@@ -355,4 +375,95 @@ class Boldgrid_Backup_Admin_Archive {
|
|
355 |
|
356 |
return $this->core->wp_filesystem->touch( $this->filepath, $this->log['lastmodunix'] );
|
357 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
358 |
}
|
121 |
return $deleted;
|
122 |
}
|
123 |
|
124 |
+
/**
|
125 |
+
* Get an attribute from the log.
|
126 |
+
*
|
127 |
+
* @since 1.7.0
|
128 |
+
*
|
129 |
+
* @param string $key Attributes are key / value pairs.
|
130 |
+
* @return mixed
|
131 |
+
*/
|
132 |
+
public function get_attribute( $key ) {
|
133 |
+
return ! empty( $this->log[ $key ] ) ? $this->log[ $key ] : null;
|
134 |
+
}
|
135 |
+
|
136 |
/**
|
137 |
* Get an archive by name.
|
138 |
*
|
202 |
* @param string $filepath File path.
|
203 |
*/
|
204 |
public function init( $filepath ) {
|
|
|
205 |
$filepath = strip_tags( $filepath );
|
206 |
|
207 |
if ( ! empty( $this->filepath ) && $filepath === $this->filepath ) {
|
210 |
|
211 |
$this->reset();
|
212 |
|
|
|
|
|
213 |
$this->filepath = $filepath;
|
214 |
$this->filename = basename( $this->filepath );
|
215 |
|
222 |
$have_log = $this->core->archive_log->restore_by_zip( $this->filepath );
|
223 |
}
|
224 |
|
|
|
225 |
if ( $have_log ) {
|
226 |
$this->log = $this->core->archive_log->get_by_zip( $this->filepath );
|
227 |
}
|
235 |
$this->compressor = ! empty( $this->log['compressor'] ) ? $this->log['compressor'] : 'php_zip';
|
236 |
|
237 |
$this->view_details_url = admin_url( 'admin.php?page=boldgrid-backup-archive-details&filename=' . $this->filename );
|
|
|
|
|
238 |
}
|
239 |
|
240 |
/**
|
343 |
$this->compressor = null;
|
344 |
}
|
345 |
|
346 |
+
/**
|
347 |
+
* Set an attribute in the log.
|
348 |
+
*
|
349 |
+
* @since 1.7.0
|
350 |
+
*
|
351 |
+
* @param string $key The key.
|
352 |
+
* @param string $value The value.
|
353 |
+
* @return bool
|
354 |
+
*/
|
355 |
+
public function set_attribute( $key, $value ) {
|
356 |
+
$this->log[ $key ] = $value;
|
357 |
+
|
358 |
+
return $this->core->archive_log->write( $this->log );
|
359 |
+
}
|
360 |
+
|
361 |
/**
|
362 |
* Update an archive's timestamp based on the time in the log.
|
363 |
*
|
368 |
* timestamp from the log and configure the last modified appropriately.
|
369 |
*/
|
370 |
public function update_timestamp() {
|
|
|
371 |
// If we don't have what we need, abort.
|
372 |
if ( empty( $this->filepath ) || empty( $this->log['lastmodunix'] ) ) {
|
373 |
return false;
|
375 |
|
376 |
return $this->core->wp_filesystem->touch( $this->filepath, $this->log['lastmodunix'] );
|
377 |
}
|
378 |
+
|
379 |
+
/**
|
380 |
+
* Validate a download link request.
|
381 |
+
*
|
382 |
+
* @since 1.7.0
|
383 |
+
*
|
384 |
+
* @see Boldgrid_Backup_Admin_Archive::get_by_name()
|
385 |
+
*
|
386 |
+
* @param string $filename
|
387 |
+
* @return array
|
388 |
+
*/
|
389 |
+
public function validate_link_request( $filename ) {
|
390 |
+
$result['is_valid'] = true;
|
391 |
+
|
392 |
+
// Verify access permissions.
|
393 |
+
if ( ! current_user_can( 'update_plugins' ) ) {
|
394 |
+
$result['errors'][] = __( 'Insufficient permission', 'boldgrid-backup' );
|
395 |
+
}
|
396 |
+
|
397 |
+
// Validate archive filename.
|
398 |
+
if ( empty( $filename ) ) {
|
399 |
+
$result['errors'][] = __( 'Invalid archive filename', 'boldgrid-backup' );
|
400 |
+
}
|
401 |
+
|
402 |
+
// Check WP_Filesystem method; ensure it is "direct".
|
403 |
+
if ( 'direct' !== get_filesystem_method() ) {
|
404 |
+
$result['errors'][] = __(
|
405 |
+
'Filesystem access method is not "direct"',
|
406 |
+
'boldgrid-backup'
|
407 |
+
);
|
408 |
+
}
|
409 |
+
|
410 |
+
// Get archive details.
|
411 |
+
$archive = $this->get_by_name( $filename );
|
412 |
+
|
413 |
+
// Check if archive file was found.
|
414 |
+
if ( empty( $archive ) ) {
|
415 |
+
$result['errors'][] = __( 'Archive file not found', 'boldgrid-backup' );
|
416 |
+
}
|
417 |
+
|
418 |
+
$expires = strtotime( '+' . $this->core->configs['public_link_lifetime'] );
|
419 |
+
|
420 |
+
if ( ! $expires || $expires < time() ) {
|
421 |
+
$result['errors'][] = __(
|
422 |
+
'Invalid "public_link_lifetime" configuration setting',
|
423 |
+
'boldgrid-backup'
|
424 |
+
);
|
425 |
+
}
|
426 |
+
|
427 |
+
if ( ! empty( $result['errors'] ) ) {
|
428 |
+
$result['is_valid'] = false;
|
429 |
+
}
|
430 |
+
|
431 |
+
return $result;
|
432 |
+
}
|
433 |
+
|
434 |
+
/**
|
435 |
+
* Generate a public link to download an archive file.
|
436 |
+
*
|
437 |
+
* The link is only valid for a limited time, which is configurable in a configuration file.
|
438 |
+
*
|
439 |
+
* @since 1.7.0
|
440 |
+
*
|
441 |
+
* @see Boldgrid_Backup_Admin_Archive::validate_link_request()
|
442 |
+
* @see Boldgrid_Backup_Authentication::create_token()
|
443 |
+
*
|
444 |
+
* @param string $filename
|
445 |
+
* @return string
|
446 |
+
*/
|
447 |
+
public function generate_download_link( $filename ) {
|
448 |
+
$validation_results = $this->validate_link_request( $filename );
|
449 |
+
|
450 |
+
if ( $validation_results['is_valid'] ) {
|
451 |
+
$expires = strtotime( '+' . $this->core->configs['public_link_lifetime'] );
|
452 |
+
$token = Boldgrid_Backup_Authentication::create_token( $filename, $expires );
|
453 |
+
|
454 |
+
$response['download_url'] = get_site_url(
|
455 |
+
null,
|
456 |
+
'wp-admin/admin-ajax.php?action=boldgrid_backup_download&t=' . $token
|
457 |
+
);
|
458 |
+
|
459 |
+
$response['expires_when'] = human_time_diff(
|
460 |
+
$expires,
|
461 |
+
current_time( 'timestamp', true )
|
462 |
+
);
|
463 |
+
} else {
|
464 |
+
$response['error'] = implode( '<br />', $validation_results['errors'] );
|
465 |
+
}
|
466 |
+
|
467 |
+
return $response;
|
468 |
+
}
|
469 |
}
|
admin/class-boldgrid-backup-admin-archives.php
CHANGED
@@ -103,11 +103,21 @@ class Boldgrid_Backup_Admin_Archives {
|
|
103 |
|
104 |
$title_attr = ! empty( $location['title_attr'] ) ? sprintf( 'title="%1$s"', esc_attr( $location['title_attr'] ) ) : '';
|
105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
$locations[] = sprintf(
|
107 |
-
'<span %2$s %3$s>%1$s</span>',
|
108 |
esc_html( $location['title'] ),
|
109 |
$data_attr,
|
110 |
-
$title_attr
|
|
|
111 |
);
|
112 |
}
|
113 |
|
@@ -196,16 +206,21 @@ class Boldgrid_Backup_Admin_Archives {
|
|
196 |
);
|
197 |
|
198 |
foreach ( $this->core->archives_all->all as $archive ) {
|
199 |
-
$locations = $this->get_locations( $archive );
|
200 |
-
|
201 |
-
// dirlist -> lastmodunix -> mtime (last_modified in unix time).
|
202 |
$this->core->time->init( $archive['last_modified'], 'utc' );
|
203 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
$table .= sprintf(
|
205 |
'
|
206 |
<tr>
|
207 |
<td>
|
208 |
%2$s
|
|
|
209 |
<p class="description">%6$s</p>
|
210 |
</td>
|
211 |
<td>
|
@@ -220,11 +235,12 @@ class Boldgrid_Backup_Admin_Archives {
|
|
220 |
</tr>
|
221 |
',
|
222 |
/* 1 */ $backup,
|
223 |
-
/* 2 */ $
|
224 |
/* 3 */ Boldgrid_Backup_Admin_Utility::bytes_to_human( $archive['size'] ),
|
225 |
/* 4 */ $archive['filename'],
|
226 |
/* 5 */ $view_details,
|
227 |
-
/* 6 */ $locations
|
|
|
228 |
);
|
229 |
}
|
230 |
$table .= '</tbody>
|
103 |
|
104 |
$title_attr = ! empty( $location['title_attr'] ) ? sprintf( 'title="%1$s"', esc_attr( $location['title_attr'] ) ) : '';
|
105 |
|
106 |
+
/*
|
107 |
+
* As of 1.7.0, the user can flag an archive as protected (exluded from retention
|
108 |
+
* process). Show a padlock next to those backups.
|
109 |
+
*/
|
110 |
+
$icon = '';
|
111 |
+
if ( 'on_web_server' === $location_type && '1' === $this->core->archive->get_attribute( 'protect' ) ) {
|
112 |
+
$icon = '<span class="dashicons dashicons-lock" title="' . esc_attr__( 'This backup will not be deleted automatically from your Web Server due to your retention settings.', 'boldgrid-backup' ) . '"></span>';
|
113 |
+
}
|
114 |
+
|
115 |
$locations[] = sprintf(
|
116 |
+
'<span %2$s %3$s>%1$s%4$s</span>',
|
117 |
esc_html( $location['title'] ),
|
118 |
$data_attr,
|
119 |
+
$title_attr,
|
120 |
+
$icon
|
121 |
);
|
122 |
}
|
123 |
|
206 |
);
|
207 |
|
208 |
foreach ( $this->core->archives_all->all as $archive ) {
|
|
|
|
|
|
|
209 |
$this->core->time->init( $archive['last_modified'], 'utc' );
|
210 |
|
211 |
+
// Get the title of the backup.
|
212 |
+
$filepath = $this->core->backup_dir->get_path_to( $archive['filename'] );
|
213 |
+
$this->core->archive->init( $filepath );
|
214 |
+
$title = $this->core->archive->get_attribute( 'title' );
|
215 |
+
|
216 |
+
$locations = $this->get_locations( $archive );
|
217 |
+
|
218 |
$table .= sprintf(
|
219 |
'
|
220 |
<tr>
|
221 |
<td>
|
222 |
%2$s
|
223 |
+
%7$s<br />
|
224 |
<p class="description">%6$s</p>
|
225 |
</td>
|
226 |
<td>
|
235 |
</tr>
|
236 |
',
|
237 |
/* 1 */ $backup,
|
238 |
+
/* 2 */ empty( $title ) ? '' : '<strong>' . esc_html( $title ) . '</strong><br />',
|
239 |
/* 3 */ Boldgrid_Backup_Admin_Utility::bytes_to_human( $archive['size'] ),
|
240 |
/* 4 */ $archive['filename'],
|
241 |
/* 5 */ $view_details,
|
242 |
+
/* 6 */ $locations,
|
243 |
+
/* 7 */ $this->core->time->get_span()
|
244 |
);
|
245 |
}
|
246 |
$table .= '</tbody>
|
admin/class-boldgrid-backup-admin-auto-rollback.php
CHANGED
@@ -223,6 +223,10 @@ class Boldgrid_Backup_Admin_Auto_Rollback {
|
|
223 |
wp_localize_script( $handle, 'localizeScriptData', $localize_script_data );
|
224 |
|
225 |
wp_enqueue_script( $handle );
|
|
|
|
|
|
|
|
|
226 |
}
|
227 |
|
228 |
/**
|
@@ -273,13 +277,28 @@ class Boldgrid_Backup_Admin_Auto_Rollback {
|
|
273 |
* @since 1.6.0
|
274 |
*/
|
275 |
public function enqueue_home_scripts() {
|
276 |
-
|
277 |
-
|
|
|
|
|
278 |
plugin_dir_url( __FILE__ ) . 'js/boldgrid-backup-admin-home.js',
|
279 |
array( 'jquery' ),
|
280 |
BOLDGRID_BACKUP_VERSION,
|
281 |
false
|
282 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
283 |
}
|
284 |
|
285 |
/**
|
@@ -339,7 +358,7 @@ class Boldgrid_Backup_Admin_Auto_Rollback {
|
|
339 |
* @since 1.6.0
|
340 |
*/
|
341 |
public function enqueue_update_selectors() {
|
342 |
-
if ( $this->on_update_page ) {
|
343 |
$handle = 'boldgrid-backup-admin-update-selectors';
|
344 |
|
345 |
wp_register_script(
|
@@ -757,9 +776,10 @@ class Boldgrid_Backup_Admin_Auto_Rollback {
|
|
757 |
return;
|
758 |
}
|
759 |
|
760 |
-
// If there is a pending rollback, then abort.
|
761 |
if ( ! empty( $pending_rollback['lastmodunix'] ) ) {
|
762 |
$this->notice_activated_show();
|
|
|
763 |
return;
|
764 |
}
|
765 |
|
@@ -1027,7 +1047,7 @@ class Boldgrid_Backup_Admin_Auto_Rollback {
|
|
1027 |
* @since 1.6.0
|
1028 |
*/
|
1029 |
public function wp_ajax_get_protect_notice() {
|
1030 |
-
if ( ! current_user_can( 'update_plugins' ) ) {
|
1031 |
wp_send_json_error();
|
1032 |
}
|
1033 |
|
@@ -1045,4 +1065,26 @@ class Boldgrid_Backup_Admin_Auto_Rollback {
|
|
1045 |
|
1046 |
wp_send_json_success( $notice );
|
1047 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1048 |
}
|
223 |
wp_localize_script( $handle, 'localizeScriptData', $localize_script_data );
|
224 |
|
225 |
wp_enqueue_script( $handle );
|
226 |
+
|
227 |
+
// Scripts required for showing backup in progress bar.
|
228 |
+
wp_enqueue_script( 'heartbeat' );
|
229 |
+
wp_enqueue_script( 'jquery-ui-progressbar' );
|
230 |
}
|
231 |
|
232 |
/**
|
277 |
* @since 1.6.0
|
278 |
*/
|
279 |
public function enqueue_home_scripts() {
|
280 |
+
$handle = 'boldgrid-backup-admin-home';
|
281 |
+
|
282 |
+
wp_register_script(
|
283 |
+
$handle,
|
284 |
plugin_dir_url( __FILE__ ) . 'js/boldgrid-backup-admin-home.js',
|
285 |
array( 'jquery' ),
|
286 |
BOLDGRID_BACKUP_VERSION,
|
287 |
false
|
288 |
);
|
289 |
+
|
290 |
+
$translation = array(
|
291 |
+
'savedTo' => __( 'File saved to: ', 'boldgrid-backup' ),
|
292 |
+
'viewDetails' => __( 'View details', 'boldgrid-backup' ),
|
293 |
+
'invalidUrl' => __( 'You must enter valid a URL address.', 'boldgrid-backup' ),
|
294 |
+
'notZip' => __( 'The URL address is not a ZIP file.', 'boldgrid-backup' ),
|
295 |
+
'unknownError' => __( 'Unknown error.', 'boldgrid-backup' ),
|
296 |
+
'ajaxError' => __( 'Could not reach the URL address. HTTP error: ', 'boldgrid-backup' ),
|
297 |
+
'urlRegex' => $this->core->configs['url_regex'],
|
298 |
+
);
|
299 |
+
|
300 |
+
wp_localize_script( $handle, 'BoldGridBackupAdminHome', $translation );
|
301 |
+
wp_enqueue_script( $handle );
|
302 |
}
|
303 |
|
304 |
/**
|
358 |
* @since 1.6.0
|
359 |
*/
|
360 |
public function enqueue_update_selectors() {
|
361 |
+
if ( $this->on_update_page || $this->core->utility->is_admin_page( 'boldgrid-backup' ) ) {
|
362 |
$handle = 'boldgrid-backup-admin-update-selectors';
|
363 |
|
364 |
wp_register_script(
|
776 |
return;
|
777 |
}
|
778 |
|
779 |
+
// If there is a pending rollback (backup within the last hour), then abort.
|
780 |
if ( ! empty( $pending_rollback['lastmodunix'] ) ) {
|
781 |
$this->notice_activated_show();
|
782 |
+
|
783 |
return;
|
784 |
}
|
785 |
|
1047 |
* @since 1.6.0
|
1048 |
*/
|
1049 |
public function wp_ajax_get_protect_notice() {
|
1050 |
+
if ( ! current_user_can( 'update_plugins' ) || ! $this->core->test->run_functionality_tests() ) {
|
1051 |
wp_send_json_error();
|
1052 |
}
|
1053 |
|
1065 |
|
1066 |
wp_send_json_success( $notice );
|
1067 |
}
|
1068 |
+
|
1069 |
+
/**
|
1070 |
+
* Validate the rollback option when retrieved.
|
1071 |
+
*
|
1072 |
+
* @since 1.7.0
|
1073 |
+
*
|
1074 |
+
* @param array|false WordPress option value for "boldgrid_backup_pending_rollback".
|
1075 |
+
* @param string Option name.
|
1076 |
+
* @return array|false
|
1077 |
+
*/
|
1078 |
+
public function validate_rollback_option( $value, $option ) {
|
1079 |
+
$is_coutdown_active = ! empty( $value['deadline'] );
|
1080 |
+
$is_recent_backup = ! empty( $value['lastmodunix'] ) &&
|
1081 |
+
strtotime( '-1 HOUR' ) <= $value['lastmodunix'];
|
1082 |
+
|
1083 |
+
if ( ! $is_recent_backup && ! $is_coutdown_active ) {
|
1084 |
+
delete_site_option( $option );
|
1085 |
+
$value = false;
|
1086 |
+
}
|
1087 |
+
|
1088 |
+
return $value;
|
1089 |
+
}
|
1090 |
}
|
admin/class-boldgrid-backup-admin-backup-dir.php
CHANGED
@@ -168,6 +168,47 @@ class Boldgrid_Backup_Admin_Backup_Dir {
|
|
168 |
return $backup_dir;
|
169 |
}
|
170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
/**
|
172 |
* Get and return the backup directory path.
|
173 |
*
|
@@ -184,8 +225,10 @@ class Boldgrid_Backup_Admin_Backup_Dir {
|
|
184 |
|
185 |
// If we have it in the settings, then use it.
|
186 |
$settings = $this->core->settings->get_settings();
|
187 |
-
if ( ! empty( $settings['backup_directory'] )
|
188 |
-
$this->
|
|
|
|
|
189 |
return $this->backup_directory;
|
190 |
}
|
191 |
|
@@ -293,7 +336,10 @@ class Boldgrid_Backup_Admin_Backup_Dir {
|
|
293 |
|
294 |
$this->set( $backup_directory );
|
295 |
|
|
|
|
|
296 |
$settings['backup_directory'] = $backup_directory;
|
|
|
297 |
$this->core->settings->save( $settings );
|
298 |
|
299 |
return $this->backup_directory;
|
168 |
return $backup_dir;
|
169 |
}
|
170 |
|
171 |
+
/**
|
172 |
+
* Get a directory listing of our backup directory.
|
173 |
+
*
|
174 |
+
* @since 1.7.0
|
175 |
+
*
|
176 |
+
* @return array
|
177 |
+
*/
|
178 |
+
public function dirlist() {
|
179 |
+
$this->get();
|
180 |
+
|
181 |
+
$files = array();
|
182 |
+
|
183 |
+
if ( $this->backup_directory ) {
|
184 |
+
$files = $this->core->wp_filesystem->dirlist( $this->backup_directory );
|
185 |
+
}
|
186 |
+
|
187 |
+
return $files;
|
188 |
+
}
|
189 |
+
|
190 |
+
/**
|
191 |
+
* Find files in backup directory where filename contains search string.
|
192 |
+
*
|
193 |
+
* @since 1.7.0
|
194 |
+
*
|
195 |
+
* @param string $search The search string / needle.
|
196 |
+
* @return array
|
197 |
+
*/
|
198 |
+
public function dirlist_containing( $search ) {
|
199 |
+
$matches = array();
|
200 |
+
$dirlist = $this->dirlist();
|
201 |
+
|
202 |
+
// Find all the files including $search in their filename.
|
203 |
+
foreach ( $dirlist as $filename => $filedata ) {
|
204 |
+
if ( false !== strpos( $filename, $search ) ) {
|
205 |
+
$matches[ $filename ] = $filedata;
|
206 |
+
}
|
207 |
+
}
|
208 |
+
|
209 |
+
return $matches;
|
210 |
+
}
|
211 |
+
|
212 |
/**
|
213 |
* Get and return the backup directory path.
|
214 |
*
|
225 |
|
226 |
// If we have it in the settings, then use it.
|
227 |
$settings = $this->core->settings->get_settings();
|
228 |
+
if ( ! empty( $settings['backup_directory'] ) &&
|
229 |
+
$this->core->wp_filesystem->is_writable( $settings['backup_directory'] ) ) {
|
230 |
+
$this->set( $settings['backup_directory'] );
|
231 |
+
|
232 |
return $this->backup_directory;
|
233 |
}
|
234 |
|
336 |
|
337 |
$this->set( $backup_directory );
|
338 |
|
339 |
+
$settings = $this->core->settings->get_settings();
|
340 |
+
|
341 |
$settings['backup_directory'] = $backup_directory;
|
342 |
+
|
343 |
$this->core->settings->save( $settings );
|
344 |
|
345 |
return $this->backup_directory;
|
admin/class-boldgrid-backup-admin-config.php
CHANGED
@@ -274,10 +274,15 @@ class Boldgrid_Backup_Admin_Config {
|
|
274 |
*/
|
275 |
public function set_lang() {
|
276 |
$this->lang = array(
|
277 |
-
'website_size'
|
278 |
-
'database_size'
|
279 |
-
'of'
|
280 |
-
'xmark'
|
|
|
|
|
|
|
|
|
|
|
281 |
);
|
282 |
}
|
283 |
|
274 |
*/
|
275 |
public function set_lang() {
|
276 |
$this->lang = array(
|
277 |
+
'website_size' => esc_html__( 'Website Size:', 'boldgrid-backup' ),
|
278 |
+
'database_size' => esc_html__( 'Database Size:', 'boldgrid-backup' ),
|
279 |
+
'of' => esc_html__( 'of', 'boldgrid-backup' ),
|
280 |
+
'xmark' => '✗',
|
281 |
+
'update' => esc_html__( 'Update', 'boldgrid-backup' ),
|
282 |
+
'updating' => esc_html__( 'Updating...', 'boldgrid-backup' ),
|
283 |
+
'updated' => esc_html__( 'Updated!', 'boldgrid-backup' ),
|
284 |
+
'failed_to_update' => esc_html__( 'Failed to update: ', 'boldgrid-backup' ),
|
285 |
+
'unknown_error' => esc_html__( 'Unknown error.', 'boldgrid-backup' ),
|
286 |
);
|
287 |
}
|
288 |
|
admin/class-boldgrid-backup-admin-core.php
CHANGED
@@ -499,17 +499,25 @@ class Boldgrid_Backup_Admin_Core {
|
|
499 |
*/
|
500 |
public $scheduler;
|
501 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
502 |
/**
|
503 |
* Constructor.
|
504 |
*
|
505 |
* @since 1.0
|
506 |
*
|
507 |
-
* @global $wp_filesystem
|
508 |
*/
|
509 |
public function __construct() {
|
510 |
WP_Filesystem();
|
511 |
global $wp_filesystem;
|
512 |
-
|
513 |
global $pagenow;
|
514 |
|
515 |
$this->doing_cron = ( defined( 'DOING_CRON' ) && DOING_CRON ) || isset( $_GET['doing_wp_cron'] ); // phpcs:ignore WordPress.CSRF.NonceVerification.NoNonceVerification
|
@@ -611,6 +619,8 @@ class Boldgrid_Backup_Admin_Core {
|
|
611 |
|
612 |
$this->cron_log = new Boldgrid_Backup_Admin_Cron_Log( $this );
|
613 |
|
|
|
|
|
614 |
// Ensure there is a backup identifier.
|
615 |
$this->get_backup_identifier();
|
616 |
|
@@ -742,13 +752,14 @@ class Boldgrid_Backup_Admin_Core {
|
|
742 |
*
|
743 |
* @since 1.0
|
744 |
*
|
745 |
-
* @param
|
746 |
-
* @param
|
747 |
-
* @param
|
748 |
-
* @param
|
|
|
749 |
* @return string|bool Returns the command output or FALSE on error.
|
750 |
*/
|
751 |
-
public function execute_command( $command, $available_exec_functions = array(), &$success = false, &$return_var = 0 ) {
|
752 |
// If no command was passed, then fail.
|
753 |
if ( empty( $command ) ) {
|
754 |
return false;
|
@@ -759,6 +770,11 @@ class Boldgrid_Backup_Admin_Core {
|
|
759 |
$available_exec_functions = $this->get_execution_functions();
|
760 |
}
|
761 |
|
|
|
|
|
|
|
|
|
|
|
762 |
// Disable stderr.
|
763 |
if ( ! $this->test->is_windows() && false === strpos( $command, '2>/dev/null' ) ) {
|
764 |
$command .= ' 2>/dev/null';
|
@@ -949,7 +965,7 @@ class Boldgrid_Backup_Admin_Core {
|
|
949 |
global $submenu;
|
950 |
|
951 |
$lang = array(
|
952 |
-
'backup_archive' => __( 'Backup
|
953 |
'boldgrid_backup' => __( 'BoldGrid Backup', 'boldgrid-backup' ),
|
954 |
'get_premium' => __( 'Get Premium', 'boldgrid-bacukp' ),
|
955 |
'preflight_check' => __( 'Preflight Check', 'boldgrid-backup' ),
|
@@ -958,13 +974,7 @@ class Boldgrid_Backup_Admin_Core {
|
|
958 |
);
|
959 |
|
960 |
// The main slug all sub menu items are children of.
|
961 |
-
$main_slug = 'boldgrid-backup
|
962 |
-
|
963 |
-
// The callable function for the settings page.
|
964 |
-
$settings_page = array(
|
965 |
-
$this->settings,
|
966 |
-
'page_backup_settings',
|
967 |
-
);
|
968 |
|
969 |
// The capability required for these menu items to be displayed to the user.
|
970 |
$capability = 'administrator';
|
@@ -974,10 +984,26 @@ class Boldgrid_Backup_Admin_Core {
|
|
974 |
$lang['boldgrid_backup'],
|
975 |
$capability,
|
976 |
$main_slug,
|
977 |
-
|
|
|
|
|
|
|
978 |
'none'
|
979 |
);
|
980 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
981 |
/*
|
982 |
* Add "Settings", formally known as "Backup Settings".
|
983 |
*
|
@@ -988,20 +1014,10 @@ class Boldgrid_Backup_Admin_Core {
|
|
988 |
$lang['boldgrid_backup'] . ' ' . $lang['settings'],
|
989 |
$lang['settings'],
|
990 |
$capability,
|
991 |
-
|
992 |
-
$settings_page
|
993 |
-
);
|
994 |
-
|
995 |
-
// Add "Backup Archive", formally known as "BoldGrid Backup".
|
996 |
-
add_submenu_page(
|
997 |
-
$main_slug,
|
998 |
-
'BoldGrid ' . $lang['backup_archive'],
|
999 |
-
$lang['backup_archive'],
|
1000 |
-
$capability,
|
1001 |
-
'boldgrid-backup',
|
1002 |
array(
|
1003 |
-
$this,
|
1004 |
-
'
|
1005 |
)
|
1006 |
);
|
1007 |
|
@@ -1271,10 +1287,11 @@ class Boldgrid_Backup_Admin_Core {
|
|
1271 |
|
1272 |
// If changed, then restore the WP Option for "home".
|
1273 |
if ( $restored_wp_home !== $wp_home ) {
|
1274 |
-
// Ensure there are no trailing slashes in siteurl.
|
1275 |
-
$wp_home = untrailingslashit( $wp_home );
|
1276 |
|
1277 |
-
|
|
|
|
|
|
|
1278 |
}
|
1279 |
|
1280 |
// Return success.
|
@@ -1504,6 +1521,12 @@ class Boldgrid_Backup_Admin_Core {
|
|
1504 |
public function archive_files( $save = false, $dryrun = false ) {
|
1505 |
$this->pre_auto_update = 'pre_auto_update' === current_filter();
|
1506 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1507 |
/**
|
1508 |
* Actions to take before any archiving begins.
|
1509 |
*
|
@@ -1566,6 +1589,8 @@ class Boldgrid_Backup_Admin_Core {
|
|
1566 |
'folder_include' => $this->folder_exclusion->from_settings( 'include' ),
|
1567 |
'folder_exclude' => $this->folder_exclusion->from_settings( 'exclude' ),
|
1568 |
'table_exclude' => $this->db_omit->get_excluded_tables(),
|
|
|
|
|
1569 |
);
|
1570 |
|
1571 |
// Determine how this backup was triggered.
|
@@ -1660,6 +1685,12 @@ class Boldgrid_Backup_Admin_Core {
|
|
1660 |
*/
|
1661 |
$info = apply_filters( 'boldgrid_backup_pre_archive_info', $info );
|
1662 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1663 |
/*
|
1664 |
* Use the chosen compressor to build an archive.
|
1665 |
* If the is no available compressor, then return an error.
|
@@ -1700,6 +1731,9 @@ class Boldgrid_Backup_Admin_Core {
|
|
1700 |
break;
|
1701 |
}
|
1702 |
|
|
|
|
|
|
|
1703 |
$info['total_size'] += $this->filelist->get_total_size( $filelist );
|
1704 |
|
1705 |
if ( true === $status && ! $this->wp_filesystem->exists( $info['filepath'] ) ) {
|
@@ -1761,8 +1795,16 @@ class Boldgrid_Backup_Admin_Core {
|
|
1761 |
*/
|
1762 |
do_action( 'boldgrid_backup_post_archive_files', $info );
|
1763 |
|
1764 |
-
|
1765 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1766 |
$email_parts = $this->email->post_archive_parts( $info );
|
1767 |
$email_body = $email_parts['body']['main'] . $email_parts['body']['signature'];
|
1768 |
$info['mail_success'] = $this->email->send( $email_parts['subject'], $email_body );
|
@@ -1781,6 +1823,12 @@ class Boldgrid_Backup_Admin_Core {
|
|
1781 |
update_option( 'boldgrid_backup_latest_backup', $info );
|
1782 |
}
|
1783 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1784 |
// Return the array of archive information.
|
1785 |
return $info;
|
1786 |
}
|
@@ -2414,6 +2462,8 @@ class Boldgrid_Backup_Admin_Core {
|
|
2414 |
* a message should be displayed with the path to download using an alternate method.
|
2415 |
*
|
2416 |
* @since 1.0
|
|
|
|
|
2417 |
*/
|
2418 |
public function download_archive_file_callback() {
|
2419 |
// Verify nonce, or die.
|
@@ -2475,27 +2525,8 @@ class Boldgrid_Backup_Admin_Core {
|
|
2475 |
|
2476 |
$filesize = $archives[ $download_key ]['filesize'];
|
2477 |
|
2478 |
-
// Send
|
2479 |
-
|
2480 |
-
header( 'Content-Transfer-Encoding: binary' );
|
2481 |
-
header( 'Content-Type: binary/octet-stream' );
|
2482 |
-
header( 'Content-Length: ' . $filesize );
|
2483 |
-
|
2484 |
-
// Check and flush output buffer if needed.
|
2485 |
-
if ( 0 !== ob_get_level() ) {
|
2486 |
-
ob_end_flush();
|
2487 |
-
}
|
2488 |
-
|
2489 |
-
// Close any PHP session, so another session can open during the download.
|
2490 |
-
session_write_close();
|
2491 |
-
|
2492 |
-
// Send the file. Not finding a replacement in $wp_filesystem.
|
2493 |
-
// phpcs:disable
|
2494 |
-
readfile( $filepath );
|
2495 |
-
// phpcs:enable
|
2496 |
-
|
2497 |
-
// Exit.
|
2498 |
-
wp_die();
|
2499 |
}
|
2500 |
|
2501 |
/**
|
@@ -2734,9 +2765,17 @@ class Boldgrid_Backup_Admin_Core {
|
|
2734 |
// Get backup settings.
|
2735 |
$settings = $this->settings->get_settings();
|
2736 |
|
2737 |
-
// Get archive list.
|
2738 |
$archives = $this->get_archive_list();
|
2739 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2740 |
// Get the archives file count.
|
2741 |
$archives_count = count( $archives );
|
2742 |
|
499 |
*/
|
500 |
public $scheduler;
|
501 |
|
502 |
+
/**
|
503 |
+
* The public download class object.
|
504 |
+
*
|
505 |
+
* @since 1.7.0
|
506 |
+
* @access public
|
507 |
+
* @var Boldgrid_Backup_Download
|
508 |
+
*/
|
509 |
+
public $download;
|
510 |
+
|
511 |
/**
|
512 |
* Constructor.
|
513 |
*
|
514 |
* @since 1.0
|
515 |
*
|
516 |
+
* @global $wp_filesystem
|
517 |
*/
|
518 |
public function __construct() {
|
519 |
WP_Filesystem();
|
520 |
global $wp_filesystem;
|
|
|
521 |
global $pagenow;
|
522 |
|
523 |
$this->doing_cron = ( defined( 'DOING_CRON' ) && DOING_CRON ) || isset( $_GET['doing_wp_cron'] ); // phpcs:ignore WordPress.CSRF.NonceVerification.NoNonceVerification
|
619 |
|
620 |
$this->cron_log = new Boldgrid_Backup_Admin_Cron_Log( $this );
|
621 |
|
622 |
+
$this->download = new Boldgrid_Backup_Download( $this );
|
623 |
+
|
624 |
// Ensure there is a backup identifier.
|
625 |
$this->get_backup_identifier();
|
626 |
|
752 |
*
|
753 |
* @since 1.0
|
754 |
*
|
755 |
+
* @param string $command A command string to be executed.
|
756 |
+
* @param array $available_exec_functions An array of available execution functions.
|
757 |
+
* @param bool $success Success or failure of the operation, passed back.
|
758 |
+
* @param int $return_var If present, the return_var, passed back.
|
759 |
+
* @param string $filepath An optional file path to write the output.
|
760 |
* @return string|bool Returns the command output or FALSE on error.
|
761 |
*/
|
762 |
+
public function execute_command( $command, $available_exec_functions = array(), &$success = false, &$return_var = 0, $filepath = null ) {
|
763 |
// If no command was passed, then fail.
|
764 |
if ( empty( $command ) ) {
|
765 |
return false;
|
770 |
$available_exec_functions = $this->get_execution_functions();
|
771 |
}
|
772 |
|
773 |
+
// If an output filepath is supplied, and the directory is writable, then write to file.
|
774 |
+
if ( $filepath && $this->wp_filesystem->is_writable( dirname( $filepath ) ) ) {
|
775 |
+
$command .= ' > ' . wp_normalize_path( $filepath );
|
776 |
+
}
|
777 |
+
|
778 |
// Disable stderr.
|
779 |
if ( ! $this->test->is_windows() && false === strpos( $command, '2>/dev/null' ) ) {
|
780 |
$command .= ' 2>/dev/null';
|
965 |
global $submenu;
|
966 |
|
967 |
$lang = array(
|
968 |
+
'backup_archive' => __( 'Backup Archives', 'boldgrid-backup' ),
|
969 |
'boldgrid_backup' => __( 'BoldGrid Backup', 'boldgrid-backup' ),
|
970 |
'get_premium' => __( 'Get Premium', 'boldgrid-bacukp' ),
|
971 |
'preflight_check' => __( 'Preflight Check', 'boldgrid-backup' ),
|
974 |
);
|
975 |
|
976 |
// The main slug all sub menu items are children of.
|
977 |
+
$main_slug = 'boldgrid-backup';
|
|
|
|
|
|
|
|
|
|
|
|
|
978 |
|
979 |
// The capability required for these menu items to be displayed to the user.
|
980 |
$capability = 'administrator';
|
984 |
$lang['boldgrid_backup'],
|
985 |
$capability,
|
986 |
$main_slug,
|
987 |
+
array(
|
988 |
+
$this,
|
989 |
+
'page_archives',
|
990 |
+
),
|
991 |
'none'
|
992 |
);
|
993 |
|
994 |
+
// Add "Backup Archive", formally known as "BoldGrid Backup".
|
995 |
+
add_submenu_page(
|
996 |
+
$main_slug,
|
997 |
+
'BoldGrid ' . $lang['backup_archive'],
|
998 |
+
$lang['backup_archive'],
|
999 |
+
$capability,
|
1000 |
+
'boldgrid-backup',
|
1001 |
+
array(
|
1002 |
+
$this,
|
1003 |
+
'page_archives',
|
1004 |
+
)
|
1005 |
+
);
|
1006 |
+
|
1007 |
/*
|
1008 |
* Add "Settings", formally known as "Backup Settings".
|
1009 |
*
|
1014 |
$lang['boldgrid_backup'] . ' ' . $lang['settings'],
|
1015 |
$lang['settings'],
|
1016 |
$capability,
|
1017 |
+
'boldgrid-backup-settings',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1018 |
array(
|
1019 |
+
$this->settings,
|
1020 |
+
'page_backup_settings',
|
1021 |
)
|
1022 |
);
|
1023 |
|
1287 |
|
1288 |
// If changed, then restore the WP Option for "home".
|
1289 |
if ( $restored_wp_home !== $wp_home ) {
|
|
|
|
|
1290 |
|
1291 |
+
// There may be a filter, so remove it.
|
1292 |
+
remove_all_filters( 'pre_update_option_home' );
|
1293 |
+
|
1294 |
+
update_option( 'home', untrailingslashit( $wp_home ) );
|
1295 |
}
|
1296 |
|
1297 |
// Return success.
|
1521 |
public function archive_files( $save = false, $dryrun = false ) {
|
1522 |
$this->pre_auto_update = 'pre_auto_update' === current_filter();
|
1523 |
|
1524 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_args(
|
1525 |
+
array(
|
1526 |
+
'status' => __( 'Initializing backup', 'boldgrid-backup' ),
|
1527 |
+
)
|
1528 |
+
);
|
1529 |
+
|
1530 |
/**
|
1531 |
* Actions to take before any archiving begins.
|
1532 |
*
|
1589 |
'folder_include' => $this->folder_exclusion->from_settings( 'include' ),
|
1590 |
'folder_exclude' => $this->folder_exclusion->from_settings( 'exclude' ),
|
1591 |
'table_exclude' => $this->db_omit->get_excluded_tables(),
|
1592 |
+
'title' => ! empty( $_POST['backup_title'] ) ? stripslashes( $_POST['backup_title'] ) : null, // phpcs:ignore WordPress.CSRF.NonceVerification,WordPress.Arrays.ArrayDeclarationSpacing.ArrayItemNoNewLine
|
1593 |
+
'description' => ! empty( $_POST['backup_description'] ) ? stripslashes( $_POST['backup_description'] ) : null, // phpcs:ignore WordPress.CSRF.NonceVerification,WordPress.Arrays.ArrayDeclarationSpacing.ArrayItemNoNewLine
|
1594 |
);
|
1595 |
|
1596 |
// Determine how this backup was triggered.
|
1685 |
*/
|
1686 |
$info = apply_filters( 'boldgrid_backup_pre_archive_info', $info );
|
1687 |
|
1688 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_args(
|
1689 |
+
array(
|
1690 |
+
'total_files_todo' => count( $filelist ),
|
1691 |
+
)
|
1692 |
+
);
|
1693 |
+
|
1694 |
/*
|
1695 |
* Use the chosen compressor to build an archive.
|
1696 |
* If the is no available compressor, then return an error.
|
1731 |
break;
|
1732 |
}
|
1733 |
|
1734 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_arg( 'status', __( 'Wrapping things up...', 'boldgrid-backup' ) );
|
1735 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_arg( 'percentage', 100 );
|
1736 |
+
|
1737 |
$info['total_size'] += $this->filelist->get_total_size( $filelist );
|
1738 |
|
1739 |
if ( true === $status && ! $this->wp_filesystem->exists( $info['filepath'] ) ) {
|
1795 |
*/
|
1796 |
do_action( 'boldgrid_backup_post_archive_files', $info );
|
1797 |
|
1798 |
+
/*
|
1799 |
+
* Send an email to the user, RIGHT NOW.
|
1800 |
+
*
|
1801 |
+
* Only send an email to the user now IF they are manually creating a backup. If this backup
|
1802 |
+
* was created during a scheduled backup, the user will get an email from the jobs queue.
|
1803 |
+
* Scheduled backups receive email notifications from the jobs queue because that email will
|
1804 |
+
* not only include the standard info about the backup (which we're sending now), it will
|
1805 |
+
* also include info about other jobs that were ran (such as uploading the backup remotely).
|
1806 |
+
*/
|
1807 |
+
if ( $this->email->user_wants_notification( 'backup' ) && ! $is_scheduled_backup ) {
|
1808 |
$email_parts = $this->email->post_archive_parts( $info );
|
1809 |
$email_body = $email_parts['body']['main'] . $email_parts['body']['signature'];
|
1810 |
$info['mail_success'] = $this->email->send( $email_parts['subject'], $email_body );
|
1823 |
update_option( 'boldgrid_backup_latest_backup', $info );
|
1824 |
}
|
1825 |
|
1826 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_args(
|
1827 |
+
array(
|
1828 |
+
'status' => __( 'Backup complete!', 'boldgrid-backup' ),
|
1829 |
+
)
|
1830 |
+
);
|
1831 |
+
|
1832 |
// Return the array of archive information.
|
1833 |
return $info;
|
1834 |
}
|
2462 |
* a message should be displayed with the path to download using an alternate method.
|
2463 |
*
|
2464 |
* @since 1.0
|
2465 |
+
*
|
2466 |
+
* @see Boldgrid_Backup_File::send_file()
|
2467 |
*/
|
2468 |
public function download_archive_file_callback() {
|
2469 |
// Verify nonce, or die.
|
2525 |
|
2526 |
$filesize = $archives[ $download_key ]['filesize'];
|
2527 |
|
2528 |
+
// Send the file and die nicely.
|
2529 |
+
Boldgrid_Backup_File::send_file( $filepath, $filesize );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2530 |
}
|
2531 |
|
2532 |
/**
|
2765 |
// Get backup settings.
|
2766 |
$settings = $this->settings->get_settings();
|
2767 |
|
|
|
2768 |
$archives = $this->get_archive_list();
|
2769 |
|
2770 |
+
// Remove from the list of archives any that have been flagged as being protected.
|
2771 |
+
foreach ( $archives as $key => $archive ) {
|
2772 |
+
$this->archive->init( $archive['filepath'] );
|
2773 |
+
if ( '1' === $this->archive->get_attribute( 'protect' ) ) {
|
2774 |
+
unset( $archives[ $key ] );
|
2775 |
+
}
|
2776 |
+
}
|
2777 |
+
$archives = array_values( $archives );
|
2778 |
+
|
2779 |
// Get the archives file count.
|
2780 |
$archives_count = count( $archives );
|
2781 |
|
admin/class-boldgrid-backup-admin-db-dump.php
CHANGED
@@ -54,6 +54,14 @@ class Boldgrid_Backup_Admin_Db_Dump {
|
|
54 |
return array( 'error' => esc_html__( 'No tables selected to backup.', 'boldgrid-backup' ) );
|
55 |
}
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
/**
|
58 |
* Take action before a database is dumped.
|
59 |
*
|
54 |
return array( 'error' => esc_html__( 'No tables selected to backup.', 'boldgrid-backup' ) );
|
55 |
}
|
56 |
|
57 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_args(
|
58 |
+
array(
|
59 |
+
'status' => __( 'Backing up database...', 'boldgrid-backup' ),
|
60 |
+
'tables' => $include_tables,
|
61 |
+
'step' => 1,
|
62 |
+
)
|
63 |
+
);
|
64 |
+
|
65 |
/**
|
66 |
* Take action before a database is dumped.
|
67 |
*
|
admin/class-boldgrid-backup-admin-email.php
CHANGED
@@ -87,7 +87,7 @@ class Boldgrid_Backup_Admin_Email {
|
|
87 |
'generic' => $this->core->config->get_is_premium() ? '' : sprintf(
|
88 |
// translators: 1: URL address.
|
89 |
__( 'Want to store your backups on Amazon S3, restore individual files with just a click, and have access to more tools? Get BoldGrid Backup Premium! - %1$s', 'boldgrid-backup' ),
|
90 |
-
|
91 |
) . "\n\n",
|
92 |
);
|
93 |
}
|
87 |
'generic' => $this->core->config->get_is_premium() ? '' : sprintf(
|
88 |
// translators: 1: URL address.
|
89 |
__( 'Want to store your backups on Amazon S3, restore individual files with just a click, and have access to more tools? Get BoldGrid Backup Premium! - %1$s', 'boldgrid-backup' ),
|
90 |
+
$this->core->go_pro->get_premium_url( 'bgbkup-email' )
|
91 |
) . "\n\n",
|
92 |
);
|
93 |
}
|
admin/class-boldgrid-backup-admin-go-pro.php
CHANGED
@@ -91,7 +91,7 @@ class Boldgrid_Backup_Admin_Go_Pro {
|
|
91 |
'message' => '<p>' . sprintf(
|
92 |
// translators: 1: URL address for the upgrade page.
|
93 |
__( 'Thank you for activating the <strong>BoldGrid Backup Premium Extension</strong>! Before you can begin using all of the premium features, you must <a href="%2$s">add your premium key</a>. If you are using an Official BoldGrid Host, contact them or login to their management system to retrieve your Premium key. Otherwise, please visit <a href="%1$s" target="_blank">BoldGrid Central</a> to upgrade.', 'boldgrid-backup' ),
|
94 |
-
|
95 |
admin_url( 'admin.php?page=boldgrid-backup-settings§ion=connect_key' )
|
96 |
) . '</p>',
|
97 |
),
|
@@ -126,7 +126,9 @@ class Boldgrid_Backup_Admin_Go_Pro {
|
|
126 |
* @param string $text Button text.
|
127 |
* @return string
|
128 |
*/
|
129 |
-
public function get_premium_button( $url =
|
|
|
|
|
130 |
return sprintf(
|
131 |
'
|
132 |
<a href="%1$s" class="button button-success" target="_blank">%2$s</a>',
|
@@ -134,4 +136,19 @@ class Boldgrid_Backup_Admin_Go_Pro {
|
|
134 |
$text
|
135 |
);
|
136 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
}
|
91 |
'message' => '<p>' . sprintf(
|
92 |
// translators: 1: URL address for the upgrade page.
|
93 |
__( 'Thank you for activating the <strong>BoldGrid Backup Premium Extension</strong>! Before you can begin using all of the premium features, you must <a href="%2$s">add your premium key</a>. If you are using an Official BoldGrid Host, contact them or login to their management system to retrieve your Premium key. Otherwise, please visit <a href="%1$s" target="_blank">BoldGrid Central</a> to upgrade.', 'boldgrid-backup' ),
|
94 |
+
$this->get_premium_url( 'bgbkup-premium-activate' ),
|
95 |
admin_url( 'admin.php?page=boldgrid-backup-settings§ion=connect_key' )
|
96 |
) . '</p>',
|
97 |
),
|
126 |
* @param string $text Button text.
|
127 |
* @return string
|
128 |
*/
|
129 |
+
public function get_premium_button( $url = null, $text = 'Get Premium' ) {
|
130 |
+
$url = ! empty( $url ) ? $url : $this->get_premium_url();
|
131 |
+
|
132 |
return sprintf(
|
133 |
'
|
134 |
<a href="%1$s" class="button button-success" target="_blank">%2$s</a>',
|
136 |
$text
|
137 |
);
|
138 |
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* Get a "Get Premium" url.
|
142 |
+
*
|
143 |
+
* @since 1.7.0
|
144 |
+
*
|
145 |
+
* @param string $source Source to append to url.
|
146 |
+
* @param string $url URL address for the upgrade page.
|
147 |
+
* @return string
|
148 |
+
*/
|
149 |
+
public function get_premium_url( $source = 'bgbkup', $url = 'https://www.boldgrid.com/update-backup' ) {
|
150 |
+
$url = add_query_arg( 'source', $source, $url );
|
151 |
+
|
152 |
+
return $url;
|
153 |
+
}
|
154 |
}
|
admin/class-boldgrid-backup-admin-in-progress-data.php
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class: Boldgrid_Backup_Admin_In_Progress_Data
|
4 |
+
*
|
5 |
+
* This class used for managing the data used by the Boldgrid_Backup_Admin_In_Progress class.
|
6 |
+
*
|
7 |
+
* @link https://www.boldgrid.com
|
8 |
+
* @since 1.7.0
|
9 |
+
*
|
10 |
+
* @package Boldgrid_Backup
|
11 |
+
* @subpackage Boldgrid_Backup/admin
|
12 |
+
* @copyright BoldGrid
|
13 |
+
* @version $Id$
|
14 |
+
* @author BoldGrid <support@boldgrid.com>
|
15 |
+
*/
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Class: Boldgrid_Backup_Admin_In_Progress_Data
|
19 |
+
*
|
20 |
+
* @since 1.7.0
|
21 |
+
*/
|
22 |
+
class Boldgrid_Backup_Admin_In_Progress_Data {
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Option name in which data is stored.
|
26 |
+
*
|
27 |
+
* @since 1.7.0
|
28 |
+
* @var string
|
29 |
+
*/
|
30 |
+
public static $option_name = 'boldgrid_backup_in_progress_data';
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Delete one arguement.
|
34 |
+
*
|
35 |
+
* @since 1.7.0
|
36 |
+
*
|
37 |
+
* @param string $arg The key.
|
38 |
+
*/
|
39 |
+
public static function delete_arg( $arg ) {
|
40 |
+
$args = self::get_args();
|
41 |
+
|
42 |
+
if ( isset( $args[ $arg ] ) ) {
|
43 |
+
unset( $args[ $arg ] );
|
44 |
+
}
|
45 |
+
|
46 |
+
update_option( self::$option_name, $args );
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Get one argument.
|
51 |
+
*
|
52 |
+
* @since 1.7.0
|
53 |
+
*
|
54 |
+
* @return mixed
|
55 |
+
*/
|
56 |
+
public static function get_arg( $key ) {
|
57 |
+
$args = get_option( self::$option_name );
|
58 |
+
|
59 |
+
return isset( $args[ $key ] ) ? $args[ $key ] : false;
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Get all arguments.
|
64 |
+
*
|
65 |
+
* @since 1.7.0
|
66 |
+
*
|
67 |
+
* @return array
|
68 |
+
*/
|
69 |
+
public static function get_args() {
|
70 |
+
return get_option( self::$option_name );
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Get required markup to show the progress bar.
|
75 |
+
*
|
76 |
+
* Generally displayed under a "Backup Now" button.
|
77 |
+
*
|
78 |
+
* @since 1.7.0
|
79 |
+
*/
|
80 |
+
public static function get_markup( $label = null ) {
|
81 |
+
$label = ! empty( $label ) ? $label : __( 'Initializing backup...', 'boldgrid-backup' );
|
82 |
+
|
83 |
+
$steps = '<div id="boldgrid_backup_in_progress_steps">
|
84 |
+
<div class="step" data-step="1">' . esc_html__( 'Backing up database...', 'boldgrid-backup' ) . '</div>
|
85 |
+
<div class="step" data-step="2">' . esc_html__( 'Adding files to archive...', 'boldgrid-backup' ) . '</div>
|
86 |
+
<div class="step" data-step="3">' . esc_html__( 'Saving archive to disk...', 'boldgrid-backup' ) . '</div>
|
87 |
+
</div>';
|
88 |
+
|
89 |
+
$progress_bar = '<div id="boldgrid-backup-in-progress-bar">
|
90 |
+
<div class="progress-label">' . esc_html( $label ) . '</div>
|
91 |
+
<div id="last_file_archived"></div>
|
92 |
+
</div>';
|
93 |
+
|
94 |
+
return '<div id="boldgrid_backup_in_progress_container" class="hidden">' . $steps . $progress_bar . '</div>';
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Set one arguement, a key / value pair.
|
99 |
+
*
|
100 |
+
* @since 1.7.0
|
101 |
+
*
|
102 |
+
* @param string $arg The key.
|
103 |
+
* @param string $value The value.
|
104 |
+
*/
|
105 |
+
public static function set_arg( $arg, $value ) {
|
106 |
+
$args = self::get_args();
|
107 |
+
|
108 |
+
$args[ $arg ] = $value;
|
109 |
+
|
110 |
+
update_option( self::$option_name, $args );
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Set arguments.
|
115 |
+
*
|
116 |
+
* @since 1.7.0
|
117 |
+
*
|
118 |
+
* @param array $args Arguments.
|
119 |
+
*/
|
120 |
+
public static function set_args( $args ) {
|
121 |
+
update_option( self::$option_name, $args );
|
122 |
+
}
|
123 |
+
}
|
admin/class-boldgrid-backup-admin-in-progress.php
CHANGED
@@ -72,6 +72,8 @@ class Boldgrid_Backup_Admin_In_Progress {
|
|
72 |
*/
|
73 |
wp_enqueue_script( 'heartbeat' );
|
74 |
|
|
|
|
|
75 |
$elapsed = time() - $in_progress;
|
76 |
$limit = 15 * MINUTE_IN_SECONDS;
|
77 |
|
@@ -146,16 +148,18 @@ class Boldgrid_Backup_Admin_In_Progress {
|
|
146 |
return false;
|
147 |
}
|
148 |
|
149 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
'class' => 'notice notice-warning boldgrid-backup-in-progress',
|
151 |
-
'message' =>
|
152 |
-
// translators: 1: Time difference.
|
153 |
-
__(
|
154 |
-
'BoldGrid Backup began archiving your website %1$s ago.',
|
155 |
-
'boldgrid-backup'
|
156 |
-
),
|
157 |
-
human_time_diff( $in_progress, time() )
|
158 |
-
),
|
159 |
'heading' => __( 'BoldGrid Backup - Backup in progress', 'boldgrid-backup' ),
|
160 |
);
|
161 |
|
@@ -181,6 +185,47 @@ class Boldgrid_Backup_Admin_In_Progress {
|
|
181 |
return $markup;
|
182 |
}
|
183 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
/**
|
185 |
* Take action when the heartbeat is received.
|
186 |
*
|
@@ -206,6 +251,16 @@ class Boldgrid_Backup_Admin_In_Progress {
|
|
206 |
// Our "backup complete!" admin notice.
|
207 |
$response['boldgrid_backup_complete'] = $this->core->notice->get_backup_complete();
|
208 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
return $response;
|
210 |
}
|
211 |
|
72 |
*/
|
73 |
wp_enqueue_script( 'heartbeat' );
|
74 |
|
75 |
+
wp_enqueue_script( 'jquery-ui-progressbar' );
|
76 |
+
|
77 |
$elapsed = time() - $in_progress;
|
78 |
$limit = 15 * MINUTE_IN_SECONDS;
|
79 |
|
148 |
return false;
|
149 |
}
|
150 |
|
151 |
+
/*
|
152 |
+
* Create our notice for atop the page.
|
153 |
+
*
|
154 |
+
* Initially started out as "backup in progress". Has expanded to include a progress bar.
|
155 |
+
*/
|
156 |
+
$loading = __( 'Loading...', 'bgtfw' );
|
157 |
+
// translators: 1: The time since the last backup was initiated.
|
158 |
+
$message = '<p>' . sprintf( __( 'BoldGrid Backup began archiving your website %1$s ago.', 'boldgrid-backup' ), human_time_diff( $in_progress, time() ) ) . '</p>';
|
159 |
+
$message .= Boldgrid_Backup_Admin_In_Progress_Data::get_markup( $loading );
|
160 |
+
$notice = array(
|
161 |
'class' => 'notice notice-warning boldgrid-backup-in-progress',
|
162 |
+
'message' => $message,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
'heading' => __( 'BoldGrid Backup - Backup in progress', 'boldgrid-backup' ),
|
164 |
);
|
165 |
|
185 |
return $markup;
|
186 |
}
|
187 |
|
188 |
+
/**
|
189 |
+
* Get details on our temporary zip file.
|
190 |
+
*
|
191 |
+
* For example, if we're in the middle of saving / closing our backup file, there should be a
|
192 |
+
* file.zip.temp file in our backup directory. We are getting the details of that file.
|
193 |
+
*
|
194 |
+
* @since 1.7.0
|
195 |
+
*
|
196 |
+
* @return array
|
197 |
+
*/
|
198 |
+
public function get_tmp() {
|
199 |
+
$data = array();
|
200 |
+
|
201 |
+
$dirlist = $this->core->backup_dir->dirlist_containing( '.zip.' );
|
202 |
+
|
203 |
+
/*
|
204 |
+
* We should only have one temp zip file. If we have multiple though, something may have
|
205 |
+
* gone recently. Sort by timestamp and use the newest file.
|
206 |
+
*/
|
207 |
+
if ( 1 < count( $dirlist ) ) {
|
208 |
+
uasort(
|
209 |
+
$dirlist, function( $item1, $item2 ) {
|
210 |
+
return $item1['lastmodunix'] < $item2['lastmodunix'] ? 1 : -1;
|
211 |
+
}
|
212 |
+
);
|
213 |
+
}
|
214 |
+
|
215 |
+
if ( 1 <= count( $dirlist ) ) {
|
216 |
+
reset( $dirlist );
|
217 |
+
$tmp_filename = key( $dirlist );
|
218 |
+
|
219 |
+
$data = array(
|
220 |
+
'size' => $dirlist[ $tmp_filename ]['size'],
|
221 |
+
'lastmodunix' => $dirlist[ $tmp_filename ]['lastmodunix'],
|
222 |
+
'size_format' => size_format( $dirlist[ $tmp_filename ]['size'] ),
|
223 |
+
);
|
224 |
+
}
|
225 |
+
|
226 |
+
return $data;
|
227 |
+
}
|
228 |
+
|
229 |
/**
|
230 |
* Take action when the heartbeat is received.
|
231 |
*
|
251 |
// Our "backup complete!" admin notice.
|
252 |
$response['boldgrid_backup_complete'] = $this->core->notice->get_backup_complete();
|
253 |
|
254 |
+
$response['in_progress_data'] = Boldgrid_Backup_Admin_In_Progress_Data::get_args();
|
255 |
+
|
256 |
+
// Steps to take if we're on the last step, step 3, closing the archive.
|
257 |
+
if ( 3 === Boldgrid_Backup_Admin_In_Progress_Data::get_arg( 'step' ) ) {
|
258 |
+
$tmp = $this->get_tmp();
|
259 |
+
if ( ! empty( $tmp ) ) {
|
260 |
+
$response['in_progress_data']['tmp'] = $tmp;
|
261 |
+
}
|
262 |
+
}
|
263 |
+
|
264 |
return $response;
|
265 |
}
|
266 |
|
admin/class-boldgrid-backup-admin-notice.php
CHANGED
@@ -227,4 +227,23 @@ class Boldgrid_Backup_Admin_Notice {
|
|
227 |
|
228 |
return $message;
|
229 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
}
|
227 |
|
228 |
return $message;
|
229 |
}
|
230 |
+
|
231 |
+
/**
|
232 |
+
* Display a notice for auto-update settings.
|
233 |
+
*
|
234 |
+
* @since 1.7.0
|
235 |
+
*/
|
236 |
+
public function display_autoupdate_notice() {
|
237 |
+
$message = sprintf(
|
238 |
+
// translators: 1: HTML anchor opening tag, 2: HTML anchor closing tag.
|
239 |
+
esc_html__(
|
240 |
+
'Auto-Updates can be configured in the %1$sBoldGrid Backup Settings%2$s.',
|
241 |
+
'boldgrid-backup'
|
242 |
+
),
|
243 |
+
'<a href="' . admin_url( 'admin.php?page=boldgrid-backup-settings§ion=section_auto_updates' ) . '">',
|
244 |
+
'</a>'
|
245 |
+
);
|
246 |
+
|
247 |
+
do_action( 'boldgrid_backup_notice', $message, 'notice notice-info is-dismissible' );
|
248 |
+
}
|
249 |
}
|
admin/class-boldgrid-backup-admin-remote.php
CHANGED
@@ -80,19 +80,13 @@ class Boldgrid_Backup_Admin_Remote {
|
|
80 |
*
|
81 |
* @since 1.6.0
|
82 |
*
|
|
|
|
|
|
|
83 |
* @param string $filepath A file path.
|
84 |
*/
|
85 |
public function post_download( $filepath ) {
|
86 |
-
|
87 |
-
* Restore the log file from the archive so we can get all the juicy
|
88 |
-
* meta data about the archive.
|
89 |
-
*/
|
90 |
-
$this->core->archive_log->restore_by_zip( $filepath );
|
91 |
-
|
92 |
-
/*
|
93 |
-
* Now that we have the log, update the archive's timestamp based upon
|
94 |
-
* time last modified time in the log.
|
95 |
-
*/
|
96 |
$this->core->archive->reset();
|
97 |
$this->core->archive->init( $filepath );
|
98 |
$this->core->archive->update_timestamp();
|
80 |
*
|
81 |
* @since 1.6.0
|
82 |
*
|
83 |
+
* @see Boldgrid_Backup_Admin_Archive::init()
|
84 |
+
* @see Boldgrid_Backup_Admin_Archive::update_timestamp()
|
85 |
+
*
|
86 |
* @param string $filepath A file path.
|
87 |
*/
|
88 |
public function post_download( $filepath ) {
|
89 |
+
// Update the archive's timestamp based upon time last modified time in the log.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
$this->core->archive->reset();
|
91 |
$this->core->archive->init( $filepath );
|
92 |
$this->core->archive->update_timestamp();
|
admin/class-boldgrid-backup-admin-settings.php
CHANGED
@@ -157,13 +157,23 @@ class Boldgrid_Backup_Admin_Settings {
|
|
157 |
}
|
158 |
|
159 |
// Other settings.
|
160 |
-
$settings['auto_backup']
|
161 |
! isset( $settings['auto_backup'] ) || ! empty( $settings['auto_backup'] ) ? 1 : 0
|
162 |
);
|
|
|
163 |
$settings['auto_rollback'] = (
|
164 |
! isset( $settings['auto_rollback'] ) || ! empty( $settings['auto_rollback'] ) ?
|
165 |
1 : 0
|
166 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
} else {
|
168 |
// Define defaults.
|
169 |
// Days of the week.
|
@@ -181,7 +191,7 @@ class Boldgrid_Backup_Admin_Settings {
|
|
181 |
$settings['schedule']['tod_a'] = 'AM';
|
182 |
|
183 |
// Other settings.
|
184 |
-
$settings['retention_count'] =
|
185 |
$settings['notification_email'] = $this->core->config->get_admin_email();
|
186 |
$settings['notifications']['backup'] = 1;
|
187 |
$settings['notifications']['restore'] = 1;
|
@@ -189,16 +199,6 @@ class Boldgrid_Backup_Admin_Settings {
|
|
189 |
$settings['auto_rollback'] = 1;
|
190 |
}
|
191 |
|
192 |
-
$boldgrid_settings = get_site_option( 'boldgrid_settings' );
|
193 |
-
|
194 |
-
$settings['plugin_autoupdate'] = (
|
195 |
-
! empty( $boldgrid_settings['plugin_autoupdate'] ) ? 1 : 0
|
196 |
-
);
|
197 |
-
|
198 |
-
$settings['theme_autoupdate'] = (
|
199 |
-
! empty( $boldgrid_settings['theme_autoupdate'] ) ? 1 : 0
|
200 |
-
);
|
201 |
-
|
202 |
if ( empty( $settings['remote'] ) ) {
|
203 |
$settings['remote'] = array();
|
204 |
}
|
@@ -268,14 +268,13 @@ class Boldgrid_Backup_Admin_Settings {
|
|
268 |
private function update_settings() {
|
269 |
$update_errors = array();
|
270 |
|
271 |
-
//
|
272 |
-
check_admin_referer( 'boldgrid-backup-settings', 'settings_auth' )
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
$retention_count = $this->core->config->get_default_retention();
|
279 |
}
|
280 |
|
281 |
// Check for settings update.
|
@@ -384,10 +383,6 @@ class Boldgrid_Backup_Admin_Settings {
|
|
384 |
}
|
385 |
|
386 |
// Validate input for other settings.
|
387 |
-
$settings['retention_count'] = (
|
388 |
-
isset( $_POST['retention_count'] ) ? (int) $_POST['retention_count'] : 5
|
389 |
-
);
|
390 |
-
|
391 |
$settings['notifications']['backup'] = (
|
392 |
( isset( $_POST['notify_backup'] ) && '1' === $_POST['notify_backup'] ) ? 1 : 0
|
393 |
);
|
@@ -410,88 +405,6 @@ class Boldgrid_Backup_Admin_Settings {
|
|
410 |
$settings['notification_email'] = sanitize_email( $_POST['notification_email'] );
|
411 |
}
|
412 |
|
413 |
-
$boldgrid_settings['plugin_autoupdate'] = (
|
414 |
-
( isset( $_POST['plugin_autoupdate'] ) && '1' === $_POST['plugin_autoupdate'] ) ?
|
415 |
-
1 : 0
|
416 |
-
);
|
417 |
-
|
418 |
-
$boldgrid_settings['theme_autoupdate'] = (
|
419 |
-
( isset( $_POST['theme_autoupdate'] ) && '1' === $_POST['theme_autoupdate'] ) ?
|
420 |
-
1 : 0
|
421 |
-
);
|
422 |
-
|
423 |
-
unset( $settings['plugin_autoupdate'], $settings['theme_autoupdate'] );
|
424 |
-
|
425 |
-
// Get the current backup directory path.
|
426 |
-
$backup_dir_changed = false;
|
427 |
-
$original_backup_directory = ! empty( $settings['backup_directory'] ) ? $settings['backup_directory'] : false;
|
428 |
-
|
429 |
-
if ( ! empty( $_POST['backup_directory'] ) ) {
|
430 |
-
$post_backup_directory = trim( $_POST['backup_directory'] );
|
431 |
-
$post_backup_directory = untrailingslashit( $post_backup_directory );
|
432 |
-
$post_backup_directory = str_replace( '\\\\', '\\', $post_backup_directory );
|
433 |
-
}
|
434 |
-
|
435 |
-
/*
|
436 |
-
* Create the backup directory.
|
437 |
-
*
|
438 |
-
* Allow the user to submit a blank backup directory if they want
|
439 |
-
* to set the backup directory to the default.
|
440 |
-
*/
|
441 |
-
if ( empty( $_POST['backup_directory'] ) ) {
|
442 |
-
// The get method validates and creates the backup directory.
|
443 |
-
$backup_directory = $this->core->backup_dir->guess_and_set();
|
444 |
-
|
445 |
-
$backup_dir_changed = $original_backup_directory !== $backup_directory;
|
446 |
-
} elseif ( $post_backup_directory !== $original_backup_directory ) {
|
447 |
-
$backup_directory = $post_backup_directory;
|
448 |
-
|
449 |
-
/*
|
450 |
-
* Create the backup directory.
|
451 |
-
*
|
452 |
-
* Even if the backup directory already exists, we still want to
|
453 |
-
* run the create method so that the necessary .htaccess and other
|
454 |
-
* files are created to protect the directory.
|
455 |
-
*/
|
456 |
-
$backup_directory = $this->core->backup_dir->create( $backup_directory );
|
457 |
-
|
458 |
-
// Make sure that the backup directory has proper permissions.
|
459 |
-
$valid = $this->core->backup_dir->is_valid( $backup_directory );
|
460 |
-
if ( ! $valid ) {
|
461 |
-
$backup_directory = false;
|
462 |
-
}
|
463 |
-
|
464 |
-
$backup_dir_changed = true;
|
465 |
-
}
|
466 |
-
|
467 |
-
if ( $backup_dir_changed ) {
|
468 |
-
if ( false === $backup_directory ) {
|
469 |
-
$update_error = true;
|
470 |
-
$backup_dir_changed = false;
|
471 |
-
$update_errors = array_merge( $update_errors, $this->core->backup_dir->errors );
|
472 |
-
} else {
|
473 |
-
$settings['backup_directory'] = $backup_directory;
|
474 |
-
}
|
475 |
-
}
|
476 |
-
|
477 |
-
// Move backups to the new directory.
|
478 |
-
if ( $backup_dir_changed && isset( $_POST['move-backups'] ) && 'on' === $_POST['move-backups'] ) {
|
479 |
-
$backups_moved = $this->move_backups( $original_backup_directory, $backup_directory );
|
480 |
-
|
481 |
-
if ( ! $backups_moved ) {
|
482 |
-
$update_error = true;
|
483 |
-
$update_errors[] = sprintf(
|
484 |
-
// translators: 1: Original backup directory, 2: New backup directory.
|
485 |
-
__(
|
486 |
-
'Unable to move backups from %1$s to %2$s',
|
487 |
-
'boldgrid-backup'
|
488 |
-
),
|
489 |
-
$original_backup_directory,
|
490 |
-
$backup_directory
|
491 |
-
);
|
492 |
-
}
|
493 |
-
}
|
494 |
-
|
495 |
/*
|
496 |
* Save compressor settings.
|
497 |
*
|
@@ -603,11 +516,34 @@ class Boldgrid_Backup_Admin_Settings {
|
|
603 |
$settings['folder_exclusion_exclude'] = $this->core->folder_exclusion->from_post( 'exclude' );
|
604 |
$settings['folder_exclusion_type'] = $this->core->folder_exclusion->from_post( 'type' );
|
605 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
606 |
// If no errors, then save the settings.
|
607 |
if ( ! $update_error ) {
|
608 |
$settings['updated'] = time();
|
609 |
update_site_option( 'boldgrid_backup_settings', $settings );
|
610 |
-
|
611 |
}
|
612 |
}
|
613 |
|
@@ -659,11 +595,9 @@ class Boldgrid_Backup_Admin_Settings {
|
|
659 |
public function page_backup_settings() {
|
660 |
add_thickbox();
|
661 |
wp_enqueue_style( 'boldgrid-backup-admin-new-thickbox-style' );
|
662 |
-
|
663 |
wp_enqueue_style( 'bglib-ui-css' );
|
664 |
wp_enqueue_script( 'bglib-ui-js' );
|
665 |
wp_enqueue_script( 'bglib-sticky' );
|
666 |
-
|
667 |
wp_enqueue_script( 'bglib-license' );
|
668 |
|
669 |
if ( ! $this->is_saving_settings ) {
|
@@ -714,9 +648,7 @@ class Boldgrid_Backup_Admin_Settings {
|
|
714 |
|
715 |
// Check for settings update.
|
716 |
if ( $this->is_saving_settings ) {
|
717 |
-
//
|
718 |
-
check_admin_referer( 'boldgrid-backup-settings', 'settings_auth' );
|
719 |
-
|
720 |
$this->update_settings();
|
721 |
}
|
722 |
|
@@ -736,6 +668,40 @@ class Boldgrid_Backup_Admin_Settings {
|
|
736 |
false
|
737 |
);
|
738 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
739 |
$this->core->folder_exclusion->enqueue_scripts();
|
740 |
$this->core->db_omit->enqueue_scripts();
|
741 |
|
@@ -761,36 +727,6 @@ class Boldgrid_Backup_Admin_Settings {
|
|
761 |
* @return bool True on success.
|
762 |
*/
|
763 |
public function save( $settings ) {
|
764 |
-
|
765 |
-
// For consistency, untrailingslashit the backup dir.
|
766 |
-
if ( isset( $settings['backup_directory'] ) ) {
|
767 |
-
$settings['backup_directory'] = untrailingslashit( $settings['backup_directory'] );
|
768 |
-
}
|
769 |
-
|
770 |
return update_site_option( 'boldgrid_backup_settings', $settings );
|
771 |
}
|
772 |
-
|
773 |
-
/**
|
774 |
-
* Update BoldGrid general settings.
|
775 |
-
*
|
776 |
-
* @since 1.3.11
|
777 |
-
*
|
778 |
-
* @param array $settings Array of BoldGrid settings.
|
779 |
-
* @return bool
|
780 |
-
*/
|
781 |
-
public function update_boldgrid_settings( array $settings ) {
|
782 |
-
$boldgrid_settings = get_site_option( 'boldgrid_settings' );
|
783 |
-
|
784 |
-
$boldgrid_settings['plugin_autoupdate'] = (
|
785 |
-
( isset( $settings['plugin_autoupdate'] ) && 1 === $settings['plugin_autoupdate'] ) ?
|
786 |
-
1 : 0
|
787 |
-
);
|
788 |
-
|
789 |
-
$boldgrid_settings['theme_autoupdate'] = (
|
790 |
-
( isset( $settings['theme_autoupdate'] ) && 1 === $settings['theme_autoupdate'] ) ?
|
791 |
-
1 : 0
|
792 |
-
);
|
793 |
-
|
794 |
-
return update_site_option( 'boldgrid_settings', $boldgrid_settings );
|
795 |
-
}
|
796 |
}
|
157 |
}
|
158 |
|
159 |
// Other settings.
|
160 |
+
$settings['auto_backup'] = (
|
161 |
! isset( $settings['auto_backup'] ) || ! empty( $settings['auto_backup'] ) ? 1 : 0
|
162 |
);
|
163 |
+
|
164 |
$settings['auto_rollback'] = (
|
165 |
! isset( $settings['auto_rollback'] ) || ! empty( $settings['auto_rollback'] ) ?
|
166 |
1 : 0
|
167 |
);
|
168 |
+
|
169 |
+
// Get retention count setting. Limit 1-99, default is from config.
|
170 |
+
$settings['retention_count'] = ( isset( $settings['retention_count'] ) &&
|
171 |
+
99 >= $settings['retention_count'] ) ?
|
172 |
+
$settings['retention_count'] : $this->core->config->get_default_retention();
|
173 |
+
|
174 |
+
if ( $settings['retention_count'] > 99 ) {
|
175 |
+
$settings['retention_count'] = 99;
|
176 |
+
}
|
177 |
} else {
|
178 |
// Define defaults.
|
179 |
// Days of the week.
|
191 |
$settings['schedule']['tod_a'] = 'AM';
|
192 |
|
193 |
// Other settings.
|
194 |
+
$settings['retention_count'] = $this->core->config->get_default_retention();
|
195 |
$settings['notification_email'] = $this->core->config->get_admin_email();
|
196 |
$settings['notifications']['backup'] = 1;
|
197 |
$settings['notifications']['restore'] = 1;
|
199 |
$settings['auto_rollback'] = 1;
|
200 |
}
|
201 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
if ( empty( $settings['remote'] ) ) {
|
203 |
$settings['remote'] = array();
|
204 |
}
|
268 |
private function update_settings() {
|
269 |
$update_errors = array();
|
270 |
|
271 |
+
// Check security nonce and referer.
|
272 |
+
if ( ! check_admin_referer( 'boldgrid-backup-settings', 'settings_auth' ) ) {
|
273 |
+
wp_send_json_error(
|
274 |
+
array(
|
275 |
+
'error' => __( 'Security violation! Please try again.', 'boldgrid-backup' ),
|
276 |
+
)
|
277 |
+
);
|
|
|
278 |
}
|
279 |
|
280 |
// Check for settings update.
|
383 |
}
|
384 |
|
385 |
// Validate input for other settings.
|
|
|
|
|
|
|
|
|
386 |
$settings['notifications']['backup'] = (
|
387 |
( isset( $_POST['notify_backup'] ) && '1' === $_POST['notify_backup'] ) ? 1 : 0
|
388 |
);
|
405 |
$settings['notification_email'] = sanitize_email( $_POST['notification_email'] );
|
406 |
}
|
407 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
408 |
/*
|
409 |
* Save compressor settings.
|
410 |
*
|
516 |
$settings['folder_exclusion_exclude'] = $this->core->folder_exclusion->from_post( 'exclude' );
|
517 |
$settings['folder_exclusion_type'] = $this->core->folder_exclusion->from_post( 'type' );
|
518 |
|
519 |
+
// Read BoldGrid settings form POST request, sanitize, and merge settings with saved.
|
520 |
+
$boldgrid_settings = array_merge(
|
521 |
+
get_option( 'boldgrid_settings' ),
|
522 |
+
\Boldgrid\Library\Library\Page\Connect::sanitizeSettings(
|
523 |
+
array(
|
524 |
+
'autoupdate' => ! empty( $_POST['autoupdate'] ) ?
|
525 |
+
(array) $_POST['autoupdate'] : array(),
|
526 |
+
'release_channel' => ! empty( $_POST['plugin_release_channel'] ) ?
|
527 |
+
sanitize_key( $_POST['plugin_release_channel'] ) : 'stable',
|
528 |
+
'theme_release_channel' => ! empty( $_POST['theme_release_channel'] ) ?
|
529 |
+
sanitize_key( $_POST['theme_release_channel'] ) : 'stable',
|
530 |
+
)
|
531 |
+
)
|
532 |
+
);
|
533 |
+
|
534 |
+
// Cleanup old settings.
|
535 |
+
unset(
|
536 |
+
$settings['plugin_autoupdate'],
|
537 |
+
$settings['theme_autoupdate'],
|
538 |
+
$boldgrid_settings['plugin_autoupdate'],
|
539 |
+
$boldgrid_settings['theme_autoupdate']
|
540 |
+
);
|
541 |
+
|
542 |
// If no errors, then save the settings.
|
543 |
if ( ! $update_error ) {
|
544 |
$settings['updated'] = time();
|
545 |
update_site_option( 'boldgrid_backup_settings', $settings );
|
546 |
+
update_option( 'boldgrid_settings', $boldgrid_settings );
|
547 |
}
|
548 |
}
|
549 |
|
595 |
public function page_backup_settings() {
|
596 |
add_thickbox();
|
597 |
wp_enqueue_style( 'boldgrid-backup-admin-new-thickbox-style' );
|
|
|
598 |
wp_enqueue_style( 'bglib-ui-css' );
|
599 |
wp_enqueue_script( 'bglib-ui-js' );
|
600 |
wp_enqueue_script( 'bglib-sticky' );
|
|
|
601 |
wp_enqueue_script( 'bglib-license' );
|
602 |
|
603 |
if ( ! $this->is_saving_settings ) {
|
648 |
|
649 |
// Check for settings update.
|
650 |
if ( $this->is_saving_settings ) {
|
651 |
+
// The nonce is verified in the update_settings method.
|
|
|
|
|
652 |
$this->update_settings();
|
653 |
}
|
654 |
|
668 |
false
|
669 |
);
|
670 |
|
671 |
+
wp_enqueue_script(
|
672 |
+
'boldgrid-backup-admin-settings-autoupdate',
|
673 |
+
plugin_dir_url( __FILE__ ) . 'js/boldgrid-backup-admin-settings-autoupdate.js',
|
674 |
+
array( 'jquery' ),
|
675 |
+
BOLDGRID_BACKUP_VERSION,
|
676 |
+
false
|
677 |
+
);
|
678 |
+
|
679 |
+
// Enqueue JS for the toggles on the auto-updates section.
|
680 |
+
wp_enqueue_script(
|
681 |
+
'boldgrid-library-connect',
|
682 |
+
\Boldgrid\Library\Library\Configs::get( 'libraryUrl' ) . 'src/assets/js/connect.js',
|
683 |
+
array( 'jquery' ),
|
684 |
+
BOLDGRID_BACKUP_VERSION,
|
685 |
+
false
|
686 |
+
);
|
687 |
+
|
688 |
+
// Enqueue jquery-toggles JS.
|
689 |
+
wp_enqueue_script(
|
690 |
+
'jquery-toggles',
|
691 |
+
\Boldgrid\Library\Library\Configs::get( 'libraryUrl' ) . 'build/toggles.min.js',
|
692 |
+
array( 'jquery' ),
|
693 |
+
BOLDGRID_BACKUP_VERSION,
|
694 |
+
true
|
695 |
+
);
|
696 |
+
|
697 |
+
// Enqueue jquery-toggles CSS.
|
698 |
+
wp_enqueue_style(
|
699 |
+
'jquery-toggles-full',
|
700 |
+
\Boldgrid\Library\Library\Configs::get( 'libraryUrl' ) . 'build/toggles-full.css',
|
701 |
+
array(),
|
702 |
+
BOLDGRID_BACKUP_VERSION
|
703 |
+
);
|
704 |
+
|
705 |
$this->core->folder_exclusion->enqueue_scripts();
|
706 |
$this->core->db_omit->enqueue_scripts();
|
707 |
|
727 |
* @return bool True on success.
|
728 |
*/
|
729 |
public function save( $settings ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
730 |
return update_site_option( 'boldgrid_backup_settings', $settings );
|
731 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
732 |
}
|
admin/class-boldgrid-backup-admin-support.php
ADDED
@@ -0,0 +1,82 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: class-boldgrid-backup-admin-support.php
|
4 |
+
*
|
5 |
+
* @link https://www.boldgrid.com
|
6 |
+
* @since 1.7.0
|
7 |
+
*
|
8 |
+
* @package Boldgrid_Backup
|
9 |
+
* @subpackage Boldgrid_Backup/admin
|
10 |
+
* @copyright BoldGrid
|
11 |
+
* @version $Id$
|
12 |
+
* @author BoldGrid <support@boldgrid.com>
|
13 |
+
*/
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Class: Boldgrid_Backup_Admin_Support
|
17 |
+
*
|
18 |
+
* @since 1.7.0
|
19 |
+
*/
|
20 |
+
class Boldgrid_Backup_Admin_Support {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Deactivate and show an error.
|
24 |
+
*
|
25 |
+
* @since 1.7.0
|
26 |
+
*
|
27 |
+
* @param string $error
|
28 |
+
*/
|
29 |
+
public function deactivate( $error ) {
|
30 |
+
add_action( 'admin_notices', function () use ( $error ) {
|
31 |
+
$allowed_html = array(
|
32 |
+
'p' => array(),
|
33 |
+
'strong' => array(),
|
34 |
+
'br' => array(),
|
35 |
+
'em' => array(),
|
36 |
+
);
|
37 |
+
|
38 |
+
$error = '<p>' . sprintf(
|
39 |
+
/* translators: 1 and 2 are opening and closing string tags. */
|
40 |
+
__( '%1$sBoldGrid Backup%2$s has been deactivated due to the following error:', 'boldgrid-backup' ),
|
41 |
+
'<strong>',
|
42 |
+
'</strong>' ) . '<br /><br />' . $error . '</p>';
|
43 |
+
|
44 |
+
// Echo our admin notice. Hide the "plugin activated" notice.
|
45 |
+
echo '
|
46 |
+
<div class="notice notice-error is-dismissible">' . wp_kses( $error, $allowed_html ) . '</div>
|
47 |
+
<style type="text/css">
|
48 |
+
.updated.notice { display: none; }
|
49 |
+
</style>
|
50 |
+
';
|
51 |
+
});
|
52 |
+
|
53 |
+
add_action( 'admin_init', function() {
|
54 |
+
deactivate_plugins( 'boldgrid-backup/boldgrid-backup.php', true );
|
55 |
+
});
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* Determine whether or not we have our build directory.
|
60 |
+
*
|
61 |
+
* @since 1.7.0
|
62 |
+
*
|
63 |
+
* @return bool
|
64 |
+
*/
|
65 |
+
public function has_been_built() {
|
66 |
+
return file_exists( BOLDGRID_BACKUP_PATH . '/build/clipboard.min.js' );
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Determine whether or not composer has been setup.
|
71 |
+
*
|
72 |
+
* @since 1.7.0
|
73 |
+
*
|
74 |
+
* @return bool
|
75 |
+
*/
|
76 |
+
public function has_composer_installed() {
|
77 |
+
$exists_composer = file_exists( BOLDGRID_BACKUP_PATH . '/composer.json' );
|
78 |
+
$exists_autoload = file_exists( BOLDGRID_BACKUP_PATH . '/vendor/autoload.php' );
|
79 |
+
|
80 |
+
return ! $exists_composer || $exists_autoload;
|
81 |
+
}
|
82 |
+
}
|
admin/class-boldgrid-backup-admin-test.php
CHANGED
@@ -94,15 +94,6 @@ class Boldgrid_Backup_Admin_Test {
|
|
94 |
*/
|
95 |
private $is_php_safemode = null;
|
96 |
|
97 |
-
/**
|
98 |
-
* Functionality tests completed?
|
99 |
-
*
|
100 |
-
* @since 1.0
|
101 |
-
* @access private
|
102 |
-
* @var bool
|
103 |
-
*/
|
104 |
-
private $functionality_tested = false;
|
105 |
-
|
106 |
/**
|
107 |
* Is functional?
|
108 |
*
|
@@ -488,6 +479,19 @@ class Boldgrid_Backup_Admin_Test {
|
|
488 |
return $this->is_php_safemode;
|
489 |
}
|
490 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
491 |
/**
|
492 |
* Determine if this is a plesk environment.
|
493 |
*
|
@@ -510,64 +514,34 @@ class Boldgrid_Backup_Admin_Test {
|
|
510 |
*
|
511 |
* @since 1.0
|
512 |
*
|
513 |
-
* @global WP_Filesystem $wp_filesystem The WordPress Filesystem API global object.
|
514 |
-
*
|
515 |
* @return bool
|
516 |
*/
|
517 |
public function run_functionality_tests() {
|
518 |
-
|
519 |
-
if ( $this->functionality_tested && null !== $this->is_functional ) {
|
520 |
return $this->is_functional;
|
521 |
}
|
522 |
|
523 |
-
|
524 |
-
|
525 |
|
526 |
-
|
527 |
-
if ( ! $this->get_is_abspath_writable() ) {
|
528 |
$this->is_functional = false;
|
529 |
-
}
|
530 |
-
|
531 |
-
// Configure the backup directory path, or mark as not functional.
|
532 |
-
if ( ! $this->core->backup_dir->get() ) {
|
533 |
$this->is_functional = false;
|
534 |
-
}
|
535 |
-
|
536 |
-
// Get available compressors.
|
537 |
-
$available_compressors = $this->core->config->get_available_compressors();
|
538 |
-
|
539 |
-
// Test for available compressors, and add them to the array, or mark as not functional.
|
540 |
-
if ( empty( $available_compressors ) ) {
|
541 |
$this->is_functional = false;
|
542 |
-
}
|
543 |
-
|
544 |
-
if ( 'php_zip' === $this->core->compressors->get() ) {
|
545 |
-
$php_zip = new Boldgrid_Backup_Admin_Compressor_Php_Zip( $this->core );
|
546 |
-
if ( ! $php_zip->test( false ) ) {
|
547 |
-
$this->is_functional = false;
|
548 |
-
}
|
549 |
-
}
|
550 |
-
|
551 |
-
if ( 'pcl_zip' === $this->core->compressors->get() ) {
|
552 |
-
$pcl_zip = new Boldgrid_Backup_Admin_Compressor_Pcl_Zip( $this->core );
|
553 |
-
if ( ! $pcl_zip->test( false ) ) {
|
554 |
-
$this->is_functional = false;
|
555 |
-
}
|
556 |
-
}
|
557 |
-
|
558 |
-
// Test for PHP safe mode.
|
559 |
-
if ( $this->is_php_safemode() ) {
|
560 |
$this->is_functional = false;
|
561 |
-
}
|
562 |
-
|
563 |
-
|
564 |
-
|
|
|
|
|
|
|
565 |
$this->is_functional = true;
|
566 |
}
|
567 |
|
568 |
-
// Mark as completed.
|
569 |
-
$this->functionality_tested = true;
|
570 |
-
|
571 |
return $this->is_functional;
|
572 |
}
|
573 |
|
@@ -680,6 +654,9 @@ class Boldgrid_Backup_Admin_Test {
|
|
680 |
'has_url_fopen' => false,
|
681 |
);
|
682 |
|
|
|
|
|
|
|
683 |
// Configure an array of commands to run.
|
684 |
$cmds = array(
|
685 |
'php -qf ' . trailingslashit( BOLDGRID_BACKUP_PATH ) . 'cron/cli-support.php',
|
@@ -697,9 +674,14 @@ class Boldgrid_Backup_Admin_Test {
|
|
697 |
|
698 |
// Find a command that gives us an array.
|
699 |
foreach ( $cmds as $cmd ) {
|
700 |
-
$
|
701 |
|
702 |
-
|
|
|
|
|
|
|
|
|
|
|
703 |
|
704 |
if ( ! is_array( $result ) ) {
|
705 |
continue;
|
@@ -822,6 +804,19 @@ class Boldgrid_Backup_Admin_Test {
|
|
822 |
false !== strpos( $_SERVER['SERVER_SOFTWARE'], 'IIS' );
|
823 |
}
|
824 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
825 |
/**
|
826 |
* Determine if this server has cPanel EasyApache 4 with php-cli installed.
|
827 |
*
|
@@ -839,4 +834,31 @@ class Boldgrid_Backup_Admin_Test {
|
|
839 |
|
840 |
return $is_ea4 || $has_php_cli;
|
841 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
842 |
}
|
94 |
*/
|
95 |
private $is_php_safemode = null;
|
96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
/**
|
98 |
* Is functional?
|
99 |
*
|
479 |
return $this->is_php_safemode;
|
480 |
}
|
481 |
|
482 |
+
/**
|
483 |
+
* Determine whether or not php_zip is suppored.
|
484 |
+
*
|
485 |
+
* @since 1.7.0
|
486 |
+
*
|
487 |
+
* @return bool
|
488 |
+
*/
|
489 |
+
public function is_php_zip_supported() {
|
490 |
+
$php_zip = new Boldgrid_Backup_Admin_Compressor_Php_Zip( $this->core );
|
491 |
+
|
492 |
+
return $php_zip->test( false );
|
493 |
+
}
|
494 |
+
|
495 |
/**
|
496 |
* Determine if this is a plesk environment.
|
497 |
*
|
514 |
*
|
515 |
* @since 1.0
|
516 |
*
|
|
|
|
|
517 |
* @return bool
|
518 |
*/
|
519 |
public function run_functionality_tests() {
|
520 |
+
if ( null !== $this->is_functional ) {
|
|
|
521 |
return $this->is_functional;
|
522 |
}
|
523 |
|
524 |
+
$available_compressors = $this->core->config->get_available_compressors();
|
525 |
+
$compressor = $this->core->compressors->get();
|
526 |
|
527 |
+
if ( ! self::is_filesystem_supported() ) {
|
|
|
528 |
$this->is_functional = false;
|
529 |
+
} elseif ( ! $this->get_is_abspath_writable() ) {
|
|
|
|
|
|
|
530 |
$this->is_functional = false;
|
531 |
+
} elseif ( ! $this->core->backup_dir->get() ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
532 |
$this->is_functional = false;
|
533 |
+
} elseif ( empty( $available_compressors ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
534 |
$this->is_functional = false;
|
535 |
+
} elseif ( 'php_zip' === $compressor && ! $this->is_php_zip_supported() ) {
|
536 |
+
$this->is_functional = false;
|
537 |
+
} elseif ( 'pcl_zip' === $compressor && ! $this->is_pcl_zip_supported() ) {
|
538 |
+
$this->is_functional = false;
|
539 |
+
} elseif ( $this->is_php_safemode() ) {
|
540 |
+
$this->is_functional = false;
|
541 |
+
} else {
|
542 |
$this->is_functional = true;
|
543 |
}
|
544 |
|
|
|
|
|
|
|
545 |
return $this->is_functional;
|
546 |
}
|
547 |
|
654 |
'has_url_fopen' => false,
|
655 |
);
|
656 |
|
657 |
+
// Set a file path for the cli-support script output.
|
658 |
+
$filepath = wp_normalize_path( $this->core->backup_dir->get() . '/cli-support.txt' );
|
659 |
+
|
660 |
// Configure an array of commands to run.
|
661 |
$cmds = array(
|
662 |
'php -qf ' . trailingslashit( BOLDGRID_BACKUP_PATH ) . 'cron/cli-support.php',
|
674 |
|
675 |
// Find a command that gives us an array.
|
676 |
foreach ( $cmds as $cmd ) {
|
677 |
+
$this->core->execute_command( $cmd, array(), $null, $null, $filepath );
|
678 |
|
679 |
+
// Our command may have resulted in unexpected output. Look for a json string.
|
680 |
+
preg_match( '/{.*}/', $this->core->wp_filesystem->get_contents( $filepath ), $matches );
|
681 |
+
|
682 |
+
$result = is_array( $matches ) ? json_decode( $matches[0], true ) : null;
|
683 |
+
|
684 |
+
$this->core->wp_filesystem->delete( $filepath );
|
685 |
|
686 |
if ( ! is_array( $result ) ) {
|
687 |
continue;
|
804 |
false !== strpos( $_SERVER['SERVER_SOFTWARE'], 'IIS' );
|
805 |
}
|
806 |
|
807 |
+
/**
|
808 |
+
* Determine whether pcl_zip is supported.
|
809 |
+
*
|
810 |
+
* @since 1.7.0
|
811 |
+
*
|
812 |
+
* @return bool
|
813 |
+
*/
|
814 |
+
public function is_pcl_zip_supported() {
|
815 |
+
$pcl_zip = new Boldgrid_Backup_Admin_Compressor_Pcl_Zip( $this->core );
|
816 |
+
|
817 |
+
return $pcl_zip->test( false );
|
818 |
+
}
|
819 |
+
|
820 |
/**
|
821 |
* Determine if this server has cPanel EasyApache 4 with php-cli installed.
|
822 |
*
|
834 |
|
835 |
return $is_ea4 || $has_php_cli;
|
836 |
}
|
837 |
+
|
838 |
+
/**
|
839 |
+
* Determine whether or not the current filesystem is supported.
|
840 |
+
*
|
841 |
+
* @since 1.7.0
|
842 |
+
*
|
843 |
+
* @global object $wp_filesystem
|
844 |
+
*
|
845 |
+
* @return boolean
|
846 |
+
*/
|
847 |
+
public static function is_filesystem_supported() {
|
848 |
+
global $wp_filesystem;
|
849 |
+
|
850 |
+
$supported = true;
|
851 |
+
|
852 |
+
// Ensure that the WP Filesystem API is loaded.
|
853 |
+
if ( empty( $wp_filesystem ) ) {
|
854 |
+
require_once ABSPATH . '/wp-admin/includes/file.php';
|
855 |
+
WP_Filesystem();
|
856 |
+
}
|
857 |
+
|
858 |
+
if ( 'direct' !== get_filesystem_method() ) {
|
859 |
+
$supported = false;
|
860 |
+
}
|
861 |
+
|
862 |
+
return $supported;
|
863 |
+
}
|
864 |
}
|
admin/class-boldgrid-backup-admin-upload.php
CHANGED
@@ -221,43 +221,44 @@ class Boldgrid_Backup_Admin_Upload {
|
|
221 |
* @see Boldgrid_Backup_Admin_Config::get_backup_identifier()
|
222 |
* @see Boldgrid_Backup_Admin_Backup_Dir::get()
|
223 |
*
|
224 |
-
* @
|
|
|
225 |
*/
|
226 |
-
public function get_save_path() {
|
227 |
-
// Get the upload file basename.
|
228 |
-
$file_basename = basename( $_FILES['file']['name'] );
|
229 |
-
|
230 |
-
// Get backup identifier.
|
231 |
$backup_identifier = $this->core->get_backup_identifier();
|
232 |
|
233 |
-
//
|
234 |
-
$
|
235 |
|
236 |
// Create an array of strings to remove from the filename.
|
237 |
$remove_strings = array(
|
238 |
'boldgrid-backup-',
|
239 |
$backup_identifier,
|
240 |
'uploaded-',
|
|
|
|
|
241 |
);
|
242 |
|
243 |
// Remove references from filename.
|
244 |
foreach ( $remove_strings as $remove_string ) {
|
245 |
-
$
|
|
|
|
|
|
|
|
|
|
|
246 |
}
|
247 |
|
248 |
// Reformat the filename.
|
249 |
-
$
|
250 |
|
251 |
// Remove extra dashes.
|
252 |
-
$
|
253 |
|
254 |
-
|
255 |
-
$file_save_path = $backup_directory . DIRECTORY_SEPARATOR . $file_basename;
|
256 |
-
|
257 |
-
// Update the base filename.
|
258 |
-
$_FILES['file']['name'] = $file_basename;
|
259 |
|
260 |
-
|
|
|
261 |
}
|
262 |
|
263 |
/**
|
@@ -333,7 +334,10 @@ class Boldgrid_Backup_Admin_Upload {
|
|
333 |
}
|
334 |
|
335 |
// Create the file save path, and update the destination base filename..
|
336 |
-
$file_save_path = $this->get_save_path();
|
|
|
|
|
|
|
337 |
|
338 |
// Handle the upload.
|
339 |
$movefile = $this->handle_upload();
|
@@ -369,4 +373,126 @@ class Boldgrid_Backup_Admin_Upload {
|
|
369 |
return false;
|
370 |
}
|
371 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
372 |
}
|
221 |
* @see Boldgrid_Backup_Admin_Config::get_backup_identifier()
|
222 |
* @see Boldgrid_Backup_Admin_Backup_Dir::get()
|
223 |
*
|
224 |
+
* @param string $filename Filename.
|
225 |
+
* @return string
|
226 |
*/
|
227 |
+
public function get_save_path( $filename ) {
|
|
|
|
|
|
|
|
|
228 |
$backup_identifier = $this->core->get_backup_identifier();
|
229 |
|
230 |
+
// Ensure that the input filename is a basename and remove any query string.
|
231 |
+
$filename = preg_replace( '/\?.*$/', '', basename( $filename ) );
|
232 |
|
233 |
// Create an array of strings to remove from the filename.
|
234 |
$remove_strings = array(
|
235 |
'boldgrid-backup-',
|
236 |
$backup_identifier,
|
237 |
'uploaded-',
|
238 |
+
'admin-ajax.php',
|
239 |
+
'.zip',
|
240 |
);
|
241 |
|
242 |
// Remove references from filename.
|
243 |
foreach ( $remove_strings as $remove_string ) {
|
244 |
+
$filename = str_replace( $remove_string, '', $filename );
|
245 |
+
}
|
246 |
+
|
247 |
+
// If the filename is now empty, then make is a unix timestamp.
|
248 |
+
if ( empty( $filename ) ) {
|
249 |
+
$filename = current_time( 'timestamp', true );
|
250 |
}
|
251 |
|
252 |
// Reformat the filename.
|
253 |
+
$filename = 'boldgrid-backup-' . $backup_identifier . '-uploaded-' . $filename . '.zip';
|
254 |
|
255 |
// Remove extra dashes.
|
256 |
+
$filename = preg_replace( '#-+#', '-', $filename );
|
257 |
|
258 |
+
$backup_directory = $this->core->backup_dir->get();
|
|
|
|
|
|
|
|
|
259 |
|
260 |
+
// Return the full file path.
|
261 |
+
return $backup_directory . DIRECTORY_SEPARATOR . $filename;
|
262 |
}
|
263 |
|
264 |
/**
|
334 |
}
|
335 |
|
336 |
// Create the file save path, and update the destination base filename..
|
337 |
+
$file_save_path = $this->get_save_path( $_FILES['file']['name'] );
|
338 |
+
|
339 |
+
// Update the filename.
|
340 |
+
$_FILES['file']['name'] = basename( $file_save_path );
|
341 |
|
342 |
// Handle the upload.
|
343 |
$movefile = $this->handle_upload();
|
373 |
return false;
|
374 |
}
|
375 |
}
|
376 |
+
|
377 |
+
/**
|
378 |
+
* Callback function for importing a backup archive file via URL address.
|
379 |
+
*
|
380 |
+
* Used on the backup archives page.
|
381 |
+
*
|
382 |
+
* @since 1.7.0
|
383 |
+
*
|
384 |
+
* @see Boldgrid_Backup_Admin_Backup_Dir::get()
|
385 |
+
* @see Boldgrid_Backup_Admin_Backup_Dir::get_path_to()
|
386 |
+
* @see Boldgrid_Backup_Admin_Archive_Log::path_from_zip()
|
387 |
+
* @see Boldgrid_Backup_Admin_Archive_Log::restore_by_zip()
|
388 |
+
* @see Boldgrid_Backup_Admin_Remote::post_download()
|
389 |
+
*
|
390 |
+
* @uses $_POST['url'] URL address.
|
391 |
+
*
|
392 |
+
* @return string
|
393 |
+
*/
|
394 |
+
public function ajax_url_import() {
|
395 |
+
// Check user permissions.
|
396 |
+
if ( ! current_user_can( 'update_plugins' ) ) {
|
397 |
+
wp_send_json_error(
|
398 |
+
array(
|
399 |
+
'error' => __( 'User access violation!', 'boldgrid-backup' ),
|
400 |
+
)
|
401 |
+
);
|
402 |
+
}
|
403 |
+
|
404 |
+
// Check security nonce and referer.
|
405 |
+
if ( ! check_admin_referer( 'upload_archive_file' ) ) {
|
406 |
+
wp_send_json_error(
|
407 |
+
array(
|
408 |
+
'error' => __( 'Security violation! Please try again.', 'boldgrid-backup' ),
|
409 |
+
)
|
410 |
+
);
|
411 |
+
}
|
412 |
+
|
413 |
+
$url = ! empty( $_POST['url'] ) ? esc_url_raw( $_POST['url'] ) : null;
|
414 |
+
$url_regex = '/' . $this->core->configs['url_regex'] . '/i';
|
415 |
+
|
416 |
+
if ( ! preg_match( $url_regex, $url ) ) {
|
417 |
+
wp_send_json_error(
|
418 |
+
array(
|
419 |
+
'error' => __( 'Invalid URL address.', 'boldgrid-backup' ),
|
420 |
+
)
|
421 |
+
);
|
422 |
+
}
|
423 |
+
|
424 |
+
$backup_directory = $this->core->backup_dir->get();
|
425 |
+
|
426 |
+
if ( ! $this->core->backup_dir->is_valid( $backup_directory ) &&
|
427 |
+
! empty( $this->core->backup_dir->errors ) ) {
|
428 |
+
wp_send_json_error(
|
429 |
+
array(
|
430 |
+
'error' => implode( '<br />', $this->core->backup_dir->errors ),
|
431 |
+
)
|
432 |
+
);
|
433 |
+
}
|
434 |
+
|
435 |
+
$filepath = $this->get_save_path( basename( $url ) );
|
436 |
+
|
437 |
+
$allowed_content_types = array(
|
438 |
+
'application/octet-stream',
|
439 |
+
'binary/octet-stream',
|
440 |
+
'application/zip',
|
441 |
+
);
|
442 |
+
|
443 |
+
$response = wp_remote_get(
|
444 |
+
$url, array(
|
445 |
+
'filename' => $filepath,
|
446 |
+
'headers' => 'Accept: ' . implode( ', ', $allowed_content_types ),
|
447 |
+
'sslverify' => false,
|
448 |
+
'stream' => true,
|
449 |
+
'timeout' => MINUTE_IN_SECONDS * 20,
|
450 |
+
)
|
451 |
+
);
|
452 |
+
|
453 |
+
if ( is_array( $response ) && ! is_wp_error( $response ) &&
|
454 |
+
in_array( $response['headers']['content-type'], $allowed_content_types, true ) ) {
|
455 |
+
// Determine the archive log file path.
|
456 |
+
$log_filepath = $filepath;
|
457 |
+
|
458 |
+
if ( ! empty( $response['headers']['content-disposition'] ) ) {
|
459 |
+
$log_filepath = trim(
|
460 |
+
str_replace(
|
461 |
+
'attachment; filename=', '', $response['headers']['content-disposition']
|
462 |
+
), '"'
|
463 |
+
);
|
464 |
+
|
465 |
+
$log_filepath = $this->core->backup_dir->get_path_to( $log_filepath );
|
466 |
+
}
|
467 |
+
|
468 |
+
$log_filepath = $this->core->archive_log->path_from_zip( $log_filepath );
|
469 |
+
|
470 |
+
// Restore the log file from the archive.
|
471 |
+
$this->core->archive_log->restore_by_zip( $filepath, basename( $log_filepath ) );
|
472 |
+
|
473 |
+
// Update the archive file modification time, based on the log file contents.
|
474 |
+
$this->core->remote->post_download( $filepath );
|
475 |
+
|
476 |
+
wp_send_json_success(
|
477 |
+
array(
|
478 |
+
'filepath' => $filepath,
|
479 |
+
'detailsUrl' => admin_url(
|
480 |
+
'admin.php?page=boldgrid-backup-archive-details&filename=' .
|
481 |
+
basename( $filepath )
|
482 |
+
),
|
483 |
+
)
|
484 |
+
);
|
485 |
+
} else {
|
486 |
+
$this->core->wp_filesystem->delete( $filepath );
|
487 |
+
}
|
488 |
+
|
489 |
+
wp_send_json_error(
|
490 |
+
array(
|
491 |
+
'error' => __(
|
492 |
+
'Could not retrieve the remote file. It may not be a ZIP file, or the link is no longer valid.',
|
493 |
+
'boldgrid-backup'
|
494 |
+
),
|
495 |
+
)
|
496 |
+
);
|
497 |
+
}
|
498 |
}
|
admin/class-boldgrid-backup-admin-utility.php
CHANGED
@@ -496,6 +496,22 @@ class Boldgrid_Backup_Admin_Utility {
|
|
496 |
return true;
|
497 |
}
|
498 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
499 |
/**
|
500 |
* Check if a file is a ZIP archive file.
|
501 |
*
|
@@ -708,6 +724,9 @@ class Boldgrid_Backup_Admin_Utility {
|
|
708 |
$old_siteurl = untrailingslashit( $old_siteurl );
|
709 |
$new_siteurl = untrailingslashit( $new_siteurl );
|
710 |
|
|
|
|
|
|
|
711 |
// Update the WP otion "siteurl".
|
712 |
update_option( 'siteurl', $new_siteurl );
|
713 |
|
496 |
return true;
|
497 |
}
|
498 |
|
499 |
+
/**
|
500 |
+
* Determine whether or not the given $page is the current.
|
501 |
+
*
|
502 |
+
* @since 1.7.0
|
503 |
+
*
|
504 |
+
* @global string $pagenow
|
505 |
+
*
|
506 |
+
* @param string $page The page to check for in $_GET.
|
507 |
+
* @return boolean
|
508 |
+
*/
|
509 |
+
public static function is_admin_page( $page ) {
|
510 |
+
global $pagenow;
|
511 |
+
|
512 |
+
return 'admin.php' === $pagenow && ! empty( $_GET['page'] ) && $page === $_GET['page']; // phpcs:ignore WordPress.CSRF.NonceVerification
|
513 |
+
}
|
514 |
+
|
515 |
/**
|
516 |
* Check if a file is a ZIP archive file.
|
517 |
*
|
724 |
$old_siteurl = untrailingslashit( $old_siteurl );
|
725 |
$new_siteurl = untrailingslashit( $new_siteurl );
|
726 |
|
727 |
+
// There may be a filter, so remove it.
|
728 |
+
remove_all_filters( 'pre_update_option_siteurl' );
|
729 |
+
|
730 |
// Update the WP otion "siteurl".
|
731 |
update_option( 'siteurl', $new_siteurl );
|
732 |
|
admin/class-boldgrid-backup-admin-xhprof.php
CHANGED
@@ -108,7 +108,7 @@ class Boldgrid_Backup_Admin_Xhprof {
|
|
108 |
}
|
109 |
|
110 |
// Configure the utils path.
|
111 |
-
$xhprof_utils_path = '/
|
112 |
|
113 |
// If the utility libraries exists, then load them.
|
114 |
if ( file_exists( $xhprof_utils_path . '/xhprof_lib.php' ) &&
|
@@ -122,8 +122,11 @@ class Boldgrid_Backup_Admin_Xhprof {
|
|
122 |
|
123 |
// Write the report URL to the error log.
|
124 |
error_log(
|
125 |
-
__METHOD__ . ':
|
126 |
-
|
|
|
|
|
|
|
127 |
);
|
128 |
}
|
129 |
}
|
108 |
}
|
109 |
|
110 |
// Configure the utils path.
|
111 |
+
$xhprof_utils_path = BOLDGRID_BACKUP_PATH . '/vendor/lox/xhprof/xhprof_lib/utils';
|
112 |
|
113 |
// If the utility libraries exists, then load them.
|
114 |
if ( file_exists( $xhprof_utils_path . '/xhprof_lib.php' ) &&
|
122 |
|
123 |
// Write the report URL to the error log.
|
124 |
error_log(
|
125 |
+
__METHOD__ . ': ' . plugins_url(
|
126 |
+
plugin_basename( BOLDGRID_BACKUP_PATH ) .
|
127 |
+
'/vendor/lox/xhprof/xhprof_html/index.php?run=' . $run_id .
|
128 |
+
'&source=xhprof_boldgrid_backup'
|
129 |
+
)
|
130 |
);
|
131 |
}
|
132 |
}
|
admin/class-boldgrid-backup-admin.php
CHANGED
@@ -121,6 +121,7 @@ class Boldgrid_Backup_Admin {
|
|
121 |
'is_premium' => ( true === $this->config->get_is_premium() ? 'true' : 'false' ),
|
122 |
'lang' => $this->config->lang,
|
123 |
'spinner_loading' => $spinner . __( 'Loading', 'boldgrid-backup' ) . $dots,
|
|
|
124 |
'get_premium_url' => Boldgrid_Backup_Admin_Go_Pro::$url,
|
125 |
);
|
126 |
|
@@ -128,6 +129,24 @@ class Boldgrid_Backup_Admin {
|
|
128 |
|
129 |
wp_enqueue_script( 'boldgrid-backup-admin' );
|
130 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
// Used by admin.js to highlight / bounce elements.
|
132 |
wp_enqueue_script( 'jquery-effects-core' );
|
133 |
wp_enqueue_script( 'jquery-effects-bounce' );
|
121 |
'is_premium' => ( true === $this->config->get_is_premium() ? 'true' : 'false' ),
|
122 |
'lang' => $this->config->lang,
|
123 |
'spinner_loading' => $spinner . __( 'Loading', 'boldgrid-backup' ) . $dots,
|
124 |
+
'spinner' => $spinner,
|
125 |
'get_premium_url' => Boldgrid_Backup_Admin_Go_Pro::$url,
|
126 |
);
|
127 |
|
129 |
|
130 |
wp_enqueue_script( 'boldgrid-backup-admin' );
|
131 |
|
132 |
+
// Enqueue "In Progress" script.
|
133 |
+
$handle = 'boldgrid-backup-admin-in-progress';
|
134 |
+
wp_register_script(
|
135 |
+
$handle,
|
136 |
+
plugin_dir_url( __FILE__ ) . 'js/' . $handle . '.js',
|
137 |
+
array( 'jquery' ),
|
138 |
+
BOLDGRID_BACKUP_VERSION,
|
139 |
+
false
|
140 |
+
);
|
141 |
+
$translation = array(
|
142 |
+
'archive_file_size' => __( 'Archive file size: ', 'boldgrid_backup' ),
|
143 |
+
'size_before_compression' => __( 'File size before compression: ', 'boldgrid-backup' ),
|
144 |
+
'adding_tables' => __( 'Adding tables.', 'boldgrid-backup' ),
|
145 |
+
'completing_database' => __( 'Completing database backup...', 'boldgrid-backup' ),
|
146 |
+
);
|
147 |
+
wp_localize_script( $handle, 'BoldGridBackupAdminInProgress', $translation );
|
148 |
+
wp_enqueue_script( $handle );
|
149 |
+
|
150 |
// Used by admin.js to highlight / bounce elements.
|
151 |
wp_enqueue_script( 'jquery-effects-core' );
|
152 |
wp_enqueue_script( 'jquery-effects-bounce' );
|
admin/compressor/class-boldgrid-backup-admin-compressor-php-zip.php
CHANGED
@@ -98,7 +98,7 @@ class Boldgrid_Backup_Admin_Compressor_Php_Zip extends Boldgrid_Backup_Admin_Com
|
|
98 |
* @type string mode backup
|
99 |
* @type bool dryrun
|
100 |
* @type string compressor php_zip
|
101 |
-
* @type
|
102 |
* @type bool save 1
|
103 |
* @type int total_size 0
|
104 |
* }
|
@@ -106,6 +106,12 @@ class Boldgrid_Backup_Admin_Compressor_Php_Zip extends Boldgrid_Backup_Admin_Com
|
|
106 |
public function archive_files( $filelist, &$info ) {
|
107 |
$info['filepath'] = $this->core->generate_archive_path( 'zip' );
|
108 |
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
if ( $info['dryrun'] ) {
|
110 |
return true;
|
111 |
}
|
@@ -131,9 +137,55 @@ class Boldgrid_Backup_Admin_Compressor_Php_Zip extends Boldgrid_Backup_Admin_Com
|
|
131 |
$this->zip->addFile( $fileinfo[0], $fileinfo[1] );
|
132 |
$this->add_dir( $fileinfo[1] );
|
133 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
}
|
135 |
|
136 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
return array(
|
138 |
'error' => 'Cannot close ZIP archive file "' . $info['filepath'] . '".',
|
139 |
);
|
98 |
* @type string mode backup
|
99 |
* @type bool dryrun
|
100 |
* @type string compressor php_zip
|
101 |
+
* @type int filesize 0
|
102 |
* @type bool save 1
|
103 |
* @type int total_size 0
|
104 |
* }
|
106 |
public function archive_files( $filelist, &$info ) {
|
107 |
$info['filepath'] = $this->core->generate_archive_path( 'zip' );
|
108 |
|
109 |
+
// Init vars used for our "in progress" bar.
|
110 |
+
$number_files_archived = 0;
|
111 |
+
$total_size_archived = 0;
|
112 |
+
$number_files_todo = count( $filelist );
|
113 |
+
$last_x_files = array();
|
114 |
+
|
115 |
if ( $info['dryrun'] ) {
|
116 |
return true;
|
117 |
}
|
137 |
$this->zip->addFile( $fileinfo[0], $fileinfo[1] );
|
138 |
$this->add_dir( $fileinfo[1] );
|
139 |
}
|
140 |
+
|
141 |
+
$number_files_archived++;
|
142 |
+
$total_size_archived += empty( $fileinfo[2] ) ? 0 : $fileinfo[2];
|
143 |
+
|
144 |
+
/*
|
145 |
+
* If applicable, add this file to the list of files archived that we show the user.
|
146 |
+
*
|
147 |
+
* To give the user a more broad sense of the files being added, our list only contains
|
148 |
+
* every 20th file.
|
149 |
+
*
|
150 |
+
* Our list is only 5 long because we make hook into the heartbeat every 5 seconds to grab
|
151 |
+
* the last 5 files, and we display each file for 1 second.
|
152 |
+
*/
|
153 |
+
if ( 0 === $number_files_archived % 20 ) {
|
154 |
+
$last_x_files[] = $fileinfo[1];
|
155 |
+
if ( count( $last_x_files ) > 5 ) {
|
156 |
+
array_shift( $last_x_files );
|
157 |
+
}
|
158 |
+
}
|
159 |
+
|
160 |
+
/*
|
161 |
+
* Update our "in progress" data.
|
162 |
+
*
|
163 |
+
* To prevent excessive calls to update options, we only update our in progress data every
|
164 |
+
* 100 files.
|
165 |
+
*/
|
166 |
+
$all_files_archived = $number_files_archived >= $number_files_todo;
|
167 |
+
if ( 0 === $number_files_archived % 100 || $all_files_archived ) {
|
168 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_arg( 'total_files_done', $number_files_archived );
|
169 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_arg( 'last_files', $last_x_files );
|
170 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_arg( 'total_size_archived', $total_size_archived );
|
171 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_arg( 'total_size_archived_size_format', size_format( $total_size_archived ) );
|
172 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_arg( 'step', 2 );
|
173 |
+
}
|
174 |
}
|
175 |
|
176 |
+
/*
|
177 |
+
* We're done archiving all files.
|
178 |
+
*
|
179 |
+
* Empty out the "last files archived" data, and set an appropriate status.
|
180 |
+
*/
|
181 |
+
Boldgrid_Backup_Admin_In_Progress_Data::delete_arg( 'last_files' );
|
182 |
+
Boldgrid_Backup_Admin_In_Progress_Data::set_arg( 'step', 3 );
|
183 |
+
|
184 |
+
$close = $this->zip->close();
|
185 |
+
|
186 |
+
Boldgrid_Backup_Admin_In_Progress_Data::delete_arg( 'step' );
|
187 |
+
|
188 |
+
if ( ! $close ) {
|
189 |
return array(
|
190 |
'error' => 'Cannot close ZIP archive file "' . $info['filepath'] . '".',
|
191 |
);
|
admin/css/boldgrid-backup-admin-home.css
CHANGED
@@ -13,4 +13,8 @@
|
|
13 |
/* Disable floating of mine count so help section displays nicely. */
|
14 |
.subsubsub {
|
15 |
float: none;
|
|
|
|
|
|
|
|
|
16 |
}
|
13 |
/* Disable floating of mine count so help section displays nicely. */
|
14 |
.subsubsub {
|
15 |
float: none;
|
16 |
+
}
|
17 |
+
|
18 |
+
.page-title-actions {
|
19 |
+
display: inline-block;
|
20 |
}
|
admin/css/boldgrid-backup-admin-settings.css
CHANGED
@@ -6,4 +6,8 @@
|
|
6 |
.form-table tr td p {
|
7 |
padding: 5px 0px;
|
8 |
margin: 0px;
|
9 |
-
}
|
|
|
|
|
|
|
|
6 |
.form-table tr td p {
|
7 |
padding: 5px 0px;
|
8 |
margin: 0px;
|
9 |
+
}
|
10 |
+
|
11 |
+
.bgb-unbold {
|
12 |
+
font-weight: normal;
|
13 |
+
}
|
admin/css/boldgrid-backup-admin.css
CHANGED
@@ -109,8 +109,8 @@ hr.separator-small {
|
|
109 |
}
|
110 |
|
111 |
/* Get Premium link in the left nav. */
|
112 |
-
|
113 |
-
|
114 |
color: #ffb900;
|
115 |
}
|
116 |
|
@@ -126,4 +126,128 @@ h3 {
|
|
126 |
|
127 |
input:invalid {
|
128 |
border: 1px solid red;
|
129 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
}
|
110 |
|
111 |
/* Get Premium link in the left nav. */
|
112 |
+
#adminmenu [class*=boldgrid-backup] .get-premium,
|
113 |
+
#adminmenu [class*=boldgrid-backup] .dashicons-dashboard {
|
114 |
color: #ffb900;
|
115 |
}
|
116 |
|
126 |
|
127 |
input:invalid {
|
128 |
border: 1px solid red;
|
129 |
+
}
|
130 |
+
|
131 |
+
#download-link-copy, #url-import-notice {
|
132 |
+
display: none;
|
133 |
+
}
|
134 |
+
|
135 |
+
#download-copy-button .dashicons {
|
136 |
+
font-size: 16px;
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Progress bar.
|
141 |
+
*
|
142 |
+
* When a backup is in progress, we show the user a progress bar.
|
143 |
+
*/
|
144 |
+
|
145 |
+
#boldgrid-backup-in-progress-bar:before {
|
146 |
+
transition: background-color 2s ease;
|
147 |
+
background-color: transparent;
|
148 |
+
}
|
149 |
+
|
150 |
+
.heartbeat-lost-focus #boldgrid-backup-in-progress-bar:before {
|
151 |
+
content:"";
|
152 |
+
display: block;
|
153 |
+
height: 100%;
|
154 |
+
position: absolute;
|
155 |
+
top: 0;
|
156 |
+
left: 0;
|
157 |
+
width: 100%;
|
158 |
+
background-color: rgba( 255, 255, 255, .9 );
|
159 |
+
}
|
160 |
+
|
161 |
+
.heartbeat-lost-focus #boldgrid-backup-in-progress-bar #last_file_archived,
|
162 |
+
.heartbeat-lost-focus #boldgrid-backup-in-progress-bar .progress-label {
|
163 |
+
color: #ddd;
|
164 |
+
}
|
165 |
+
|
166 |
+
#boldgrid-backup-in-progress-bar {
|
167 |
+
position: relative;
|
168 |
+
background: #f7f7f7;
|
169 |
+
border: 1px solid #ccc;
|
170 |
+
clear:both;
|
171 |
+
overflow: visible;
|
172 |
+
height: 2em;
|
173 |
+
margin: 0px;
|
174 |
+
margin-bottom: 20px;
|
175 |
+
}
|
176 |
+
|
177 |
+
/* The actual progress bar that goes from 0% to 100%. */
|
178 |
+
#boldgrid-backup-in-progress-bar .ui-progressbar-value {
|
179 |
+
background-color: #0085ba;
|
180 |
+
-webkit-transition: width 1s ease-out;
|
181 |
+
-moz-transition: width 1s ease-out;
|
182 |
+
-o-transition: width 1s ease-out;
|
183 |
+
transition: width 1s ease-out;
|
184 |
+
}
|
185 |
+
|
186 |
+
#boldgrid-backup-in-progress-bar #last_file_archived {
|
187 |
+
font-size: 10px;
|
188 |
+
position: absolute;
|
189 |
+
bottom: -20px;
|
190 |
+
left: 0px;
|
191 |
+
white-space: nowrap;
|
192 |
+
}
|
193 |
+
|
194 |
+
#boldgrid-backup-in-progress-bar .spinner {
|
195 |
+
vertical-align: middle;
|
196 |
+
margin-top: -2px;
|
197 |
+
}
|
198 |
+
|
199 |
+
.ui-progressbar .ui-progressbar-value {
|
200 |
+
height: 100%;
|
201 |
+
}
|
202 |
+
|
203 |
+
.progress-label {
|
204 |
+
position: absolute;
|
205 |
+
top: 4px;
|
206 |
+
font-weight: bold;
|
207 |
+
text-shadow: 1px 1px 0 #fff;
|
208 |
+
left:0;
|
209 |
+
right:0;
|
210 |
+
font-weight: 600;
|
211 |
+
color: #0073aa;
|
212 |
+
text-align: center;
|
213 |
+
}
|
214 |
+
|
215 |
+
.progress-label.over-50 {
|
216 |
+
color: #fff;
|
217 |
+
text-shadow: none;
|
218 |
+
}
|
219 |
+
|
220 |
+
#boldgrid_backup_in_progress_steps .step {
|
221 |
+
float: left;
|
222 |
+
width: 33%;
|
223 |
+
text-align:center;
|
224 |
+
color: #ddd;
|
225 |
+
}
|
226 |
+
|
227 |
+
#boldgrid_backup_in_progress_steps .step:first-of-type {
|
228 |
+
text-align: left;
|
229 |
+
}
|
230 |
+
|
231 |
+
#boldgrid_backup_in_progress_steps .step:last-of-type {
|
232 |
+
text-align: right;
|
233 |
+
}
|
234 |
+
|
235 |
+
#boldgrid_backup_in_progress_steps .step.active {
|
236 |
+
color: #444;
|
237 |
+
font-weight: bold;
|
238 |
+
}
|
239 |
+
|
240 |
+
/*
|
241 |
+
* Backup Archive Details: title and description.
|
242 |
+
*
|
243 |
+
* This section contains styles for the title and description input fields.
|
244 |
+
*/
|
245 |
+
#titlediv #titlewrap #title {
|
246 |
+
margin-bottom: 15px;
|
247 |
+
}
|
248 |
+
|
249 |
+
[name="backup_description"] {
|
250 |
+
width: 100%;
|
251 |
+
height: 100px;
|
252 |
+
margin: 0px;
|
253 |
+
}
|
admin/js/boldgrid-backup-admin-archive-actions.js
CHANGED
@@ -151,6 +151,101 @@ BOLDGRID.BACKUP.ACTIONS = function( $ ) {
|
|
151 |
return false;
|
152 |
};
|
153 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
154 |
$( function() {
|
155 |
$body = $( 'body' );
|
156 |
$wpbody = $body.find( '#wpbody' );
|
@@ -158,6 +253,8 @@ BOLDGRID.BACKUP.ACTIONS = function( $ ) {
|
|
158 |
$body.on( 'click', '.action-download', self.downloadArchive );
|
159 |
$body.on( 'click', '.restore-now', self.restoreArchiveConfirm );
|
160 |
$body.on( 'click', '#delete-action a', self.onClickDelete );
|
|
|
|
|
161 |
} );
|
162 |
};
|
163 |
|
151 |
return false;
|
152 |
};
|
153 |
|
154 |
+
/**
|
155 |
+
* @summary Get a download link for a selected backup archive file.
|
156 |
+
*
|
157 |
+
* @since 1.7.0
|
158 |
+
*/
|
159 |
+
self.getDownloadLink = function( e ) {
|
160 |
+
var $this = $( this ),
|
161 |
+
data = {
|
162 |
+
action: 'boldgrid_backup_generate_download_link',
|
163 |
+
archive_filename: $this.attr( 'data-filename' ),
|
164 |
+
archive_auth: $this.attr( 'data-nonce' )
|
165 |
+
},
|
166 |
+
$spinner = $this.next(),
|
167 |
+
$downloadLink = $( '#download-link-copy' );
|
168 |
+
|
169 |
+
e.preventDefault();
|
170 |
+
|
171 |
+
$this.attr( 'disabled', 'disabled' );
|
172 |
+
|
173 |
+
$spinner.addClass( 'inline' );
|
174 |
+
|
175 |
+
$.post( ajaxurl, data, function( response ) {
|
176 |
+
var $copyLink;
|
177 |
+
|
178 |
+
if ( response.data !== undefined && response.data.download_url !== undefined ) {
|
179 |
+
$downloadLink
|
180 |
+
.removeClass( 'notice-error' )
|
181 |
+
.addClass( 'notice-info' )
|
182 |
+
.html( response.data.download_url + ' ' );
|
183 |
+
|
184 |
+
$copyLink = $(
|
185 |
+
'<button class="button" id="download-copy-button"' +
|
186 |
+
' data-clipboard-text="' +
|
187 |
+
response.data.download_url +
|
188 |
+
'"> ' +
|
189 |
+
lang.copyText +
|
190 |
+
' <span class="dashicons dashicons-admin-links"></span></button>'
|
191 |
+
);
|
192 |
+
$downloadLink.append( $copyLink );
|
193 |
+
|
194 |
+
$downloadLink.wrapInner( '<p></p>' );
|
195 |
+
|
196 |
+
$downloadLink.append(
|
197 |
+
'<p>' +
|
198 |
+
lang.expiresText +
|
199 |
+
' ' +
|
200 |
+
response.data.expires_when +
|
201 |
+
'</p><p>' +
|
202 |
+
lang.linkDisclaimerText +
|
203 |
+
'</p>'
|
204 |
+
);
|
205 |
+
|
206 |
+
new ClipboardJS( $copyLink[0] );
|
207 |
+
} else if ( response.data !== undefined && response.data.error !== undefined ) {
|
208 |
+
$downloadLink
|
209 |
+
.removeClass( 'notice-info' )
|
210 |
+
.addClass( 'notice-error' )
|
211 |
+
.html( response.data.error );
|
212 |
+
} else {
|
213 |
+
$downloadLink
|
214 |
+
.removeClass( 'notice-info' )
|
215 |
+
.addClass( 'notice-error' )
|
216 |
+
.html( lang.linkErrorText );
|
217 |
+
}
|
218 |
+
} )
|
219 |
+
.error( function() {
|
220 |
+
$downloadLink.html( lang.unknownErrorText );
|
221 |
+
} )
|
222 |
+
.always( function() {
|
223 |
+
$downloadLink.show();
|
224 |
+
$spinner.removeClass( 'inline' );
|
225 |
+
$this.removeAttr( 'disabled' );
|
226 |
+
} );
|
227 |
+
};
|
228 |
+
|
229 |
+
/**
|
230 |
+
* @summary Update the download link copy button after clicking, and then reset after 3 seconds.
|
231 |
+
*
|
232 |
+
* @since 1.7.0
|
233 |
+
*/
|
234 |
+
self.updateCopyText = function( e ) {
|
235 |
+
var $this = $( this ),
|
236 |
+
oldHtml = $this.html();
|
237 |
+
|
238 |
+
e.preventDefault();
|
239 |
+
|
240 |
+
$this.attr( 'disabled', 'disabled' );
|
241 |
+
$this.html( lang.copiedText );
|
242 |
+
|
243 |
+
setTimeout( function() {
|
244 |
+
$this.html( oldHtml );
|
245 |
+
$this.removeAttr( 'disabled' );
|
246 |
+
}, 3000 );
|
247 |
+
};
|
248 |
+
|
249 |
$( function() {
|
250 |
$body = $( 'body' );
|
251 |
$wpbody = $body.find( '#wpbody' );
|
253 |
$body.on( 'click', '.action-download', self.downloadArchive );
|
254 |
$body.on( 'click', '.restore-now', self.restoreArchiveConfirm );
|
255 |
$body.on( 'click', '#delete-action a', self.onClickDelete );
|
256 |
+
$body.on( 'click', '#download-link-button', self.getDownloadLink );
|
257 |
+
$body.on( 'click', '#download-copy-button', self.updateCopyText );
|
258 |
} );
|
259 |
};
|
260 |
|
admin/js/boldgrid-backup-admin-archive-details.js
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
* @since 1.3.3
|
7 |
*/
|
8 |
|
9 |
-
/* global ajaxurl,BoldGridBackupAdmin,jQuery */
|
10 |
|
11 |
var BoldGrid = BoldGrid || {};
|
12 |
|
@@ -149,12 +149,86 @@ BoldGrid.ArchiveDetails = function( $ ) {
|
|
149 |
}
|
150 |
};
|
151 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
152 |
/**
|
153 |
* Init.
|
154 |
*/
|
155 |
$( function() {
|
156 |
$body.on( 'click', '.remote-storage a.upload', self.onClickUpload );
|
157 |
$body.on( 'click', '.remote-storage .download-to-server', self.onClickDownload );
|
|
|
158 |
$editorTabs.on( 'click', self.onClickTab );
|
159 |
$downloadFirst.on( 'click', self.onClickDownloadFirst );
|
160 |
} );
|
6 |
* @since 1.3.3
|
7 |
*/
|
8 |
|
9 |
+
/* global ajaxurl,BoldGridBackupAdmin,jQuery,boldgrid_backup_archive_details */
|
10 |
|
11 |
var BoldGrid = BoldGrid || {};
|
12 |
|
149 |
}
|
150 |
};
|
151 |
|
152 |
+
/**
|
153 |
+
* @summary Action to take when the user clicks "Update".
|
154 |
+
*
|
155 |
+
* What are they updating? Not really the backup itself, but things like the title and
|
156 |
+
* description of the backup.
|
157 |
+
*
|
158 |
+
* @since 1.7.0
|
159 |
+
*/
|
160 |
+
self.onClickUpdate = function() {
|
161 |
+
var request,
|
162 |
+
data = {
|
163 |
+
action: 'boldgrid_backup_update_archive_details',
|
164 |
+
filename: $( '#filename' ).val(),
|
165 |
+
security: $( '#_wpnonce' ).val(),
|
166 |
+
attributes: {
|
167 |
+
title: $( '[name="backup_title"]' ).val(),
|
168 |
+
description: $( '[name="backup_description"]' ).val(),
|
169 |
+
protect: $( '[name="backup_protect"]' ).val(),
|
170 |
+
}
|
171 |
+
},
|
172 |
+
onFail,
|
173 |
+
onSuccess,
|
174 |
+
$actions = $( '#major-publishing-actions' ),
|
175 |
+
$button = $( this ),
|
176 |
+
$spinner = $button.siblings( '.spinner' );
|
177 |
+
|
178 |
+
onSuccess = function( response ) {
|
179 |
+
if ( false === response.success ) {
|
180 |
+
onFail( response.data );
|
181 |
+
} else {
|
182 |
+
// Animate things.
|
183 |
+
$spinner.removeClass( 'inline' );
|
184 |
+
$button.text( adminLang.updated );
|
185 |
+
setTimeout( function() {
|
186 |
+
$button
|
187 |
+
.text( adminLang.update )
|
188 |
+
.prop( 'disabled', false );
|
189 |
+
}, 1000 );
|
190 |
+
}
|
191 |
+
};
|
192 |
+
|
193 |
+
onFail = function( msg ) {
|
194 |
+
// Configure our error message.
|
195 |
+
if ( msg === undefined ) {
|
196 |
+
msg = adminLang.unknown_error;
|
197 |
+
} else if( 'object' === typeof msg && msg.statusText ) {
|
198 |
+
msg = msg.statusText;
|
199 |
+
}
|
200 |
+
msg = adminLang.failed_to_update + msg;
|
201 |
+
|
202 |
+
// Animate things.
|
203 |
+
$spinner.removeClass( 'inline' );
|
204 |
+
$button
|
205 |
+
.text( adminLang.update )
|
206 |
+
.prop( 'disabled', false );
|
207 |
+
|
208 |
+
// Add an error message and make it dissmissible.
|
209 |
+
$actions.prepend( '<div class="notice notice-error is-dismissible"><p>' + msg + '</p></div>' );
|
210 |
+
$( 'body' ).trigger( 'make_notices_dismissible' );
|
211 |
+
};
|
212 |
+
|
213 |
+
// Animate things.
|
214 |
+
$spinner.addClass( 'inline' );
|
215 |
+
$button
|
216 |
+
.text( adminLang.updating )
|
217 |
+
.prop( 'disabled', true );
|
218 |
+
$actions.find( '.notice' ).slideUp();
|
219 |
+
|
220 |
+
request = $.post( ajaxurl, data )
|
221 |
+
.done( onSuccess )
|
222 |
+
.fail( onFail );
|
223 |
+
};
|
224 |
+
|
225 |
/**
|
226 |
* Init.
|
227 |
*/
|
228 |
$( function() {
|
229 |
$body.on( 'click', '.remote-storage a.upload', self.onClickUpload );
|
230 |
$body.on( 'click', '.remote-storage .download-to-server', self.onClickDownload );
|
231 |
+
$body.on( 'click', '#publishing-action button', self.onClickUpdate );
|
232 |
$editorTabs.on( 'click', self.onClickTab );
|
233 |
$downloadFirst.on( 'click', self.onClickDownloadFirst );
|
234 |
} );
|
admin/js/boldgrid-backup-admin-backup-now.js
CHANGED
@@ -141,6 +141,8 @@ BOLDGRID.BACKUP.BackupNow = function( $ ) {
|
|
141 |
success && data.data !== undefined && data.data.callback !== undefined ?
|
142 |
data.data.callback :
|
143 |
null;
|
|
|
|
|
144 |
|
145 |
switch ( callback ) {
|
146 |
case 'updateProtectionEnabled':
|
@@ -159,7 +161,9 @@ BOLDGRID.BACKUP.BackupNow = function( $ ) {
|
|
159 |
_wp_http_referer: wpHttpReferer,
|
160 |
is_updating: isUpdating,
|
161 |
backup_now: '1',
|
162 |
-
folder_exclusion_type: type
|
|
|
|
|
163 |
};
|
164 |
|
165 |
/*
|
@@ -208,6 +212,8 @@ BOLDGRID.BACKUP.BackupNow = function( $ ) {
|
|
208 |
}
|
209 |
}
|
210 |
} );
|
|
|
|
|
211 |
|
212 |
// Prevent default browser action.
|
213 |
e.preventDefault();
|
141 |
success && data.data !== undefined && data.data.callback !== undefined ?
|
142 |
data.data.callback :
|
143 |
null;
|
144 |
+
|
145 |
+
$( 'body' ).trigger( 'boldgrid_backup_complete' );
|
146 |
|
147 |
switch ( callback ) {
|
148 |
case 'updateProtectionEnabled':
|
161 |
_wp_http_referer: wpHttpReferer,
|
162 |
is_updating: isUpdating,
|
163 |
backup_now: '1',
|
164 |
+
folder_exclusion_type: type,
|
165 |
+
backup_title: $( '[name="backup_title"]' ).val(),
|
166 |
+
backup_description: $( '[name="backup_description"]' ).val(),
|
167 |
};
|
168 |
|
169 |
/*
|
212 |
}
|
213 |
}
|
214 |
} );
|
215 |
+
|
216 |
+
$( 'body' ).trigger( 'boldgrid_backup_initiated' );
|
217 |
|
218 |
// Prevent default browser action.
|
219 |
e.preventDefault();
|
admin/js/boldgrid-backup-admin-ftp-settings.js
CHANGED
@@ -17,13 +17,13 @@ BoldGrid.FtpSettings = function( $ ) {
|
|
17 |
|
18 |
var self = this,
|
19 |
lang = BoldGridBackupAdminFtpSettings,
|
20 |
-
$action
|
21 |
-
$port
|
22 |
-
$type
|
23 |
-
$form
|
24 |
-
$saveButton
|
25 |
-
$deleteButton
|
26 |
-
$spinner
|
27 |
|
28 |
/**
|
29 |
* @summary Take action when the delete button is clicked.
|
@@ -60,6 +60,14 @@ BoldGrid.FtpSettings = function( $ ) {
|
|
60 |
};
|
61 |
|
62 |
$( function() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
$type.on( 'change', self.onTypeChange );
|
64 |
$form.on( 'submit', self.onSubmit );
|
65 |
$deleteButton.on( 'click', self.onClickDelete );
|
17 |
|
18 |
var self = this,
|
19 |
lang = BoldGridBackupAdminFtpSettings,
|
20 |
+
$action,
|
21 |
+
$port,
|
22 |
+
$type,
|
23 |
+
$form,
|
24 |
+
$saveButton,
|
25 |
+
$deleteButton,
|
26 |
+
$spinner;
|
27 |
|
28 |
/**
|
29 |
* @summary Take action when the delete button is clicked.
|
60 |
};
|
61 |
|
62 |
$( function() {
|
63 |
+
$action = $( '[name="action"]' ),
|
64 |
+
$port = $( '[name="port"]' ),
|
65 |
+
$type = $( '[name="type"]' ),
|
66 |
+
$form = $port.closest( 'form' ),
|
67 |
+
$saveButton = $form.find( '.button-primary' ),
|
68 |
+
$deleteButton = $form.find( '.button-secondary' ),
|
69 |
+
$spinner = $form.find( '.spinner' );
|
70 |
+
|
71 |
$type.on( 'change', self.onTypeChange );
|
72 |
$form.on( 'submit', self.onSubmit );
|
73 |
$deleteButton.on( 'click', self.onClickDelete );
|
admin/js/boldgrid-backup-admin-home.js
CHANGED
@@ -18,12 +18,14 @@ BOLDGRID.BACKUP.HOME = function( $ ) {
|
|
18 |
|
19 |
// General Variables.
|
20 |
var self = this,
|
|
|
21 |
$fileInput = $( 'input:file' ),
|
22 |
$mineCount = $( '.mine' ),
|
23 |
$mineCountHelp = $( '.subsubsub' ).find( '.dashicons' );
|
24 |
|
25 |
// Onload event listener.
|
26 |
$( function() {
|
|
|
27 |
|
28 |
// On click action for the Upload button.
|
29 |
$( '#upload-archive-form' )
|
@@ -50,6 +52,17 @@ BOLDGRID.BACKUP.HOME = function( $ ) {
|
|
50 |
$mineCount.on( 'click', self.onClickCount ).on( 'mouseover', function() {
|
51 |
$mineCountHelp.bgbuDrawAttention();
|
52 |
} );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
} );
|
54 |
|
55 |
/**
|
@@ -191,6 +204,91 @@ BOLDGRID.BACKUP.HOME = function( $ ) {
|
|
191 |
.next( '.help' )
|
192 |
.toggle();
|
193 |
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
};
|
195 |
|
196 |
BOLDGRID.BACKUP.HOME( jQuery );
|
18 |
|
19 |
// General Variables.
|
20 |
var self = this,
|
21 |
+
lang = BoldGridBackupAdminHome,
|
22 |
$fileInput = $( 'input:file' ),
|
23 |
$mineCount = $( '.mine' ),
|
24 |
$mineCountHelp = $( '.subsubsub' ).find( '.dashicons' );
|
25 |
|
26 |
// Onload event listener.
|
27 |
$( function() {
|
28 |
+
var $urlImportSection = $( '#url-import-section' );
|
29 |
|
30 |
// On click action for the Upload button.
|
31 |
$( '#upload-archive-form' )
|
52 |
$mineCount.on( 'click', self.onClickCount ).on( 'mouseover', function() {
|
53 |
$mineCountHelp.bgbuDrawAttention();
|
54 |
} );
|
55 |
+
|
56 |
+
$urlImportSection
|
57 |
+
.find( 'input' )
|
58 |
+
.first()
|
59 |
+
.keypress( function( e ) {
|
60 |
+
if ( 13 === e.which ) {
|
61 |
+
self.urlUpload( e );
|
62 |
+
}
|
63 |
+
} );
|
64 |
+
|
65 |
+
$urlImportSection.find( '.button' ).on( 'click', self.urlUpload );
|
66 |
} );
|
67 |
|
68 |
/**
|
204 |
.next( '.help' )
|
205 |
.toggle();
|
206 |
};
|
207 |
+
|
208 |
+
/**
|
209 |
+
* Upload a file from a URL address.
|
210 |
+
*
|
211 |
+
* @since 1.7.0
|
212 |
+
*/
|
213 |
+
self.urlUpload = function( e ) {
|
214 |
+
var jqxhr,
|
215 |
+
$this = $( this ),
|
216 |
+
$spinner = $this.next(),
|
217 |
+
$notice = $( '#url-import-notice' ),
|
218 |
+
urlRegex = new RegExp( lang.urlRegex, 'i' ),
|
219 |
+
data = {
|
220 |
+
action: 'boldgrid_backup_url_upload',
|
221 |
+
_wpnonce: $( '[name="_wpnonce"]' ).val(),
|
222 |
+
_wp_http_referer: $( '[name="_wp_http_referer"]' ).val(),
|
223 |
+
url: $( '[name="url"]' ).val()
|
224 |
+
};
|
225 |
+
|
226 |
+
e.preventDefault();
|
227 |
+
|
228 |
+
if ( ! urlRegex.test( data.url ) ) {
|
229 |
+
$notice
|
230 |
+
.removeClass( 'notice-success' )
|
231 |
+
.addClass( 'notice-error' )
|
232 |
+
.html( lang.invalidUrl )
|
233 |
+
.wrapInner( '<p></p>' )
|
234 |
+
.show();
|
235 |
+
|
236 |
+
return;
|
237 |
+
}
|
238 |
+
|
239 |
+
$notice
|
240 |
+
.removeClass( 'notice-error' )
|
241 |
+
.addClass( 'notice-success' )
|
242 |
+
.empty()
|
243 |
+
.hide();
|
244 |
+
|
245 |
+
$this.attr( 'disabled', 'disabled' );
|
246 |
+
|
247 |
+
$spinner.addClass( 'inline' );
|
248 |
+
|
249 |
+
jqxhr = $.post( ajaxurl, data, function( response ) {
|
250 |
+
if ( response.data !== undefined && response.data.filepath !== undefined ) {
|
251 |
+
$notice
|
252 |
+
.removeClass( 'notice-error' )
|
253 |
+
.addClass( 'notice-success' )
|
254 |
+
.html(
|
255 |
+
lang.savedTo +
|
256 |
+
response.data.filepath +
|
257 |
+
' <a href="' +
|
258 |
+
response.data.detailsUrl +
|
259 |
+
'">' +
|
260 |
+
lang.viewDetails +
|
261 |
+
'</a>'
|
262 |
+
);
|
263 |
+
} else if ( response.data !== undefined && response.data.error !== undefined ) {
|
264 |
+
$notice
|
265 |
+
.removeClass( 'notice-success' )
|
266 |
+
.addClass( 'notice-error' )
|
267 |
+
.html( response.data.error );
|
268 |
+
|
269 |
+
$this.removeAttr( 'disabled' );
|
270 |
+
} else {
|
271 |
+
$notice
|
272 |
+
.removeClass( 'notice-success' )
|
273 |
+
.addClass( 'notice-error' )
|
274 |
+
.html( lang.unknownError );
|
275 |
+
|
276 |
+
$this.removeAttr( 'disabled' );
|
277 |
+
}
|
278 |
+
} )
|
279 |
+
.error( function() {
|
280 |
+
$notice
|
281 |
+
.removeClass( 'notice-success' )
|
282 |
+
.addClass( 'notice-error' )
|
283 |
+
.html( lang.ajaxError + jqxhr.status + ' (' + jqxhr.statusText + ')' );
|
284 |
+
|
285 |
+
$this.removeAttr( 'disabled' );
|
286 |
+
} )
|
287 |
+
.always( function() {
|
288 |
+
$notice.wrapInner( '<p></p>' ).show();
|
289 |
+
$spinner.removeClass( 'inline' );
|
290 |
+
} );
|
291 |
+
};
|
292 |
};
|
293 |
|
294 |
BOLDGRID.BACKUP.HOME( jQuery );
|
admin/js/boldgrid-backup-admin-in-progress.js
ADDED
@@ -0,0 +1,446 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* This file handles the "In progress" bar for when a backup is in progress.
|
3 |
+
*
|
4 |
+
* @summary Backup In Progress Bar.
|
5 |
+
*
|
6 |
+
* @since 1.7.0
|
7 |
+
*/
|
8 |
+
|
9 |
+
/* global jQuery,wp */
|
10 |
+
|
11 |
+
var BOLDGRID = BOLDGRID || {};
|
12 |
+
|
13 |
+
BOLDGRID.BACKUP = BOLDGRID.BACKUP || {};
|
14 |
+
|
15 |
+
( function ( $ ) {
|
16 |
+
|
17 |
+
'use strict';
|
18 |
+
|
19 |
+
var self;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Suggest starter content.
|
23 |
+
*
|
24 |
+
* @since 1.7.0
|
25 |
+
*/
|
26 |
+
BOLDGRID.BACKUP.InProgress = {
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Label.
|
30 |
+
*
|
31 |
+
* @since 1.7.0
|
32 |
+
*
|
33 |
+
* @type string
|
34 |
+
*/
|
35 |
+
$label: null,
|
36 |
+
|
37 |
+
/**
|
38 |
+
* In progress notice.
|
39 |
+
*
|
40 |
+
* BoldGrid Backup - Backup in progress
|
41 |
+
* BoldGrid Backup began archiving your website 1 min ago.
|
42 |
+
*
|
43 |
+
* @since 1.7.0
|
44 |
+
*/
|
45 |
+
$inProgressNotice: null,
|
46 |
+
|
47 |
+
/**
|
48 |
+
* i18n.
|
49 |
+
*
|
50 |
+
* @since 1.7.0
|
51 |
+
*
|
52 |
+
* @type object
|
53 |
+
*/
|
54 |
+
i18n: window.BoldGridBackupAdminInProgress || {},
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Init.
|
58 |
+
*
|
59 |
+
* @since 1.7.0
|
60 |
+
*/
|
61 |
+
init: function() {
|
62 |
+
self._onReady();
|
63 |
+
},
|
64 |
+
|
65 |
+
/**
|
66 |
+
* On ready.
|
67 |
+
*
|
68 |
+
* @since 1.7.0
|
69 |
+
*/
|
70 |
+
_onReady: function() {
|
71 |
+
$( function(){
|
72 |
+
if( typeof wp.heartbeat !== 'undefined' ) {
|
73 |
+
/*
|
74 |
+
* Check for a backup in progress.
|
75 |
+
*
|
76 |
+
* If there is, we need to begin listenting to the heartbeat to find out when it
|
77 |
+
* completes (so we can adjust the message).
|
78 |
+
*/
|
79 |
+
setTimeout( self.onInProgress, 1000 );
|
80 |
+
|
81 |
+
/*
|
82 |
+
* Event "boldgrid_backup_progress_notice_added" currently only triggered within the
|
83 |
+
* customizer. When a user clicks on themes, we may dynamically show them a notice that
|
84 |
+
* a backup is in progress.
|
85 |
+
*/
|
86 |
+
$( document ).on( 'boldgrid_backup_progress_notice_added', 'body', self.onInProgress );
|
87 |
+
|
88 |
+
$( document ).on( 'boldgrid_backup_initiated', 'body', self.onBackupInitiated );
|
89 |
+
|
90 |
+
$( document ).on( 'boldgrid_backup_complete', 'body', self.onComplete );
|
91 |
+
}
|
92 |
+
} );
|
93 |
+
},
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Determine whether or not a step is active.
|
97 |
+
*
|
98 |
+
* @since 1.7.0
|
99 |
+
*
|
100 |
+
* @param string step The id of the container.
|
101 |
+
* @return bool
|
102 |
+
*/
|
103 |
+
isStepActive: function( step ) {
|
104 |
+
return $( '#boldgrid_backup_in_progress_steps' )
|
105 |
+
.find( '[data-step="' + step + '"]' )
|
106 |
+
.hasClass( 'active' );
|
107 |
+
},
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Action to take when a backup is initiated.
|
111 |
+
*
|
112 |
+
* We configure the heartbeat and the progress bar.
|
113 |
+
*
|
114 |
+
* @since 1.7.0
|
115 |
+
*/
|
116 |
+
onBackupInitiated: function() {
|
117 |
+
self.heartbeatStart();
|
118 |
+
|
119 |
+
// Show and initialize our progress bar.
|
120 |
+
$( '#boldgrid_backup_in_progress_container' ).show();
|
121 |
+
self.$label = $( '.progress-label' );
|
122 |
+
self.setPercentage( 0 );
|
123 |
+
},
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Action to take when a backup is completed.
|
127 |
+
*
|
128 |
+
* This function is called on the body's "boldgrid_backup_complete" event, which is trigger
|
129 |
+
* in the following scenarios:
|
130 |
+
* # We make an ajax call to backup now, and that call is successful.
|
131 |
+
* # We are using the wp.heartbeat to check on the status of a in progress backup and we're
|
132 |
+
* notified the backup is complete.
|
133 |
+
*
|
134 |
+
* @since 1.7.0
|
135 |
+
*/
|
136 |
+
onComplete: function() {
|
137 |
+
// Hide "in progress" notices.
|
138 |
+
self.$inProgressNotice.slideUp();
|
139 |
+
$( '#boldgrid_backup_in_progress_container' ).slideUp();
|
140 |
+
|
141 |
+
// Bail out of the heartbeat.
|
142 |
+
$( document ).off( 'heartbeat-tick', self.onHeartbeatTick );
|
143 |
+
$( document ).off( 'heartbeat-send', self.heartbeatModify );
|
144 |
+
},
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Steps to take when the heartbeat ticket is received.
|
148 |
+
*
|
149 |
+
* @since 1.7.0
|
150 |
+
*/
|
151 |
+
onHeartbeatTick: function( e, data ) {
|
152 |
+
var $notice;
|
153 |
+
|
154 |
+
/*
|
155 |
+
* This class deals with backups in progress. If our in progress class didn't give us
|
156 |
+
* any information, abort.
|
157 |
+
*/
|
158 |
+
if ( undefined === data.boldgrid_backup_in_progress ) {
|
159 |
+
return;
|
160 |
+
}
|
161 |
+
|
162 |
+
/*
|
163 |
+
* Ensure the fast heartbeat.
|
164 |
+
*
|
165 |
+
* At this point in the script, we've already set the heartbeat to fast. The problem
|
166 |
+
* is that this elevated heartbeat only lasts for at most 2.5 minutes. If you've got
|
167 |
+
* a really big site, once that heartbeat goes back to 60, it's going to look like
|
168 |
+
* this froze.
|
169 |
+
*/
|
170 |
+
if( 5 !== wp.heartbeat.interval ) {
|
171 |
+
wp.heartbeat.interval( 'fast' );
|
172 |
+
}
|
173 |
+
|
174 |
+
if ( data.in_progress_data.percentage ) {
|
175 |
+
self.setPercentage( data.in_progress_data.percentage );
|
176 |
+
}
|
177 |
+
|
178 |
+
// Update our progress bar.
|
179 |
+
if ( 1 === data.in_progress_data.step ) {
|
180 |
+
self.onStepDatabase( data.in_progress_data );
|
181 |
+
} else if ( 2 === data.in_progress_data.step ) {
|
182 |
+
self.onStepAddingFiles( data.in_progress_data );
|
183 |
+
} else if ( 3 === data.in_progress_data.step && data.in_progress_data.tmp ) {
|
184 |
+
self.onStepSaving( data.in_progress_data );
|
185 |
+
} else {
|
186 |
+
self.setStepActive();
|
187 |
+
self.setLabel( data.in_progress_data.status );
|
188 |
+
self.setSubText();
|
189 |
+
}
|
190 |
+
|
191 |
+
// Steps to take when we no longer have a backup in progress.
|
192 |
+
if ( null === data.boldgrid_backup_in_progress ) {
|
193 |
+
// Create our success notice and show it.
|
194 |
+
$notice = $( data.boldgrid_backup_complete );
|
195 |
+
$notice
|
196 |
+
.css( 'display', 'none' )
|
197 |
+
.insertBefore( self.$inProgressNotice )
|
198 |
+
.slideDown();
|
199 |
+
|
200 |
+
$( 'body' ).trigger( 'make_notices_dismissible' );
|
201 |
+
$( 'body' ).trigger( 'boldgrid_backup_complete' );
|
202 |
+
}
|
203 |
+
},
|
204 |
+
|
205 |
+
/**
|
206 |
+
* Action to take if we have a backup in progress.
|
207 |
+
*
|
208 |
+
* This function is ran when the page is ready. It checks to see if we're showing a "Backup
|
209 |
+
* In Progress" notice. If we are, then we need to hook into the heartbeat and find out when
|
210 |
+
* that backup has been completed.
|
211 |
+
*
|
212 |
+
* @since 1.7.0
|
213 |
+
*/
|
214 |
+
onInProgress: function() {
|
215 |
+
self.$inProgressNotice = $( '.boldgrid-backup-in-progress' );
|
216 |
+
|
217 |
+
if ( 1 === self.$inProgressNotice.length ) {
|
218 |
+
self.onBackupInitiated();
|
219 |
+
}
|
220 |
+
},
|
221 |
+
|
222 |
+
/**
|
223 |
+
* Steps to take with the progress bar when we're adding files to the archive.
|
224 |
+
*
|
225 |
+
* @since 1.7.0
|
226 |
+
*
|
227 |
+
* @param object In progress data received from ajax call.
|
228 |
+
*/
|
229 |
+
onStepAddingFiles: function( data ) {
|
230 |
+
var percentage = Math.floor( data.total_files_done / data.total_files_todo * 100 );
|
231 |
+
|
232 |
+
self.setStepActive( 2 );
|
233 |
+
|
234 |
+
self.setPercentage( percentage );
|
235 |
+
|
236 |
+
self.setLabel( percentage + '%' );
|
237 |
+
|
238 |
+
/*
|
239 |
+
* Different styles are needed as the progress bar reaches 50% and begins to overlap
|
240 |
+
* the status text.
|
241 |
+
*/
|
242 |
+
if( percentage >= 50 ) {
|
243 |
+
self.$label.addClass( 'over-50' );
|
244 |
+
}
|
245 |
+
|
246 |
+
if( 100 === percentage && data.status ) {
|
247 |
+
self.setSubText();
|
248 |
+
}
|
249 |
+
|
250 |
+
/*
|
251 |
+
* If we have "last files" data within our "in progress data", loop through and use a
|
252 |
+
* setTimeout to display each one.
|
253 |
+
*/
|
254 |
+
if( data.last_files ) {
|
255 |
+
for( var i = 0; i < data.last_files.length; i++ ) {
|
256 |
+
setTimeout( self.setSubText, ( i * 1000 + 1 ), data.last_files[i] );
|
257 |
+
}
|
258 |
+
}
|
259 |
+
},
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Steps to take with the progress bar when we're backing up the database.
|
263 |
+
*
|
264 |
+
* @since 1.7.0
|
265 |
+
*
|
266 |
+
* @param object In progress data received from ajax call.
|
267 |
+
*/
|
268 |
+
onStepDatabase: function( data ) {
|
269 |
+
var stepIsActive = self.isStepActive( 1 ),
|
270 |
+
timeout;
|
271 |
+
|
272 |
+
self.setStepActive( 1 );
|
273 |
+
|
274 |
+
/*
|
275 |
+
* Show tables being backed up.
|
276 |
+
*
|
277 |
+
* We only run this step once, the first time we know that database tables are being
|
278 |
+
* backed up.
|
279 |
+
*/
|
280 |
+
if( ! stepIsActive ) {
|
281 |
+
self.setSubText( self.i18n.adding_tables );
|
282 |
+
|
283 |
+
for( var i = 0; i < data.tables.length; i++ ) {
|
284 |
+
timeout = (i+1) * 5000 / data.tables.length;
|
285 |
+
setTimeout( self.setLabel, timeout, data.tables[i] );
|
286 |
+
}
|
287 |
+
|
288 |
+
/*
|
289 |
+
* We really don't know how long the database backup will take. In the above loop,
|
290 |
+
* we show all the tables that are being backed up within a 5 second period. After
|
291 |
+
* that time, we just finish it up with a "Completing database backup" message,
|
292 |
+
* which for more users shouldn't show for too long.
|
293 |
+
*/
|
294 |
+
setTimeout( function() {
|
295 |
+
self.setLabel( self.i18n.completing_database );
|
296 |
+
self.setSubText();
|
297 |
+
}, timeout + 2000 );
|
298 |
+
}
|
299 |
+
},
|
300 |
+
|
301 |
+
/**
|
302 |
+
* Steps to take with the progress bar when we're saving the archive.
|
303 |
+
*
|
304 |
+
* @since 1.7.0
|
305 |
+
*
|
306 |
+
* @param object In progress data received from ajax call.
|
307 |
+
*/
|
308 |
+
onStepSaving: function( data ) {
|
309 |
+
var percentage = Math.floor( data.tmp.size / data.total_size_archived * 100 );
|
310 |
+
|
311 |
+
self.setStepActive( 3 );
|
312 |
+
|
313 |
+
self.setPercentage( percentage );
|
314 |
+
|
315 |
+
self.setLabel( ' ' + self.i18n.archive_file_size + data.tmp.size_format );
|
316 |
+
|
317 |
+
self.setSubText( self.i18n.size_before_compression + data.total_size_archived_size_format );
|
318 |
+
},
|
319 |
+
|
320 |
+
/**
|
321 |
+
* Set the text of the progress bar label.
|
322 |
+
*
|
323 |
+
* For example, if we're at 50% and the progress bar actually says "50%", it's the label
|
324 |
+
* that we're seeing.
|
325 |
+
*
|
326 |
+
* @since 1.7.0
|
327 |
+
*/
|
328 |
+
setLabel: function( string ) {
|
329 |
+
self.$label.text( string );
|
330 |
+
},
|
331 |
+
|
332 |
+
/**
|
333 |
+
* Set the percentage of the progress bar.
|
334 |
+
*
|
335 |
+
* @since 1.7.0
|
336 |
+
*
|
337 |
+
* @param int percentage The percentage complete, 0 - 100.
|
338 |
+
*/
|
339 |
+
setPercentage: function( percentage ) {
|
340 |
+
$( '#boldgrid-backup-in-progress-bar' )
|
341 |
+
.show()
|
342 |
+
.progressbar({
|
343 |
+
value: percentage
|
344 |
+
});
|
345 |
+
|
346 |
+
if( percentage >= 50 ) {
|
347 |
+
self.$label.addClass( 'over-50' );
|
348 |
+
} else {
|
349 |
+
self.$label.removeClass( 'over-50' );
|
350 |
+
}
|
351 |
+
},
|
352 |
+
|
353 |
+
/**
|
354 |
+
* Set a step as being active.
|
355 |
+
*
|
356 |
+
* @since 2.0.0
|
357 |
+
*
|
358 |
+
* @param string step The id of the container.
|
359 |
+
*/
|
360 |
+
setStepActive: function( step ) {
|
361 |
+
var $container = $( '#boldgrid_backup_in_progress_steps' ),
|
362 |
+
$steps = $container.find( '[data-step]' );
|
363 |
+
|
364 |
+
if( step && self.isStepActive( step ) ) {
|
365 |
+
return;
|
366 |
+
}
|
367 |
+
|
368 |
+
$steps.removeClass( 'active' );
|
369 |
+
|
370 |
+
if( step ) {
|
371 |
+
$container.find( '[data-step="' + step + '"]' ).addClass( 'active' );
|
372 |
+
}
|
373 |
+
},
|
374 |
+
|
375 |
+
/**
|
376 |
+
* Set our sub text.
|
377 |
+
*
|
378 |
+
* For example, if we're adding files and we want to show each file that is being added
|
379 |
+
* (in smaller text below the progress bar), that is sub text.
|
380 |
+
*
|
381 |
+
* @since 2.0.0
|
382 |
+
*
|
383 |
+
* @param string text
|
384 |
+
*/
|
385 |
+
setSubText: function( text ) {
|
386 |
+
var $lastFileArchived = $( '#last_file_archived' );
|
387 |
+
|
388 |
+
if( text ) {
|
389 |
+
$lastFileArchived.text( text );
|
390 |
+
} else {
|
391 |
+
$lastFileArchived.empty();
|
392 |
+
}
|
393 |
+
},
|
394 |
+
|
395 |
+
/**
|
396 |
+
* Modify the heartbeat and tell it we want "boldgrid_backup_in_progress" details.
|
397 |
+
*
|
398 |
+
* @since 1.7.0
|
399 |
+
*/
|
400 |
+
heartbeatModify: function( e, data ) {
|
401 |
+
data.boldgrid_backup_in_progress = true;
|
402 |
+
$( 'body' ).removeClass( 'heartbeat-lost-focus' );
|
403 |
+
},
|
404 |
+
|
405 |
+
/**
|
406 |
+
* Start "In progress" Heartbeat.
|
407 |
+
*
|
408 |
+
* @since 1.7.0
|
409 |
+
*/
|
410 |
+
heartbeatStart: function() {
|
411 |
+
// Increase the heartbeat so we can get an update sooner.
|
412 |
+
wp.heartbeat.interval( 'fast' );
|
413 |
+
|
414 |
+
// Modify the heartbeat and ask for an update on our in progress backup.
|
415 |
+
$( document ).on( 'heartbeat-send', self.heartbeatModify );
|
416 |
+
// Now that we've modified the heartbeat, we need to listen for its tick.
|
417 |
+
$( document ).on( 'heartbeat-tick', self.onHeartbeatTick );
|
418 |
+
|
419 |
+
/*
|
420 |
+
* When your window loses focus, the heartbeat may slow down and you may not get updates
|
421 |
+
* as quickly. If you have two windows open and you're not actively looking at the
|
422 |
+
* backup in progress, you'll think it froze because of the slower heartbeat.
|
423 |
+
*
|
424 |
+
* This method adds a class to the body to indicate that the heartbeat has lost focus.
|
425 |
+
* The class will lighten the progress bar, to show that it's not currently active.
|
426 |
+
*/
|
427 |
+
window.setInterval(
|
428 |
+
function(){
|
429 |
+
var $body = $( 'body' ),
|
430 |
+
body_class = 'heartbeat-lost-focus';
|
431 |
+
|
432 |
+
if( wp.heartbeat.hasFocus() ) {
|
433 |
+
$body.removeClass( body_class );
|
434 |
+
} else {
|
435 |
+
$body.addClass( body_class );
|
436 |
+
}
|
437 |
+
},
|
438 |
+
5000
|
439 |
+
);
|
440 |
+
}
|
441 |
+
};
|
442 |
+
|
443 |
+
self = BOLDGRID.BACKUP.InProgress;
|
444 |
+
} )( jQuery );
|
445 |
+
|
446 |
+
BOLDGRID.BACKUP.InProgress.init();
|
admin/js/boldgrid-backup-admin-settings-autoupdate.js
ADDED
@@ -0,0 +1,195 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* global ajaxurl,jQuery */
|
2 |
+
|
3 |
+
var BOLDGRID = BOLDGRID || {};
|
4 |
+
BOLDGRID.SETTINGS = BOLDGRID.SETTINGS || {};
|
5 |
+
|
6 |
+
( function( $ ) {
|
7 |
+
BOLDGRID.SETTINGS.AutoUpdate = {
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Constructor.
|
11 |
+
*
|
12 |
+
* @since 1.7.0
|
13 |
+
*/
|
14 |
+
init: function() {
|
15 |
+
$( self._onLoad );
|
16 |
+
},
|
17 |
+
|
18 |
+
/**
|
19 |
+
* On DOM load.
|
20 |
+
*
|
21 |
+
* @since 1.7.0
|
22 |
+
*/
|
23 |
+
_onLoad: function() {
|
24 |
+
var $bgBox = $( '.bg-box' );
|
25 |
+
|
26 |
+
// Initialize jquery-toggles.
|
27 |
+
$bgBox.find( '.toggle' ).toggles( {
|
28 |
+
text: {
|
29 |
+
on: '',
|
30 |
+
off: ''
|
31 |
+
},
|
32 |
+
height: 15,
|
33 |
+
width: 40
|
34 |
+
} );
|
35 |
+
|
36 |
+
self._setMasterToggles();
|
37 |
+
|
38 |
+
$bgBox.find( '.toggle-group' ).on( 'click swipe contextmenu', self._toggleGroup );
|
39 |
+
|
40 |
+
$bgBox
|
41 |
+
.find( '.toggle' )
|
42 |
+
.not( '.toggle-group' )
|
43 |
+
.on( 'click swipe contextmenu', self._setMasterToggles );
|
44 |
+
|
45 |
+
$bgBox.find( '.dashicons-editor-help' ).on( 'click', self._toggleHelp );
|
46 |
+
|
47 |
+
$bgBox.find( '.bglib-collapsible-control' ).on( 'click', function() {
|
48 |
+
$( this ).toggleClass( 'bglib-collapsible-open' );
|
49 |
+
} );
|
50 |
+
},
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Set inputs for toggles.
|
54 |
+
*
|
55 |
+
* @since 1.7.0
|
56 |
+
*/
|
57 |
+
_setInputs: function() {
|
58 |
+
var $bgBox = $( '.bg-box' ),
|
59 |
+
$wpcoreToggles = $bgBox.find( '.wpcore-toggle' ),
|
60 |
+
$pluginToggles = $bgBox.find( '.plugin-toggle' ),
|
61 |
+
$themeToggles = $bgBox.find( '.theme-toggle' ),
|
62 |
+
$pluginsDefault = $bgBox.find( '#toggle-default-plugins' ),
|
63 |
+
$themesDefault = $bgBox.find( '#toggle-default-themes' );
|
64 |
+
|
65 |
+
// If the updates section is not in use, then just return.
|
66 |
+
if ( ! $pluginsDefault.data( 'toggles' ) ) {
|
67 |
+
return;
|
68 |
+
}
|
69 |
+
|
70 |
+
$wpcoreToggles.each( function() {
|
71 |
+
var $this = $( this );
|
72 |
+
|
73 |
+
$this
|
74 |
+
.next( 'input' )
|
75 |
+
.attr( 'name', 'autoupdate[wpcore][' + $this.data( 'wpcore' ) + ']' )
|
76 |
+
.val( $this.data( 'toggles' ).active ? 1 : 0 );
|
77 |
+
} );
|
78 |
+
|
79 |
+
$pluginToggles.each( function() {
|
80 |
+
var $this = $( this );
|
81 |
+
|
82 |
+
$this
|
83 |
+
.parent()
|
84 |
+
.next( 'input' )
|
85 |
+
.attr( 'name', 'autoupdate[plugins][' + $this.data( 'plugin' ) + ']' )
|
86 |
+
.val( $this.data( 'toggles' ).active ? 1 : 0 );
|
87 |
+
} );
|
88 |
+
|
89 |
+
$themeToggles.each( function() {
|
90 |
+
var $this = $( this );
|
91 |
+
|
92 |
+
$this
|
93 |
+
.parent()
|
94 |
+
.next( 'input' )
|
95 |
+
.attr( 'name', 'autoupdate[themes][' + $this.data( 'stylesheet' ) + ']' )
|
96 |
+
.val( $this.data( 'toggles' ).active ? 1 : 0 );
|
97 |
+
} );
|
98 |
+
|
99 |
+
$pluginsDefault
|
100 |
+
.parent()
|
101 |
+
.next( 'input' )
|
102 |
+
.val( $pluginsDefault.data( 'toggles' ).active ? 1 : 0 );
|
103 |
+
|
104 |
+
$themesDefault
|
105 |
+
.parent()
|
106 |
+
.next( 'input' )
|
107 |
+
.val( $themesDefault.data( 'toggles' ).active ? 1 : 0 );
|
108 |
+
},
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Set master toggles.
|
112 |
+
*
|
113 |
+
* @since 1.7.0
|
114 |
+
*/
|
115 |
+
_setMasterToggles: function() {
|
116 |
+
var $masters = $( '.bg-box' ).find( '.toggle-group' );
|
117 |
+
|
118 |
+
$masters.each( function() {
|
119 |
+
var $master = $( this ),
|
120 |
+
state = true;
|
121 |
+
|
122 |
+
$master
|
123 |
+
.closest( '.div-table-body' )
|
124 |
+
.find( '.toggle' )
|
125 |
+
.not( '.toggle-group,#toggle-default-plugins,#toggle-default-themes' )
|
126 |
+
.each( function() {
|
127 |
+
if ( ! state || ! $( this ).data( 'toggles' ).active ) {
|
128 |
+
state = false;
|
129 |
+
}
|
130 |
+
} );
|
131 |
+
|
132 |
+
$master.toggles( state );
|
133 |
+
} );
|
134 |
+
|
135 |
+
self._setInputs();
|
136 |
+
},
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Toggle an entire group on/off.
|
140 |
+
*
|
141 |
+
* @since 1.7.0
|
142 |
+
*/
|
143 |
+
_toggleGroup: function() {
|
144 |
+
var $this = $( this ),
|
145 |
+
$toggles = $this
|
146 |
+
.parent()
|
147 |
+
.parent()
|
148 |
+
.parent()
|
149 |
+
.find( '.toggle' )
|
150 |
+
.not( '#toggle-default-plugins,#toggle-default-themes' );
|
151 |
+
|
152 |
+
$toggles.toggles( $this.data( 'toggles' ).active );
|
153 |
+
|
154 |
+
self._setInputs();
|
155 |
+
},
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Replace the notice with a clone when removed by dismissal.
|
159 |
+
*
|
160 |
+
* @since 1.7.0
|
161 |
+
*/
|
162 |
+
_replaceNotice: function( $notice ) {
|
163 |
+
var $noticeClone = $notice.clone(),
|
164 |
+
$noticeNext = $notice.next();
|
165 |
+
|
166 |
+
$notice.one( 'click.wp-dismiss-notice', '.notice-dismiss', function() {
|
167 |
+
$noticeNext.before( $noticeClone );
|
168 |
+
$notice = $noticeClone;
|
169 |
+
$notice.hide();
|
170 |
+
} );
|
171 |
+
},
|
172 |
+
|
173 |
+
/**
|
174 |
+
* Handle form submission.
|
175 |
+
*
|
176 |
+
* @since 1.7.0
|
177 |
+
*/
|
178 |
+
_toggleHelp: function( e ) {
|
179 |
+
var id = $( this ).attr( 'data-id' );
|
180 |
+
|
181 |
+
e.preventDefault();
|
182 |
+
|
183 |
+
if ( id === undefined ) {
|
184 |
+
return false;
|
185 |
+
}
|
186 |
+
|
187 |
+
$( '.help[data-id="' + id + '"]' ).slideToggle();
|
188 |
+
|
189 |
+
return false;
|
190 |
+
}
|
191 |
+
};
|
192 |
+
|
193 |
+
var self = BOLDGRID.SETTINGS.AutoUpdate;
|
194 |
+
BOLDGRID.SETTINGS.AutoUpdate.init();
|
195 |
+
} )( jQuery );
|
admin/js/boldgrid-backup-admin-settings.js
CHANGED
@@ -258,30 +258,6 @@ BoldGrid.Settings = function( $ ) {
|
|
258 |
}
|
259 |
};
|
260 |
|
261 |
-
/**
|
262 |
-
* Handle click of the undismissBoldgridNotice link for the key prompt.
|
263 |
-
*
|
264 |
-
* @since 1.6.0
|
265 |
-
*/
|
266 |
-
self.undismissBoldgridNotice = function() {
|
267 |
-
var data, nonce, wpHttpReferer;
|
268 |
-
|
269 |
-
// Get the wpnonce and referer values.
|
270 |
-
nonce = $( '#set_key_auth' ).val();
|
271 |
-
wpHttpReferer = $( '[name="_wp_http_referer"]' ).val();
|
272 |
-
|
273 |
-
data = {
|
274 |
-
action: 'undismissBoldgridNotice',
|
275 |
-
notice: 'bg-key-prompt',
|
276 |
-
set_key_auth: nonce,
|
277 |
-
_wp_http_referer: wpHttpReferer
|
278 |
-
};
|
279 |
-
|
280 |
-
$.post( ajaxurl, data, function() {
|
281 |
-
location.reload();
|
282 |
-
} );
|
283 |
-
};
|
284 |
-
|
285 |
// Onload event listener.
|
286 |
$( function() {
|
287 |
|
@@ -302,9 +278,6 @@ BoldGrid.Settings = function( $ ) {
|
|
302 |
$body.on( 'click', '#storage_locations .thickbox', self.on_click_provider );
|
303 |
|
304 |
$body.on( 'click', '#license_check_again', self.onClickCheckAgain );
|
305 |
-
|
306 |
-
/** Reverse dismiss action for the Conect Key prompt **/
|
307 |
-
$( '.undismissBoldgridNotice' ).on( 'click', self.undismissBoldgridNotice );
|
308 |
} );
|
309 |
};
|
310 |
|
258 |
}
|
259 |
};
|
260 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
// Onload event listener.
|
262 |
$( function() {
|
263 |
|
278 |
$body.on( 'click', '#storage_locations .thickbox', self.on_click_provider );
|
279 |
|
280 |
$body.on( 'click', '#license_check_again', self.onClickCheckAgain );
|
|
|
|
|
|
|
281 |
} );
|
282 |
};
|
283 |
|
admin/js/boldgrid-backup-admin-update-selectors.js
CHANGED
@@ -50,7 +50,10 @@ BOLDGRID.BACKUP = BOLDGRID.BACKUP || {};
|
|
50 |
'#update-theme',
|
51 |
|
52 |
// BoldGrid Backup - Update Protection > "Backup Site Now" button.
|
53 |
-
'#backup-site-now'
|
|
|
|
|
|
|
54 |
],
|
55 |
|
56 |
/**
|
50 |
'#update-theme',
|
51 |
|
52 |
// BoldGrid Backup - Update Protection > "Backup Site Now" button.
|
53 |
+
'.notice #backup-site-now',
|
54 |
+
|
55 |
+
// Dashboard > BoldGrid Backup > Backup Archive > "Backup Site Now" button.
|
56 |
+
'.page-title-actions .page-title-action'
|
57 |
],
|
58 |
|
59 |
/**
|
admin/js/boldgrid-backup-admin.js
CHANGED
@@ -78,62 +78,6 @@ BoldGrid.Backup = function( $ ) {
|
|
78 |
return false;
|
79 |
};
|
80 |
|
81 |
-
/**
|
82 |
-
* @summary Action to take if we have a backup in progress.
|
83 |
-
*
|
84 |
-
* If we do have a backup in progress, we'll hook into the heartbeat and find
|
85 |
-
* out when that backup has been completed.
|
86 |
-
*
|
87 |
-
* @since 1.6.0
|
88 |
-
*/
|
89 |
-
self.onInProgress = function() {
|
90 |
-
var complete = false,
|
91 |
-
$inProgressNotice = $( '.boldgrid-backup-in-progress' );
|
92 |
-
|
93 |
-
// If we're not actually showing an "in progress" notice, abort.
|
94 |
-
if ( 1 !== $inProgressNotice.length ) {
|
95 |
-
return;
|
96 |
-
}
|
97 |
-
|
98 |
-
// Increase the heartbeat so we can get an update sooner.
|
99 |
-
wp.heartbeat.interval( 'fast' );
|
100 |
-
|
101 |
-
/*
|
102 |
-
* When the heartbeat is sent, include that we're looking for an update
|
103 |
-
* on the in progress backup.
|
104 |
-
*/
|
105 |
-
$( document ).on( 'heartbeat-send', function( e, data ) {
|
106 |
-
if ( ! complete ) {
|
107 |
-
data['boldgrid_backup_in_progress'] = true;
|
108 |
-
}
|
109 |
-
} );
|
110 |
-
|
111 |
-
// When the heartbeat is received, check to see if the backup has completed.
|
112 |
-
$( document ).on( 'heartbeat-tick', function( e, data ) {
|
113 |
-
var $notice;
|
114 |
-
|
115 |
-
if ( undefined === data.boldgrid_backup_in_progress ) {
|
116 |
-
return;
|
117 |
-
}
|
118 |
-
|
119 |
-
if ( ! data.boldgrid_backup_in_progress ) {
|
120 |
-
$notice = $( data.boldgrid_backup_complete );
|
121 |
-
$notice
|
122 |
-
.css( 'display', 'none' )
|
123 |
-
.insertBefore( $inProgressNotice )
|
124 |
-
.slideDown();
|
125 |
-
|
126 |
-
$inProgressNotice.slideUp();
|
127 |
-
|
128 |
-
wp.heartbeat.interval( 'standard' );
|
129 |
-
complete = true;
|
130 |
-
|
131 |
-
$( 'body' ).trigger( 'make_notices_dismissible' );
|
132 |
-
$( 'body' ).trigger( 'boldgrid_backup_complete' );
|
133 |
-
}
|
134 |
-
} );
|
135 |
-
};
|
136 |
-
|
137 |
/**
|
138 |
* @summary Make an admin notice dismissible.
|
139 |
*
|
@@ -173,13 +117,6 @@ BoldGrid.Backup = function( $ ) {
|
|
173 |
self.hideBackupNotice();
|
174 |
self.updatePremiumLink();
|
175 |
|
176 |
-
/*
|
177 |
-
* If and when a backup is in progress, we need to begin waiting to hear
|
178 |
-
* for that backup to complete.
|
179 |
-
*/
|
180 |
-
self.onInProgress();
|
181 |
-
$( 'body' ).on( 'boldgrid_backup_progress_notice_added', self.onInProgress );
|
182 |
-
|
183 |
$( 'body' ).on( 'click', '[data-toggle-target]', self.onClickToggle );
|
184 |
$( 'body' ).on( 'make_notices_dismissible', self.makeNoticesDismissible );
|
185 |
|
78 |
return false;
|
79 |
};
|
80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
81 |
/**
|
82 |
* @summary Make an admin notice dismissible.
|
83 |
*
|
117 |
self.hideBackupNotice();
|
118 |
self.updatePremiumLink();
|
119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
$( 'body' ).on( 'click', '[data-toggle-target]', self.onClickToggle );
|
121 |
$( 'body' ).on( 'make_notices_dismissible', self.makeNoticesDismissible );
|
122 |
|
admin/partials/archives/add-new.php
CHANGED
@@ -19,13 +19,13 @@ defined( 'WPINC' ) || die;
|
|
19 |
|
20 |
$max_file_size = Boldgrid_Backup_Admin_Utility::get_upload_limit();
|
21 |
|
22 |
-
$size_limit = __( 'File size limit', 'boldgrid-backup' ) . ': ' .
|
23 |
Boldgrid_Backup_Admin_Utility::bytes_to_human(
|
24 |
Boldgrid_Backup_Admin_Utility::get_upload_limit()
|
25 |
);
|
26 |
|
27 |
$size_info = __(
|
28 |
-
'To change the limit, you may be able to modify your server\'s php.ini or .htaccess file. Please ask your web hosting provider if you need assistance.',
|
29 |
'boldgrid-backup'
|
30 |
);
|
31 |
|
@@ -73,7 +73,17 @@ printf(
|
|
73 |
?>
|
74 |
</p>
|
75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
<div id="upload-archive-section" class="wp-upload-form">
|
|
|
77 |
<form id="upload-archive-form" method="POST" enctype="multipart/form-data">
|
78 |
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo esc_attr( $max_file_size ); ?>" />
|
79 |
<input type="hidden" name="uploading" value="1" />
|
@@ -93,7 +103,7 @@ printf(
|
|
93 |
</div>
|
94 |
|
95 |
<p class="install-help">
|
96 |
-
<?php esc_html_e( 'Have a large
|
97 |
<span class="dashicons dashicons-editor-help" data-id="backup-id"></span>
|
98 |
</p>
|
99 |
|
19 |
|
20 |
$max_file_size = Boldgrid_Backup_Admin_Utility::get_upload_limit();
|
21 |
|
22 |
+
$size_limit = __( 'File upload size limit', 'boldgrid-backup' ) . ': ' .
|
23 |
Boldgrid_Backup_Admin_Utility::bytes_to_human(
|
24 |
Boldgrid_Backup_Admin_Utility::get_upload_limit()
|
25 |
);
|
26 |
|
27 |
$size_info = __(
|
28 |
+
'Files uploaded from your computer are limited to a maximum size. To change the limit, you may be able to modify your server\'s php.ini or .htaccess file. Please ask your web hosting provider if you need assistance. Uploads from URL addresses do not have a size limit.',
|
29 |
'boldgrid-backup'
|
30 |
);
|
31 |
|
73 |
?>
|
74 |
</p>
|
75 |
|
76 |
+
<div id="url-import-section" class="wp-upload-form">
|
77 |
+
<p><?php esc_html_e( 'From a URL address:', 'boldgrid-backup' ); ?></p>
|
78 |
+
<input type="text" name="url"
|
79 |
+
placeholder="<?php esc_attr_e( 'Download URL address', 'boldgrid-backup' ); ?>" size="30" />
|
80 |
+
<input class="button" type="submit" value="<?php esc_attr_e( 'Upload', 'boldgrid-backup' ); ?>" />
|
81 |
+
<span class='spinner'></span>
|
82 |
+
<div id="url-import-notice" class="notice notice-success inline"></div>
|
83 |
+
</div>
|
84 |
+
|
85 |
<div id="upload-archive-section" class="wp-upload-form">
|
86 |
+
<p><?php esc_html_e( 'From a file on your computer:', 'boldgrid-backup' ); ?></p>
|
87 |
<form id="upload-archive-form" method="POST" enctype="multipart/form-data">
|
88 |
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo esc_attr( $max_file_size ); ?>" />
|
89 |
<input type="hidden" name="uploading" value="1" />
|
103 |
</div>
|
104 |
|
105 |
<p class="install-help">
|
106 |
+
<?php esc_html_e( 'Have a large file to upload or want to use FTP?', 'boldgrid-backup' ); ?>
|
107 |
<span class="dashicons dashicons-editor-help" data-id="backup-id"></span>
|
108 |
</p>
|
109 |
|
admin/partials/backup-now-modal/title.php
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Title and Description.
|
4 |
+
*
|
5 |
+
* @link https://www.boldgrid.com
|
6 |
+
* @since 1.7.0
|
7 |
+
*
|
8 |
+
* @package Boldgrid_Backup
|
9 |
+
* @subpackage Boldgrid_Backup/admin/partials/settings
|
10 |
+
* @copyright BoldGrid
|
11 |
+
* @version $Id$
|
12 |
+
* @author BoldGrid <support@boldgrid.com>
|
13 |
+
*/
|
14 |
+
|
15 |
+
defined( 'WPINC' ) || die;
|
16 |
+
|
17 |
+
return '
|
18 |
+
<div class="bg-box">
|
19 |
+
<div class="bg-box-top">
|
20 |
+
' . esc_html__( 'Title & Description', 'boldgrid-backup' ) . '
|
21 |
+
</div>
|
22 |
+
<div class="bg-box-bottom">
|
23 |
+
<p>' . esc_html__( 'To help remember the details of this backup, you may enter a title and description.', 'boldgrid-backup' ) . '</p>
|
24 |
+
<input type="text" name="backup_title" style="width:100%" placeholder="' . esc_html__( 'Backup Title', 'boldgrid-backup' ) . '" /><br /><br />
|
25 |
+
<textarea name="backup_description" style="width:100%;height:75px;" placeholder="' . esc_html( 'Backup Description', 'boldgrid-backup' ) . '" /></textarea>
|
26 |
+
</div>
|
27 |
+
</div>
|
28 |
+
';
|
admin/partials/boldgrid-backup-admin-archive-details.php
CHANGED
@@ -26,6 +26,12 @@ wp_nonce_field( 'boldgrid_backup_remote_storage_upload' );
|
|
26 |
|
27 |
$separator = '<hr class="separator">';
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
$details = include BOLDGRID_BACKUP_PATH . '/admin/partials/archive-details/details.php';
|
30 |
$remote_storage = include BOLDGRID_BACKUP_PATH . '/admin/partials/archive-details/remote-storage.php';
|
31 |
$browser = include BOLDGRID_BACKUP_PATH . '/admin/partials/archive-details/browser.php';
|
@@ -38,12 +44,14 @@ $not_found = include BOLDGRID_BACKUP_PATH . '/admin/partials/archive-details/n
|
|
38 |
$delete_link = $this->core->archive_actions->get_delete_link( $archive['filename'] );
|
39 |
$download_button = $this->core->archive_actions->get_download_button( $archive['filename'] );
|
40 |
$restore_button = $this->core->archive_actions->get_restore_button( $archive['filename'] );
|
|
|
41 |
|
42 |
if ( ! $archive_found ) {
|
43 |
$file_size = '';
|
44 |
$backup_date = '';
|
45 |
$more_info = '';
|
46 |
$major_actions = '';
|
|
|
47 |
} else {
|
48 |
$file_size = sprintf(
|
49 |
'<div class="misc-pub-section">%1$s: <strong>%2$s</strong></div>',
|
@@ -74,14 +82,52 @@ if ( ! $archive_found ) {
|
|
74 |
$major_actions = sprintf(
|
75 |
'
|
76 |
<div id="major-publishing-actions">
|
77 |
-
<div id="delete-action">
|
78 |
%1$s
|
79 |
</div>
|
80 |
-
|
|
|
|
|
|
|
81 |
<div style="clear:both;"></div>
|
82 |
</div>',
|
83 |
-
$delete_link
|
|
|
84 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
}
|
86 |
|
87 |
$main_meta_box = sprintf(
|
@@ -89,17 +135,12 @@ $main_meta_box = sprintf(
|
|
89 |
<div id="submitdiv" class="postbox">
|
90 |
<h2 class="hndle ui-sortable-handle"><span>%1$s</span></h2>
|
91 |
<div class="inside submitbox">
|
92 |
-
|
93 |
<div class="misc-pub-section">%2$s: <strong>%3$s</strong></div>
|
94 |
-
|
95 |
%4$s
|
96 |
-
|
97 |
%5$s
|
98 |
-
|
99 |
%6$s
|
100 |
-
|
101 |
%7$s
|
102 |
-
|
103 |
</div>
|
104 |
</div>',
|
105 |
/* 1 */ __( 'Backup Archive', 'boldgrid-backup' ),
|
@@ -108,9 +149,11 @@ $main_meta_box = sprintf(
|
|
108 |
/* 4 */ $file_size,
|
109 |
/* 5 */ $backup_date,
|
110 |
/* 6 */ $more_info,
|
111 |
-
/* 7 */ $major_actions
|
|
|
112 |
);
|
113 |
|
|
|
114 |
$remote_meta_box = sprintf(
|
115 |
'
|
116 |
<div class="postbox remote-storage">
|
@@ -118,14 +161,10 @@ $remote_meta_box = sprintf(
|
|
118 |
<span>%1$s</span>
|
119 |
<span class="dashicons dashicons-editor-help" data-id="remote-storage-help"></span>
|
120 |
</h2>
|
121 |
-
|
122 |
<div class="inside">
|
123 |
-
|
124 |
<p class="help" data-id="remote-storage-help">%4$s</p>
|
125 |
-
|
126 |
%2$s
|
127 |
</div>
|
128 |
-
|
129 |
%3$s
|
130 |
</div>',
|
131 |
/* 1 */ __( 'Remote Storage', 'boldgrid-backup' ),
|
@@ -136,7 +175,7 @@ $remote_meta_box = sprintf(
|
|
136 |
%1$s
|
137 |
%2$s
|
138 |
</div>',
|
139 |
-
/* 1 */ $this->core->go_pro->get_premium_button(),
|
140 |
/* 2 */ __( 'Upgrade to <strong>BoldGrid Backup Premium</strong> for more Storage Locations!', 'boldgrid-backup' )
|
141 |
),
|
142 |
/* 4 */ __( 'Secure your backups by keeping copies of them on <a href="admin.php?page=boldgrid-backup-tools§ion=section_locations">remote storage</a>.', 'boldgrid-backup' )
|
@@ -159,55 +198,68 @@ $editor_tools = sprintf(
|
|
159 |
/* 3 */ __( 'Database', 'boldgrid-backup' )
|
160 |
);
|
161 |
|
162 |
-
$
|
|
|
163 |
'
|
164 |
<div class="bg-box-bottom premium" style="margin-bottom:15px;">
|
165 |
<strong>%1$s</strong>
|
166 |
-
|
167 |
<p>
|
168 |
%2$s
|
169 |
%3$s
|
170 |
</p>
|
171 |
</div>',
|
172 |
/* 1 */ __( 'One click file restorations', 'boldgrid-backup' ),
|
173 |
-
/* 2 */ $this->core->go_pro->get_premium_button(),
|
174 |
/* 3 */ __( 'Please note that most functionality for the Archive Browser, such as one click file restorations, is contained within the Premium version. For help with restoring a single file without this one click feature, please <a href="https://www.boldgrid.com/support" target="_blank">click here</a>.', 'boldgrid-backup' )
|
175 |
);
|
176 |
|
177 |
$main_content = '
|
178 |
<div id="postdivrich" class="postarea wp-editor-expand">
|
179 |
-
|
180 |
<div id="wp-content-wrap" class="wp-core-ui wp-editor-wrap tmce-active has-dfw">
|
181 |
-
|
182 |
<h2 style="font-size:initial; padding:0px;">
|
183 |
' . __( 'Download & Restore', 'boldgrid-backup' ) . '
|
184 |
<span class="dashicons dashicons-editor-help" data-id="download_and_restore"></span>
|
185 |
</h2>
|
186 |
-
|
187 |
<p class="help" data-id="download_and_restore">
|
188 |
<strong>' . __( 'Download to Local Machine', 'boldgrid-backup' ) . '</strong><br />
|
189 |
' . __( 'Backup archives generally should be stored in more locations than just your <strong>web server</strong>. Be sure to keep copies on your <strong>local machine</strong> and / or a <strong>remote storage</strong> provider. Learn more about these different locations <a href="admin.php?page=boldgrid-backup-tools§ion=section_locations">here</a>.', 'boldgrid-backup' ) . '<br /><br />
|
190 |
<strong>' . __( 'Restore', 'boldgrid-backup' ) . '</strong><br />
|
191 |
-
' . __( 'Restore this backup. This will restore all the files and the database in this backup. Use the <strong>Backup Browser</strong> below to look at the backup archive and see what will be restored.', 'boldgrid-backup' ) . '
|
|
|
|
|
192 |
</p>
|
193 |
-
|
194 |
<p>
|
195 |
-
' . $download_button . ' ' . $restore_button . '
|
196 |
</p>
|
197 |
-
|
198 |
<hr class="separator" />
|
199 |
-
|
200 |
<h2 style="font-size:initial; padding:0px;">' . __( 'Backup Browser', 'boldgrid-backup' ) . '</h2>
|
201 |
-
|
202 |
<p>
|
203 |
' . __( 'Use the File & Folders and Database tools below to browse the contents of this backup file.', 'boldgrid-backup' ) . '
|
204 |
</p>
|
205 |
-
|
206 |
' . $intro . $editor_tools . $browser . $db['browser'] . '
|
207 |
</div>
|
208 |
</div>
|
209 |
';
|
210 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
if ( ! $this->core->archive->is_stored_locally() ) {
|
212 |
|
213 |
if ( $this->core->archive->is_stored_remotely() ) {
|
26 |
|
27 |
$separator = '<hr class="separator">';
|
28 |
|
29 |
+
$allowed_html = array(
|
30 |
+
'a' => array(
|
31 |
+
'href' => array(),
|
32 |
+
),
|
33 |
+
);
|
34 |
+
|
35 |
$details = include BOLDGRID_BACKUP_PATH . '/admin/partials/archive-details/details.php';
|
36 |
$remote_storage = include BOLDGRID_BACKUP_PATH . '/admin/partials/archive-details/remote-storage.php';
|
37 |
$browser = include BOLDGRID_BACKUP_PATH . '/admin/partials/archive-details/browser.php';
|
44 |
$delete_link = $this->core->archive_actions->get_delete_link( $archive['filename'] );
|
45 |
$download_button = $this->core->archive_actions->get_download_button( $archive['filename'] );
|
46 |
$restore_button = $this->core->archive_actions->get_restore_button( $archive['filename'] );
|
47 |
+
$download_link = $this->core->archive_actions->get_download_link_button( $archive['filename'] );
|
48 |
|
49 |
if ( ! $archive_found ) {
|
50 |
$file_size = '';
|
51 |
$backup_date = '';
|
52 |
$more_info = '';
|
53 |
$major_actions = '';
|
54 |
+
$protect = '';
|
55 |
} else {
|
56 |
$file_size = sprintf(
|
57 |
'<div class="misc-pub-section">%1$s: <strong>%2$s</strong></div>',
|
82 |
$major_actions = sprintf(
|
83 |
'
|
84 |
<div id="major-publishing-actions">
|
85 |
+
<div id="delete-action-link">
|
86 |
%1$s
|
87 |
</div>
|
88 |
+
<div id="publishing-action">
|
89 |
+
<span class="spinner"></span>
|
90 |
+
<button class="button button-primary button-large">%2$s</button>
|
91 |
+
</div>
|
92 |
<div style="clear:both;"></div>
|
93 |
</div>',
|
94 |
+
$delete_link,
|
95 |
+
esc_html__( 'Update', 'boldgrid-backup' )
|
96 |
);
|
97 |
+
|
98 |
+
$is_protected = $this->core->archive->get_attribute( 'protect' );
|
99 |
+
$is_protected = ! empty( $is_protected );
|
100 |
+
$protect = '
|
101 |
+
<div class="misc-pub-section bglib-misc-pub-section dashicons-lock">
|
102 |
+
' . esc_html__( 'Protect backup', 'boldgrid-backup' ) . ': <span class="value-displayed"></span>
|
103 |
+
<a class="edit" href="" style="display: inline;">
|
104 |
+
<span aria-hidden="true">' . esc_html__( 'Edit', 'boldgrid-backup' ) . '</span>
|
105 |
+
</a>
|
106 |
+
<div class="options" style="display: none;">
|
107 |
+
<p>
|
108 |
+
<em>
|
109 |
+
' .
|
110 |
+
wp_kses( sprintf(
|
111 |
+
// translators: 1: HTML anchor open tags, 2: HTML close tag, 3: HTML anchor open tags, 4: HTML close tag.
|
112 |
+
__( 'Protect this backup from being deleted due to %1$sretention settings%2$s. Applies only to backups stored on your %3$sWeb Server%4$s.', 'boldgrid-backup' ),
|
113 |
+
'<a href="' . get_admin_url( null, 'admin.php?page=boldgrid-backup-settings§ion=section_storage' ) . '">',
|
114 |
+
'</a>',
|
115 |
+
'<a href="' . get_admin_url( null, 'admin.php?page=boldgrid-backup-tools§ion=section_locations' ) . '">',
|
116 |
+
'</a>'
|
117 |
+
), $allowed_html ) . '
|
118 |
+
</em>
|
119 |
+
</p>
|
120 |
+
<select name="backup_protect">
|
121 |
+
<option value="0" ' . selected( $is_protected, false, false ) . '>' . esc_html__( 'No', 'boldgrid-backup' ) . '</option>
|
122 |
+
<option value="1" ' . selected( $is_protected, true, false ) . '>' . esc_html( 'Yes', 'boldgrid-backup' ) . '</option>
|
123 |
+
</select>
|
124 |
+
<p>
|
125 |
+
<a href="" class="button">' . esc_html__( 'OK', 'boldgrid-backup' ) . '</a>
|
126 |
+
<a href="" class="button-cancel">' . esc_html__( 'Cancel', 'boldgrid-backup' ) . '</a>
|
127 |
+
</p>
|
128 |
+
</div>
|
129 |
+
</div>
|
130 |
+
';
|
131 |
}
|
132 |
|
133 |
$main_meta_box = sprintf(
|
135 |
<div id="submitdiv" class="postbox">
|
136 |
<h2 class="hndle ui-sortable-handle"><span>%1$s</span></h2>
|
137 |
<div class="inside submitbox">
|
138 |
+
%8$s
|
139 |
<div class="misc-pub-section">%2$s: <strong>%3$s</strong></div>
|
|
|
140 |
%4$s
|
|
|
141 |
%5$s
|
|
|
142 |
%6$s
|
|
|
143 |
%7$s
|
|
|
144 |
</div>
|
145 |
</div>',
|
146 |
/* 1 */ __( 'Backup Archive', 'boldgrid-backup' ),
|
149 |
/* 4 */ $file_size,
|
150 |
/* 5 */ $backup_date,
|
151 |
/* 6 */ $more_info,
|
152 |
+
/* 7 */ $major_actions,
|
153 |
+
/* 8 */ $protect
|
154 |
);
|
155 |
|
156 |
+
$premium_url = $this->core->go_pro->get_premium_url( 'bgbkup-archive-storage' );
|
157 |
$remote_meta_box = sprintf(
|
158 |
'
|
159 |
<div class="postbox remote-storage">
|
161 |
<span>%1$s</span>
|
162 |
<span class="dashicons dashicons-editor-help" data-id="remote-storage-help"></span>
|
163 |
</h2>
|
|
|
164 |
<div class="inside">
|
|
|
165 |
<p class="help" data-id="remote-storage-help">%4$s</p>
|
|
|
166 |
%2$s
|
167 |
</div>
|
|
|
168 |
%3$s
|
169 |
</div>',
|
170 |
/* 1 */ __( 'Remote Storage', 'boldgrid-backup' ),
|
175 |
%1$s
|
176 |
%2$s
|
177 |
</div>',
|
178 |
+
/* 1 */ $this->core->go_pro->get_premium_button( $premium_url ),
|
179 |
/* 2 */ __( 'Upgrade to <strong>BoldGrid Backup Premium</strong> for more Storage Locations!', 'boldgrid-backup' )
|
180 |
),
|
181 |
/* 4 */ __( 'Secure your backups by keeping copies of them on <a href="admin.php?page=boldgrid-backup-tools§ion=section_locations">remote storage</a>.', 'boldgrid-backup' )
|
198 |
/* 3 */ __( 'Database', 'boldgrid-backup' )
|
199 |
);
|
200 |
|
201 |
+
$premium_url = $this->core->go_pro->get_premium_url( 'bgbkup-archive-browser' );
|
202 |
+
$intro = $this->core->config->is_premium_done ? '' : sprintf(
|
203 |
'
|
204 |
<div class="bg-box-bottom premium" style="margin-bottom:15px;">
|
205 |
<strong>%1$s</strong>
|
|
|
206 |
<p>
|
207 |
%2$s
|
208 |
%3$s
|
209 |
</p>
|
210 |
</div>',
|
211 |
/* 1 */ __( 'One click file restorations', 'boldgrid-backup' ),
|
212 |
+
/* 2 */ $this->core->go_pro->get_premium_button( $premium_url ),
|
213 |
/* 3 */ __( 'Please note that most functionality for the Archive Browser, such as one click file restorations, is contained within the Premium version. For help with restoring a single file without this one click feature, please <a href="https://www.boldgrid.com/support" target="_blank">click here</a>.', 'boldgrid-backup' )
|
214 |
);
|
215 |
|
216 |
$main_content = '
|
217 |
<div id="postdivrich" class="postarea wp-editor-expand">
|
|
|
218 |
<div id="wp-content-wrap" class="wp-core-ui wp-editor-wrap tmce-active has-dfw">
|
|
|
219 |
<h2 style="font-size:initial; padding:0px;">
|
220 |
' . __( 'Download & Restore', 'boldgrid-backup' ) . '
|
221 |
<span class="dashicons dashicons-editor-help" data-id="download_and_restore"></span>
|
222 |
</h2>
|
|
|
223 |
<p class="help" data-id="download_and_restore">
|
224 |
<strong>' . __( 'Download to Local Machine', 'boldgrid-backup' ) . '</strong><br />
|
225 |
' . __( 'Backup archives generally should be stored in more locations than just your <strong>web server</strong>. Be sure to keep copies on your <strong>local machine</strong> and / or a <strong>remote storage</strong> provider. Learn more about these different locations <a href="admin.php?page=boldgrid-backup-tools§ion=section_locations">here</a>.', 'boldgrid-backup' ) . '<br /><br />
|
226 |
<strong>' . __( 'Restore', 'boldgrid-backup' ) . '</strong><br />
|
227 |
+
' . __( 'Restore this backup. This will restore all the files and the database in this backup. Use the <strong>Backup Browser</strong> below to look at the backup archive and see what will be restored.', 'boldgrid-backup' ) . '<br /><br />
|
228 |
+
<strong>' . __( 'Download Link', 'boldgrid-backup' ) . '</strong><br />
|
229 |
+
' . __( 'A public link that is used to download a backup archive file. You can use it to migrate your website to another WordPress installation. Please keep download links private, as the download files contains sensitive data.', 'boldgrid-backup' ) . '
|
230 |
</p>
|
|
|
231 |
<p>
|
232 |
+
' . $download_button . ' ' . $restore_button . ' ' . $download_link . '
|
233 |
</p>
|
234 |
+
<div id="download-link-copy" class="notice notice-info inline"></div>
|
235 |
<hr class="separator" />
|
|
|
236 |
<h2 style="font-size:initial; padding:0px;">' . __( 'Backup Browser', 'boldgrid-backup' ) . '</h2>
|
|
|
237 |
<p>
|
238 |
' . __( 'Use the File & Folders and Database tools below to browse the contents of this backup file.', 'boldgrid-backup' ) . '
|
239 |
</p>
|
|
|
240 |
' . $intro . $editor_tools . $browser . $db['browser'] . '
|
241 |
</div>
|
242 |
</div>
|
243 |
';
|
244 |
|
245 |
+
|
246 |
+
/*
|
247 |
+
* Allow the user to enter a title and description for this backup.
|
248 |
+
*
|
249 |
+
* Prepend this to the main content area.
|
250 |
+
*/
|
251 |
+
if ( $archive_found ) {
|
252 |
+
$main_content = '
|
253 |
+
<div id="titlediv">
|
254 |
+
<div id="titlewrap">
|
255 |
+
<input type="text" name="backup_title" size="30" value="' . esc_attr( $title ) . '" id="title" spellcheck="true" autocomplete="off" placeholder="' . esc_attr__( 'Unnamed Backup', 'boldgrid-backup' ) . '">
|
256 |
+
</div>
|
257 |
+
</div>
|
258 |
+
<textarea name="backup_description" placeholder="' . esc_attr__( 'Backup description.', 'boldgrid-backup' ) . '">' . esc_html( $description ) . '</textarea>
|
259 |
+
<hr class="separator">
|
260 |
+
' . $main_content;
|
261 |
+
}
|
262 |
+
|
263 |
if ( ! $this->core->archive->is_stored_locally() ) {
|
264 |
|
265 |
if ( $this->core->archive->is_stored_remotely() ) {
|
admin/partials/boldgrid-backup-admin-backup-button.php
CHANGED
@@ -40,9 +40,12 @@ return sprintf(
|
|
40 |
</p>
|
41 |
</form>
|
42 |
</div>
|
43 |
-
<div id="backup-site-now-results"></div>
|
|
|
|
|
44 |
wp_nonce_field( 'boldgrid_backup_now', 'backup_auth', true, false ),
|
45 |
esc_html( 'Backup Site Now', 'boldgrid-backup' ),
|
46 |
$update_protection_ajax || $core->auto_rollback->on_update_page ? 'data-updating="true"' : '',
|
47 |
-
/* 4 */ __( 'You may leave this page, doing so will not stop your backup.', 'boldgrid-backup' )
|
|
|
48 |
);
|
40 |
</p>
|
41 |
</form>
|
42 |
</div>
|
43 |
+
<div id="backup-site-now-results"></div>
|
44 |
+
%5$s
|
45 |
+
',
|
46 |
wp_nonce_field( 'boldgrid_backup_now', 'backup_auth', true, false ),
|
47 |
esc_html( 'Backup Site Now', 'boldgrid-backup' ),
|
48 |
$update_protection_ajax || $core->auto_rollback->on_update_page ? 'data-updating="true"' : '',
|
49 |
+
/* 4 */ __( 'You may leave this page, doing so will not stop your backup.', 'boldgrid-backup' ),
|
50 |
+
Boldgrid_Backup_Admin_In_Progress_Data::get_markup()
|
51 |
);
|
admin/partials/boldgrid-backup-admin-backup-modal.php
CHANGED
@@ -21,6 +21,8 @@ return sprintf(
|
|
21 |
<div id="backup_now_content" style="display:none;">
|
22 |
<h2>%1$s</h2>
|
23 |
|
|
|
|
|
24 |
<p>%2$s</p>
|
25 |
|
26 |
%3$s
|
@@ -37,5 +39,6 @@ return sprintf(
|
|
37 |
/* 2 */ __( 'The <strong>Files and Folders</strong> and <strong>Database</strong> settings below customize which parts of your site to backup.', 'boldgrid-backup' ),
|
38 |
/* 3 */ require BOLDGRID_BACKUP_PATH . '/admin/partials/settings/folders.php',
|
39 |
/* 4 */ require BOLDGRID_BACKUP_PATH . '/admin/partials/settings/db.php',
|
40 |
-
/* 5 */ require BOLDGRID_BACKUP_PATH . '/admin/partials/boldgrid-backup-admin-backup-button.php'
|
|
|
41 |
);
|
21 |
<div id="backup_now_content" style="display:none;">
|
22 |
<h2>%1$s</h2>
|
23 |
|
24 |
+
%6$s
|
25 |
+
|
26 |
<p>%2$s</p>
|
27 |
|
28 |
%3$s
|
39 |
/* 2 */ __( 'The <strong>Files and Folders</strong> and <strong>Database</strong> settings below customize which parts of your site to backup.', 'boldgrid-backup' ),
|
40 |
/* 3 */ require BOLDGRID_BACKUP_PATH . '/admin/partials/settings/folders.php',
|
41 |
/* 4 */ require BOLDGRID_BACKUP_PATH . '/admin/partials/settings/db.php',
|
42 |
+
/* 5 */ require BOLDGRID_BACKUP_PATH . '/admin/partials/boldgrid-backup-admin-backup-button.php',
|
43 |
+
/* 6 */ require BOLDGRID_BACKUP_PATH . '/admin/partials/backup-now-modal/title.php'
|
44 |
);
|
admin/partials/boldgrid-backup-admin-home.php
CHANGED
@@ -37,13 +37,14 @@ defined( 'WPINC' ) || die;
|
|
37 |
$nav = include BOLDGRID_BACKUP_PATH . '/admin/partials/boldgrid-backup-admin-nav.php';
|
38 |
|
39 |
// Premium advertisement on the bottom of the archives page.
|
40 |
-
$
|
|
|
41 |
'
|
42 |
<div class="bg-box-bottom premium wp-clearfix">
|
43 |
%1$s
|
44 |
%2$s
|
45 |
</div>',
|
46 |
-
$this->go_pro->get_premium_button(),
|
47 |
$this->lang['want_to']
|
48 |
);
|
49 |
|
@@ -57,9 +58,13 @@ $in_modal = false;
|
|
57 |
|
58 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Backup Archives', 'boldgrid-backup' ); ?></h1>
|
59 |
|
60 |
-
<
|
61 |
|
62 |
-
|
|
|
|
|
|
|
|
|
63 |
|
64 |
<?php
|
65 |
echo $nav; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
37 |
$nav = include BOLDGRID_BACKUP_PATH . '/admin/partials/boldgrid-backup-admin-nav.php';
|
38 |
|
39 |
// Premium advertisement on the bottom of the archives page.
|
40 |
+
$premium_url = $this->go_pro->get_premium_url( 'bgbkup-archives-bottom' );
|
41 |
+
$ad = $this->config->is_premium_done ? '' : sprintf(
|
42 |
'
|
43 |
<div class="bg-box-bottom premium wp-clearfix">
|
44 |
%1$s
|
45 |
%2$s
|
46 |
</div>',
|
47 |
+
$this->go_pro->get_premium_button( $premium_url ),
|
48 |
$this->lang['want_to']
|
49 |
);
|
50 |
|
58 |
|
59 |
<h1 class="wp-heading-inline"><?php esc_html_e( 'Backup Archives', 'boldgrid-backup' ); ?></h1>
|
60 |
|
61 |
+
<div class="page-title-actions">
|
62 |
|
63 |
+
<a href="#TB_inline?width=800&height=600&inlineId=backup_now_content" class="thickbox page-title-action page-title-action-primary"><?php esc_html_e( 'Backup Site Now', 'boldgrid-backup' ); ?></a>
|
64 |
+
|
65 |
+
<a class="page-title-action add-new"><?php esc_html_e( 'Upload Backup', 'boldgrid-backup' ); ?></a>
|
66 |
+
|
67 |
+
</div>
|
68 |
|
69 |
<?php
|
70 |
echo $nav; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
admin/partials/boldgrid-backup-admin-settings.php
CHANGED
@@ -16,19 +16,21 @@
|
|
16 |
|
17 |
defined( 'WPINC' ) || die;
|
18 |
|
19 |
-
$
|
20 |
-
$
|
21 |
-
$
|
22 |
-
$
|
23 |
-
$
|
24 |
-
$
|
25 |
-
$
|
26 |
-
$
|
27 |
-
$
|
|
|
|
|
|
|
|
|
|
|
28 |
|
29 |
-
$days_of_week = '';
|
30 |
-
$time_of_day = '';
|
31 |
-
$storage = '';
|
32 |
if ( $this->core->scheduler->is_available( 'cron' ) || $this->core->scheduler->is_available( 'wp-cron' ) ) {
|
33 |
$days_of_week = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/days-of-week.php';
|
34 |
$time_of_day = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/time-of-day.php';
|
@@ -40,33 +42,38 @@ $sections = array(
|
|
40 |
array(
|
41 |
'id' => 'section_schedule',
|
42 |
'title' => __( 'Backup Schedule', 'boldgrid-backup' ),
|
43 |
-
'content' => $
|
|
|
|
|
|
|
|
|
|
|
44 |
),
|
45 |
array(
|
46 |
'id' => 'connect_key',
|
47 |
-
'title' => __( 'BoldGrid Connect Key', 'boldgrid-
|
48 |
'content' => $connect_key,
|
49 |
),
|
50 |
array(
|
51 |
-
'id' => '
|
52 |
-
'title' => __( '
|
53 |
-
'content' => $
|
|
|
|
|
|
|
|
|
|
|
54 |
),
|
55 |
array(
|
56 |
-
'id' => '
|
57 |
-
'title' => __( '
|
58 |
-
'content' => $
|
59 |
),
|
60 |
array(
|
61 |
'id' => 'section_notifications',
|
62 |
'title' => __( 'Notifications', 'boldgrid-backup' ),
|
63 |
'content' => $notifications,
|
64 |
),
|
65 |
-
array(
|
66 |
-
'id' => 'section_directory',
|
67 |
-
'title' => __( 'Backup Directory', 'boldgrid-backup' ),
|
68 |
-
'content' => $backup_directory,
|
69 |
-
),
|
70 |
),
|
71 |
'post_col_right' => sprintf(
|
72 |
'
|
@@ -143,12 +150,14 @@ wp_nonce_field( 'boldgrid_backup_settings' );
|
|
143 |
),
|
144 |
esc_url( admin_url( 'admin.php?page=boldgrid-backup-test' ) )
|
145 |
);
|
|
|
|
|
146 |
?>
|
147 |
</p>
|
148 |
|
149 |
<hr />
|
150 |
|
151 |
-
<form id='
|
152 |
<?php
|
153 |
echo $col_container; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
154 |
wp_nonce_field( 'boldgrid-backup-settings', 'settings_auth' );
|
16 |
|
17 |
defined( 'WPINC' ) || die;
|
18 |
|
19 |
+
$library_dir = \Boldgrid\Library\Library\Configs::get( 'libraryDir' );
|
20 |
+
$nav = include BOLDGRID_BACKUP_PATH . '/admin/partials/boldgrid-backup-admin-nav.php';
|
21 |
+
$scheduler = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/scheduler.php';
|
22 |
+
$folders_include = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/folders.php';
|
23 |
+
$db = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/db.php';
|
24 |
+
$auto_backup = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/auto-backup.php';
|
25 |
+
$auto_rollback = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/auto-rollback.php';
|
26 |
+
$auto_updates = include $library_dir . 'src/Library/Views/Connect/AutoUpdates.php';
|
27 |
+
$update_channels = include $library_dir . 'src/Library/Views/Connect/UpdateChannels.php';
|
28 |
+
$notifications = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/notifications.php';
|
29 |
+
$connect_key = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/connect-key.php';
|
30 |
+
$days_of_week = '';
|
31 |
+
$time_of_day = '';
|
32 |
+
$storage = '';
|
33 |
|
|
|
|
|
|
|
34 |
if ( $this->core->scheduler->is_available( 'cron' ) || $this->core->scheduler->is_available( 'wp-cron' ) ) {
|
35 |
$days_of_week = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/days-of-week.php';
|
36 |
$time_of_day = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/time-of-day.php';
|
42 |
array(
|
43 |
'id' => 'section_schedule',
|
44 |
'title' => __( 'Backup Schedule', 'boldgrid-backup' ),
|
45 |
+
'content' => $days_of_week . $time_of_day . $scheduler,
|
46 |
+
),
|
47 |
+
array(
|
48 |
+
'id' => 'section_storage',
|
49 |
+
'title' => __( 'Backup Storage', 'boldgrid-backup' ),
|
50 |
+
'content' => $storage . $folders_include . $db,
|
51 |
),
|
52 |
array(
|
53 |
'id' => 'connect_key',
|
54 |
+
'title' => __( 'BoldGrid Connect Key', 'boldgrid-backup' ),
|
55 |
'content' => $connect_key,
|
56 |
),
|
57 |
array(
|
58 |
+
'id' => 'section_auto_updates',
|
59 |
+
'title' => __( 'Auto Updates', 'boldgrid-backup' ),
|
60 |
+
'content' => $auto_backup . $auto_updates,
|
61 |
+
),
|
62 |
+
array(
|
63 |
+
'id' => 'section_auto_rollback',
|
64 |
+
'title' => __( 'Manual Updates', 'boldgrid-backup' ),
|
65 |
+
'content' => $auto_rollback,
|
66 |
),
|
67 |
array(
|
68 |
+
'id' => 'section_update_channels',
|
69 |
+
'title' => __( 'Update Channels', 'boldgrid-backup' ),
|
70 |
+
'content' => $update_channels,
|
71 |
),
|
72 |
array(
|
73 |
'id' => 'section_notifications',
|
74 |
'title' => __( 'Notifications', 'boldgrid-backup' ),
|
75 |
'content' => $notifications,
|
76 |
),
|
|
|
|
|
|
|
|
|
|
|
77 |
),
|
78 |
'post_col_right' => sprintf(
|
79 |
'
|
150 |
),
|
151 |
esc_url( admin_url( 'admin.php?page=boldgrid-backup-test' ) )
|
152 |
);
|
153 |
+
|
154 |
+
$show_section = ! empty( $_REQUEST['section'] ) ? sanitize_key( $_REQUEST['section'] ) : ''; // phpcs:ignore WordPress.CSRF.NonceVerification
|
155 |
?>
|
156 |
</p>
|
157 |
|
158 |
<hr />
|
159 |
|
160 |
+
<form id='bgb-settings-form' method='post'>
|
161 |
<?php
|
162 |
echo $col_container; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
163 |
wp_nonce_field( 'boldgrid-backup-settings', 'settings_auth' );
|
admin/partials/boldgrid-backup-admin-test.php
CHANGED
@@ -88,6 +88,8 @@ $php_zip = new Boldgrid_Backup_Admin_Compressor_Php_Zip( $this );
|
|
88 |
|
89 |
$pcl_zip = new Boldgrid_Backup_Admin_Compressor_Pcl_Zip( $this );
|
90 |
|
|
|
|
|
91 |
$valid_backup_dir = $backup_dir_perms['exists'] && $backup_dir_perms['read'] && $backup_dir_perms['write'] && $backup_dir_perms['rename'] && $backup_dir_perms['delete'] && $backup_dir_perms['dirlist'];
|
92 |
|
93 |
$timezone = $this->time->get_server_timezone();
|
@@ -131,6 +133,14 @@ $tests = array(
|
|
131 |
'k' => __( 'PHP in safe mode?', 'boldgrid-backup' ),
|
132 |
'v' => $this->test->is_php_safemode() ? sprintf( $error_span, $lang['yes'], '' ) : $lang['no'],
|
133 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
array(
|
135 |
'k' => __( 'WordPress version:', 'boldgrid-backup' ),
|
136 |
'v' => $wp_version,
|
88 |
|
89 |
$pcl_zip = new Boldgrid_Backup_Admin_Compressor_Pcl_Zip( $this );
|
90 |
|
91 |
+
$filesystem_method = get_filesystem_method();
|
92 |
+
|
93 |
$valid_backup_dir = $backup_dir_perms['exists'] && $backup_dir_perms['read'] && $backup_dir_perms['write'] && $backup_dir_perms['rename'] && $backup_dir_perms['delete'] && $backup_dir_perms['dirlist'];
|
94 |
|
95 |
$timezone = $this->time->get_server_timezone();
|
133 |
'k' => __( 'PHP in safe mode?', 'boldgrid-backup' ),
|
134 |
'v' => $this->test->is_php_safemode() ? sprintf( $error_span, $lang['yes'], '' ) : $lang['no'],
|
135 |
),
|
136 |
+
array(
|
137 |
+
'k' => __( 'Filesystem Method', 'boldgrid-backup' ),
|
138 |
+
'v' => $this->test->is_filesystem_supported() ?
|
139 |
+
$filesystem_method : sprintf(
|
140 |
+
$error_span,
|
141 |
+
$filesystem_method, __( 'Only "direct" filesystem supported.', 'boldgrid-backup' )
|
142 |
+
),
|
143 |
+
),
|
144 |
array(
|
145 |
'k' => __( 'WordPress version:', 'boldgrid-backup' ),
|
146 |
'v' => $wp_version,
|
admin/partials/remote/ftp.php
CHANGED
@@ -17,15 +17,11 @@
|
|
17 |
$selected = 'selected="selected"';
|
18 |
$ftp_selected = 'ftp' === $data['type'] ? $selected : '';
|
19 |
$sftp_selected = 'sftp' === $data['type'] ? $selected : '';
|
20 |
-
|
21 |
?>
|
22 |
-
|
23 |
<form method="post">
|
24 |
-
|
25 |
<h1><?php esc_html_e( 'BoldGrid Backup - FTP Settings', 'boldgrid-backup' ); ?></h1>
|
26 |
-
|
27 |
<hr />
|
28 |
-
|
29 |
<table class="widefat fixed striped">
|
30 |
<tr>
|
31 |
<td>
|
@@ -81,7 +77,6 @@ $sftp_selected = 'sftp' === $data['type'] ? $selected : '';
|
|
81 |
<td></td>
|
82 |
</tr>
|
83 |
</table>
|
84 |
-
|
85 |
<p>
|
86 |
<?php
|
87 |
echo $this->core->lang['icon_warning']; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
@@ -91,12 +86,10 @@ $sftp_selected = 'sftp' === $data['type'] ? $selected : '';
|
|
91 |
);
|
92 |
?>
|
93 |
</p>
|
94 |
-
|
95 |
<p>
|
96 |
<input type="hidden" name="action" value="save" />
|
97 |
<input class="button button-primary" type="submit" value="<?php esc_attr_e( 'Save changes', 'boldgrid-backup' ); ?>" />
|
98 |
<button class="button button-secondary"><?php esc_html_e( 'Delete settings', 'boldgrid-backup' ); ?></button>
|
99 |
<span class="spinner inline middle hidden"></span>
|
100 |
</p>
|
101 |
-
|
102 |
</form>
|
17 |
$selected = 'selected="selected"';
|
18 |
$ftp_selected = 'ftp' === $data['type'] ? $selected : '';
|
19 |
$sftp_selected = 'sftp' === $data['type'] ? $selected : '';
|
|
|
20 |
?>
|
|
|
21 |
<form method="post">
|
22 |
+
<?php wp_nonce_field( 'bgb-settings-ftp', 'ftp_auth' ); ?>
|
23 |
<h1><?php esc_html_e( 'BoldGrid Backup - FTP Settings', 'boldgrid-backup' ); ?></h1>
|
|
|
24 |
<hr />
|
|
|
25 |
<table class="widefat fixed striped">
|
26 |
<tr>
|
27 |
<td>
|
77 |
<td></td>
|
78 |
</tr>
|
79 |
</table>
|
|
|
80 |
<p>
|
81 |
<?php
|
82 |
echo $this->core->lang['icon_warning']; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
86 |
);
|
87 |
?>
|
88 |
</p>
|
|
|
89 |
<p>
|
90 |
<input type="hidden" name="action" value="save" />
|
91 |
<input class="button button-primary" type="submit" value="<?php esc_attr_e( 'Save changes', 'boldgrid-backup' ); ?>" />
|
92 |
<button class="button button-secondary"><?php esc_html_e( 'Delete settings', 'boldgrid-backup' ); ?></button>
|
93 |
<span class="spinner inline middle hidden"></span>
|
94 |
</p>
|
|
|
95 |
</form>
|
admin/partials/remote/local.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: local.php
|
4 |
+
*
|
5 |
+
* The file handles the rendering of the local web server options on the settings page.
|
6 |
+
*
|
7 |
+
* @link https://www.boldgrid.com
|
8 |
+
* @since 1.7.0
|
9 |
+
*
|
10 |
+
* @package Boldgrid_Backup
|
11 |
+
* @subpackage Boldgrid_Backup/admin/partials/remote
|
12 |
+
* @copyright BoldGrid
|
13 |
+
* @version $Id$
|
14 |
+
* @author BoldGrid <support@boldgrid.com>
|
15 |
+
*
|
16 |
+
* phpcs:disable WordPress.XSS.EscapeOutput
|
17 |
+
*/
|
18 |
+
|
19 |
+
?>
|
20 |
+
|
21 |
+
<form method="post">
|
22 |
+
<?php
|
23 |
+
wp_nonce_field( 'bgb-settings-webserver', 'webserver_auth' );
|
24 |
+
|
25 |
+
echo require BOLDGRID_BACKUP_PATH . '/admin/partials/settings/backup-directory.php';
|
26 |
+
echo require BOLDGRID_BACKUP_PATH . '/admin/partials/settings/retention.php';
|
27 |
+
?>
|
28 |
+
<p>
|
29 |
+
<input type="hidden" name="action" value="save" />
|
30 |
+
<input class="button button-primary" type="submit" value="<?php esc_attr_e( 'Save changes', 'boldgrid-backup' ); ?>" />
|
31 |
+
<span class="spinner inline middle hidden"></span>
|
32 |
+
</p>
|
33 |
+
</form>
|
admin/partials/settings/auto-backup.php
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: auto-backup.php
|
4 |
+
*
|
5 |
+
* Show "Auto Rollback" on settings page.
|
6 |
+
*
|
7 |
+
* @since 1.7.0
|
8 |
+
* @package Boldgrid_Backup
|
9 |
+
* @subpackage Boldgrid_Backup/admin/partials/settings
|
10 |
+
* @copyright BoldGrid
|
11 |
+
* @version $Id$
|
12 |
+
* @link https://www.boldgrid.com
|
13 |
+
* @author BoldGrid <support@boldgrid.com>
|
14 |
+
*/
|
15 |
+
|
16 |
+
defined( 'WPINC' ) || die;
|
17 |
+
|
18 |
+
ob_start();
|
19 |
+
?>
|
20 |
+
<div class="bg-box">
|
21 |
+
<div class="bg-box-top">
|
22 |
+
<?php esc_html_e( 'Auto Backup', 'boldgrid-backup' ); ?>
|
23 |
+
<span class='dashicons dashicons-editor-help' data-id='auto-backup'></span>
|
24 |
+
</div>
|
25 |
+
<div class="bg-box-bottom">
|
26 |
+
<p class='help' data-id='auto-backup'>
|
27 |
+
<?php
|
28 |
+
printf(
|
29 |
+
// translators: 1: HTML anchor open tag, 2: HTML anchor close tag.
|
30 |
+
esc_html__(
|
31 |
+
'Automatically perform a backup before WordPress updates. When this feature is enabled, a full backup will be made during the %1$spre_auto_update action%2$s.',
|
32 |
+
'boldgrid-backup'
|
33 |
+
),
|
34 |
+
'<a target="_blank" href="https://developer.wordpress.org/reference/hooks/pre_auto_update/">',
|
35 |
+
'</a>'
|
36 |
+
);
|
37 |
+
?>
|
38 |
+
</p>
|
39 |
+
<table class="form-table">
|
40 |
+
<tr>
|
41 |
+
<th>
|
42 |
+
<?php esc_html_e( 'Auto Backup Before Update', 'boldgrid-backup' ); ?>
|
43 |
+
</th>
|
44 |
+
<td>
|
45 |
+
<input id='auto-backup-enabled' type='radio' name='auto_backup' value='1'
|
46 |
+
<?php
|
47 |
+
if ( ! isset( $settings['auto_backup'] ) ||
|
48 |
+
1 === $settings['auto_backup'] ) {
|
49 |
+
echo ' checked';
|
50 |
+
}
|
51 |
+
?>
|
52 |
+
/> <?php esc_html_e( 'Enabled (Recommended)', 'boldgrid-backup' ); ?> <input
|
53 |
+
id='auto-backup-disabled' type='radio' name='auto_backup' value='0'
|
54 |
+
<?php
|
55 |
+
if ( isset( $settings['auto_backup'] ) && 0 === $settings['auto_backup'] ) {
|
56 |
+
echo ' checked';
|
57 |
+
}
|
58 |
+
?>
|
59 |
+
/> <?php esc_html_e( 'Disabled', 'boldgrid-backup' ); ?>
|
60 |
+
</td>
|
61 |
+
</tr>
|
62 |
+
</table>
|
63 |
+
</div>
|
64 |
+
</div>
|
65 |
+
<?php
|
66 |
+
$output = ob_get_contents();
|
67 |
+
ob_end_clean();
|
68 |
+
|
69 |
+
return $output;
|
admin/partials/settings/auto-rollback.php
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: auto-rollback.php
|
4 |
+
*
|
5 |
+
* Show "Auto Rollback" on settings page.
|
6 |
+
*
|
7 |
+
* @since 1.7.0
|
8 |
+
* @package Boldgrid_Backup
|
9 |
+
* @subpackage Boldgrid_Backup/admin/partials/settings
|
10 |
+
* @copyright BoldGrid
|
11 |
+
* @version $Id$
|
12 |
+
* @link https://www.boldgrid.com
|
13 |
+
* @author BoldGrid <support@boldgrid.com>
|
14 |
+
*/
|
15 |
+
|
16 |
+
defined( 'WPINC' ) || die;
|
17 |
+
ob_start();
|
18 |
+
?>
|
19 |
+
<div class="bg-box">
|
20 |
+
<div class="bg-box-top">
|
21 |
+
<?php esc_html_e( 'Auto Rollback', 'boldgrid-backup' ); ?>
|
22 |
+
<span class='dashicons dashicons-editor-help' data-id='auto-rollback'></span>
|
23 |
+
</div>
|
24 |
+
<div class="bg-box-bottom">
|
25 |
+
<p class='help' data-id='auto-rollback'>
|
26 |
+
<?php
|
27 |
+
esc_html_e(
|
28 |
+
'If something goes wrong while performing WordPress updates, automatically restore the site using a backup made before updating WordPress. This feature does not apply to auto updates.',
|
29 |
+
'boldgrid-backup'
|
30 |
+
);
|
31 |
+
?>
|
32 |
+
</p>
|
33 |
+
<table class="form-table">
|
34 |
+
<tr>
|
35 |
+
<th><?php esc_html_e( 'Auto Rollback', 'boldgrid-backup' ); ?></th>
|
36 |
+
<td>
|
37 |
+
<input id='auto-rollback-enabled' type='radio' name='auto_rollback' value='1'
|
38 |
+
<?php
|
39 |
+
if ( ! isset( $settings['auto_rollback'] ) ||
|
40 |
+
1 === $settings['auto_rollback'] ) {
|
41 |
+
echo ' checked';
|
42 |
+
}
|
43 |
+
?>
|
44 |
+
/> <?php esc_html_e( 'Enabled', 'boldgrid-backup' ); ?> <input
|
45 |
+
id='auto-rollback-disabled' type='radio' name='auto_rollback'
|
46 |
+
value='0'
|
47 |
+
<?php
|
48 |
+
if ( isset( $settings['auto_rollback'] ) && 0 === $settings['auto_rollback'] ) {
|
49 |
+
echo ' checked';
|
50 |
+
}
|
51 |
+
?>
|
52 |
+
/> <?php esc_html_e( 'Disabled', 'boldgrid-backup' ); ?>
|
53 |
+
</td>
|
54 |
+
</tr>
|
55 |
+
</table>
|
56 |
+
</div>
|
57 |
+
</div>
|
58 |
+
<?php
|
59 |
+
$output = ob_get_contents();
|
60 |
+
ob_end_clean();
|
61 |
+
|
62 |
+
return $output;
|
admin/partials/settings/auto-updates.php
DELETED
@@ -1,192 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* File: auto-updates.php
|
4 |
-
*
|
5 |
-
* Show "Auto Updates" on settings page.
|
6 |
-
*
|
7 |
-
* @link https://www.boldgrid.com
|
8 |
-
* @since 1.6.0
|
9 |
-
*
|
10 |
-
* @package Boldgrid_Backup
|
11 |
-
* @subpackage Boldgrid_Backup/admin/partials/settings
|
12 |
-
* @copyright BoldGrid
|
13 |
-
* @version $Id$
|
14 |
-
* @author BoldGrid <support@boldgrid.com>
|
15 |
-
*/
|
16 |
-
|
17 |
-
defined( 'WPINC' ) || die;
|
18 |
-
|
19 |
-
ob_start();
|
20 |
-
?>
|
21 |
-
|
22 |
-
<div class="bg-box">
|
23 |
-
<div class="bg-box-top">
|
24 |
-
<?php esc_html_e( 'Auto Updates and Rollback', 'boldgrid-inspirations' ); ?>
|
25 |
-
</div>
|
26 |
-
<div class="bg-box-bottom">
|
27 |
-
|
28 |
-
<table class="form-table">
|
29 |
-
<tr>
|
30 |
-
<th>
|
31 |
-
<?php esc_html_e( 'Plugin Auto-Updates', 'boldgrid-backup' ); ?>
|
32 |
-
<span class="dashicons dashicons-editor-help" data-id="plugin-autoupdate"></span>
|
33 |
-
|
34 |
-
<p class="help" data-id="plugin-autoupdate">
|
35 |
-
<?php
|
36 |
-
printf(
|
37 |
-
// translators: 1: URL address.
|
38 |
-
esc_html__(
|
39 |
-
'Automatically perform all plugin updates when available. Enabling this feature adds the <a target="_blank" href="%1$s">auto_update_plugin filter</a>, which enables automatic plugin updates when an update is available.',
|
40 |
-
'boldgrid-backup'
|
41 |
-
),
|
42 |
-
'https://codex.wordpress.org/Configuring_Automatic_Background_Updates#Plugin_.26_Theme_Updates_via_Filter'
|
43 |
-
);
|
44 |
-
?>
|
45 |
-
</p>
|
46 |
-
</th>
|
47 |
-
<td>
|
48 |
-
<input id="plugin-autoupdate-enabled" type="radio" name="plugin_autoupdate"
|
49 |
-
value="1"
|
50 |
-
<?php
|
51 |
-
if ( isset( $settings['plugin_autoupdate'] ) &&
|
52 |
-
1 === $settings['plugin_autoupdate'] ) {
|
53 |
-
?>
|
54 |
-
checked
|
55 |
-
<?php
|
56 |
-
}
|
57 |
-
?>
|
58 |
-
/> <?php esc_html_e( 'Enabled', 'boldgrid-backup' ); ?> <input
|
59 |
-
id="plugin-autoupdate-disabled" type="radio" name="plugin_autoupdate" value="0"
|
60 |
-
<?php
|
61 |
-
if ( ! isset( $settings['plugin_autoupdate'] ) ||
|
62 |
-
! $settings['plugin_autoupdate'] ) {
|
63 |
-
?>
|
64 |
-
checked
|
65 |
-
<?php
|
66 |
-
}
|
67 |
-
?>
|
68 |
-
/> <?php esc_html_e( 'Disabled', 'boldgrid-backup' ); ?>
|
69 |
-
</td>
|
70 |
-
</tr>
|
71 |
-
|
72 |
-
<tr>
|
73 |
-
<th>
|
74 |
-
<?php esc_html_e( 'Theme Auto-Updates', 'boldgrid-backup' ); ?>
|
75 |
-
<span class="dashicons dashicons-editor-help" data-id="theme-autoupdate"></span>
|
76 |
-
|
77 |
-
<p class="help" data-id="theme-autoupdate">
|
78 |
-
<?php
|
79 |
-
printf(
|
80 |
-
// translators: 1: URL address.
|
81 |
-
esc_html__(
|
82 |
-
'Automatically perform all theme updates when available. Enabling this feature adds the <a target="_blank" href="%1$s">auto_update_theme filter</a>, which enables automatic theme updates when an update is available.',
|
83 |
-
'boldgrid-backup'
|
84 |
-
),
|
85 |
-
'https://codex.wordpress.org/Configuring_Automatic_Background_Updates#Plugin_.26_Theme_Updates_via_Filter'
|
86 |
-
);
|
87 |
-
?>
|
88 |
-
<p>
|
89 |
-
</th>
|
90 |
-
<td>
|
91 |
-
<input id="theme-autoupdate-enabled" type="radio" name="theme_autoupdate" value="1"
|
92 |
-
<?php
|
93 |
-
if ( isset( $settings['theme_autoupdate'] ) &&
|
94 |
-
1 === $settings['theme_autoupdate'] ) {
|
95 |
-
?>
|
96 |
-
checked
|
97 |
-
<?php
|
98 |
-
}
|
99 |
-
?>
|
100 |
-
/> <?php esc_html_e( 'Enabled', 'boldgrid-backup' ); ?> <input
|
101 |
-
id="theme-autoupdate-disabled" type="radio" name="theme_autoupdate" value="0"
|
102 |
-
<?php
|
103 |
-
if ( ! isset( $settings['theme_autoupdate'] ) ||
|
104 |
-
! $settings['theme_autoupdate'] ) {
|
105 |
-
?>
|
106 |
-
checked
|
107 |
-
<?php
|
108 |
-
}
|
109 |
-
?>
|
110 |
-
/> <?php esc_html_e( 'Disabled', 'boldgrid-backup' ); ?>
|
111 |
-
</td>
|
112 |
-
</tr>
|
113 |
-
|
114 |
-
<tr>
|
115 |
-
<th>
|
116 |
-
<?php esc_html_e( 'Auto Backup<br />Before Updates', 'boldgrid-backup' ); ?>
|
117 |
-
<span class='dashicons dashicons-editor-help' data-id='auto-backup'></span>
|
118 |
-
|
119 |
-
<p class='help' data-id='auto-backup'>
|
120 |
-
<?php
|
121 |
-
printf(
|
122 |
-
// translators: 1: URL address.
|
123 |
-
esc_html__(
|
124 |
-
'Automatically perform a backup before WordPress updates. When this feature is enabled, a full backup will be made during the <a target="_blank" href="%1$s">pre_auto_update action</a>. ',
|
125 |
-
'boldgrid-backup'
|
126 |
-
),
|
127 |
-
'https://developer.wordpress.org/reference/hooks/pre_auto_update/'
|
128 |
-
);
|
129 |
-
?>
|
130 |
-
<p>
|
131 |
-
</th>
|
132 |
-
<td>
|
133 |
-
<input id='auto-backup-enabled' type='radio' name='auto_backup'
|
134 |
-
value='1'
|
135 |
-
<?php
|
136 |
-
if ( ! isset( $settings['auto_backup'] ) ||
|
137 |
-
1 === $settings['auto_backup'] ) {
|
138 |
-
echo ' checked';
|
139 |
-
}
|
140 |
-
?>
|
141 |
-
/> <?php esc_html_e( 'Enabled', 'boldgrid-backup' ); ?> <input
|
142 |
-
id='auto-backup-disabled' type='radio' name='auto_backup' value='0'
|
143 |
-
<?php
|
144 |
-
if ( isset( $settings['auto_backup'] ) && 0 === $settings['auto_backup'] ) {
|
145 |
-
echo ' checked';
|
146 |
-
}
|
147 |
-
?>
|
148 |
-
/> <?php esc_html_e( 'Disabled', 'boldgrid-backup' ); ?>
|
149 |
-
</td>
|
150 |
-
</tr>
|
151 |
-
|
152 |
-
<tr>
|
153 |
-
<th>
|
154 |
-
<?php esc_html_e( 'Auto Rollback', 'boldgrid-backup' ); ?><span class='dashicons dashicons-editor-help' data-id='auto-rollback'></span>
|
155 |
-
|
156 |
-
<p class='help' data-id='auto-rollback'>
|
157 |
-
<?php
|
158 |
-
esc_html_e(
|
159 |
-
'If something goes wrong while performing WordPress updates, automatically restore the site using a backup made before updating WordPress. This feature does not apply to auto updates.',
|
160 |
-
'boldgrid-backup'
|
161 |
-
);
|
162 |
-
?>
|
163 |
-
</p>
|
164 |
-
</th>
|
165 |
-
<td>
|
166 |
-
<input id='auto-rollback-enabled' type='radio' name='auto_rollback'
|
167 |
-
value='1'
|
168 |
-
<?php
|
169 |
-
if ( ! isset( $settings['auto_rollback'] ) ||
|
170 |
-
1 === $settings['auto_rollback'] ) {
|
171 |
-
echo ' checked';
|
172 |
-
}
|
173 |
-
?>
|
174 |
-
/> <?php esc_html_e( 'Enabled', 'boldgrid-backup' ); ?> <input
|
175 |
-
id='auto-rollback-disabled' type='radio' name='auto_rollback'
|
176 |
-
value='0'
|
177 |
-
<?php
|
178 |
-
if ( isset( $settings['auto_rollback'] ) && 0 === $settings['auto_rollback'] ) {
|
179 |
-
echo ' checked';
|
180 |
-
}
|
181 |
-
?>
|
182 |
-
/> <?php esc_html_e( 'Disabled', 'boldgrid-backup' ); ?>
|
183 |
-
</td>
|
184 |
-
</tr>
|
185 |
-
</table>
|
186 |
-
</div>
|
187 |
-
</div>
|
188 |
-
|
189 |
-
<?php
|
190 |
-
$output = ob_get_contents();
|
191 |
-
ob_end_clean();
|
192 |
-
return $output;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
admin/partials/settings/backup-directory.php
CHANGED
@@ -25,10 +25,8 @@ ob_start();
|
|
25 |
<span class='dashicons dashicons-editor-help' data-id='backup-dir'></span>
|
26 |
</div>
|
27 |
<div class="bg-box-bottom">
|
28 |
-
|
29 |
<p class="help" data-id="backup-dir">
|
30 |
<?php
|
31 |
-
|
32 |
/*
|
33 |
* Print this text:
|
34 |
*
|
@@ -37,28 +35,29 @@ ob_start();
|
|
37 |
* your backup directory <a>here</a>.
|
38 |
*/
|
39 |
printf(
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
'boldgrid-backup'
|
45 |
-
),
|
46 |
-
array(
|
47 |
-
'a' => array(
|
48 |
-
'href' => array(),
|
49 |
-
'target' => array(),
|
50 |
-
),
|
51 |
-
)
|
52 |
),
|
53 |
-
|
|
|
|
|
|
|
|
|
|
|
54 |
);
|
55 |
?>
|
56 |
</p>
|
57 |
-
|
58 |
<table class='backup-directory form-table'>
|
59 |
<tr>
|
60 |
-
<th
|
61 |
-
|
|
|
|
|
|
|
|
|
|
|
62 |
</tr>
|
63 |
<tr id="move-backups" class="hidden">
|
64 |
<th><?php esc_html_e( 'If you change this directory, current backups will not show in the list. Would you like us to move the backups to the new directory?', 'boldgrid-backup' ); ?></th>
|
25 |
<span class='dashicons dashicons-editor-help' data-id='backup-dir'></span>
|
26 |
</div>
|
27 |
<div class="bg-box-bottom">
|
|
|
28 |
<p class="help" data-id="backup-dir">
|
29 |
<?php
|
|
|
30 |
/*
|
31 |
* Print this text:
|
32 |
*
|
35 |
* your backup directory <a>here</a>.
|
36 |
*/
|
37 |
printf(
|
38 |
+
// translators: 1: URL address link.
|
39 |
+
esc_html__(
|
40 |
+
'For security purposes, please do not set this to a publicly available directory. Once you set this, it is not recommended that you change it again. You can find more help with setting your backup directory %1$s.',
|
41 |
+
'boldgrid-backup'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
),
|
43 |
+
sprintf(
|
44 |
+
'<a target="_blank" href="' .
|
45 |
+
esc_url( $this->core->configs['urls']['setting_directory'] ) .
|
46 |
+
'">%1$s</a>',
|
47 |
+
esc_html__( 'here', 'boldgrid-backup' )
|
48 |
+
)
|
49 |
);
|
50 |
?>
|
51 |
</p>
|
|
|
52 |
<table class='backup-directory form-table'>
|
53 |
<tr>
|
54 |
+
<th><label for="backup_directory">
|
55 |
+
<?php esc_html_e( 'Directory to store backup archives', 'boldgrid-backup' ); ?>:
|
56 |
+
</label></th>
|
57 |
+
<td>
|
58 |
+
<input id='backup-directory-path' type='text' size='40' name='backup_directory'
|
59 |
+
value='<?php echo esc_attr( $settings['backup_directory'] ); ?>'>
|
60 |
+
</td>
|
61 |
</tr>
|
62 |
<tr id="move-backups" class="hidden">
|
63 |
<th><?php esc_html_e( 'If you change this directory, current backups will not show in the list. Would you like us to move the backups to the new directory?', 'boldgrid-backup' ); ?></th>
|
admin/partials/settings/connect-key.php
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
/**
|
3 |
* File: connect-key.php
|
4 |
*
|
5 |
-
* Show
|
6 |
*
|
7 |
-
* @link
|
8 |
* @since 1.6.0
|
9 |
*
|
10 |
* @package Boldgrid_Backup
|
@@ -16,68 +16,17 @@
|
|
16 |
|
17 |
defined( 'WPINC' ) || die;
|
18 |
|
19 |
-
/* phpcs:disable WordPress.NamingConventions.ValidHookName */
|
20 |
-
$is_dismissed = apply_filters( 'Boldgrid\Library\Notice\KeyPrompt\getIsDismissed', false );
|
21 |
-
$is_displayed = apply_filters( 'Boldgrid\Library\Notice\KeyPrompt\getIsDisplayed', false );
|
22 |
-
|
23 |
-
$has_key_entered = ! empty( $this->core->configs['api_key'] );
|
24 |
-
|
25 |
-
// Check again button to refresh license status.
|
26 |
-
$refresh_key = ! $has_key_entered || $this->core->config->get_is_premium() ? '' : '<p>' .
|
27 |
-
__( 'If you recently upgraded your BoldGrid Connect Key to Premium, click <strong>Check again</strong> to refresh the status of your license.', 'boldgrid-backup' ) .
|
28 |
-
'<br />' .
|
29 |
-
sprintf( '<a class="button" id="license_check_again">%1$s</a>', __( 'Check again', 'boldgrid-backup' ) ) .
|
30 |
-
' <strong>' . __( 'License type', 'boldgrid-backup' ) . '</strong>: <span id="license_string">' . $this->core->config->get_license_string() . '</span>' .
|
31 |
-
' <span class="spinner inline" style="display:none;vertical-align:text-bottom;"></span>' .
|
32 |
-
'</p>' .
|
33 |
-
'<p id="license_reload_page" class="hidden">' .
|
34 |
-
$this->core->lang['icon_warning'] .
|
35 |
-
__( 'Please reload this page for your new license status to take affect.', 'boldgrid-bakcup' ) .
|
36 |
-
'</p>';
|
37 |
-
|
38 |
-
ob_start();
|
39 |
-
if ( $has_key_entered ) {
|
40 |
-
printf(
|
41 |
-
// translators: 1: Subscription type ("Premium" or "Free").
|
42 |
-
__( 'You have entered a <strong>%1$s</strong> BoldGrid Connect Key.', 'boldgrid-backup' ),
|
43 |
-
$this->core->config->get_is_premium() ?
|
44 |
-
esc_html__( 'Premium', 'boldgrid-backup' ) : esc_html__( 'Free', 'boldgrid-backup' )
|
45 |
-
);
|
46 |
-
} elseif ( $is_dismissed ) {
|
47 |
-
printf(
|
48 |
-
// translators: 1: HTML anchor open tag. 2: HTML anchor close taag.
|
49 |
-
esc_html__(
|
50 |
-
'You have dismissed the prompt to enter a BoldGrid Connect Key. Click %1$shere%2$s to restore the prompt.',
|
51 |
-
'boldgrid-backup'
|
52 |
-
),
|
53 |
-
'<a class="undismissBoldgridNotice" href="#">',
|
54 |
-
'</a>'
|
55 |
-
);
|
56 |
-
|
57 |
-
wp_nonce_field( 'boldgrid_set_key', 'set_key_auth' );
|
58 |
-
} else {
|
59 |
-
esc_html_e( 'Please enter your BoldGrid Connect Key in the form at the top of this page.', 'boldgrid-backup' );
|
60 |
-
}
|
61 |
-
$output = ob_get_contents();
|
62 |
-
ob_end_clean();
|
63 |
-
|
64 |
-
// Add a "Get Premium" section under the Connect Key.
|
65 |
-
$bottom_box_premium = '';
|
66 |
-
if ( ! $this->core->config->get_is_premium() && ! $is_displayed ) {
|
67 |
-
$bottom_box_premium = '<div class="bg-box-bottom premium">' .
|
68 |
-
$this->core->go_pro->get_premium_button() .
|
69 |
-
$this->core->lang['want_to'] .
|
70 |
-
'</div>';
|
71 |
-
}
|
72 |
-
|
73 |
return '
|
74 |
<div class="bg-box">
|
75 |
<div class="bg-box-top">
|
76 |
' . __( 'BoldGrid Connect Key', 'boldgrid-backup' ) . '
|
77 |
</div>
|
78 |
<div class="bg-box-bottom">
|
79 |
-
|
|
|
|
|
|
|
|
|
80 |
</div>
|
81 |
-
' . $bottom_box_premium . '
|
82 |
</div>
|
83 |
';
|
2 |
/**
|
3 |
* File: connect-key.php
|
4 |
*
|
5 |
+
* Show link to Settings >> BoldGrid Connect.
|
6 |
*
|
7 |
+
* @link https://www.boldgrid.com
|
8 |
* @since 1.6.0
|
9 |
*
|
10 |
* @package Boldgrid_Backup
|
16 |
|
17 |
defined( 'WPINC' ) || die;
|
18 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
return '
|
20 |
<div class="bg-box">
|
21 |
<div class="bg-box-top">
|
22 |
' . __( 'BoldGrid Connect Key', 'boldgrid-backup' ) . '
|
23 |
</div>
|
24 |
<div class="bg-box-bottom">
|
25 |
+
' . sprintf(
|
26 |
+
'%1$s <a href="' . admin_url( 'options-general.php?page=boldgrid-connect.php' ) . '">%2$s</a>.',
|
27 |
+
__( 'Connect Key management has been moved to', 'boldgrid-backup' ),
|
28 |
+
__( 'Settings >> BoldGrid Connect', 'boldgrid-backup' )
|
29 |
+
) . '
|
30 |
</div>
|
|
|
31 |
</div>
|
32 |
';
|
admin/partials/settings/retention.php
CHANGED
@@ -16,9 +16,15 @@
|
|
16 |
|
17 |
defined( 'WPINC' ) || die;
|
18 |
|
19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
-
|
22 |
?>
|
23 |
|
24 |
<div class="bg-box">
|
@@ -26,40 +32,20 @@ $is_retention_set = ( isset( $settings['retention_count'] ) );
|
|
26 |
<?php esc_html_e( 'Retention', 'boldgrid-backup' ); ?>
|
27 |
</div>
|
28 |
<div class="bg-box-bottom">
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
// Is retention not set and $x = the default retention?
|
39 |
-
$x_is_default = ( ! $is_retention_set && $this->core->config->get_default_retention() === $x );
|
40 |
-
|
41 |
-
// Should this option be 'selected'?
|
42 |
-
$selected = ( ( $x_is_retention || $x_is_default ) ? ' selected' : '' );
|
43 |
-
|
44 |
-
// Should we flag this option as "Requires Upgrade"?
|
45 |
-
if ( ! $this->core->config->get_is_premium() && ( $this->core->config->get_default_retention() + 1 ) === $x ) {
|
46 |
-
$requires_upgrade = esc_html__( '- Requires Upgrade', 'boldgrid-backup' );
|
47 |
-
} else {
|
48 |
-
$requires_upgrade = '';
|
49 |
-
}
|
50 |
-
|
51 |
-
printf(
|
52 |
-
'<option value="%1$d" %2$s>%1$d</option>',
|
53 |
-
esc_attr( $x ),
|
54 |
-
esc_attr( $selected )
|
55 |
-
);
|
56 |
-
}
|
57 |
-
?>
|
58 |
-
</select>
|
59 |
</div>
|
60 |
</div>
|
61 |
|
62 |
<?php
|
63 |
$output = ob_get_contents();
|
64 |
ob_end_clean();
|
|
|
65 |
return $output;
|
16 |
|
17 |
defined( 'WPINC' ) || die;
|
18 |
|
19 |
+
// Get retention count setting. Limit 1-99, default is from config.
|
20 |
+
$retention_count = isset( $settings['retention_count'] ) && 99 >= $settings['retention_count'] ?
|
21 |
+
$settings['retention_count'] : $this->core->config->get_default_retention();
|
22 |
+
|
23 |
+
if ( $retention_count > 99 ) {
|
24 |
+
$retention_count = 99;
|
25 |
+
}
|
26 |
|
27 |
+
ob_start();
|
28 |
?>
|
29 |
|
30 |
<div class="bg-box">
|
32 |
<?php esc_html_e( 'Retention', 'boldgrid-backup' ); ?>
|
33 |
</div>
|
34 |
<div class="bg-box-bottom">
|
35 |
+
<table class='form-table'>
|
36 |
+
<tr>
|
37 |
+
<th><label for="retention_count">
|
38 |
+
<?php esc_html_e( 'Number of backup archives to retain', 'boldgrid-backup' ); ?> (1 - 99):
|
39 |
+
</label></th>
|
40 |
+
<td><input type="number" id='retention-count' name='retention_count' min="1" max="99"
|
41 |
+
value="<?php echo esc_attr( $retention_count ); ?>" required /></td>
|
42 |
+
</tr>
|
43 |
+
</table>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
</div>
|
45 |
</div>
|
46 |
|
47 |
<?php
|
48 |
$output = ob_get_contents();
|
49 |
ob_end_clean();
|
50 |
+
|
51 |
return $output;
|
admin/partials/settings/scheduler.php
CHANGED
@@ -17,10 +17,9 @@
|
|
17 |
defined( 'WPINC' ) || die;
|
18 |
|
19 |
$schedulers_available = $this->core->scheduler->get_available();
|
20 |
-
|
21 |
-
$
|
22 |
-
|
23 |
-
$scheduler = ! empty( $settings['scheduler'] ) ? $settings['scheduler'] : false;
|
24 |
|
25 |
// No need to show the user any options if there is only 1 scheduler available.
|
26 |
if ( 1 === $schedulers_count ) {
|
@@ -32,8 +31,10 @@ $wp_cron_warning = sprintf(
|
|
32 |
__( 'When using WP Cron, we cannot guarantee that backups will be created at the times you specify. Cron is the recommended scheduler.', 'boldgrid-backup' )
|
33 |
);
|
34 |
|
35 |
-
$scheduler_options = '';
|
36 |
foreach ( $schedulers_available as $key => $scheduler_data ) {
|
|
|
|
|
|
|
37 |
$scheduler_options .= sprintf(
|
38 |
'<option value="%1$s" %3$s>%2$s</option>',
|
39 |
$key,
|
@@ -48,7 +49,7 @@ return sprintf(
|
|
48 |
'
|
49 |
<div class="bg-box">
|
50 |
<div class="bg-box-top">
|
51 |
-
%1$s
|
52 |
</div>
|
53 |
<div class="bg-box-bottom">
|
54 |
%2$s
|
@@ -57,5 +58,6 @@ return sprintf(
|
|
57 |
</div>',
|
58 |
__( 'Scheduler', 'boldgrid-backup' ),
|
59 |
$scheduler_select,
|
60 |
-
$wp_cron_warning
|
|
|
61 |
);
|
17 |
defined( 'WPINC' ) || die;
|
18 |
|
19 |
$schedulers_available = $this->core->scheduler->get_available();
|
20 |
+
$schedulers_count = count( $schedulers_available );
|
21 |
+
$scheduler = ! empty( $settings['scheduler'] ) ? $settings['scheduler'] : false;
|
22 |
+
$scheduler_options = '';
|
|
|
23 |
|
24 |
// No need to show the user any options if there is only 1 scheduler available.
|
25 |
if ( 1 === $schedulers_count ) {
|
31 |
__( 'When using WP Cron, we cannot guarantee that backups will be created at the times you specify. Cron is the recommended scheduler.', 'boldgrid-backup' )
|
32 |
);
|
33 |
|
|
|
34 |
foreach ( $schedulers_available as $key => $scheduler_data ) {
|
35 |
+
$scheduler_data['title'] = $scheduler_data['title'] . ( 'cron' === $key ?
|
36 |
+
' (' . esc_html__( 'Recommended', 'boldgrid-backup' ) . ')' : '' );
|
37 |
+
|
38 |
$scheduler_options .= sprintf(
|
39 |
'<option value="%1$s" %3$s>%2$s</option>',
|
40 |
$key,
|
49 |
'
|
50 |
<div class="bg-box">
|
51 |
<div class="bg-box-top">
|
52 |
+
%1$s <span class="bgb-unbold">(%4$s)</span>
|
53 |
</div>
|
54 |
<div class="bg-box-bottom">
|
55 |
%2$s
|
58 |
</div>',
|
59 |
__( 'Scheduler', 'boldgrid-backup' ),
|
60 |
$scheduler_select,
|
61 |
+
$wp_cron_warning,
|
62 |
+
__( 'Advanced', 'boldgrid-backup' )
|
63 |
);
|
admin/partials/settings/storage.php
CHANGED
@@ -19,13 +19,9 @@ defined( 'WPINC' ) || die;
|
|
19 |
|
20 |
ob_start();
|
21 |
|
|
|
22 |
$storage_locations = array(
|
23 |
-
|
24 |
-
'title' => __( 'Web Server', 'boldgrid-backup' ),
|
25 |
-
'key' => 'local',
|
26 |
-
'is_setup' => true,
|
27 |
-
'enabled' => ! empty( $settings['remote']['local']['enabled'] ) && true === $settings['remote']['local']['enabled'],
|
28 |
-
),
|
29 |
);
|
30 |
|
31 |
/**
|
@@ -45,6 +41,7 @@ $storage_locations = array(
|
|
45 |
*/
|
46 |
$storage_locations = apply_filters( 'boldgrid_backup_register_storage_location', $storage_locations );
|
47 |
|
|
|
48 |
$premium_box = $this->core->config->is_premium_done ? '' : sprintf(
|
49 |
'
|
50 |
<div class="bg-box-bottom premium">
|
@@ -56,7 +53,7 @@ $premium_box = $this->core->config->is_premium_done ? '' : sprintf(
|
|
56 |
</p>
|
57 |
</div>',
|
58 |
/* 1 */ __( 'Amazon S3', 'boldgrid-backup' ),
|
59 |
-
/* 2 */ $this->core->go_pro->get_premium_button(),
|
60 |
/* 3 */ __( 'Upgrade to premium for more Storage Locations!', 'boldgrid-backup' )
|
61 |
);
|
62 |
|
@@ -79,9 +76,11 @@ $premium_box = $this->core->config->is_premium_done ? '' : sprintf(
|
|
79 |
),
|
80 |
array( 'a' => array( 'href' => array() ) )
|
81 |
),
|
82 |
-
esc_url(
|
83 |
-
|
84 |
-
|
|
|
|
|
85 |
);
|
86 |
?>
|
87 |
</p>
|
19 |
|
20 |
ob_start();
|
21 |
|
22 |
+
// Add the web server storage details.
|
23 |
$storage_locations = array(
|
24 |
+
$this->core->local->get_webserver_details(),
|
|
|
|
|
|
|
|
|
|
|
25 |
);
|
26 |
|
27 |
/**
|
41 |
*/
|
42 |
$storage_locations = apply_filters( 'boldgrid_backup_register_storage_location', $storage_locations );
|
43 |
|
44 |
+
$premium_url = $this->core->go_pro->get_premium_url( 'bgbkup-settings-storage' );
|
45 |
$premium_box = $this->core->config->is_premium_done ? '' : sprintf(
|
46 |
'
|
47 |
<div class="bg-box-bottom premium">
|
53 |
</p>
|
54 |
</div>',
|
55 |
/* 1 */ __( 'Amazon S3', 'boldgrid-backup' ),
|
56 |
+
/* 2 */ $this->core->go_pro->get_premium_button( $premium_url ),
|
57 |
/* 3 */ __( 'Upgrade to premium for more Storage Locations!', 'boldgrid-backup' )
|
58 |
);
|
59 |
|
76 |
),
|
77 |
array( 'a' => array( 'href' => array() ) )
|
78 |
),
|
79 |
+
esc_url(
|
80 |
+
admin_url(
|
81 |
+
'admin.php?page=boldgrid-backup-tools§ion=section_locations'
|
82 |
+
)
|
83 |
+
)
|
84 |
);
|
85 |
?>
|
86 |
</p>
|
admin/partials/tools/local-remote.php
CHANGED
@@ -179,13 +179,14 @@ printf(
|
|
179 |
echo '</p>';
|
180 |
|
181 |
if ( ! $this->core->config->is_premium_done ) {
|
|
|
182 |
printf(
|
183 |
'
|
184 |
<div class="bg-box-bottom premium wp-clearfix">
|
185 |
%1$s
|
186 |
%2$s
|
187 |
</div>',
|
188 |
-
$this->core->go_pro->get_premium_button(), // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
189 |
sprintf(
|
190 |
// translators: 1: HTML strong open tag, 2: HTML strong close tag, 3: HTML em open tag, 4: HTML em close tag.
|
191 |
esc_html__(
|
179 |
echo '</p>';
|
180 |
|
181 |
if ( ! $this->core->config->is_premium_done ) {
|
182 |
+
$premium_url = $this->core->go_pro->get_premium_url( 'bgbkup-tools-faq-storage' );
|
183 |
printf(
|
184 |
'
|
185 |
<div class="bg-box-bottom premium wp-clearfix">
|
186 |
%1$s
|
187 |
%2$s
|
188 |
</div>',
|
189 |
+
$this->core->go_pro->get_premium_button( $premium_url ), // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
190 |
sprintf(
|
191 |
// translators: 1: HTML strong open tag, 2: HTML strong close tag, 3: HTML em open tag, 4: HTML em close tag.
|
192 |
esc_html__(
|
admin/remote/class-boldgrid-backup-admin-ftp-hooks.php
CHANGED
@@ -214,6 +214,12 @@ class Boldgrid_Backup_Admin_Ftp_Hooks {
|
|
214 |
public function wp_ajax_download() {
|
215 |
$error = __( 'Unable to download backup from FTP', 'bolgrid-bakcup' );
|
216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
// Validation, user role.
|
218 |
if ( ! current_user_can( 'update_plugins' ) ) {
|
219 |
$this->core->notice->add_user_notice(
|
@@ -248,13 +254,15 @@ class Boldgrid_Backup_Admin_Ftp_Hooks {
|
|
248 |
|
249 |
if ( $result ) {
|
250 |
$this->core->notice->add_user_notice(
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
|
|
|
|
258 |
),
|
259 |
'notice notice-success'
|
260 |
);
|
214 |
public function wp_ajax_download() {
|
215 |
$error = __( 'Unable to download backup from FTP', 'bolgrid-bakcup' );
|
216 |
|
217 |
+
$allowed_html = array(
|
218 |
+
'h2' => array(),
|
219 |
+
'p' => array(),
|
220 |
+
'strong' => array(),
|
221 |
+
);
|
222 |
+
|
223 |
// Validation, user role.
|
224 |
if ( ! current_user_can( 'update_plugins' ) ) {
|
225 |
$this->core->notice->add_user_notice(
|
254 |
|
255 |
if ( $result ) {
|
256 |
$this->core->notice->add_user_notice(
|
257 |
+
wp_kses(
|
258 |
+
sprintf(
|
259 |
+
// translators: 1: Filename.
|
260 |
+
__(
|
261 |
+
'<h2>BoldGrid Backup Premium - FTP Download</h2><p>Backup file <strong>%1$s</strong> successfully downloaded from FTP.</p>',
|
262 |
+
'boldgrid-backup'
|
263 |
+
),
|
264 |
+
$filename
|
265 |
+
), $allowed_html
|
266 |
),
|
267 |
'notice notice-success'
|
268 |
);
|
admin/remote/class-boldgrid-backup-admin-ftp-page.php
CHANGED
@@ -46,26 +46,30 @@ class Boldgrid_Backup_Admin_Ftp_Page {
|
|
46 |
* @since 1.6.0
|
47 |
*/
|
48 |
public function enqueue_scripts() {
|
49 |
-
$
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
|
|
|
|
|
|
|
|
69 |
}
|
70 |
|
71 |
/**
|
@@ -78,8 +82,15 @@ class Boldgrid_Backup_Admin_Ftp_Page {
|
|
78 |
return false;
|
79 |
}
|
80 |
|
81 |
-
|
82 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
|
84 |
// Blank data, used when deleting settings.
|
85 |
$type = $this->core->ftp->default_type;
|
@@ -100,8 +111,10 @@ class Boldgrid_Backup_Admin_Ftp_Page {
|
|
100 |
|
101 |
switch ( $action ) {
|
102 |
case 'save':
|
103 |
-
|
104 |
-
|
|
|
|
|
105 |
flush();
|
106 |
|
107 |
$this->settings_save();
|
@@ -148,8 +161,21 @@ class Boldgrid_Backup_Admin_Ftp_Page {
|
|
148 |
* Process the user's request to update their FTP settings.
|
149 |
*
|
150 |
* @since 1.6.0
|
|
|
|
|
151 |
*/
|
152 |
public function settings_save() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
153 |
|
154 |
// Readability.
|
155 |
$ftp = $this->core->ftp;
|
@@ -158,7 +184,7 @@ class Boldgrid_Backup_Admin_Ftp_Page {
|
|
158 |
return false;
|
159 |
}
|
160 |
|
161 |
-
if ( empty( $_POST ) ) {
|
162 |
return false;
|
163 |
}
|
164 |
|
@@ -184,9 +210,12 @@ class Boldgrid_Backup_Admin_Ftp_Page {
|
|
184 |
|
185 |
if ( ! empty( $ftp->errors ) ) {
|
186 |
do_action( 'boldgrid_backup_notice', implode( '<br /><br />', $ftp->errors ) );
|
|
|
187 |
} else {
|
188 |
update_site_option( 'boldgrid_backup_settings', $settings );
|
189 |
do_action( 'boldgrid_backup_notice', __( 'Settings saved.', 'boldgrid-backup' ), 'notice updated is-dismissible' );
|
190 |
}
|
|
|
|
|
191 |
}
|
192 |
}
|
46 |
* @since 1.6.0
|
47 |
*/
|
48 |
public function enqueue_scripts() {
|
49 |
+
if ( $this->core->utility->is_admin_page( 'boldgrid-backup-ftp' ) ) {
|
50 |
+
$handle = 'boldgrid-backup-admin-ftp-settings';
|
51 |
+
wp_register_script(
|
52 |
+
$handle,
|
53 |
+
plugin_dir_url( dirname( __FILE__ ) ) . 'js/' . $handle . '.js',
|
54 |
+
array( 'jquery' ),
|
55 |
+
BOLDGRID_BACKUP_VERSION,
|
56 |
+
false
|
57 |
+
);
|
58 |
+
$translation = array(
|
59 |
+
'default_port' => $this->core->ftp->default_port,
|
60 |
+
);
|
61 |
+
wp_localize_script( $handle, 'BoldGridBackupAdminFtpSettings', $translation );
|
62 |
+
wp_enqueue_script( $handle );
|
63 |
+
|
64 |
+
wp_enqueue_style(
|
65 |
+
$handle,
|
66 |
+
plugin_dir_url( dirname( __FILE__ ) ) . 'css/' . $handle . '.css',
|
67 |
+
array(),
|
68 |
+
BOLDGRID_BACKUP_VERSION
|
69 |
+
);
|
70 |
+
|
71 |
+
wp_enqueue_style( 'boldgrid-backup-admin-hide-all' );
|
72 |
+
}
|
73 |
}
|
74 |
|
75 |
/**
|
82 |
return false;
|
83 |
}
|
84 |
|
85 |
+
// Used with wp_kses call below.
|
86 |
+
$allowed_html = array(
|
87 |
+
'div' => array(
|
88 |
+
'class' => array(),
|
89 |
+
),
|
90 |
+
'span' => array(
|
91 |
+
'class' => array(),
|
92 |
+
),
|
93 |
+
);
|
94 |
|
95 |
// Blank data, used when deleting settings.
|
96 |
$type = $this->core->ftp->default_type;
|
111 |
|
112 |
switch ( $action ) {
|
113 |
case 'save':
|
114 |
+
echo wp_kses( $this->core->elements['long_checking_creds'], $allowed_html );
|
115 |
+
if ( ob_get_level() > 0 ) {
|
116 |
+
ob_flush();
|
117 |
+
}
|
118 |
flush();
|
119 |
|
120 |
$this->settings_save();
|
161 |
* Process the user's request to update their FTP settings.
|
162 |
*
|
163 |
* @since 1.6.0
|
164 |
+
*
|
165 |
+
* @return bool
|
166 |
*/
|
167 |
public function settings_save() {
|
168 |
+
$success = true;
|
169 |
+
|
170 |
+
if ( ! check_ajax_referer( 'bgb-settings-ftp', 'ftp_auth' ) ) {
|
171 |
+
do_action(
|
172 |
+
'boldgrid_backup_notice',
|
173 |
+
__( 'Unauthorized request.', 'boldgrid-backup' ),
|
174 |
+
'notice error is-dismissible'
|
175 |
+
);
|
176 |
+
|
177 |
+
return false;
|
178 |
+
}
|
179 |
|
180 |
// Readability.
|
181 |
$ftp = $this->core->ftp;
|
184 |
return false;
|
185 |
}
|
186 |
|
187 |
+
if ( empty( $_POST ) ) {
|
188 |
return false;
|
189 |
}
|
190 |
|
210 |
|
211 |
if ( ! empty( $ftp->errors ) ) {
|
212 |
do_action( 'boldgrid_backup_notice', implode( '<br /><br />', $ftp->errors ) );
|
213 |
+
$success = false;
|
214 |
} else {
|
215 |
update_site_option( 'boldgrid_backup_settings', $settings );
|
216 |
do_action( 'boldgrid_backup_notice', __( 'Settings saved.', 'boldgrid-backup' ), 'notice updated is-dismissible' );
|
217 |
}
|
218 |
+
|
219 |
+
return $success;
|
220 |
}
|
221 |
}
|
admin/remote/class-boldgrid-backup-admin-ftp.php
CHANGED
@@ -508,16 +508,35 @@ class Boldgrid_Backup_Admin_Ftp {
|
|
508 |
continue;
|
509 |
}
|
510 |
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
516 |
|
517 |
$backups[] = array(
|
518 |
'time' => $time,
|
519 |
'filename' => $filename,
|
520 |
-
'size' => $
|
521 |
);
|
522 |
}
|
523 |
}
|
@@ -535,6 +554,9 @@ class Boldgrid_Backup_Admin_Ftp {
|
|
535 |
/**
|
536 |
* Get the remote contents / listing.
|
537 |
*
|
|
|
|
|
|
|
538 |
* @since 1.6.0
|
539 |
*
|
540 |
* @param bool $raw Whether to get the raw contents (ftp_rawlist) or not
|
@@ -553,19 +575,36 @@ class Boldgrid_Backup_Admin_Ftp {
|
|
553 |
switch ( $this->type ) {
|
554 |
case 'ftp':
|
555 |
if ( $raw ) {
|
556 |
-
|
557 |
} else {
|
558 |
-
|
559 |
}
|
560 |
break;
|
561 |
case 'sftp':
|
562 |
if ( $raw ) {
|
563 |
-
|
564 |
} else {
|
565 |
-
|
566 |
}
|
567 |
break;
|
568 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
569 |
}
|
570 |
|
571 |
/**
|
@@ -787,6 +826,26 @@ class Boldgrid_Backup_Admin_Ftp {
|
|
787 |
// If we tried to login and it failed, disconnect.
|
788 |
if ( ! $this->logged_in ) {
|
789 |
$this->disconnect();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
790 |
}
|
791 |
}
|
792 |
|
@@ -842,6 +901,8 @@ class Boldgrid_Backup_Admin_Ftp {
|
|
842 |
public function upload( $filepath ) {
|
843 |
$remote_file = $this->remote_dir . '/' . basename( $filepath );
|
844 |
|
|
|
|
|
845 |
$this->connect();
|
846 |
$this->log_in();
|
847 |
if ( ! $this->logged_in ) {
|
@@ -857,9 +918,21 @@ class Boldgrid_Backup_Admin_Ftp {
|
|
857 |
switch ( $this->type ) {
|
858 |
case 'ftp':
|
859 |
$uploaded = ftp_put( $this->connection, $remote_file, $filepath, FTP_BINARY );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
860 |
break;
|
861 |
case 'sftp':
|
862 |
$uploaded = $this->connection->put( $remote_file, $filepath, 1 );
|
|
|
|
|
|
|
863 |
break;
|
864 |
}
|
865 |
|
508 |
continue;
|
509 |
}
|
510 |
|
511 |
+
/*
|
512 |
+
* Determine the format of our raw contents.
|
513 |
+
*
|
514 |
+
* There are for sure more than 2 formats (see notes at https://pastebin.com/eL5XpeYP),
|
515 |
+
* but for now we're currently testing for:
|
516 |
+
* # Windows 10-24-2018 11:12AM 302501 boldgrid-backup-localhost_wordpress-90d7727c-20181024-175039.zip
|
517 |
+
* # Linux -rw-r--r-- 1 boldgrid4s boldgrid4s 997834 Oct 24 10:36 boldgrid-backup-domain.com-b2cf0453-20181024-143320.zip
|
518 |
+
*
|
519 |
+
* Flag as a windows ftp server if first item is a date in xx-xx-xxxx format.
|
520 |
+
*/
|
521 |
+
$is_windows = 1 === preg_match( '/(\d{2})-(\d{2})-(\d{4})/', $exploded_item[0] );
|
522 |
+
|
523 |
+
if ( $is_windows ) {
|
524 |
+
$time = strtotime( $exploded_item[0] . ' ' . $exploded_item[1] );
|
525 |
+
$size = $exploded_item[2];
|
526 |
+
} else {
|
527 |
+
// Get the timestamp.
|
528 |
+
$month = $exploded_item[ $count - 4 ];
|
529 |
+
$day = $exploded_item[ $count - 3 ];
|
530 |
+
$time = $exploded_item[ $count - 2 ];
|
531 |
+
$time = strtotime( $month . ' ' . $day . ' ' . $time );
|
532 |
+
|
533 |
+
$size = $exploded_item[ $count - 5 ];
|
534 |
+
}
|
535 |
|
536 |
$backups[] = array(
|
537 |
'time' => $time,
|
538 |
'filename' => $filename,
|
539 |
+
'size' => $size,
|
540 |
);
|
541 |
}
|
542 |
}
|
554 |
/**
|
555 |
* Get the remote contents / listing.
|
556 |
*
|
557 |
+
* This method allows for both ftp / sftp AND rawlist / nlist functions. The return data can
|
558 |
+
* vary based on server. Example return data available here: https://pastebin.com/eL5XpeYP
|
559 |
+
*
|
560 |
* @since 1.6.0
|
561 |
*
|
562 |
* @param bool $raw Whether to get the raw contents (ftp_rawlist) or not
|
575 |
switch ( $this->type ) {
|
576 |
case 'ftp':
|
577 |
if ( $raw ) {
|
578 |
+
$contents = ftp_rawlist( $this->connection, $dir );
|
579 |
} else {
|
580 |
+
$contents = ftp_nlist( $this->connection, $dir );
|
581 |
}
|
582 |
break;
|
583 |
case 'sftp':
|
584 |
if ( $raw ) {
|
585 |
+
$contents = $this->connection->rawlist( $dir );
|
586 |
} else {
|
587 |
+
$contents = $this->connection->nlist( $dir );
|
588 |
}
|
589 |
break;
|
590 |
}
|
591 |
+
|
592 |
+
/*
|
593 |
+
* Some ftp servers respond with slightly different formats. In some scenarious on a Windows
|
594 |
+
* FTP server, the folders will be prepended with a "./" (See comment in this method's
|
595 |
+
* docblock). Before returning the data, remove "./" from the beginning of all items.
|
596 |
+
*/
|
597 |
+
$fix_windows = function( $item ) {
|
598 |
+
if ( './' === substr( $item, 0, 2 ) ) {
|
599 |
+
$item = substr( $item, 2 );
|
600 |
+
}
|
601 |
+
return $item;
|
602 |
+
};
|
603 |
+
if ( 'ftp' === $this->type && is_array( $contents ) ) {
|
604 |
+
$contents = array_map( $fix_windows, $contents );
|
605 |
+
}
|
606 |
+
|
607 |
+
return $contents;
|
608 |
}
|
609 |
|
610 |
/**
|
826 |
// If we tried to login and it failed, disconnect.
|
827 |
if ( ! $this->logged_in ) {
|
828 |
$this->disconnect();
|
829 |
+
} else {
|
830 |
+
$this->maybe_passive();
|
831 |
+
}
|
832 |
+
}
|
833 |
+
|
834 |
+
/**
|
835 |
+
* Turn on passive mode, only if needed.
|
836 |
+
*
|
837 |
+
* Turning on passive mode can only be done after a successful login. This method assumes you've
|
838 |
+
* already logged in.
|
839 |
+
*
|
840 |
+
* @since 1.7.0
|
841 |
+
*/
|
842 |
+
public function maybe_passive() {
|
843 |
+
if ( 'ftp' === $this->type ) {
|
844 |
+
$contents = $this->get_contents();
|
845 |
+
|
846 |
+
if ( ! is_array( $contents ) ) {
|
847 |
+
ftp_pasv( $this->connection, true );
|
848 |
+
}
|
849 |
}
|
850 |
}
|
851 |
|
901 |
public function upload( $filepath ) {
|
902 |
$remote_file = $this->remote_dir . '/' . basename( $filepath );
|
903 |
|
904 |
+
$timestamp = filemtime( $filepath );
|
905 |
+
|
906 |
$this->connect();
|
907 |
$this->log_in();
|
908 |
if ( ! $this->logged_in ) {
|
918 |
switch ( $this->type ) {
|
919 |
case 'ftp':
|
920 |
$uploaded = ftp_put( $this->connection, $remote_file, $filepath, FTP_BINARY );
|
921 |
+
|
922 |
+
/*
|
923 |
+
* Ensure the timestamp is unchanged.
|
924 |
+
*
|
925 |
+
* Not 100% accurate however. In testing, when setting a remote file's timestamp to
|
926 |
+
* 11am UTC, that remote server convereted the UTC time to local time.
|
927 |
+
*/
|
928 |
+
$cmd = 'MFMT ' . date( 'YmdHis', $timestamp ) . ' ' . $remote_file;
|
929 |
+
ftp_raw( $this->connection, $cmd );
|
930 |
break;
|
931 |
case 'sftp':
|
932 |
$uploaded = $this->connection->put( $remote_file, $filepath, 1 );
|
933 |
+
|
934 |
+
// Adjust timestamp.
|
935 |
+
$this->connection->touch( $remote_file, $timestamp );
|
936 |
break;
|
937 |
}
|
938 |
|
admin/storage/class-boldgrid-backup-admin-storage-local.php
CHANGED
@@ -97,4 +97,214 @@ class Boldgrid_Backup_Admin_Storage_Local {
|
|
97 |
|
98 |
$this->core->jobs->add( $args );
|
99 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
}
|
97 |
|
98 |
$this->core->jobs->add( $args );
|
99 |
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Add submenu pages.
|
103 |
+
*
|
104 |
+
* @since 1.7.0
|
105 |
+
*/
|
106 |
+
public function add_submenus() {
|
107 |
+
add_submenu_page(
|
108 |
+
null,
|
109 |
+
__( 'Web Server', 'boldgrid-backup' ),
|
110 |
+
__( 'Web Server', 'boldgrid-backup' ),
|
111 |
+
'administrator',
|
112 |
+
'boldgrid-backup-web-server',
|
113 |
+
array(
|
114 |
+
$this,
|
115 |
+
'webserver_subpage',
|
116 |
+
)
|
117 |
+
);
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Generate the submenu page for the Web Server settings page.
|
122 |
+
*
|
123 |
+
* @since 1.7.0
|
124 |
+
*/
|
125 |
+
public function webserver_subpage() {
|
126 |
+
wp_enqueue_style( 'boldgrid-backup-admin-hide-all' );
|
127 |
+
wp_enqueue_style( 'bglib-ui-css' );
|
128 |
+
wp_enqueue_script( 'bglib-ui-js' );
|
129 |
+
wp_enqueue_script( 'bglib-sticky' );
|
130 |
+
|
131 |
+
wp_enqueue_script(
|
132 |
+
'boldgrid-backup-admin-settings',
|
133 |
+
plugin_dir_url( dirname( __FILE__ ) ) . 'js/boldgrid-backup-admin-settings.js',
|
134 |
+
array( 'jquery' ),
|
135 |
+
BOLDGRID_BACKUP_VERSION,
|
136 |
+
false
|
137 |
+
);
|
138 |
+
|
139 |
+
$this->webserver_subpage_save();
|
140 |
+
|
141 |
+
$settings = $this->core->settings->get_settings();
|
142 |
+
|
143 |
+
include BOLDGRID_BACKUP_PATH . '/admin/partials/remote/local.php';
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Process the user's request to update their Amazon S3 settings.
|
148 |
+
*
|
149 |
+
* @since 1.7.0
|
150 |
+
*
|
151 |
+
* @see Boldgrid_Backup_Admin_Test::run_functionality_tests()
|
152 |
+
* @see Boldgrid_Backup_Admin_Settings::get_settings()
|
153 |
+
* @see Boldgrid_Backup_Admin_Backup_Dir::create()
|
154 |
+
* @see Boldgrid_Backup_Admin_Backup_Dir::is_valid()
|
155 |
+
*
|
156 |
+
* @uses $_POST[] BoldGrid Backup settings.
|
157 |
+
*
|
158 |
+
* @return bool
|
159 |
+
*/
|
160 |
+
public function webserver_subpage_save() {
|
161 |
+
if ( empty( $_POST ) || ! current_user_can( 'update_plugins' ) ) {
|
162 |
+
return false;
|
163 |
+
}
|
164 |
+
|
165 |
+
if ( ! check_ajax_referer( 'bgb-settings-webserver', 'webserver_auth' ) ) {
|
166 |
+
do_action(
|
167 |
+
'boldgrid_backup_notice',
|
168 |
+
__( 'Unauthorized request.', 'boldgrid-backup' ),
|
169 |
+
'notice error is-dismissible'
|
170 |
+
);
|
171 |
+
|
172 |
+
return false;
|
173 |
+
}
|
174 |
+
|
175 |
+
if ( ! $this->core->test->run_functionality_tests() ) {
|
176 |
+
$this->core->settings->errors[] = sprintf(
|
177 |
+
// translators: 1: HTML anchor link open tag, 2: HTML anchor closing tag.
|
178 |
+
__(
|
179 |
+
'Functionality test has failed. You can go to %1$sFunctionality Test%2$s to view a report.',
|
180 |
+
'boldgrid-backup'
|
181 |
+
),
|
182 |
+
'<a href="' . admin_url( 'admin.php?page=boldgrid-backup-test' ) . '">',
|
183 |
+
'</a>'
|
184 |
+
);
|
185 |
+
} else {
|
186 |
+
$settings = $this->core->settings->get_settings();
|
187 |
+
|
188 |
+
$original_backup_directory = $settings['backup_directory'];
|
189 |
+
|
190 |
+
// For consistency, untrailingslashit the input backup dir, or use the default.
|
191 |
+
$settings['backup_directory'] = ! empty( $_POST['backup_directory'] ) ?
|
192 |
+
untrailingslashit(
|
193 |
+
str_replace( '\\\\', '\\', trim( $_POST['backup_directory'] ) )
|
194 |
+
) : $this->core->backup_dir->get();
|
195 |
+
|
196 |
+
$this->core->backup_dir->create( $settings['backup_directory'] );
|
197 |
+
|
198 |
+
if ( ! $this->core->backup_dir->is_valid( $settings['backup_directory'] ) ) {
|
199 |
+
$this->core->settings->errors[] = __( 'Invalid backup directory', 'boldgrid-backup' );
|
200 |
+
} elseif ( $original_backup_directory !== $settings['backup_directory'] &&
|
201 |
+
isset( $_POST['move-backups'] ) && 'on' === $_POST['move-backups'] ) {
|
202 |
+
// Move backups to the new directory, if changed and opted.
|
203 |
+
$backups_moved = $this->core->settings->move_backups(
|
204 |
+
$original_backup_directory,
|
205 |
+
$settings['backup_directory']
|
206 |
+
);
|
207 |
+
|
208 |
+
if ( ! $backups_moved ) {
|
209 |
+
$this->core->settings->errors[] = sprintf(
|
210 |
+
// translators: 1: Original backup directory, 2: New backup directory.
|
211 |
+
__(
|
212 |
+
'Unable to move backups from %1$s to %2$s',
|
213 |
+
'boldgrid-backup'
|
214 |
+
),
|
215 |
+
$original_backup_directory,
|
216 |
+
$settings['backup_directory']
|
217 |
+
);
|
218 |
+
}
|
219 |
+
}
|
220 |
+
|
221 |
+
$settings['retention_count'] = (
|
222 |
+
! empty( $_POST['retention_count'] ) ?
|
223 |
+
(int) $_POST['retention_count'] : $this->core->config->get_default_retention()
|
224 |
+
);
|
225 |
+
}
|
226 |
+
|
227 |
+
$success = empty( $this->core->settings->errors );
|
228 |
+
|
229 |
+
if ( ! $success ) {
|
230 |
+
do_action( 'boldgrid_backup_notice', implode( '<br /><br />', $this->core->settings->errors ) );
|
231 |
+
} else {
|
232 |
+
update_site_option( 'boldgrid_backup_settings', $settings );
|
233 |
+
|
234 |
+
do_action(
|
235 |
+
'boldgrid_backup_notice',
|
236 |
+
__( 'Settings saved.', 'boldgrid-backup' ),
|
237 |
+
'notice updated is-dismissible'
|
238 |
+
);
|
239 |
+
}
|
240 |
+
|
241 |
+
return $success;
|
242 |
+
}
|
243 |
+
|
244 |
+
/**
|
245 |
+
* Are the web server settings configured?
|
246 |
+
*
|
247 |
+
* @since 1.7.0
|
248 |
+
*
|
249 |
+
* @see Boldgrid_Backup_Admin_Settings::get_settings
|
250 |
+
* @see Boldgrid_Backup_Admin_Backup_Dir::is_valid
|
251 |
+
*
|
252 |
+
* @return bool
|
253 |
+
*/
|
254 |
+
public function is_webserver_setup() {
|
255 |
+
$settings = $this->core->settings->get_settings();
|
256 |
+
$has_valid_dir = $this->core->backup_dir->is_valid( $settings['backup_directory'] );
|
257 |
+
$has_valid_retention = is_int( $settings['retention_count'] ) &&
|
258 |
+
0 < $settings['retention_count'];
|
259 |
+
|
260 |
+
return $has_valid_dir && $has_valid_retention;
|
261 |
+
}
|
262 |
+
|
263 |
+
/**
|
264 |
+
* Determine if local web server storage is setup/configured.
|
265 |
+
*
|
266 |
+
* @since 1.7.0
|
267 |
+
*
|
268 |
+
* @see self::is_webserver_setup()
|
269 |
+
* @see self::get_webserver_details()
|
270 |
+
*/
|
271 |
+
public function is_setup_ajax() {
|
272 |
+
if ( ! current_user_can( 'update_plugins' ) ) {
|
273 |
+
wp_send_json_error( __( 'Permission denied.', 'boldgrid-backup' ) );
|
274 |
+
}
|
275 |
+
|
276 |
+
if ( ! check_ajax_referer( 'boldgrid_backup_settings', 'security', false ) ) {
|
277 |
+
wp_send_json_error( __( 'Invalid nonce.', 'boldgrid-backup' ) );
|
278 |
+
}
|
279 |
+
|
280 |
+
$location = $this->get_webserver_details();
|
281 |
+
|
282 |
+
$tr = include BOLDGRID_BACKUP_PATH . '/admin/partials/settings/storage-location.php';
|
283 |
+
|
284 |
+
if ( $this->is_webserver_setup() ) {
|
285 |
+
wp_send_json_success( $tr );
|
286 |
+
} else {
|
287 |
+
wp_send_json_error( $tr );
|
288 |
+
}
|
289 |
+
}
|
290 |
+
|
291 |
+
/**
|
292 |
+
* Get the web server storage details.
|
293 |
+
*
|
294 |
+
* @since 1.7.0
|
295 |
+
*
|
296 |
+
* @return array
|
297 |
+
*/
|
298 |
+
public function get_webserver_details() {
|
299 |
+
$settings = $this->core->settings->get_settings();
|
300 |
+
|
301 |
+
return array(
|
302 |
+
'title' => __( 'Web Server', 'boldgrid-backup' ),
|
303 |
+
'key' => 'local',
|
304 |
+
'configure' => 'admin.php?page=boldgrid-backup-web-server',
|
305 |
+
'is_setup' => $this->is_webserver_setup(),
|
306 |
+
'enabled' => ! empty( $settings['remote']['local']['enabled'] ) &&
|
307 |
+
true === $settings['remote']['local']['enabled'],
|
308 |
+
);
|
309 |
+
}
|
310 |
}
|
boldgrid-backup.php
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
* Plugin Name: BoldGrid Backup
|
17 |
* Plugin URI: https://www.boldgrid.com/boldgrid-backup/
|
18 |
* Description: BoldGrid Backup provides WordPress backup and restoration with update protection.
|
19 |
-
* Version: 1.
|
20 |
* Author: BoldGrid
|
21 |
* Author URI: https://www.boldgrid.com/
|
22 |
* License: GPL-2.0+
|
@@ -84,42 +84,20 @@ function run_boldgrid_backup() {
|
|
84 |
* @return bool
|
85 |
*/
|
86 |
function load_boldgrid_backup() {
|
|
|
|
|
87 |
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
if ( $exists_composer && ! $exists_autoload ) {
|
92 |
-
add_action(
|
93 |
-
'admin_init', function() {
|
94 |
-
deactivate_plugins( 'boldgrid-backup/boldgrid-backup.php', true );
|
95 |
-
|
96 |
-
add_action(
|
97 |
-
'admin_notices', function() {
|
98 |
-
?>
|
99 |
-
<div class="notice notice-error is-dismissible"><p>
|
100 |
-
<?php
|
101 |
-
printf(
|
102 |
-
// translators: 1: HTML strong open tag, 2: HTML string close tag.
|
103 |
-
esc_html__(
|
104 |
-
'%1$sBoldGrid Backup%1$s has been deactivated because the vendor folder is missing. Please run %1$scomposer install%2$s, or contact your host for further assistance.',
|
105 |
-
'boldgrid-backup'
|
106 |
-
),
|
107 |
-
'<strong>',
|
108 |
-
'</strong>'
|
109 |
-
);
|
110 |
-
?>
|
111 |
-
</p></div>
|
112 |
-
<?php
|
113 |
-
}
|
114 |
-
);
|
115 |
-
}
|
116 |
-
);
|
117 |
-
|
118 |
return false;
|
119 |
}
|
120 |
|
121 |
-
|
122 |
-
|
|
|
|
|
|
|
123 |
|
124 |
// Include the autoloader to set plugin options and create instance.
|
125 |
$loader = require plugin_dir_path( __FILE__ ) . 'vendor/autoload.php';
|
@@ -135,6 +113,9 @@ function load_boldgrid_backup() {
|
|
135 |
)
|
136 |
);
|
137 |
|
|
|
|
|
|
|
138 |
return true;
|
139 |
}
|
140 |
|
16 |
* Plugin Name: BoldGrid Backup
|
17 |
* Plugin URI: https://www.boldgrid.com/boldgrid-backup/
|
18 |
* Description: BoldGrid Backup provides WordPress backup and restoration with update protection.
|
19 |
+
* Version: 1.7.0
|
20 |
* Author: BoldGrid
|
21 |
* Author URI: https://www.boldgrid.com/
|
22 |
* License: GPL-2.0+
|
84 |
* @return bool
|
85 |
*/
|
86 |
function load_boldgrid_backup() {
|
87 |
+
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-support.php';
|
88 |
+
$support = new Boldgrid_Backup_Admin_Support();
|
89 |
|
90 |
+
if ( ! $support->has_composer_installed() ) {
|
91 |
+
$error = __( 'The vendor folder is missing. Please run "composer install", or contact your host for further assistance.', 'boldgrid-backup' );
|
92 |
+
$support->deactivate( $error );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
return false;
|
94 |
}
|
95 |
|
96 |
+
if ( ! $support->has_been_built() ) {
|
97 |
+
$error = __( 'The "build" folder is missing. Please run "yarn install" and "gulp", or contact your host for further assistance.', 'boldgrid-backup' );
|
98 |
+
$support->deactivate( $error );
|
99 |
+
return false;
|
100 |
+
}
|
101 |
|
102 |
// Include the autoloader to set plugin options and create instance.
|
103 |
$loader = require plugin_dir_path( __FILE__ ) . 'vendor/autoload.php';
|
113 |
)
|
114 |
);
|
115 |
|
116 |
+
register_activation_hook( __FILE__, 'activate_boldgrid_backup' );
|
117 |
+
register_deactivation_hook( __FILE__, 'deactivate_boldgrid_backup' );
|
118 |
+
|
119 |
return true;
|
120 |
}
|
121 |
|
build/clipboard.min.js
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* clipboard.js v2.0.1
|
3 |
+
* https://zenorocha.github.io/clipboard.js
|
4 |
+
*
|
5 |
+
* Licensed MIT © Zeno Rocha
|
6 |
+
*/
|
7 |
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return function(t){function e(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return t[o].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,o){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:o})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=3)}([function(t,e,n){var o,r,i;!function(a,c){r=[t,n(7)],o=c,void 0!==(i="function"==typeof o?o.apply(e,r):o)&&(t.exports=i)}(0,function(t,e){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var o=function(t){return t&&t.__esModule?t:{default:t}}(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),a=function(){function t(e){n(this,t),this.resolveOptions(e),this.initSelection()}return i(t,[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t=this,e="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return t.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[e?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,o.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,o.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":r(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=a})},function(t,e,n){function o(t,e,n){if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!c.string(e))throw new TypeError("Second argument must be a String");if(!c.fn(n))throw new TypeError("Third argument must be a Function");if(c.node(t))return r(t,e,n);if(c.nodeList(t))return i(t,e,n);if(c.string(t))return a(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function r(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}function i(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}function a(t,e,n){return u(document.body,t,e,n)}var c=n(6),u=n(5);t.exports=o},function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){r.off(t,o),e.apply(n,arguments)}var r=this;return o._=e,this.on(t,o,n)},emit:function(t){var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,r=n.length;for(o;o<r;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],r=[];if(o&&e)for(var i=0,a=o.length;i<a;i++)o[i].fn!==e&&o[i].fn._!==e&&r.push(o[i]);return r.length?n[t]=r:delete n[t],this}},t.exports=n},function(t,e,n){var o,r,i;!function(a,c){r=[t,n(0),n(2),n(1)],o=c,void 0!==(i="function"==typeof o?o.apply(e,r):o)&&(t.exports=i)}(0,function(t,e,n,o){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function c(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function u(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var l=r(e),s=r(n),f=r(o),d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},h=function(){function t(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}return function(e,n,o){return n&&t(e.prototype,n),o&&t(e,o),e}}(),p=function(t){function e(t,n){i(this,e);var o=a(this,(e.__proto__||Object.getPrototypeOf(e)).call(this));return o.resolveOptions(n),o.listenClick(t),o}return c(e,t),h(e,[{key:"resolveOptions",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===d(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,f.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new l.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return u("action",t)}},{key:"defaultTarget",value:function(t){var e=u("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return u("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),e}(s.default);t.exports=p})},function(t,e){function n(t,e){for(;t&&t.nodeType!==o;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}var o=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var r=Element.prototype;r.matches=r.matchesSelector||r.mozMatchesSelector||r.msMatchesSelector||r.oMatchesSelector||r.webkitMatchesSelector}t.exports=n},function(t,e,n){function o(t,e,n,o,r){var a=i.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}function r(t,e,n,r,i){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return o(t,e,n,r,i)}))}function i(t,e,n,o){return function(n){n.delegateTarget=a(n.target,e),n.delegateTarget&&o.call(t,n)}}var a=n(4);t.exports=r},function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},function(t,e){function n(t){var e;if("SELECT"===t.nodeName)t.focus(),e=t.value;else if("INPUT"===t.nodeName||"TEXTAREA"===t.nodeName){var n=t.hasAttribute("readonly");n||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value}else{t.hasAttribute("contenteditable")&&t.focus();var o=window.getSelection(),r=document.createRange();r.selectNodeContents(t),o.removeAllRanges(),o.addRange(r),e=o.toString()}return e}t.exports=n}])});
|
cron/cli-support.php
CHANGED
@@ -23,7 +23,11 @@ require dirname( __FILE__ ) . '/class-boldgrid-backup-url-helper.php';
|
|
23 |
|
24 |
$url_helper = new Boldgrid_Backup_Url_Helper();
|
25 |
|
26 |
-
die(
|
27 |
-
|
28 |
-
|
29 |
-
|
|
|
|
|
|
|
|
23 |
|
24 |
$url_helper = new Boldgrid_Backup_Url_Helper();
|
25 |
|
26 |
+
die(
|
27 |
+
json_encode(
|
28 |
+
array(
|
29 |
+
'has_curl_ssl' => $url_helper->has_curl_ssl(),
|
30 |
+
'has_url_fopen' => $url_helper->has_url_fopen(),
|
31 |
+
)
|
32 |
+
)
|
33 |
+
);
|
includes/class-boldgrid-backup-activator.php
CHANGED
@@ -32,20 +32,22 @@ class Boldgrid_Backup_Activator {
|
|
32 |
* @see Boldgrid_Backup_Admin_Cron::add_all_crons()
|
33 |
*/
|
34 |
public static function activate() {
|
35 |
-
|
36 |
-
|
37 |
-
|
|
|
38 |
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
|
|
49 |
}
|
50 |
}
|
51 |
}
|
32 |
* @see Boldgrid_Backup_Admin_Cron::add_all_crons()
|
33 |
*/
|
34 |
public static function activate() {
|
35 |
+
if ( Boldgrid_Backup_Admin_Test::is_filesystem_supported() ) {
|
36 |
+
$core = new Boldgrid_Backup_Admin_Core();
|
37 |
+
$settings = $core->settings->get_settings();
|
38 |
+
$scheduler = ! empty( $settings['scheduler'] ) ? $settings['scheduler'] : null;
|
39 |
|
40 |
+
/*
|
41 |
+
* Add all previous crons.
|
42 |
+
*
|
43 |
+
* The add_all_crons methods called include proper checks to ensure
|
44 |
+
* scheduler is available and $settings include a schedule.
|
45 |
+
*/
|
46 |
+
if ( 'cron' === $scheduler ) {
|
47 |
+
$core->cron->add_all_crons( $settings );
|
48 |
+
} elseif ( 'wp-cron' === $scheduler ) {
|
49 |
+
$core->wp_cron->add_all_crons( $settings );
|
50 |
+
}
|
51 |
}
|
52 |
}
|
53 |
}
|
includes/class-boldgrid-backup-authentication.php
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: class-boldgrid-backup-authentication.php
|
4 |
+
*
|
5 |
+
* @link https://www.boldgrid.com
|
6 |
+
* @since 1.7.0
|
7 |
+
*
|
8 |
+
* @package Boldgrid_Backup
|
9 |
+
* @subpackage Boldgrid_Backup/admin
|
10 |
+
* @copyright BoldGrid
|
11 |
+
* @version $Id$
|
12 |
+
* @author BoldGrid <support@boldgrid.com>
|
13 |
+
*/
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Class: Boldgrid_Backup_Authentication
|
17 |
+
*
|
18 |
+
* @since 1.7.0
|
19 |
+
*/
|
20 |
+
class Boldgrid_Backup_Authentication {
|
21 |
+
/**
|
22 |
+
* Generate a limited-lifetime token.
|
23 |
+
*
|
24 |
+
* @since 1.7.0
|
25 |
+
*
|
26 |
+
* @static
|
27 |
+
*
|
28 |
+
* @param string $id Identifier.
|
29 |
+
* @param int $expires Expiration time (in UNIX seconds).
|
30 |
+
* @return string
|
31 |
+
*/
|
32 |
+
public static function create_token( $id, $expires ) {
|
33 |
+
$token = md5( openssl_random_pseudo_bytes( 64 ) );
|
34 |
+
$tokens = get_site_option( 'boldgrid_backup_tokens', array() );
|
35 |
+
$tokens[] = array(
|
36 |
+
'id' => $id,
|
37 |
+
'token' => $token,
|
38 |
+
'expires' => $expires,
|
39 |
+
);
|
40 |
+
|
41 |
+
// Purge expired tokens.
|
42 |
+
foreach ( $tokens as $index => $row ) {
|
43 |
+
if ( time() > $row['expires'] ) {
|
44 |
+
unset( $tokens[ $index ] );
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
update_site_option( 'boldgrid_backup_tokens', $tokens );
|
49 |
+
|
50 |
+
return $token;
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Validate token and return details.
|
55 |
+
*
|
56 |
+
* @since 1.7.0
|
57 |
+
*
|
58 |
+
* @static
|
59 |
+
*
|
60 |
+
* @param string $token Token.
|
61 |
+
* @return array
|
62 |
+
*/
|
63 |
+
public static function get_token_details( $token ) {
|
64 |
+
$result['is_valid'] = false;
|
65 |
+
$tokens = get_site_option( 'boldgrid_backup_tokens', array() );
|
66 |
+
|
67 |
+
foreach ( $tokens as $row ) {
|
68 |
+
if ( $token === $row['token'] && time() < $row['expires'] ) {
|
69 |
+
$result = array(
|
70 |
+
'is_valid' => true,
|
71 |
+
'id' => $row['id'],
|
72 |
+
'expires' => $row['expires'],
|
73 |
+
);
|
74 |
+
break;
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
return $result;
|
79 |
+
}
|
80 |
+
}
|
includes/class-boldgrid-backup-download.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: class-boldgrid-backup-download.php
|
4 |
+
*
|
5 |
+
* @link https://www.boldgrid.com
|
6 |
+
* @since 1.7.0
|
7 |
+
*
|
8 |
+
* @package Boldgrid_Backup
|
9 |
+
* @subpackage Boldgrid_Backup/includes
|
10 |
+
* @copyright BoldGrid
|
11 |
+
* @version $Id$
|
12 |
+
* @author BoldGrid <support@boldgrid.com>
|
13 |
+
*/
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Class: Boldgrid_Backup_Download
|
17 |
+
*
|
18 |
+
* @since 1.7.0
|
19 |
+
*/
|
20 |
+
class Boldgrid_Backup_Download {
|
21 |
+
/**
|
22 |
+
* The core class object.
|
23 |
+
*
|
24 |
+
* @since 1.7.0
|
25 |
+
* @access private
|
26 |
+
* @var Boldgrid_Backup_Admin_Core
|
27 |
+
*/
|
28 |
+
private $core;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Constructor.
|
32 |
+
*
|
33 |
+
* @since 1.7.0
|
34 |
+
*
|
35 |
+
* @param Boldgrid_Backup_Admin_Core $core Core class object.
|
36 |
+
*/
|
37 |
+
public function __construct( $core ) {
|
38 |
+
$this->core = $core;
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Callback function for downloading a backup archive file using a public link.
|
43 |
+
*
|
44 |
+
* @since 1.7.0
|
45 |
+
*
|
46 |
+
* @see Boldgrid_Backup_Authentication::get_token_details()
|
47 |
+
* @see Boldgrid_Backup_Admin_Archive::get_by_name()
|
48 |
+
* @see Boldgrid_Backup_File::send_file()
|
49 |
+
*
|
50 |
+
* @uses $_GET['t'] Token.
|
51 |
+
*/
|
52 |
+
public function public_download() {
|
53 |
+
$token = ! empty( $_GET['t'] ) ? sanitize_key( $_GET['t'] ) : null; // phpcs:ignore WordPress.CSRF.NonceVerification
|
54 |
+
$token_details = Boldgrid_Backup_Authentication::get_token_details( $token );
|
55 |
+
|
56 |
+
if ( $token_details['is_valid'] ) {
|
57 |
+
$archive = $this->core->archive->get_by_name( $token_details['id'] );
|
58 |
+
|
59 |
+
if ( ! empty( $archive ) ) {
|
60 |
+
// Send file and die nicely.
|
61 |
+
Boldgrid_Backup_File::send_file( $archive['filepath'], $archive['filesize'] );
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
wp_redirect( get_site_url(), 404 );
|
66 |
+
}
|
67 |
+
}
|
includes/class-boldgrid-backup-file.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: class-boldgrid-backup-file.php
|
4 |
+
*
|
5 |
+
* @link https://www.boldgrid.com
|
6 |
+
* @since 1.7.0
|
7 |
+
*
|
8 |
+
* @package Boldgrid_Backup
|
9 |
+
* @subpackage Boldgrid_Backup/includes
|
10 |
+
* @copyright BoldGrid
|
11 |
+
* @version $Id$
|
12 |
+
* @author BoldGrid <support@boldgrid.com>
|
13 |
+
*/
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Class: Boldgrid_Backup_File
|
17 |
+
*
|
18 |
+
* @since 1.7.0
|
19 |
+
*/
|
20 |
+
class Boldgrid_Backup_File {
|
21 |
+
/**
|
22 |
+
* Send a file for download and die.
|
23 |
+
*
|
24 |
+
* @since 1.7.0
|
25 |
+
*
|
26 |
+
* @static
|
27 |
+
* @global $wp_filesystem
|
28 |
+
*
|
29 |
+
* @param string $filepath File path.
|
30 |
+
* @param int $filesize File size (optional).
|
31 |
+
*/
|
32 |
+
public static function send_file( $filepath, $filesize = null ) {
|
33 |
+
WP_Filesystem();
|
34 |
+
global $wp_filesystem;
|
35 |
+
|
36 |
+
// phpcs:disable WordPress.VIP
|
37 |
+
if ( empty( $filepath ) || ! $wp_filesystem->exists( $filepath ) ) {
|
38 |
+
wp_redirect( get_site_url(), 404 );
|
39 |
+
}
|
40 |
+
|
41 |
+
$filename = basename( $filepath );
|
42 |
+
|
43 |
+
if ( empty( $filesize ) ) {
|
44 |
+
$filesize = $wp_filesystem->size( $filepath );
|
45 |
+
}
|
46 |
+
|
47 |
+
// Send header.
|
48 |
+
header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
|
49 |
+
header( 'Content-Transfer-Encoding: binary' );
|
50 |
+
header( 'Content-Type: binary/octet-stream' );
|
51 |
+
header( 'Content-Length: ' . $filesize );
|
52 |
+
|
53 |
+
// Check and flush output buffer if needed.
|
54 |
+
if ( 0 !== ob_get_level() ) {
|
55 |
+
ob_end_flush();
|
56 |
+
}
|
57 |
+
|
58 |
+
// Close any PHP session, so another session can open during the download.
|
59 |
+
session_write_close();
|
60 |
+
|
61 |
+
// Send the file. Not finding a replacement in $wp_filesystem.
|
62 |
+
// phpcs:disable
|
63 |
+
readfile( $filepath );
|
64 |
+
// phpcs:enable
|
65 |
+
|
66 |
+
wp_die();
|
67 |
+
|
68 |
+
// phpcs:enable WordPress.VIP
|
69 |
+
}
|
70 |
+
}
|
includes/class-boldgrid-backup.php
CHANGED
@@ -142,7 +142,7 @@ class Boldgrid_Backup {
|
|
142 |
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-core.php';
|
143 |
|
144 |
/**
|
145 |
-
* The class responsible for the backup
|
146 |
*/
|
147 |
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-settings.php';
|
148 |
|
@@ -205,6 +205,7 @@ class Boldgrid_Backup {
|
|
205 |
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-core-files.php';
|
206 |
|
207 |
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-in-progress.php';
|
|
|
208 |
|
209 |
require_once BOLDGRID_BACKUP_PATH . '/admin/remote/class-boldgrid-backup-admin-ftp.php';
|
210 |
require_once BOLDGRID_BACKUP_PATH . '/admin/remote/class-boldgrid-backup-admin-ftp-hooks.php';
|
@@ -218,6 +219,10 @@ class Boldgrid_Backup {
|
|
218 |
|
219 |
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-crypt.php';
|
220 |
|
|
|
|
|
|
|
|
|
221 |
$this->loader = new Boldgrid_Backup_Loader();
|
222 |
}
|
223 |
|
@@ -267,6 +272,7 @@ class Boldgrid_Backup {
|
|
267 |
$this->loader->add_action( 'wp_ajax_boldgrid_backup_get_countdown_notice', $plugin_admin_core->auto_rollback, 'wp_ajax_get_countdown_notice' );
|
268 |
$this->loader->add_action( 'wp_ajax_boldgrid_backup_get_protect_notice', $plugin_admin_core->auto_rollback, 'wp_ajax_get_protect_notice' );
|
269 |
$this->loader->add_action( 'wp_ajax_boldgrid_backup_get_progress_notice', $plugin_admin_core->in_progress, 'wp_ajax_get_progress_notice' );
|
|
|
270 |
|
271 |
// Add a custom action to handle AJAX callback for creating a backup archive file.
|
272 |
$this->loader->add_action(
|
@@ -298,7 +304,9 @@ class Boldgrid_Backup {
|
|
298 |
'wp_ajax_cancel'
|
299 |
);
|
300 |
|
301 |
-
|
|
|
|
|
302 |
|
303 |
// Add an action to add a cron job to restore after WordPress Updates, unless canceled.
|
304 |
$this->loader->add_action(
|
@@ -360,6 +368,8 @@ class Boldgrid_Backup {
|
|
360 |
|
361 |
$this->loader->add_action( 'admin_init', $plugin_admin_core->cron, 'upgrade_crontab_entries' );
|
362 |
|
|
|
|
|
363 |
/* FTP */
|
364 |
|
365 |
// Allow one click upload.
|
@@ -379,6 +389,8 @@ class Boldgrid_Backup {
|
|
379 |
// Add ftp backups to the "Backups" tab.
|
380 |
$this->loader->add_action( 'boldgrid_backup_get_all', $plugin_admin_core->ftp->hooks, 'filter_get_all' );
|
381 |
$this->loader->add_action( 'wp_ajax_boldgrid_backup_remote_storage_download_ftp', $plugin_admin_core->ftp->hooks, 'wp_ajax_download' );
|
|
|
|
|
382 |
|
383 |
$this->loader->add_action( 'admin_notices', $plugin_admin_core->go_pro, 'admin_notice_setup' );
|
384 |
|
@@ -396,7 +408,26 @@ class Boldgrid_Backup {
|
|
396 |
$this->loader->add_action( 'wp_ajax_nopriv_boldgrid_backup_run_backup', $plugin_admin_core->cron, 'backup' );
|
397 |
$this->loader->add_action( 'wp_ajax_nopriv_boldgrid_backup_run_restore', $plugin_admin_core->cron, 'restore' );
|
398 |
|
|
|
|
|
|
|
|
|
|
|
399 |
$this->loader->add_action( 'admin_notices', $plugin_admin_core->cron_log, 'admin_notice' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
400 |
}
|
401 |
|
402 |
/**
|
142 |
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-core.php';
|
143 |
|
144 |
/**
|
145 |
+
* The class responsible for the backup in the admin area.
|
146 |
*/
|
147 |
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-settings.php';
|
148 |
|
205 |
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-core-files.php';
|
206 |
|
207 |
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-in-progress.php';
|
208 |
+
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-in-progress-data.php';
|
209 |
|
210 |
require_once BOLDGRID_BACKUP_PATH . '/admin/remote/class-boldgrid-backup-admin-ftp.php';
|
211 |
require_once BOLDGRID_BACKUP_PATH . '/admin/remote/class-boldgrid-backup-admin-ftp-hooks.php';
|
219 |
|
220 |
require_once BOLDGRID_BACKUP_PATH . '/admin/class-boldgrid-backup-admin-crypt.php';
|
221 |
|
222 |
+
require_once BOLDGRID_BACKUP_PATH . '/includes/class-boldgrid-backup-authentication.php';
|
223 |
+
require_once BOLDGRID_BACKUP_PATH . '/includes/class-boldgrid-backup-download.php';
|
224 |
+
require_once BOLDGRID_BACKUP_PATH . '/includes/class-boldgrid-backup-file.php';
|
225 |
+
|
226 |
$this->loader = new Boldgrid_Backup_Loader();
|
227 |
}
|
228 |
|
272 |
$this->loader->add_action( 'wp_ajax_boldgrid_backup_get_countdown_notice', $plugin_admin_core->auto_rollback, 'wp_ajax_get_countdown_notice' );
|
273 |
$this->loader->add_action( 'wp_ajax_boldgrid_backup_get_protect_notice', $plugin_admin_core->auto_rollback, 'wp_ajax_get_protect_notice' );
|
274 |
$this->loader->add_action( 'wp_ajax_boldgrid_backup_get_progress_notice', $plugin_admin_core->in_progress, 'wp_ajax_get_progress_notice' );
|
275 |
+
$this->loader->add_action( 'core_upgrade_preamble', $plugin_admin_core->notice, 'display_autoupdate_notice' );
|
276 |
|
277 |
// Add a custom action to handle AJAX callback for creating a backup archive file.
|
278 |
$this->loader->add_action(
|
304 |
'wp_ajax_cancel'
|
305 |
);
|
306 |
|
307 |
+
if ( $plugin_admin_core->test->run_functionality_tests() ) {
|
308 |
+
$this->loader->add_action( 'admin_notices', $plugin_admin_core->auto_rollback, 'notice_backup_show' );
|
309 |
+
}
|
310 |
|
311 |
// Add an action to add a cron job to restore after WordPress Updates, unless canceled.
|
312 |
$this->loader->add_action(
|
368 |
|
369 |
$this->loader->add_action( 'admin_init', $plugin_admin_core->cron, 'upgrade_crontab_entries' );
|
370 |
|
371 |
+
$this->loader->add_action( 'wp_ajax_boldgrid_backup_generate_download_link', $plugin_admin_core->archive_actions, 'wp_ajax_generate_download_link' );
|
372 |
+
|
373 |
/* FTP */
|
374 |
|
375 |
// Allow one click upload.
|
389 |
// Add ftp backups to the "Backups" tab.
|
390 |
$this->loader->add_action( 'boldgrid_backup_get_all', $plugin_admin_core->ftp->hooks, 'filter_get_all' );
|
391 |
$this->loader->add_action( 'wp_ajax_boldgrid_backup_remote_storage_download_ftp', $plugin_admin_core->ftp->hooks, 'wp_ajax_download' );
|
392 |
+
// Styles and Scripts for FTP settings page.
|
393 |
+
$this->loader->add_action( 'admin_enqueue_scripts', $plugin_admin_core->ftp->page, 'enqueue_scripts' );
|
394 |
|
395 |
$this->loader->add_action( 'admin_notices', $plugin_admin_core->go_pro, 'admin_notice_setup' );
|
396 |
|
408 |
$this->loader->add_action( 'wp_ajax_nopriv_boldgrid_backup_run_backup', $plugin_admin_core->cron, 'backup' );
|
409 |
$this->loader->add_action( 'wp_ajax_nopriv_boldgrid_backup_run_restore', $plugin_admin_core->cron, 'restore' );
|
410 |
|
411 |
+
// For public downloads.
|
412 |
+
$this->loader->add_action( 'wp_ajax_boldgrid_backup_download', $plugin_admin_core->download, 'public_download' );
|
413 |
+
$this->loader->add_action( 'wp_ajax_nopriv_boldgrid_backup_download', $plugin_admin_core->download, 'public_download' );
|
414 |
+
|
415 |
+
// Admin notices from cron log.
|
416 |
$this->loader->add_action( 'admin_notices', $plugin_admin_core->cron_log, 'admin_notice' );
|
417 |
+
|
418 |
+
// For Ajax URL import.
|
419 |
+
$this->loader->add_action( 'wp_ajax_boldgrid_backup_url_upload', $plugin_admin_core->upload, 'ajax_url_import' );
|
420 |
+
|
421 |
+
// Filter the boldgrid_backup_pending_rollback site option.
|
422 |
+
$this->loader->add_filter( 'site_option_boldgrid_backup_pending_rollback', $plugin_admin_core->auto_rollback, 'validate_rollback_option', 10, 2 );
|
423 |
+
|
424 |
+
// Enable updating feature in the BoldGrid Library.
|
425 |
+
add_filter( 'Boldgrid\Library\Update\isEnalbed', '__return_true' );
|
426 |
+
|
427 |
+
$this->loader->add_filter( 'wp_ajax_boldgrid_backup_update_archive_details', $plugin_admin_core->archive_details, 'wp_ajax_update' );
|
428 |
+
|
429 |
+
$this->loader->add_action( 'admin_menu', $plugin_admin_core->local, 'add_submenus' );
|
430 |
+
$this->loader->add_action( 'wp_ajax_boldgrid_backup_is_setup_local', $plugin_admin_core->local, 'is_setup_ajax' );
|
431 |
}
|
432 |
|
433 |
/**
|
includes/config/config.plugin.php
CHANGED
@@ -22,13 +22,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
22 |
}
|
23 |
|
24 |
return array(
|
25 |
-
'
|
26 |
-
'get_plugin_version' => '/api/open/get-plugin-version',
|
27 |
-
'get_asset' => '/api/open/get-asset',
|
28 |
-
),
|
29 |
-
'asset_server' => 'https://wp-assets.boldgrid.com',
|
30 |
-
|
31 |
-
'urls' => array(
|
32 |
'compatibility' => 'https://www.boldgrid.com/support/advanced-tutorials/backup-compatibility-guide',
|
33 |
'possible_issues' => 'https://www.boldgrid.com/support/advanced-tutorials/backup-userguide#possible-issues',
|
34 |
'reduce_size_warning' => 'https://www.boldgrid.com/support/advanced-tutorials/backup-userguide#reduce-size-warning',
|
@@ -38,12 +32,10 @@ return array(
|
|
38 |
'restore' => 'https://www.boldgrid.com/support/advanced-tutorials/restoring-boldgrid-backup/',
|
39 |
'setting_directory' => 'https://www.boldgrid.com/support/advanced-tutorials/backup-userguide#setting-backup-directory',
|
40 |
),
|
41 |
-
'lang'
|
42 |
// translators: 1: Number of seconds.
|
43 |
'est_pause' => esc_html__( 'Estimated Pause: %s seconds', 'boldgrid-backup' ),
|
44 |
),
|
45 |
-
'
|
46 |
-
'
|
47 |
-
'main_file_path' => BOLDGRID_BACKUP_PATH . '/boldgrid-backup.php',
|
48 |
-
'plugin_transient_name' => 'boldgrid_backup_version_data',
|
49 |
);
|
22 |
}
|
23 |
|
24 |
return array(
|
25 |
+
'urls' => array(
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
'compatibility' => 'https://www.boldgrid.com/support/advanced-tutorials/backup-compatibility-guide',
|
27 |
'possible_issues' => 'https://www.boldgrid.com/support/advanced-tutorials/backup-userguide#possible-issues',
|
28 |
'reduce_size_warning' => 'https://www.boldgrid.com/support/advanced-tutorials/backup-userguide#reduce-size-warning',
|
32 |
'restore' => 'https://www.boldgrid.com/support/advanced-tutorials/restoring-boldgrid-backup/',
|
33 |
'setting_directory' => 'https://www.boldgrid.com/support/advanced-tutorials/backup-userguide#setting-backup-directory',
|
34 |
),
|
35 |
+
'lang' => array(
|
36 |
// translators: 1: Number of seconds.
|
37 |
'est_pause' => esc_html__( 'Estimated Pause: %s seconds', 'boldgrid-backup' ),
|
38 |
),
|
39 |
+
'public_link_lifetime' => '1 HOUR',
|
40 |
+
'url_regex' => '^https?:\/\/[a-z0-9\-\.]+(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$',
|
|
|
|
|
41 |
);
|
includes/config/config.sample.php
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
/**
|
3 |
* File: config.sample.php
|
4 |
*
|
5 |
-
* Plugin sample configuration file.
|
6 |
*
|
7 |
* @link https://www.boldgrid.com
|
8 |
-
* @since 1.0
|
9 |
*
|
10 |
* @package Boldgrid_Backup
|
11 |
* @subpackage Boldgrid_Backup/includes
|
@@ -26,5 +26,5 @@ if ( ! defined( 'WPINC' ) ) {
|
|
26 |
* to override.
|
27 |
*/
|
28 |
return array(
|
29 |
-
'
|
30 |
);
|
2 |
/**
|
3 |
* File: config.sample.php
|
4 |
*
|
5 |
+
* Plugin sample local override configuration file.
|
6 |
*
|
7 |
* @link https://www.boldgrid.com
|
8 |
+
* @since 1.0.0
|
9 |
*
|
10 |
* @package Boldgrid_Backup
|
11 |
* @subpackage Boldgrid_Backup/includes
|
26 |
* to override.
|
27 |
*/
|
28 |
return array(
|
29 |
+
'public_link_lifetime' => '1 HOUR',
|
30 |
);
|
readme.txt
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
Contributors: boldgrid, joemoto, imh_brad, rramo012, timph, bgnicolepaschen
|
3 |
Tags: boldgrid, backup, restore, migrate, migration
|
4 |
Requires at least: 4.4
|
5 |
-
Tested up to:
|
6 |
-
Requires PHP: 5.
|
7 |
-
Stable tag: 1.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -18,9 +18,10 @@ WordPress backup and restoration with update protection.
|
|
18 |
|
19 |
= Minimum Requirements =
|
20 |
|
21 |
-
* PHP 5.
|
22 |
* At least one of the following PHP execution functions enabled: "popen", "proc_open", "exec", "shell_exec", "passthru", or "system".
|
23 |
* A Cron system with the "crontab" utility, or WP Cron.
|
|
|
24 |
|
25 |
= Manually =
|
26 |
1. Upload the entire boldgrid-backup folder to the /wp-content/plugins/ directory.
|
@@ -28,11 +29,25 @@ WordPress backup and restoration with update protection.
|
|
28 |
|
29 |
== Changelog ==
|
30 |
|
31 |
-
= 1.
|
32 |
-
|
33 |
-
Release
|
34 |
-
|
35 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
|
37 |
= 1.6.5 =
|
38 |
|
2 |
Contributors: boldgrid, joemoto, imh_brad, rramo012, timph, bgnicolepaschen
|
3 |
Tags: boldgrid, backup, restore, migrate, migration
|
4 |
Requires at least: 4.4
|
5 |
+
Tested up to: 5.0.0
|
6 |
+
Requires PHP: 5.4
|
7 |
+
Stable tag: 1.7.0
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
18 |
|
19 |
= Minimum Requirements =
|
20 |
|
21 |
+
* PHP 5.4 or higher
|
22 |
* At least one of the following PHP execution functions enabled: "popen", "proc_open", "exec", "shell_exec", "passthru", or "system".
|
23 |
* A Cron system with the "crontab" utility, or WP Cron.
|
24 |
+
* A WP_Filesystem FS_METHOD being "direct".
|
25 |
|
26 |
= Manually =
|
27 |
1. Upload the entire boldgrid-backup folder to the /wp-content/plugins/ directory.
|
29 |
|
30 |
== Changelog ==
|
31 |
|
32 |
+
= 1.7.0 =
|
33 |
+
|
34 |
+
Release date: Dec 4th, 2018
|
35 |
+
|
36 |
+
* New feature: Added auto-update settings for individual plugins and themes.
|
37 |
+
* New feature: Added limited-lifetime download links for archive files.
|
38 |
+
* New feature: Added import backup archive from URL address.
|
39 |
+
* New feature: Added progress bar to show status of backups.
|
40 |
+
* New feature: Adding the ability to set and title and description to a backup.
|
41 |
+
* New feature: Adding the ability to flag a backup as being proteced (excluded from retention).
|
42 |
+
* Update: Update protection is now valid for 1 hour after a full backup from the WordPress Updates or Plugins page.
|
43 |
+
* Update: Made the Backup Archives page the default page in the admin menu.
|
44 |
+
* Bug fix: Set a default backup directory if path in settings is not valid. Remove filters before fixing home and siteurl on restore.
|
45 |
+
* Bug fix: Some HTML was caught in translations.
|
46 |
+
* Bug fix: Duplicate emails were sent when a backup was complete, fixed.
|
47 |
+
* Bug fix: Preserve timestamp on ftp / sftp uploads.
|
48 |
+
* Bug fix: Fixed CLI support detection on some EA4 servers.
|
49 |
+
* Update: Save settings and reload to the current section.
|
50 |
+
* Update: Reorganized settings sections.
|
51 |
|
52 |
= 1.6.5 =
|
53 |
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit26ac8f21c7de312bcc7b8f89cd106a20::getLoader();
|
vendor/boldgrid/library/.gitignore
CHANGED
@@ -1,3 +1,4 @@
|
|
|
|
1 |
composer.phar
|
2 |
/vendor/
|
3 |
node_modules/
|
1 |
+
build/
|
2 |
composer.phar
|
3 |
/vendor/
|
4 |
node_modules/
|
vendor/boldgrid/library/.travis.yml
CHANGED
@@ -1,54 +1,22 @@
|
|
1 |
-
language: php
|
2 |
-
|
3 |
-
notifications:
|
4 |
-
email:
|
5 |
-
on_success: never
|
6 |
-
on_failure: change
|
7 |
-
|
8 |
-
php:
|
9 |
-
- 5.6
|
10 |
-
|
11 |
-
env:
|
12 |
-
- WP_VERSION=latest WP_MULTISITE=0
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
env: WP_VERSION=4.7.5 WP_MULTISITE=1
|
24 |
-
- php: 5.6
|
25 |
-
# #
|
26 |
-
# Need to fix this error before running on 4.6.1 and below:
|
27 |
-
# Fatal error: __clone method called on non-object in
|
28 |
-
# /tmp/wordpress-tests-lib/includes/testcase.php on line 287
|
29 |
-
# #
|
30 |
-
# env: WP_VERSION=4.6.1 WP_MULTISITE=0
|
31 |
-
# - php: 5.6
|
32 |
-
# env: WP_VERSION=4.6.2 WP_MULTISITE=1
|
33 |
-
# - php: 5.6
|
34 |
-
# env: WP_VERSION=4.5.3 WP_MULTISITE=0
|
35 |
-
# - php: 5.6
|
36 |
-
# env: WP_VERSION=4.5.3 WP_MULTISITE=1
|
37 |
-
# - php: 5.6
|
38 |
-
# env: WP_VERSION=4.4.2 WP_MULTISITE=0
|
39 |
-
# - php: 5.6
|
40 |
-
# env: WP_VERSION=4.4.2 WP_MULTISITE=1
|
41 |
-
# #
|
42 |
-
# It doesn't look like WP 4.3 will work.
|
43 |
-
# Fatal error: Class 'WP_REST_Server' not found.
|
44 |
-
# WP_REST_Server is #since 4.4.0
|
45 |
-
# #
|
46 |
-
# - php: 5.6
|
47 |
-
# env: WP_VERSION=4.3.1 WP_MULTISITE=0
|
48 |
-
# - php: 5.6
|
49 |
-
# env: WP_VERSION=4.3.1 WP_MULTISITE=1
|
50 |
-
|
51 |
-
before_script:
|
52 |
-
- bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION
|
53 |
-
|
54 |
-
script: phpunit --debug
|
1 |
+
language: php
|
2 |
+
|
3 |
+
notifications:
|
4 |
+
email:
|
5 |
+
on_success: never
|
6 |
+
on_failure: change
|
7 |
+
|
8 |
+
php:
|
9 |
+
- 5.6
|
10 |
+
|
11 |
+
env:
|
12 |
+
- WP_VERSION=latest WP_MULTISITE=0
|
13 |
+
|
14 |
+
before_script:
|
15 |
+
- npm install -g gulp-cli
|
16 |
+
- yarn install
|
17 |
+
- gulp
|
18 |
+
- bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION
|
19 |
+
|
20 |
+
script:
|
21 |
+
- phpunit --debug
|
22 |
+
- yarn run js-lint
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/boldgrid/library/README.md
CHANGED
@@ -11,6 +11,47 @@ composer require boldgrid/library
|
|
11 |
|
12 |
## Changelog ##
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
### 2.4.2 ###
|
15 |
* Bug fix: Show timeout message when saving key times out.
|
16 |
* Bug fix: Misc bug fuxes.
|
@@ -92,3 +133,21 @@ composer require boldgrid/library
|
|
92 |
### 1.1.0 ###
|
93 |
* Added action for when theme release channel changed.
|
94 |
* Added Reseller class.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
## Changelog ##
|
13 |
|
14 |
+
### 2.7.4 ###
|
15 |
+
|
16 |
+
* Bug fix: JIRA BGCONN-35 Prevent Connect Key notice on block editor pages.
|
17 |
+
|
18 |
+
### 2.7.3 ###
|
19 |
+
|
20 |
+
Release date: Nov 27th, 2018
|
21 |
+
|
22 |
+
* Feature: Adding Crio's enzo to the admin icons font.
|
23 |
+
|
24 |
+
### 2.7.2 ###
|
25 |
+
|
26 |
+
Release date: Nov 26th, 2018
|
27 |
+
|
28 |
+
* Update: Updated production build process to use composer post-autoload-dump hook.
|
29 |
+
|
30 |
+
### 2.7.1 ###
|
31 |
+
|
32 |
+
Release date: Nov 20th, 2018
|
33 |
+
|
34 |
+
* Bug fix: JIRA BGCONN-29 Fixed API key entry form; removing inputs and displaying success message.
|
35 |
+
* Update: JIRA BGCONN-32 Removed auto-update section from settings. It is still used by the Backup plugin.
|
36 |
+
* Update: JIRA BGBKUP-285 Save settings and reload to the current section.
|
37 |
+
|
38 |
+
### 2.7.0 ###
|
39 |
+
|
40 |
+
Release date: Oct 30th, 2018
|
41 |
+
|
42 |
+
* Feature: JIRA BGCONN-16 Added BoldGrid Connect settings for individual plugin and theme auto-updates.
|
43 |
+
* Feature: JS framework for Postbox settings.
|
44 |
+
* Bug fix: JIRA BGCONN-19 Fixed display when the library is used in a theme.
|
45 |
+
* Bug fix: JIRA BGBKUP-270 Dismissible notices are not staying dismissed.
|
46 |
+
|
47 |
+
### 2.6.1 ###
|
48 |
+
* Update: Theme check fixes.
|
49 |
+
|
50 |
+
### 2.6.0 ###
|
51 |
+
* Feature: JIRA BGTHEME-576 Add filter to check for is premium.
|
52 |
+
* Feature: JIRA BGCONN-23 Added mini Connect Key entry form.
|
53 |
+
* Update: Update success message after successful key entry.
|
54 |
+
|
55 |
### 2.4.2 ###
|
56 |
* Bug fix: Show timeout message when saving key times out.
|
57 |
* Bug fix: Misc bug fuxes.
|
133 |
### 1.1.0 ###
|
134 |
* Added action for when theme release channel changed.
|
135 |
* Added Reseller class.
|
136 |
+
|
137 |
+
## Development ##
|
138 |
+
|
139 |
+
### Installing Dependencies
|
140 |
+
Before you can use the development version of this plugin you must install the dependencies.
|
141 |
+
|
142 |
+
```
|
143 |
+
composer install -o --prefer-source
|
144 |
+
yarn install
|
145 |
+
gulp
|
146 |
+
```
|
147 |
+
|
148 |
+
### Auto Updates
|
149 |
+
To test / trigger auto updates, you can run the following:
|
150 |
+
|
151 |
+
```
|
152 |
+
wp option delete auto_updater.lock & wp transient delete --all && wp cron event run wp_version_check
|
153 |
+
```
|
vendor/boldgrid/library/composer.json
CHANGED
@@ -29,5 +29,10 @@
|
|
29 |
"psr-4": {
|
30 |
"Boldgrid\\Library\\Util\\": "src/Util"
|
31 |
}
|
|
|
|
|
|
|
|
|
|
|
32 |
}
|
33 |
}
|
29 |
"psr-4": {
|
30 |
"Boldgrid\\Library\\Util\\": "src/Util"
|
31 |
}
|
32 |
+
},
|
33 |
+
"scripts": {
|
34 |
+
"post-autoload-dump": [
|
35 |
+
"yarn install; gulp; rm -rf node_modules"
|
36 |
+
]
|
37 |
}
|
38 |
}
|
vendor/boldgrid/library/gulpfile.js
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var gulp = require( 'gulp' );
|
2 |
+
|
3 |
+
gulp.task( 'build', function() {
|
4 |
+
gulp.src( [ 'node_modules/jquery-toggles/toggles.min.js' ] ).pipe( gulp.dest( './build' ) );
|
5 |
+
gulp.src( [ 'node_modules/jquery-toggles/css/toggles-full.css' ] ).pipe( gulp.dest( './build' ) );
|
6 |
+
} );
|
7 |
+
|
8 |
+
gulp.task( 'default', [ 'build' ] );
|
vendor/boldgrid/library/package-lock.json
DELETED
@@ -1,1907 +0,0 @@
|
|
1 |
-
{
|
2 |
-
"requires": true,
|
3 |
-
"lockfileVersion": 1,
|
4 |
-
"dependencies": {
|
5 |
-
"abbrev": {
|
6 |
-
"version": "1.1.1",
|
7 |
-
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
8 |
-
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
|
9 |
-
"dev": true
|
10 |
-
},
|
11 |
-
"acorn": {
|
12 |
-
"version": "5.5.3",
|
13 |
-
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
|
14 |
-
"integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
|
15 |
-
"dev": true
|
16 |
-
},
|
17 |
-
"acorn-jsx": {
|
18 |
-
"version": "3.0.1",
|
19 |
-
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
|
20 |
-
"integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
|
21 |
-
"dev": true,
|
22 |
-
"requires": {
|
23 |
-
"acorn": "3.3.0"
|
24 |
-
},
|
25 |
-
"dependencies": {
|
26 |
-
"acorn": {
|
27 |
-
"version": "3.3.0",
|
28 |
-
"resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
|
29 |
-
"integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
|
30 |
-
"dev": true
|
31 |
-
}
|
32 |
-
}
|
33 |
-
},
|
34 |
-
"ajv": {
|
35 |
-
"version": "5.5.2",
|
36 |
-
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
|
37 |
-
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
|
38 |
-
"dev": true,
|
39 |
-
"requires": {
|
40 |
-
"co": "4.6.0",
|
41 |
-
"fast-deep-equal": "1.1.0",
|
42 |
-
"fast-json-stable-stringify": "2.0.0",
|
43 |
-
"json-schema-traverse": "0.3.1"
|
44 |
-
}
|
45 |
-
},
|
46 |
-
"ajv-keywords": {
|
47 |
-
"version": "2.1.1",
|
48 |
-
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
|
49 |
-
"integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
|
50 |
-
"dev": true
|
51 |
-
},
|
52 |
-
"ansi-escapes": {
|
53 |
-
"version": "3.1.0",
|
54 |
-
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
|
55 |
-
"integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==",
|
56 |
-
"dev": true
|
57 |
-
},
|
58 |
-
"ansi-regex": {
|
59 |
-
"version": "2.1.1",
|
60 |
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
|
61 |
-
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
|
62 |
-
"dev": true
|
63 |
-
},
|
64 |
-
"ansi-styles": {
|
65 |
-
"version": "2.2.1",
|
66 |
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
|
67 |
-
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
|
68 |
-
"dev": true
|
69 |
-
},
|
70 |
-
"argparse": {
|
71 |
-
"version": "1.0.10",
|
72 |
-
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
73 |
-
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
|
74 |
-
"dev": true,
|
75 |
-
"requires": {
|
76 |
-
"sprintf-js": "1.0.3"
|
77 |
-
}
|
78 |
-
},
|
79 |
-
"array-union": {
|
80 |
-
"version": "1.0.2",
|
81 |
-
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
|
82 |
-
"integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
|
83 |
-
"dev": true,
|
84 |
-
"requires": {
|
85 |
-
"array-uniq": "1.0.3"
|
86 |
-
}
|
87 |
-
},
|
88 |
-
"array-uniq": {
|
89 |
-
"version": "1.0.3",
|
90 |
-
"resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
|
91 |
-
"integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
|
92 |
-
"dev": true
|
93 |
-
},
|
94 |
-
"arrify": {
|
95 |
-
"version": "1.0.1",
|
96 |
-
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
|
97 |
-
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
|
98 |
-
"dev": true
|
99 |
-
},
|
100 |
-
"babel-code-frame": {
|
101 |
-
"version": "6.26.0",
|
102 |
-
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
|
103 |
-
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
|
104 |
-
"dev": true,
|
105 |
-
"requires": {
|
106 |
-
"chalk": "1.1.3",
|
107 |
-
"esutils": "2.0.2",
|
108 |
-
"js-tokens": "3.0.2"
|
109 |
-
},
|
110 |
-
"dependencies": {
|
111 |
-
"chalk": {
|
112 |
-
"version": "1.1.3",
|
113 |
-
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
114 |
-
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
115 |
-
"dev": true,
|
116 |
-
"requires": {
|
117 |
-
"ansi-styles": "2.2.1",
|
118 |
-
"escape-string-regexp": "1.0.5",
|
119 |
-
"has-ansi": "2.0.0",
|
120 |
-
"strip-ansi": "3.0.1",
|
121 |
-
"supports-color": "2.0.0"
|
122 |
-
}
|
123 |
-
},
|
124 |
-
"strip-ansi": {
|
125 |
-
"version": "3.0.1",
|
126 |
-
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
127 |
-
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
128 |
-
"dev": true,
|
129 |
-
"requires": {
|
130 |
-
"ansi-regex": "2.1.1"
|
131 |
-
}
|
132 |
-
}
|
133 |
-
}
|
134 |
-
},
|
135 |
-
"babel-runtime": {
|
136 |
-
"version": "6.26.0",
|
137 |
-
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
|
138 |
-
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
|
139 |
-
"dev": true,
|
140 |
-
"requires": {
|
141 |
-
"core-js": "2.5.4",
|
142 |
-
"regenerator-runtime": "0.11.1"
|
143 |
-
}
|
144 |
-
},
|
145 |
-
"balanced-match": {
|
146 |
-
"version": "1.0.0",
|
147 |
-
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
148 |
-
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
149 |
-
"dev": true
|
150 |
-
},
|
151 |
-
"boolify": {
|
152 |
-
"version": "1.0.1",
|
153 |
-
"resolved": "https://registry.npmjs.org/boolify/-/boolify-1.0.1.tgz",
|
154 |
-
"integrity": "sha1-tcCeF8rNET0Rt7s+04TMASmU2Gs=",
|
155 |
-
"dev": true
|
156 |
-
},
|
157 |
-
"brace-expansion": {
|
158 |
-
"version": "1.1.11",
|
159 |
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
160 |
-
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
161 |
-
"dev": true,
|
162 |
-
"requires": {
|
163 |
-
"balanced-match": "1.0.0",
|
164 |
-
"concat-map": "0.0.1"
|
165 |
-
}
|
166 |
-
},
|
167 |
-
"buffer-from": {
|
168 |
-
"version": "1.0.0",
|
169 |
-
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz",
|
170 |
-
"integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==",
|
171 |
-
"dev": true
|
172 |
-
},
|
173 |
-
"caller-path": {
|
174 |
-
"version": "0.1.0",
|
175 |
-
"resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
|
176 |
-
"integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
|
177 |
-
"dev": true,
|
178 |
-
"requires": {
|
179 |
-
"callsites": "0.2.0"
|
180 |
-
}
|
181 |
-
},
|
182 |
-
"callsites": {
|
183 |
-
"version": "0.2.0",
|
184 |
-
"resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
|
185 |
-
"integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=",
|
186 |
-
"dev": true
|
187 |
-
},
|
188 |
-
"camelcase": {
|
189 |
-
"version": "4.1.0",
|
190 |
-
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
|
191 |
-
"integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
|
192 |
-
"dev": true
|
193 |
-
},
|
194 |
-
"camelcase-keys": {
|
195 |
-
"version": "4.2.0",
|
196 |
-
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
|
197 |
-
"integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
|
198 |
-
"dev": true,
|
199 |
-
"requires": {
|
200 |
-
"camelcase": "4.1.0",
|
201 |
-
"map-obj": "2.0.0",
|
202 |
-
"quick-lru": "1.1.0"
|
203 |
-
}
|
204 |
-
},
|
205 |
-
"chalk": {
|
206 |
-
"version": "2.3.2",
|
207 |
-
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.2.tgz",
|
208 |
-
"integrity": "sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ==",
|
209 |
-
"dev": true,
|
210 |
-
"requires": {
|
211 |
-
"ansi-styles": "3.2.1",
|
212 |
-
"escape-string-regexp": "1.0.5",
|
213 |
-
"supports-color": "5.3.0"
|
214 |
-
},
|
215 |
-
"dependencies": {
|
216 |
-
"ansi-styles": {
|
217 |
-
"version": "3.2.1",
|
218 |
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
219 |
-
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
220 |
-
"dev": true,
|
221 |
-
"requires": {
|
222 |
-
"color-convert": "1.9.1"
|
223 |
-
}
|
224 |
-
},
|
225 |
-
"supports-color": {
|
226 |
-
"version": "5.3.0",
|
227 |
-
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.3.0.tgz",
|
228 |
-
"integrity": "sha512-0aP01LLIskjKs3lq52EC0aGBAJhLq7B2Rd8HC/DR/PtNNpcLilNmHC12O+hu0usQpo7wtHNRqtrhBwtDb0+dNg==",
|
229 |
-
"dev": true,
|
230 |
-
"requires": {
|
231 |
-
"has-flag": "3.0.0"
|
232 |
-
}
|
233 |
-
}
|
234 |
-
}
|
235 |
-
},
|
236 |
-
"chardet": {
|
237 |
-
"version": "0.4.2",
|
238 |
-
"resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz",
|
239 |
-
"integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
|
240 |
-
"dev": true
|
241 |
-
},
|
242 |
-
"circular-json": {
|
243 |
-
"version": "0.3.3",
|
244 |
-
"resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
|
245 |
-
"integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
|
246 |
-
"dev": true
|
247 |
-
},
|
248 |
-
"cli-cursor": {
|
249 |
-
"version": "2.1.0",
|
250 |
-
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
|
251 |
-
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
|
252 |
-
"dev": true,
|
253 |
-
"requires": {
|
254 |
-
"restore-cursor": "2.0.0"
|
255 |
-
}
|
256 |
-
},
|
257 |
-
"cli-width": {
|
258 |
-
"version": "2.2.0",
|
259 |
-
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
|
260 |
-
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
|
261 |
-
"dev": true
|
262 |
-
},
|
263 |
-
"cliui": {
|
264 |
-
"version": "3.2.0",
|
265 |
-
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
|
266 |
-
"integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
|
267 |
-
"dev": true,
|
268 |
-
"requires": {
|
269 |
-
"string-width": "1.0.2",
|
270 |
-
"strip-ansi": "3.0.1",
|
271 |
-
"wrap-ansi": "2.1.0"
|
272 |
-
},
|
273 |
-
"dependencies": {
|
274 |
-
"is-fullwidth-code-point": {
|
275 |
-
"version": "1.0.0",
|
276 |
-
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
277 |
-
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
278 |
-
"dev": true,
|
279 |
-
"requires": {
|
280 |
-
"number-is-nan": "1.0.1"
|
281 |
-
}
|
282 |
-
},
|
283 |
-
"string-width": {
|
284 |
-
"version": "1.0.2",
|
285 |
-
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
286 |
-
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
287 |
-
"dev": true,
|
288 |
-
"requires": {
|
289 |
-
"code-point-at": "1.1.0",
|
290 |
-
"is-fullwidth-code-point": "1.0.0",
|
291 |
-
"strip-ansi": "3.0.1"
|
292 |
-
}
|
293 |
-
},
|
294 |
-
"strip-ansi": {
|
295 |
-
"version": "3.0.1",
|
296 |
-
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
297 |
-
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
298 |
-
"dev": true,
|
299 |
-
"requires": {
|
300 |
-
"ansi-regex": "2.1.1"
|
301 |
-
}
|
302 |
-
}
|
303 |
-
}
|
304 |
-
},
|
305 |
-
"co": {
|
306 |
-
"version": "4.6.0",
|
307 |
-
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
|
308 |
-
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
|
309 |
-
"dev": true
|
310 |
-
},
|
311 |
-
"code-point-at": {
|
312 |
-
"version": "1.1.0",
|
313 |
-
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
|
314 |
-
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
|
315 |
-
"dev": true
|
316 |
-
},
|
317 |
-
"color-convert": {
|
318 |
-
"version": "1.9.1",
|
319 |
-
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
|
320 |
-
"integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
|
321 |
-
"dev": true,
|
322 |
-
"requires": {
|
323 |
-
"color-name": "1.1.3"
|
324 |
-
}
|
325 |
-
},
|
326 |
-
"color-name": {
|
327 |
-
"version": "1.1.3",
|
328 |
-
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
329 |
-
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
330 |
-
"dev": true
|
331 |
-
},
|
332 |
-
"common-tags": {
|
333 |
-
"version": "1.7.2",
|
334 |
-
"resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.7.2.tgz",
|
335 |
-
"integrity": "sha512-joj9ZlUOjCrwdbmiLqafeUSgkUM74NqhLsZtSqDmhKudaIY197zTrb8JMl31fMnCUuxwFT23eC/oWvrZzDLRJQ==",
|
336 |
-
"dev": true,
|
337 |
-
"requires": {
|
338 |
-
"babel-runtime": "6.26.0"
|
339 |
-
}
|
340 |
-
},
|
341 |
-
"concat-map": {
|
342 |
-
"version": "0.0.1",
|
343 |
-
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
344 |
-
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
345 |
-
"dev": true
|
346 |
-
},
|
347 |
-
"concat-stream": {
|
348 |
-
"version": "1.6.2",
|
349 |
-
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
|
350 |
-
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
|
351 |
-
"dev": true,
|
352 |
-
"requires": {
|
353 |
-
"buffer-from": "1.0.0",
|
354 |
-
"inherits": "2.0.3",
|
355 |
-
"readable-stream": "2.3.5",
|
356 |
-
"typedarray": "0.0.6"
|
357 |
-
}
|
358 |
-
},
|
359 |
-
"core-js": {
|
360 |
-
"version": "2.5.4",
|
361 |
-
"resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.4.tgz",
|
362 |
-
"integrity": "sha1-8si/GB8qgLkvNgEhQpzmOi8K6uA=",
|
363 |
-
"dev": true
|
364 |
-
},
|
365 |
-
"core-util-is": {
|
366 |
-
"version": "1.0.2",
|
367 |
-
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
368 |
-
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
|
369 |
-
"dev": true
|
370 |
-
},
|
371 |
-
"cross-spawn": {
|
372 |
-
"version": "5.1.0",
|
373 |
-
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
|
374 |
-
"integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
|
375 |
-
"dev": true,
|
376 |
-
"requires": {
|
377 |
-
"lru-cache": "4.1.2",
|
378 |
-
"shebang-command": "1.2.0",
|
379 |
-
"which": "1.3.0"
|
380 |
-
}
|
381 |
-
},
|
382 |
-
"debug": {
|
383 |
-
"version": "3.1.0",
|
384 |
-
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
|
385 |
-
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
|
386 |
-
"dev": true,
|
387 |
-
"requires": {
|
388 |
-
"ms": "2.0.0"
|
389 |
-
}
|
390 |
-
},
|
391 |
-
"decamelize": {
|
392 |
-
"version": "1.2.0",
|
393 |
-
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
|
394 |
-
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
|
395 |
-
"dev": true
|
396 |
-
},
|
397 |
-
"deep-is": {
|
398 |
-
"version": "0.1.3",
|
399 |
-
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
|
400 |
-
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
|
401 |
-
"dev": true
|
402 |
-
},
|
403 |
-
"del": {
|
404 |
-
"version": "2.2.2",
|
405 |
-
"resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
|
406 |
-
"integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
|
407 |
-
"dev": true,
|
408 |
-
"requires": {
|
409 |
-
"globby": "5.0.0",
|
410 |
-
"is-path-cwd": "1.0.0",
|
411 |
-
"is-path-in-cwd": "1.0.1",
|
412 |
-
"object-assign": "4.1.1",
|
413 |
-
"pify": "2.3.0",
|
414 |
-
"pinkie-promise": "2.0.1",
|
415 |
-
"rimraf": "2.6.2"
|
416 |
-
}
|
417 |
-
},
|
418 |
-
"dlv": {
|
419 |
-
"version": "1.1.1",
|
420 |
-
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.1.tgz",
|
421 |
-
"integrity": "sha512-b/kUB0D6RgRGG69h5ExsLnUAwfs5Jndfk1pU2ao7/9mVdsxpUBlkFdTkNJThXw1jrLXpUbIIg+h3um5zXi6sFA==",
|
422 |
-
"dev": true
|
423 |
-
},
|
424 |
-
"doctrine": {
|
425 |
-
"version": "2.1.0",
|
426 |
-
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
|
427 |
-
"integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
|
428 |
-
"dev": true,
|
429 |
-
"requires": {
|
430 |
-
"esutils": "2.0.2"
|
431 |
-
}
|
432 |
-
},
|
433 |
-
"dom-serializer": {
|
434 |
-
"version": "0.1.0",
|
435 |
-
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
|
436 |
-
"integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
|
437 |
-
"dev": true,
|
438 |
-
"requires": {
|
439 |
-
"domelementtype": "1.1.3",
|
440 |
-
"entities": "1.1.1"
|
441 |
-
},
|
442 |
-
"dependencies": {
|
443 |
-
"domelementtype": {
|
444 |
-
"version": "1.1.3",
|
445 |
-
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
|
446 |
-
"integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
|
447 |
-
"dev": true
|
448 |
-
}
|
449 |
-
}
|
450 |
-
},
|
451 |
-
"domelementtype": {
|
452 |
-
"version": "1.3.0",
|
453 |
-
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
|
454 |
-
"integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
|
455 |
-
"dev": true
|
456 |
-
},
|
457 |
-
"domhandler": {
|
458 |
-
"version": "2.4.1",
|
459 |
-
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz",
|
460 |
-
"integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=",
|
461 |
-
"dev": true,
|
462 |
-
"requires": {
|
463 |
-
"domelementtype": "1.3.0"
|
464 |
-
}
|
465 |
-
},
|
466 |
-
"domutils": {
|
467 |
-
"version": "1.7.0",
|
468 |
-
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
|
469 |
-
"integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
|
470 |
-
"dev": true,
|
471 |
-
"requires": {
|
472 |
-
"dom-serializer": "0.1.0",
|
473 |
-
"domelementtype": "1.3.0"
|
474 |
-
}
|
475 |
-
},
|
476 |
-
"entities": {
|
477 |
-
"version": "1.1.1",
|
478 |
-
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
|
479 |
-
"integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
|
480 |
-
"dev": true
|
481 |
-
},
|
482 |
-
"escape-string-regexp": {
|
483 |
-
"version": "1.0.5",
|
484 |
-
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
485 |
-
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
486 |
-
"dev": true
|
487 |
-
},
|
488 |
-
"eslint": {
|
489 |
-
"version": "4.19.1",
|
490 |
-
"resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz",
|
491 |
-
"integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==",
|
492 |
-
"dev": true,
|
493 |
-
"requires": {
|
494 |
-
"ajv": "5.5.2",
|
495 |
-
"babel-code-frame": "6.26.0",
|
496 |
-
"chalk": "2.3.2",
|
497 |
-
"concat-stream": "1.6.2",
|
498 |
-
"cross-spawn": "5.1.0",
|
499 |
-
"debug": "3.1.0",
|
500 |
-
"doctrine": "2.1.0",
|
501 |
-
"eslint-scope": "3.7.1",
|
502 |
-
"eslint-visitor-keys": "1.0.0",
|
503 |
-
"espree": "3.5.4",
|
504 |
-
"esquery": "1.0.0",
|
505 |
-
"esutils": "2.0.2",
|
506 |
-
"file-entry-cache": "2.0.0",
|
507 |
-
"functional-red-black-tree": "1.0.1",
|
508 |
-
"glob": "7.1.2",
|
509 |
-
"globals": "11.4.0",
|
510 |
-
"ignore": "3.3.7",
|
511 |
-
"imurmurhash": "0.1.4",
|
512 |
-
"inquirer": "3.3.0",
|
513 |
-
"is-resolvable": "1.1.0",
|
514 |
-
"js-yaml": "3.11.0",
|
515 |
-
"json-stable-stringify-without-jsonify": "1.0.1",
|
516 |
-
"levn": "0.3.0",
|
517 |
-
"lodash": "4.17.5",
|
518 |
-
"minimatch": "3.0.4",
|
519 |
-
"mkdirp": "0.5.1",
|
520 |
-
"natural-compare": "1.4.0",
|
521 |
-
"optionator": "0.8.2",
|
522 |
-
"path-is-inside": "1.0.2",
|
523 |
-
"pluralize": "7.0.0",
|
524 |
-
"progress": "2.0.0",
|
525 |
-
"regexpp": "1.1.0",
|
526 |
-
"require-uncached": "1.0.3",
|
527 |
-
"semver": "5.5.0",
|
528 |
-
"strip-ansi": "4.0.0",
|
529 |
-
"strip-json-comments": "2.0.1",
|
530 |
-
"table": "4.0.2",
|
531 |
-
"text-table": "0.2.0"
|
532 |
-
}
|
533 |
-
},
|
534 |
-
"eslint-config-wordpress": {
|
535 |
-
"version": "2.0.0",
|
536 |
-
"resolved": "https://registry.npmjs.org/eslint-config-wordpress/-/eslint-config-wordpress-2.0.0.tgz",
|
537 |
-
"integrity": "sha1-UgEgbGlk1kgxUjLt9t+9LpJeTNY=",
|
538 |
-
"dev": true
|
539 |
-
},
|
540 |
-
"eslint-plugin-html": {
|
541 |
-
"version": "4.0.2",
|
542 |
-
"resolved": "https://registry.npmjs.org/eslint-plugin-html/-/eslint-plugin-html-4.0.2.tgz",
|
543 |
-
"integrity": "sha512-CrQd0F8GWdNWnu4PFrYZl+LjUCXNVy2h0uhDMtnf/7VKc9HRcnkXSrlg0BSGfptZPSzmwnnwCaREAa9+fnQhYw==",
|
544 |
-
"dev": true,
|
545 |
-
"requires": {
|
546 |
-
"htmlparser2": "3.9.2"
|
547 |
-
}
|
548 |
-
},
|
549 |
-
"eslint-scope": {
|
550 |
-
"version": "3.7.1",
|
551 |
-
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
|
552 |
-
"integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
|
553 |
-
"dev": true,
|
554 |
-
"requires": {
|
555 |
-
"esrecurse": "4.2.1",
|
556 |
-
"estraverse": "4.2.0"
|
557 |
-
}
|
558 |
-
},
|
559 |
-
"eslint-visitor-keys": {
|
560 |
-
"version": "1.0.0",
|
561 |
-
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
|
562 |
-
"integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
|
563 |
-
"dev": true
|
564 |
-
},
|
565 |
-
"espree": {
|
566 |
-
"version": "3.5.4",
|
567 |
-
"resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
|
568 |
-
"integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
|
569 |
-
"dev": true,
|
570 |
-
"requires": {
|
571 |
-
"acorn": "5.5.3",
|
572 |
-
"acorn-jsx": "3.0.1"
|
573 |
-
}
|
574 |
-
},
|
575 |
-
"esprima": {
|
576 |
-
"version": "4.0.0",
|
577 |
-
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
|
578 |
-
"integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
|
579 |
-
"dev": true
|
580 |
-
},
|
581 |
-
"esquery": {
|
582 |
-
"version": "1.0.0",
|
583 |
-
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
|
584 |
-
"integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=",
|
585 |
-
"dev": true,
|
586 |
-
"requires": {
|
587 |
-
"estraverse": "4.2.0"
|
588 |
-
}
|
589 |
-
},
|
590 |
-
"esrecurse": {
|
591 |
-
"version": "4.2.1",
|
592 |
-
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
|
593 |
-
"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
|
594 |
-
"dev": true,
|
595 |
-
"requires": {
|
596 |
-
"estraverse": "4.2.0"
|
597 |
-
}
|
598 |
-
},
|
599 |
-
"estraverse": {
|
600 |
-
"version": "4.2.0",
|
601 |
-
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
|
602 |
-
"integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
|
603 |
-
"dev": true
|
604 |
-
},
|
605 |
-
"esutils": {
|
606 |
-
"version": "2.0.2",
|
607 |
-
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
|
608 |
-
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
|
609 |
-
"dev": true
|
610 |
-
},
|
611 |
-
"execa": {
|
612 |
-
"version": "0.7.0",
|
613 |
-
"resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
|
614 |
-
"integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
|
615 |
-
"dev": true,
|
616 |
-
"requires": {
|
617 |
-
"cross-spawn": "5.1.0",
|
618 |
-
"get-stream": "3.0.0",
|
619 |
-
"is-stream": "1.1.0",
|
620 |
-
"npm-run-path": "2.0.2",
|
621 |
-
"p-finally": "1.0.0",
|
622 |
-
"signal-exit": "3.0.2",
|
623 |
-
"strip-eof": "1.0.0"
|
624 |
-
}
|
625 |
-
},
|
626 |
-
"external-editor": {
|
627 |
-
"version": "2.1.0",
|
628 |
-
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz",
|
629 |
-
"integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==",
|
630 |
-
"dev": true,
|
631 |
-
"requires": {
|
632 |
-
"chardet": "0.4.2",
|
633 |
-
"iconv-lite": "0.4.19",
|
634 |
-
"tmp": "0.0.33"
|
635 |
-
}
|
636 |
-
},
|
637 |
-
"fast-deep-equal": {
|
638 |
-
"version": "1.1.0",
|
639 |
-
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
|
640 |
-
"integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
|
641 |
-
"dev": true
|
642 |
-
},
|
643 |
-
"fast-json-stable-stringify": {
|
644 |
-
"version": "2.0.0",
|
645 |
-
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
|
646 |
-
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
|
647 |
-
"dev": true
|
648 |
-
},
|
649 |
-
"fast-levenshtein": {
|
650 |
-
"version": "2.0.6",
|
651 |
-
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
|
652 |
-
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
|
653 |
-
"dev": true
|
654 |
-
},
|
655 |
-
"figures": {
|
656 |
-
"version": "2.0.0",
|
657 |
-
"resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
|
658 |
-
"integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
|
659 |
-
"dev": true,
|
660 |
-
"requires": {
|
661 |
-
"escape-string-regexp": "1.0.5"
|
662 |
-
}
|
663 |
-
},
|
664 |
-
"file-entry-cache": {
|
665 |
-
"version": "2.0.0",
|
666 |
-
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
|
667 |
-
"integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
|
668 |
-
"dev": true,
|
669 |
-
"requires": {
|
670 |
-
"flat-cache": "1.3.0",
|
671 |
-
"object-assign": "4.1.1"
|
672 |
-
}
|
673 |
-
},
|
674 |
-
"find-up": {
|
675 |
-
"version": "2.1.0",
|
676 |
-
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
|
677 |
-
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
|
678 |
-
"dev": true,
|
679 |
-
"requires": {
|
680 |
-
"locate-path": "2.0.0"
|
681 |
-
}
|
682 |
-
},
|
683 |
-
"flat-cache": {
|
684 |
-
"version": "1.3.0",
|
685 |
-
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
|
686 |
-
"integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
|
687 |
-
"dev": true,
|
688 |
-
"requires": {
|
689 |
-
"circular-json": "0.3.3",
|
690 |
-
"del": "2.2.2",
|
691 |
-
"graceful-fs": "4.1.11",
|
692 |
-
"write": "0.2.1"
|
693 |
-
}
|
694 |
-
},
|
695 |
-
"fs.realpath": {
|
696 |
-
"version": "1.0.0",
|
697 |
-
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
698 |
-
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
699 |
-
"dev": true
|
700 |
-
},
|
701 |
-
"functional-red-black-tree": {
|
702 |
-
"version": "1.0.1",
|
703 |
-
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
|
704 |
-
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
|
705 |
-
"dev": true
|
706 |
-
},
|
707 |
-
"get-caller-file": {
|
708 |
-
"version": "1.0.2",
|
709 |
-
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
|
710 |
-
"integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
|
711 |
-
"dev": true
|
712 |
-
},
|
713 |
-
"get-stdin": {
|
714 |
-
"version": "5.0.1",
|
715 |
-
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
|
716 |
-
"integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=",
|
717 |
-
"dev": true
|
718 |
-
},
|
719 |
-
"get-stream": {
|
720 |
-
"version": "3.0.0",
|
721 |
-
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
|
722 |
-
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
|
723 |
-
"dev": true
|
724 |
-
},
|
725 |
-
"glob": {
|
726 |
-
"version": "7.1.2",
|
727 |
-
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
|
728 |
-
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
|
729 |
-
"dev": true,
|
730 |
-
"requires": {
|
731 |
-
"fs.realpath": "1.0.0",
|
732 |
-
"inflight": "1.0.6",
|
733 |
-
"inherits": "2.0.3",
|
734 |
-
"minimatch": "3.0.4",
|
735 |
-
"once": "1.4.0",
|
736 |
-
"path-is-absolute": "1.0.1"
|
737 |
-
}
|
738 |
-
},
|
739 |
-
"globals": {
|
740 |
-
"version": "11.4.0",
|
741 |
-
"resolved": "https://registry.npmjs.org/globals/-/globals-11.4.0.tgz",
|
742 |
-
"integrity": "sha512-Dyzmifil8n/TmSqYDEXbm+C8yitzJQqQIlJQLNRMwa+BOUJpRC19pyVeN12JAjt61xonvXjtff+hJruTRXn5HA==",
|
743 |
-
"dev": true
|
744 |
-
},
|
745 |
-
"globby": {
|
746 |
-
"version": "5.0.0",
|
747 |
-
"resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
|
748 |
-
"integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
|
749 |
-
"dev": true,
|
750 |
-
"requires": {
|
751 |
-
"array-union": "1.0.2",
|
752 |
-
"arrify": "1.0.1",
|
753 |
-
"glob": "7.1.2",
|
754 |
-
"object-assign": "4.1.1",
|
755 |
-
"pify": "2.3.0",
|
756 |
-
"pinkie-promise": "2.0.1"
|
757 |
-
}
|
758 |
-
},
|
759 |
-
"graceful-fs": {
|
760 |
-
"version": "4.1.11",
|
761 |
-
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
|
762 |
-
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
|
763 |
-
"dev": true
|
764 |
-
},
|
765 |
-
"has-ansi": {
|
766 |
-
"version": "2.0.0",
|
767 |
-
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
|
768 |
-
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
|
769 |
-
"dev": true,
|
770 |
-
"requires": {
|
771 |
-
"ansi-regex": "2.1.1"
|
772 |
-
}
|
773 |
-
},
|
774 |
-
"has-flag": {
|
775 |
-
"version": "3.0.0",
|
776 |
-
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
777 |
-
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
|
778 |
-
"dev": true
|
779 |
-
},
|
780 |
-
"htmlparser2": {
|
781 |
-
"version": "3.9.2",
|
782 |
-
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz",
|
783 |
-
"integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=",
|
784 |
-
"dev": true,
|
785 |
-
"requires": {
|
786 |
-
"domelementtype": "1.3.0",
|
787 |
-
"domhandler": "2.4.1",
|
788 |
-
"domutils": "1.7.0",
|
789 |
-
"entities": "1.1.1",
|
790 |
-
"inherits": "2.0.3",
|
791 |
-
"readable-stream": "2.3.5"
|
792 |
-
}
|
793 |
-
},
|
794 |
-
"iconv-lite": {
|
795 |
-
"version": "0.4.19",
|
796 |
-
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
|
797 |
-
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
|
798 |
-
"dev": true
|
799 |
-
},
|
800 |
-
"ignore": {
|
801 |
-
"version": "3.3.7",
|
802 |
-
"resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
|
803 |
-
"integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==",
|
804 |
-
"dev": true
|
805 |
-
},
|
806 |
-
"imurmurhash": {
|
807 |
-
"version": "0.1.4",
|
808 |
-
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
|
809 |
-
"integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
|
810 |
-
"dev": true
|
811 |
-
},
|
812 |
-
"indent-string": {
|
813 |
-
"version": "3.2.0",
|
814 |
-
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
|
815 |
-
"integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
|
816 |
-
"dev": true
|
817 |
-
},
|
818 |
-
"inflight": {
|
819 |
-
"version": "1.0.6",
|
820 |
-
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
821 |
-
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
822 |
-
"dev": true,
|
823 |
-
"requires": {
|
824 |
-
"once": "1.4.0",
|
825 |
-
"wrappy": "1.0.2"
|
826 |
-
}
|
827 |
-
},
|
828 |
-
"inherits": {
|
829 |
-
"version": "2.0.3",
|
830 |
-
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
831 |
-
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
832 |
-
"dev": true
|
833 |
-
},
|
834 |
-
"inquirer": {
|
835 |
-
"version": "3.3.0",
|
836 |
-
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
|
837 |
-
"integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
|
838 |
-
"dev": true,
|
839 |
-
"requires": {
|
840 |
-
"ansi-escapes": "3.1.0",
|
841 |
-
"chalk": "2.3.2",
|
842 |
-
"cli-cursor": "2.1.0",
|
843 |
-
"cli-width": "2.2.0",
|
844 |
-
"external-editor": "2.1.0",
|
845 |
-
"figures": "2.0.0",
|
846 |
-
"lodash": "4.17.5",
|
847 |
-
"mute-stream": "0.0.7",
|
848 |
-
"run-async": "2.3.0",
|
849 |
-
"rx-lite": "4.0.8",
|
850 |
-
"rx-lite-aggregates": "4.0.8",
|
851 |
-
"string-width": "2.1.1",
|
852 |
-
"strip-ansi": "4.0.0",
|
853 |
-
"through": "2.3.8"
|
854 |
-
}
|
855 |
-
},
|
856 |
-
"invert-kv": {
|
857 |
-
"version": "1.0.0",
|
858 |
-
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
|
859 |
-
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
|
860 |
-
"dev": true
|
861 |
-
},
|
862 |
-
"is-fullwidth-code-point": {
|
863 |
-
"version": "2.0.0",
|
864 |
-
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
|
865 |
-
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
|
866 |
-
"dev": true
|
867 |
-
},
|
868 |
-
"is-path-cwd": {
|
869 |
-
"version": "1.0.0",
|
870 |
-
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
|
871 |
-
"integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
|
872 |
-
"dev": true
|
873 |
-
},
|
874 |
-
"is-path-in-cwd": {
|
875 |
-
"version": "1.0.1",
|
876 |
-
"resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
|
877 |
-
"integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
|
878 |
-
"dev": true,
|
879 |
-
"requires": {
|
880 |
-
"is-path-inside": "1.0.1"
|
881 |
-
}
|
882 |
-
},
|
883 |
-
"is-path-inside": {
|
884 |
-
"version": "1.0.1",
|
885 |
-
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
|
886 |
-
"integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
|
887 |
-
"dev": true,
|
888 |
-
"requires": {
|
889 |
-
"path-is-inside": "1.0.2"
|
890 |
-
}
|
891 |
-
},
|
892 |
-
"is-promise": {
|
893 |
-
"version": "2.1.0",
|
894 |
-
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
|
895 |
-
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
|
896 |
-
"dev": true
|
897 |
-
},
|
898 |
-
"is-resolvable": {
|
899 |
-
"version": "1.1.0",
|
900 |
-
"resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
|
901 |
-
"integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
|
902 |
-
"dev": true
|
903 |
-
},
|
904 |
-
"is-stream": {
|
905 |
-
"version": "1.1.0",
|
906 |
-
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
|
907 |
-
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
|
908 |
-
"dev": true
|
909 |
-
},
|
910 |
-
"isarray": {
|
911 |
-
"version": "1.0.0",
|
912 |
-
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
913 |
-
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
|
914 |
-
"dev": true
|
915 |
-
},
|
916 |
-
"isexe": {
|
917 |
-
"version": "2.0.0",
|
918 |
-
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
|
919 |
-
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
|
920 |
-
"dev": true
|
921 |
-
},
|
922 |
-
"js-tokens": {
|
923 |
-
"version": "3.0.2",
|
924 |
-
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
|
925 |
-
"integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
|
926 |
-
"dev": true
|
927 |
-
},
|
928 |
-
"js-yaml": {
|
929 |
-
"version": "3.11.0",
|
930 |
-
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
|
931 |
-
"integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
|
932 |
-
"dev": true,
|
933 |
-
"requires": {
|
934 |
-
"argparse": "1.0.10",
|
935 |
-
"esprima": "4.0.0"
|
936 |
-
}
|
937 |
-
},
|
938 |
-
"json-schema-traverse": {
|
939 |
-
"version": "0.3.1",
|
940 |
-
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
|
941 |
-
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
|
942 |
-
"dev": true
|
943 |
-
},
|
944 |
-
"json-stable-stringify-without-jsonify": {
|
945 |
-
"version": "1.0.1",
|
946 |
-
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
|
947 |
-
"integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
|
948 |
-
"dev": true
|
949 |
-
},
|
950 |
-
"lcid": {
|
951 |
-
"version": "1.0.0",
|
952 |
-
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
|
953 |
-
"integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
|
954 |
-
"dev": true,
|
955 |
-
"requires": {
|
956 |
-
"invert-kv": "1.0.0"
|
957 |
-
}
|
958 |
-
},
|
959 |
-
"levn": {
|
960 |
-
"version": "0.3.0",
|
961 |
-
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
962 |
-
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
|
963 |
-
"dev": true,
|
964 |
-
"requires": {
|
965 |
-
"prelude-ls": "1.1.2",
|
966 |
-
"type-check": "0.3.2"
|
967 |
-
}
|
968 |
-
},
|
969 |
-
"locate-path": {
|
970 |
-
"version": "2.0.0",
|
971 |
-
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
|
972 |
-
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
|
973 |
-
"dev": true,
|
974 |
-
"requires": {
|
975 |
-
"p-locate": "2.0.0",
|
976 |
-
"path-exists": "3.0.0"
|
977 |
-
}
|
978 |
-
},
|
979 |
-
"lodash": {
|
980 |
-
"version": "4.17.5",
|
981 |
-
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
|
982 |
-
"integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
|
983 |
-
"dev": true
|
984 |
-
},
|
985 |
-
"lodash.memoize": {
|
986 |
-
"version": "4.1.2",
|
987 |
-
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
|
988 |
-
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
|
989 |
-
"dev": true
|
990 |
-
},
|
991 |
-
"lodash.merge": {
|
992 |
-
"version": "4.6.1",
|
993 |
-
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.1.tgz",
|
994 |
-
"integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==",
|
995 |
-
"dev": true
|
996 |
-
},
|
997 |
-
"lodash.unescape": {
|
998 |
-
"version": "4.0.1",
|
999 |
-
"resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz",
|
1000 |
-
"integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=",
|
1001 |
-
"dev": true
|
1002 |
-
},
|
1003 |
-
"loglevel": {
|
1004 |
-
"version": "1.6.1",
|
1005 |
-
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz",
|
1006 |
-
"integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=",
|
1007 |
-
"dev": true
|
1008 |
-
},
|
1009 |
-
"loglevel-colored-level-prefix": {
|
1010 |
-
"version": "1.0.0",
|
1011 |
-
"resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz",
|
1012 |
-
"integrity": "sha1-akAhj9x64V/HbD0PPmdsRlOIYD4=",
|
1013 |
-
"dev": true,
|
1014 |
-
"requires": {
|
1015 |
-
"chalk": "1.1.3",
|
1016 |
-
"loglevel": "1.6.1"
|
1017 |
-
},
|
1018 |
-
"dependencies": {
|
1019 |
-
"chalk": {
|
1020 |
-
"version": "1.1.3",
|
1021 |
-
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
1022 |
-
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
1023 |
-
"dev": true,
|
1024 |
-
"requires": {
|
1025 |
-
"ansi-styles": "2.2.1",
|
1026 |
-
"escape-string-regexp": "1.0.5",
|
1027 |
-
"has-ansi": "2.0.0",
|
1028 |
-
"strip-ansi": "3.0.1",
|
1029 |
-
"supports-color": "2.0.0"
|
1030 |
-
}
|
1031 |
-
},
|
1032 |
-
"strip-ansi": {
|
1033 |
-
"version": "3.0.1",
|
1034 |
-
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
1035 |
-
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
1036 |
-
"dev": true,
|
1037 |
-
"requires": {
|
1038 |
-
"ansi-regex": "2.1.1"
|
1039 |
-
}
|
1040 |
-
}
|
1041 |
-
}
|
1042 |
-
},
|
1043 |
-
"lru-cache": {
|
1044 |
-
"version": "4.1.2",
|
1045 |
-
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz",
|
1046 |
-
"integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==",
|
1047 |
-
"dev": true,
|
1048 |
-
"requires": {
|
1049 |
-
"pseudomap": "1.0.2",
|
1050 |
-
"yallist": "2.1.2"
|
1051 |
-
}
|
1052 |
-
},
|
1053 |
-
"make-plural": {
|
1054 |
-
"version": "4.1.1",
|
1055 |
-
"resolved": "https://registry.npmjs.org/make-plural/-/make-plural-4.1.1.tgz",
|
1056 |
-
"integrity": "sha512-triaMVDDYiB+OU1Mz6ht74+z0Bb/bzNESeMwRboSprI3GRWbOvfxEnpWI0eDixQtMPrC2C0revd4wmuck5GcoQ==",
|
1057 |
-
"dev": true,
|
1058 |
-
"requires": {
|
1059 |
-
"minimist": "1.2.0"
|
1060 |
-
},
|
1061 |
-
"dependencies": {
|
1062 |
-
"minimist": {
|
1063 |
-
"version": "1.2.0",
|
1064 |
-
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
|
1065 |
-
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
|
1066 |
-
"dev": true,
|
1067 |
-
"optional": true
|
1068 |
-
}
|
1069 |
-
}
|
1070 |
-
},
|
1071 |
-
"map-obj": {
|
1072 |
-
"version": "2.0.0",
|
1073 |
-
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
|
1074 |
-
"integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
|
1075 |
-
"dev": true
|
1076 |
-
},
|
1077 |
-
"mem": {
|
1078 |
-
"version": "1.1.0",
|
1079 |
-
"resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz",
|
1080 |
-
"integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
|
1081 |
-
"dev": true,
|
1082 |
-
"requires": {
|
1083 |
-
"mimic-fn": "1.2.0"
|
1084 |
-
}
|
1085 |
-
},
|
1086 |
-
"messageformat": {
|
1087 |
-
"version": "1.1.1",
|
1088 |
-
"resolved": "https://registry.npmjs.org/messageformat/-/messageformat-1.1.1.tgz",
|
1089 |
-
"integrity": "sha512-Q0uXcDtF5pEZsVSyhzDOGgZZK6ykN79VY9CwU3Nv0gsqx62BjdJW0MT+63UkHQ4exe3HE33ZlxR2/YwoJarRTg==",
|
1090 |
-
"dev": true,
|
1091 |
-
"requires": {
|
1092 |
-
"glob": "7.0.6",
|
1093 |
-
"make-plural": "4.1.1",
|
1094 |
-
"messageformat-parser": "1.1.0",
|
1095 |
-
"nopt": "3.0.6",
|
1096 |
-
"reserved-words": "0.1.2"
|
1097 |
-
},
|
1098 |
-
"dependencies": {
|
1099 |
-
"glob": {
|
1100 |
-
"version": "7.0.6",
|
1101 |
-
"resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
|
1102 |
-
"integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
|
1103 |
-
"dev": true,
|
1104 |
-
"requires": {
|
1105 |
-
"fs.realpath": "1.0.0",
|
1106 |
-
"inflight": "1.0.6",
|
1107 |
-
"inherits": "2.0.3",
|
1108 |
-
"minimatch": "3.0.4",
|
1109 |
-
"once": "1.4.0",
|
1110 |
-
"path-is-absolute": "1.0.1"
|
1111 |
-
}
|
1112 |
-
}
|
1113 |
-
}
|
1114 |
-
},
|
1115 |
-
"messageformat-parser": {
|
1116 |
-
"version": "1.1.0",
|
1117 |
-
"resolved": "https://registry.npmjs.org/messageformat-parser/-/messageformat-parser-1.1.0.tgz",
|
1118 |
-
"integrity": "sha512-Hwem6G3MsKDLS1FtBRGIs8T50P1Q00r3srS6QJePCFbad9fq0nYxwf3rnU2BreApRGhmpKMV7oZI06Sy1c9TPA==",
|
1119 |
-
"dev": true
|
1120 |
-
},
|
1121 |
-
"mimic-fn": {
|
1122 |
-
"version": "1.2.0",
|
1123 |
-
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
|
1124 |
-
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
|
1125 |
-
"dev": true
|
1126 |
-
},
|
1127 |
-
"minimatch": {
|
1128 |
-
"version": "3.0.4",
|
1129 |
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
1130 |
-
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
1131 |
-
"dev": true,
|
1132 |
-
"requires": {
|
1133 |
-
"brace-expansion": "1.1.11"
|
1134 |
-
}
|
1135 |
-
},
|
1136 |
-
"minimist": {
|
1137 |
-
"version": "0.0.8",
|
1138 |
-
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
|
1139 |
-
"integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
|
1140 |
-
"dev": true
|
1141 |
-
},
|
1142 |
-
"mkdirp": {
|
1143 |
-
"version": "0.5.1",
|
1144 |
-
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
|
1145 |
-
"integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
|
1146 |
-
"dev": true,
|
1147 |
-
"requires": {
|
1148 |
-
"minimist": "0.0.8"
|
1149 |
-
}
|
1150 |
-
},
|
1151 |
-
"ms": {
|
1152 |
-
"version": "2.0.0",
|
1153 |
-
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
1154 |
-
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
|
1155 |
-
"dev": true
|
1156 |
-
},
|
1157 |
-
"mute-stream": {
|
1158 |
-
"version": "0.0.7",
|
1159 |
-
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
|
1160 |
-
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
|
1161 |
-
"dev": true
|
1162 |
-
},
|
1163 |
-
"natural-compare": {
|
1164 |
-
"version": "1.4.0",
|
1165 |
-
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
|
1166 |
-
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
|
1167 |
-
"dev": true
|
1168 |
-
},
|
1169 |
-
"nopt": {
|
1170 |
-
"version": "3.0.6",
|
1171 |
-
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
|
1172 |
-
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
|
1173 |
-
"dev": true,
|
1174 |
-
"requires": {
|
1175 |
-
"abbrev": "1.1.1"
|
1176 |
-
}
|
1177 |
-
},
|
1178 |
-
"npm-run-path": {
|
1179 |
-
"version": "2.0.2",
|
1180 |
-
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
|
1181 |
-
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
|
1182 |
-
"dev": true,
|
1183 |
-
"requires": {
|
1184 |
-
"path-key": "2.0.1"
|
1185 |
-
}
|
1186 |
-
},
|
1187 |
-
"number-is-nan": {
|
1188 |
-
"version": "1.0.1",
|
1189 |
-
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
|
1190 |
-
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
|
1191 |
-
"dev": true
|
1192 |
-
},
|
1193 |
-
"object-assign": {
|
1194 |
-
"version": "4.1.1",
|
1195 |
-
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
1196 |
-
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
|
1197 |
-
"dev": true
|
1198 |
-
},
|
1199 |
-
"once": {
|
1200 |
-
"version": "1.4.0",
|
1201 |
-
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
1202 |
-
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
1203 |
-
"dev": true,
|
1204 |
-
"requires": {
|
1205 |
-
"wrappy": "1.0.2"
|
1206 |
-
}
|
1207 |
-
},
|
1208 |
-
"onetime": {
|
1209 |
-
"version": "2.0.1",
|
1210 |
-
"resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
|
1211 |
-
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
|
1212 |
-
"dev": true,
|
1213 |
-
"requires": {
|
1214 |
-
"mimic-fn": "1.2.0"
|
1215 |
-
}
|
1216 |
-
},
|
1217 |
-
"optionator": {
|
1218 |
-
"version": "0.8.2",
|
1219 |
-
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
|
1220 |
-
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
|
1221 |
-
"dev": true,
|
1222 |
-
"requires": {
|
1223 |
-
"deep-is": "0.1.3",
|
1224 |
-
"fast-levenshtein": "2.0.6",
|
1225 |
-
"levn": "0.3.0",
|
1226 |
-
"prelude-ls": "1.1.2",
|
1227 |
-
"type-check": "0.3.2",
|
1228 |
-
"wordwrap": "1.0.0"
|
1229 |
-
}
|
1230 |
-
},
|
1231 |
-
"os-locale": {
|
1232 |
-
"version": "2.1.0",
|
1233 |
-
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz",
|
1234 |
-
"integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==",
|
1235 |
-
"dev": true,
|
1236 |
-
"requires": {
|
1237 |
-
"execa": "0.7.0",
|
1238 |
-
"lcid": "1.0.0",
|
1239 |
-
"mem": "1.1.0"
|
1240 |
-
}
|
1241 |
-
},
|
1242 |
-
"os-tmpdir": {
|
1243 |
-
"version": "1.0.2",
|
1244 |
-
"resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
|
1245 |
-
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
|
1246 |
-
"dev": true
|
1247 |
-
},
|
1248 |
-
"p-finally": {
|
1249 |
-
"version": "1.0.0",
|
1250 |
-
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
|
1251 |
-
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
|
1252 |
-
"dev": true
|
1253 |
-
},
|
1254 |
-
"p-limit": {
|
1255 |
-
"version": "1.2.0",
|
1256 |
-
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
|
1257 |
-
"integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
|
1258 |
-
"dev": true,
|
1259 |
-
"requires": {
|
1260 |
-
"p-try": "1.0.0"
|
1261 |
-
}
|
1262 |
-
},
|
1263 |
-
"p-locate": {
|
1264 |
-
"version": "2.0.0",
|
1265 |
-
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
|
1266 |
-
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
|
1267 |
-
"dev": true,
|
1268 |
-
"requires": {
|
1269 |
-
"p-limit": "1.2.0"
|
1270 |
-
}
|
1271 |
-
},
|
1272 |
-
"p-try": {
|
1273 |
-
"version": "1.0.0",
|
1274 |
-
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
|
1275 |
-
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
|
1276 |
-
"dev": true
|
1277 |
-
},
|
1278 |
-
"path-exists": {
|
1279 |
-
"version": "3.0.0",
|
1280 |
-
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
|
1281 |
-
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
|
1282 |
-
"dev": true
|
1283 |
-
},
|
1284 |
-
"path-is-absolute": {
|
1285 |
-
"version": "1.0.1",
|
1286 |
-
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
1287 |
-
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
1288 |
-
"dev": true
|
1289 |
-
},
|
1290 |
-
"path-is-inside": {
|
1291 |
-
"version": "1.0.2",
|
1292 |
-
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
|
1293 |
-
"integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
|
1294 |
-
"dev": true
|
1295 |
-
},
|
1296 |
-
"path-key": {
|
1297 |
-
"version": "2.0.1",
|
1298 |
-
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
|
1299 |
-
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
|
1300 |
-
"dev": true
|
1301 |
-
},
|
1302 |
-
"pify": {
|
1303 |
-
"version": "2.3.0",
|
1304 |
-
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
1305 |
-
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
|
1306 |
-
"dev": true
|
1307 |
-
},
|
1308 |
-
"pinkie": {
|
1309 |
-
"version": "2.0.4",
|
1310 |
-
"resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
|
1311 |
-
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
|
1312 |
-
"dev": true
|
1313 |
-
},
|
1314 |
-
"pinkie-promise": {
|
1315 |
-
"version": "2.0.1",
|
1316 |
-
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
|
1317 |
-
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
|
1318 |
-
"dev": true,
|
1319 |
-
"requires": {
|
1320 |
-
"pinkie": "2.0.4"
|
1321 |
-
}
|
1322 |
-
},
|
1323 |
-
"pluralize": {
|
1324 |
-
"version": "7.0.0",
|
1325 |
-
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
|
1326 |
-
"integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
|
1327 |
-
"dev": true
|
1328 |
-
},
|
1329 |
-
"prelude-ls": {
|
1330 |
-
"version": "1.1.2",
|
1331 |
-
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
1332 |
-
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
|
1333 |
-
"dev": true
|
1334 |
-
},
|
1335 |
-
"prettier": {
|
1336 |
-
"version": "1.11.1",
|
1337 |
-
"resolved": "https://registry.npmjs.org/prettier/-/prettier-1.11.1.tgz",
|
1338 |
-
"integrity": "sha512-T/KD65Ot0PB97xTrG8afQ46x3oiVhnfGjGESSI9NWYcG92+OUPZKkwHqGWXH2t9jK1crnQjubECW0FuOth+hxw==",
|
1339 |
-
"dev": true
|
1340 |
-
},
|
1341 |
-
"prettier-eslint": {
|
1342 |
-
"version": "8.8.1",
|
1343 |
-
"resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-8.8.1.tgz",
|
1344 |
-
"integrity": "sha512-8YMkJZnA+XVfEW6fPet05jpNmSQbD+Htbh/QyOxQcVf2GIUEZsnGP7ZScaM9Mq2Ra2261eCu60E7/TRIy9coXQ==",
|
1345 |
-
"dev": true,
|
1346 |
-
"requires": {
|
1347 |
-
"babel-runtime": "6.26.0",
|
1348 |
-
"common-tags": "1.7.2",
|
1349 |
-
"dlv": "1.1.1",
|
1350 |
-
"eslint": "4.19.1",
|
1351 |
-
"indent-string": "3.2.0",
|
1352 |
-
"lodash.merge": "4.6.1",
|
1353 |
-
"loglevel-colored-level-prefix": "1.0.0",
|
1354 |
-
"prettier": "1.11.1",
|
1355 |
-
"pretty-format": "22.4.3",
|
1356 |
-
"require-relative": "0.8.7",
|
1357 |
-
"typescript": "2.8.1",
|
1358 |
-
"typescript-eslint-parser": "11.0.0"
|
1359 |
-
}
|
1360 |
-
},
|
1361 |
-
"prettier-eslint-cli": {
|
1362 |
-
"version": "4.7.1",
|
1363 |
-
"resolved": "https://registry.npmjs.org/prettier-eslint-cli/-/prettier-eslint-cli-4.7.1.tgz",
|
1364 |
-
"integrity": "sha512-hQbsGaEVz97oBBcKdsJ46khv0kOGkMyWrXzcFOXW6X8UuetZ/j0yDJkNJgUTVc6PVFbbzBXk+qgd5vos9qzXPQ==",
|
1365 |
-
"dev": true,
|
1366 |
-
"requires": {
|
1367 |
-
"arrify": "1.0.1",
|
1368 |
-
"babel-runtime": "6.26.0",
|
1369 |
-
"boolify": "1.0.1",
|
1370 |
-
"camelcase-keys": "4.2.0",
|
1371 |
-
"chalk": "2.3.0",
|
1372 |
-
"common-tags": "1.7.2",
|
1373 |
-
"eslint": "4.19.1",
|
1374 |
-
"find-up": "2.1.0",
|
1375 |
-
"get-stdin": "5.0.1",
|
1376 |
-
"glob": "7.1.2",
|
1377 |
-
"ignore": "3.3.7",
|
1378 |
-
"indent-string": "3.2.0",
|
1379 |
-
"lodash.memoize": "4.1.2",
|
1380 |
-
"loglevel-colored-level-prefix": "1.0.0",
|
1381 |
-
"messageformat": "1.1.1",
|
1382 |
-
"prettier-eslint": "8.8.1",
|
1383 |
-
"rxjs": "5.5.8",
|
1384 |
-
"yargs": "10.0.3"
|
1385 |
-
},
|
1386 |
-
"dependencies": {
|
1387 |
-
"ansi-styles": {
|
1388 |
-
"version": "3.2.1",
|
1389 |
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
1390 |
-
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
1391 |
-
"dev": true,
|
1392 |
-
"requires": {
|
1393 |
-
"color-convert": "1.9.1"
|
1394 |
-
}
|
1395 |
-
},
|
1396 |
-
"chalk": {
|
1397 |
-
"version": "2.3.0",
|
1398 |
-
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
|
1399 |
-
"integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
|
1400 |
-
"dev": true,
|
1401 |
-
"requires": {
|
1402 |
-
"ansi-styles": "3.2.1",
|
1403 |
-
"escape-string-regexp": "1.0.5",
|
1404 |
-
"supports-color": "4.5.0"
|
1405 |
-
}
|
1406 |
-
},
|
1407 |
-
"has-flag": {
|
1408 |
-
"version": "2.0.0",
|
1409 |
-
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
|
1410 |
-
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
|
1411 |
-
"dev": true
|
1412 |
-
},
|
1413 |
-
"supports-color": {
|
1414 |
-
"version": "4.5.0",
|
1415 |
-
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
|
1416 |
-
"integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
|
1417 |
-
"dev": true,
|
1418 |
-
"requires": {
|
1419 |
-
"has-flag": "2.0.0"
|
1420 |
-
}
|
1421 |
-
}
|
1422 |
-
}
|
1423 |
-
},
|
1424 |
-
"pretty-format": {
|
1425 |
-
"version": "22.4.3",
|
1426 |
-
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-22.4.3.tgz",
|
1427 |
-
"integrity": "sha512-S4oT9/sT6MN7/3COoOy+ZJeA92VmOnveLHgrwBE3Z1W5N9S2A1QGNYiE1z75DAENbJrXXUb+OWXhpJcg05QKQQ==",
|
1428 |
-
"dev": true,
|
1429 |
-
"requires": {
|
1430 |
-
"ansi-regex": "3.0.0",
|
1431 |
-
"ansi-styles": "3.2.1"
|
1432 |
-
},
|
1433 |
-
"dependencies": {
|
1434 |
-
"ansi-regex": {
|
1435 |
-
"version": "3.0.0",
|
1436 |
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
|
1437 |
-
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
|
1438 |
-
"dev": true
|
1439 |
-
},
|
1440 |
-
"ansi-styles": {
|
1441 |
-
"version": "3.2.1",
|
1442 |
-
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
1443 |
-
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
1444 |
-
"dev": true,
|
1445 |
-
"requires": {
|
1446 |
-
"color-convert": "1.9.1"
|
1447 |
-
}
|
1448 |
-
}
|
1449 |
-
}
|
1450 |
-
},
|
1451 |
-
"process-nextick-args": {
|
1452 |
-
"version": "2.0.0",
|
1453 |
-
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
|
1454 |
-
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
|
1455 |
-
"dev": true
|
1456 |
-
},
|
1457 |
-
"progress": {
|
1458 |
-
"version": "2.0.0",
|
1459 |
-
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz",
|
1460 |
-
"integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=",
|
1461 |
-
"dev": true
|
1462 |
-
},
|
1463 |
-
"pseudomap": {
|
1464 |
-
"version": "1.0.2",
|
1465 |
-
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
|
1466 |
-
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
|
1467 |
-
"dev": true
|
1468 |
-
},
|
1469 |
-
"quick-lru": {
|
1470 |
-
"version": "1.1.0",
|
1471 |
-
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
|
1472 |
-
"integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
|
1473 |
-
"dev": true
|
1474 |
-
},
|
1475 |
-
"readable-stream": {
|
1476 |
-
"version": "2.3.5",
|
1477 |
-
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz",
|
1478 |
-
"integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==",
|
1479 |
-
"dev": true,
|
1480 |
-
"requires": {
|
1481 |
-
"core-util-is": "1.0.2",
|
1482 |
-
"inherits": "2.0.3",
|
1483 |
-
"isarray": "1.0.0",
|
1484 |
-
"process-nextick-args": "2.0.0",
|
1485 |
-
"safe-buffer": "5.1.1",
|
1486 |
-
"string_decoder": "1.0.3",
|
1487 |
-
"util-deprecate": "1.0.2"
|
1488 |
-
}
|
1489 |
-
},
|
1490 |
-
"regenerator-runtime": {
|
1491 |
-
"version": "0.11.1",
|
1492 |
-
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
|
1493 |
-
"integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
|
1494 |
-
"dev": true
|
1495 |
-
},
|
1496 |
-
"regexpp": {
|
1497 |
-
"version": "1.1.0",
|
1498 |
-
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz",
|
1499 |
-
"integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==",
|
1500 |
-
"dev": true
|
1501 |
-
},
|
1502 |
-
"require-directory": {
|
1503 |
-
"version": "2.1.1",
|
1504 |
-
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
1505 |
-
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
|
1506 |
-
"dev": true
|
1507 |
-
},
|
1508 |
-
"require-main-filename": {
|
1509 |
-
"version": "1.0.1",
|
1510 |
-
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
|
1511 |
-
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
|
1512 |
-
"dev": true
|
1513 |
-
},
|
1514 |
-
"require-relative": {
|
1515 |
-
"version": "0.8.7",
|
1516 |
-
"resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz",
|
1517 |
-
"integrity": "sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=",
|
1518 |
-
"dev": true
|
1519 |
-
},
|
1520 |
-
"require-uncached": {
|
1521 |
-
"version": "1.0.3",
|
1522 |
-
"resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
|
1523 |
-
"integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
|
1524 |
-
"dev": true,
|
1525 |
-
"requires": {
|
1526 |
-
"caller-path": "0.1.0",
|
1527 |
-
"resolve-from": "1.0.1"
|
1528 |
-
}
|
1529 |
-
},
|
1530 |
-
"reserved-words": {
|
1531 |
-
"version": "0.1.2",
|
1532 |
-
"resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz",
|
1533 |
-
"integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=",
|
1534 |
-
"dev": true
|
1535 |
-
},
|
1536 |
-
"resolve-from": {
|
1537 |
-
"version": "1.0.1",
|
1538 |
-
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
|
1539 |
-
"integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=",
|
1540 |
-
"dev": true
|
1541 |
-
},
|
1542 |
-
"restore-cursor": {
|
1543 |
-
"version": "2.0.0",
|
1544 |
-
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
|
1545 |
-
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
|
1546 |
-
"dev": true,
|
1547 |
-
"requires": {
|
1548 |
-
"onetime": "2.0.1",
|
1549 |
-
"signal-exit": "3.0.2"
|
1550 |
-
}
|
1551 |
-
},
|
1552 |
-
"rimraf": {
|
1553 |
-
"version": "2.6.2",
|
1554 |
-
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
|
1555 |
-
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
|
1556 |
-
"dev": true,
|
1557 |
-
"requires": {
|
1558 |
-
"glob": "7.1.2"
|
1559 |
-
}
|
1560 |
-
},
|
1561 |
-
"run-async": {
|
1562 |
-
"version": "2.3.0",
|
1563 |
-
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
|
1564 |
-
"integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
|
1565 |
-
"dev": true,
|
1566 |
-
"requires": {
|
1567 |
-
"is-promise": "2.1.0"
|
1568 |
-
}
|
1569 |
-
},
|
1570 |
-
"rx-lite": {
|
1571 |
-
"version": "4.0.8",
|
1572 |
-
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
|
1573 |
-
"integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
|
1574 |
-
"dev": true
|
1575 |
-
},
|
1576 |
-
"rx-lite-aggregates": {
|
1577 |
-
"version": "4.0.8",
|
1578 |
-
"resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
|
1579 |
-
"integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
|
1580 |
-
"dev": true,
|
1581 |
-
"requires": {
|
1582 |
-
"rx-lite": "4.0.8"
|
1583 |
-
}
|
1584 |
-
},
|
1585 |
-
"rxjs": {
|
1586 |
-
"version": "5.5.8",
|
1587 |
-
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.8.tgz",
|
1588 |
-
"integrity": "sha512-Bz7qou7VAIoGiglJZbzbXa4vpX5BmTTN2Dj/se6+SwADtw4SihqBIiEa7VmTXJ8pynvq0iFr5Gx9VLyye1rIxQ==",
|
1589 |
-
"dev": true,
|
1590 |
-
"requires": {
|
1591 |
-
"symbol-observable": "1.0.1"
|
1592 |
-
}
|
1593 |
-
},
|
1594 |
-
"safe-buffer": {
|
1595 |
-
"version": "5.1.1",
|
1596 |
-
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
1597 |
-
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
|
1598 |
-
"dev": true
|
1599 |
-
},
|
1600 |
-
"semver": {
|
1601 |
-
"version": "5.5.0",
|
1602 |
-
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
|
1603 |
-
"integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
|
1604 |
-
"dev": true
|
1605 |
-
},
|
1606 |
-
"set-blocking": {
|
1607 |
-
"version": "2.0.0",
|
1608 |
-
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
|
1609 |
-
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
|
1610 |
-
"dev": true
|
1611 |
-
},
|
1612 |
-
"shebang-command": {
|
1613 |
-
"version": "1.2.0",
|
1614 |
-
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
1615 |
-
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
1616 |
-
"dev": true,
|
1617 |
-
"requires": {
|
1618 |
-
"shebang-regex": "1.0.0"
|
1619 |
-
}
|
1620 |
-
},
|
1621 |
-
"shebang-regex": {
|
1622 |
-
"version": "1.0.0",
|
1623 |
-
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
|
1624 |
-
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
|
1625 |
-
"dev": true
|
1626 |
-
},
|
1627 |
-
"signal-exit": {
|
1628 |
-
"version": "3.0.2",
|
1629 |
-
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
1630 |
-
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
|
1631 |
-
"dev": true
|
1632 |
-
},
|
1633 |
-
"slice-ansi": {
|
1634 |
-
"version": "1.0.0",
|
1635 |
-
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
|
1636 |
-
"integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
|
1637 |
-
"dev": true,
|
1638 |
-
"requires": {
|
1639 |
-
"is-fullwidth-code-point": "2.0.0"
|
1640 |
-
}
|
1641 |
-
},
|
1642 |
-
"sprintf-js": {
|
1643 |
-
"version": "1.0.3",
|
1644 |
-
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
|
1645 |
-
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
|
1646 |
-
"dev": true
|
1647 |
-
},
|
1648 |
-
"string-width": {
|
1649 |
-
"version": "2.1.1",
|
1650 |
-
"resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
|
1651 |
-
"integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
|
1652 |
-
"dev": true,
|
1653 |
-
"requires": {
|
1654 |
-
"is-fullwidth-code-point": "2.0.0",
|
1655 |
-
"strip-ansi": "4.0.0"
|
1656 |
-
}
|
1657 |
-
},
|
1658 |
-
"string_decoder": {
|
1659 |
-
"version": "1.0.3",
|
1660 |
-
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
|
1661 |
-
"integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
|
1662 |
-
"dev": true,
|
1663 |
-
"requires": {
|
1664 |
-
"safe-buffer": "5.1.1"
|
1665 |
-
}
|
1666 |
-
},
|
1667 |
-
"strip-ansi": {
|
1668 |
-
"version": "4.0.0",
|
1669 |
-
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
1670 |
-
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
|
1671 |
-
"dev": true,
|
1672 |
-
"requires": {
|
1673 |
-
"ansi-regex": "3.0.0"
|
1674 |
-
},
|
1675 |
-
"dependencies": {
|
1676 |
-
"ansi-regex": {
|
1677 |
-
"version": "3.0.0",
|
1678 |
-
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
|
1679 |
-
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
|
1680 |
-
"dev": true
|
1681 |
-
}
|
1682 |
-
}
|
1683 |
-
},
|
1684 |
-
"strip-eof": {
|
1685 |
-
"version": "1.0.0",
|
1686 |
-
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
|
1687 |
-
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
|
1688 |
-
"dev": true
|
1689 |
-
},
|
1690 |
-
"strip-json-comments": {
|
1691 |
-
"version": "2.0.1",
|
1692 |
-
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
|
1693 |
-
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
|
1694 |
-
"dev": true
|
1695 |
-
},
|
1696 |
-
"supports-color": {
|
1697 |
-
"version": "2.0.0",
|
1698 |
-
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
|
1699 |
-
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
|
1700 |
-
"dev": true
|
1701 |
-
},
|
1702 |
-
"symbol-observable": {
|
1703 |
-
"version": "1.0.1",
|
1704 |
-
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz",
|
1705 |
-
"integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=",
|
1706 |
-
"dev": true
|
1707 |
-
},
|
1708 |
-
"table": {
|
1709 |
-
"version": "4.0.2",
|
1710 |
-
"resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
|
1711 |
-
"integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==",
|
1712 |
-
"dev": true,
|
1713 |
-
"requires": {
|
1714 |
-
"ajv": "5.5.2",
|
1715 |
-
"ajv-keywords": "2.1.1",
|
1716 |
-
"chalk": "2.3.2",
|
1717 |
-
"lodash": "4.17.5",
|
1718 |
-
"slice-ansi": "1.0.0",
|
1719 |
-
"string-width": "2.1.1"
|
1720 |
-
}
|
1721 |
-
},
|
1722 |
-
"text-table": {
|
1723 |
-
"version": "0.2.0",
|
1724 |
-
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
|
1725 |
-
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
|
1726 |
-
"dev": true
|
1727 |
-
},
|
1728 |
-
"through": {
|
1729 |
-
"version": "2.3.8",
|
1730 |
-
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
1731 |
-
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
|
1732 |
-
"dev": true
|
1733 |
-
},
|
1734 |
-
"tmp": {
|
1735 |
-
"version": "0.0.33",
|
1736 |
-
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
1737 |
-
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
|
1738 |
-
"dev": true,
|
1739 |
-
"requires": {
|
1740 |
-
"os-tmpdir": "1.0.2"
|
1741 |
-
}
|
1742 |
-
},
|
1743 |
-
"type-check": {
|
1744 |
-
"version": "0.3.2",
|
1745 |
-
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
|
1746 |
-
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
|
1747 |
-
"dev": true,
|
1748 |
-
"requires": {
|
1749 |
-
"prelude-ls": "1.1.2"
|
1750 |
-
}
|
1751 |
-
},
|
1752 |
-
"typedarray": {
|
1753 |
-
"version": "0.0.6",
|
1754 |
-
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
1755 |
-
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
|
1756 |
-
"dev": true
|
1757 |
-
},
|
1758 |
-
"typescript": {
|
1759 |
-
"version": "2.8.1",
|
1760 |
-
"resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.1.tgz",
|
1761 |
-
"integrity": "sha512-Ao/f6d/4EPLq0YwzsQz8iXflezpTkQzqAyenTiw4kCUGr1uPiFLC3+fZ+gMZz6eeI/qdRUqvC+HxIJzUAzEFdg==",
|
1762 |
-
"dev": true
|
1763 |
-
},
|
1764 |
-
"typescript-eslint-parser": {
|
1765 |
-
"version": "11.0.0",
|
1766 |
-
"resolved": "https://registry.npmjs.org/typescript-eslint-parser/-/typescript-eslint-parser-11.0.0.tgz",
|
1767 |
-
"integrity": "sha512-/fBHTBRBSorWQGKWOOjeMPkzd3o8cOPtFjTRwU5JLNGgVtmMa3KDkiw0R2n+H6ovo9y3OX30/5usm6YTqY44PQ==",
|
1768 |
-
"dev": true,
|
1769 |
-
"requires": {
|
1770 |
-
"lodash.unescape": "4.0.1",
|
1771 |
-
"semver": "5.4.1"
|
1772 |
-
},
|
1773 |
-
"dependencies": {
|
1774 |
-
"semver": {
|
1775 |
-
"version": "5.4.1",
|
1776 |
-
"resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
|
1777 |
-
"integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
|
1778 |
-
"dev": true
|
1779 |
-
}
|
1780 |
-
}
|
1781 |
-
},
|
1782 |
-
"util-deprecate": {
|
1783 |
-
"version": "1.0.2",
|
1784 |
-
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
1785 |
-
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
|
1786 |
-
"dev": true
|
1787 |
-
},
|
1788 |
-
"which": {
|
1789 |
-
"version": "1.3.0",
|
1790 |
-
"resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
|
1791 |
-
"integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
|
1792 |
-
"dev": true,
|
1793 |
-
"requires": {
|
1794 |
-
"isexe": "2.0.0"
|
1795 |
-
}
|
1796 |
-
},
|
1797 |
-
"which-module": {
|
1798 |
-
"version": "2.0.0",
|
1799 |
-
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
|
1800 |
-
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
|
1801 |
-
"dev": true
|
1802 |
-
},
|
1803 |
-
"wordwrap": {
|
1804 |
-
"version": "1.0.0",
|
1805 |
-
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
1806 |
-
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
|
1807 |
-
"dev": true
|
1808 |
-
},
|
1809 |
-
"wrap-ansi": {
|
1810 |
-
"version": "2.1.0",
|
1811 |
-
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
|
1812 |
-
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
|
1813 |
-
"dev": true,
|
1814 |
-
"requires": {
|
1815 |
-
"string-width": "1.0.2",
|
1816 |
-
"strip-ansi": "3.0.1"
|
1817 |
-
},
|
1818 |
-
"dependencies": {
|
1819 |
-
"is-fullwidth-code-point": {
|
1820 |
-
"version": "1.0.0",
|
1821 |
-
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
1822 |
-
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
1823 |
-
"dev": true,
|
1824 |
-
"requires": {
|
1825 |
-
"number-is-nan": "1.0.1"
|
1826 |
-
}
|
1827 |
-
},
|
1828 |
-
"string-width": {
|
1829 |
-
"version": "1.0.2",
|
1830 |
-
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
1831 |
-
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
1832 |
-
"dev": true,
|
1833 |
-
"requires": {
|
1834 |
-
"code-point-at": "1.1.0",
|
1835 |
-
"is-fullwidth-code-point": "1.0.0",
|
1836 |
-
"strip-ansi": "3.0.1"
|
1837 |
-
}
|
1838 |
-
},
|
1839 |
-
"strip-ansi": {
|
1840 |
-
"version": "3.0.1",
|
1841 |
-
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
1842 |
-
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
1843 |
-
"dev": true,
|
1844 |
-
"requires": {
|
1845 |
-
"ansi-regex": "2.1.1"
|
1846 |
-
}
|
1847 |
-
}
|
1848 |
-
}
|
1849 |
-
},
|
1850 |
-
"wrappy": {
|
1851 |
-
"version": "1.0.2",
|
1852 |
-
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
1853 |
-
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
1854 |
-
"dev": true
|
1855 |
-
},
|
1856 |
-
"write": {
|
1857 |
-
"version": "0.2.1",
|
1858 |
-
"resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
|
1859 |
-
"integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
|
1860 |
-
"dev": true,
|
1861 |
-
"requires": {
|
1862 |
-
"mkdirp": "0.5.1"
|
1863 |
-
}
|
1864 |
-
},
|
1865 |
-
"y18n": {
|
1866 |
-
"version": "3.2.1",
|
1867 |
-
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
|
1868 |
-
"integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
|
1869 |
-
"dev": true
|
1870 |
-
},
|
1871 |
-
"yallist": {
|
1872 |
-
"version": "2.1.2",
|
1873 |
-
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
|
1874 |
-
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
|
1875 |
-
"dev": true
|
1876 |
-
},
|
1877 |
-
"yargs": {
|
1878 |
-
"version": "10.0.3",
|
1879 |
-
"resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz",
|
1880 |
-
"integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==",
|
1881 |
-
"dev": true,
|
1882 |
-
"requires": {
|
1883 |
-
"cliui": "3.2.0",
|
1884 |
-
"decamelize": "1.2.0",
|
1885 |
-
"find-up": "2.1.0",
|
1886 |
-
"get-caller-file": "1.0.2",
|
1887 |
-
"os-locale": "2.1.0",
|
1888 |
-
"require-directory": "2.1.1",
|
1889 |
-
"require-main-filename": "1.0.1",
|
1890 |
-
"set-blocking": "2.0.0",
|
1891 |
-
"string-width": "2.1.1",
|
1892 |
-
"which-module": "2.0.0",
|
1893 |
-
"y18n": "3.2.1",
|
1894 |
-
"yargs-parser": "8.1.0"
|
1895 |
-
}
|
1896 |
-
},
|
1897 |
-
"yargs-parser": {
|
1898 |
-
"version": "8.1.0",
|
1899 |
-
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz",
|
1900 |
-
"integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==",
|
1901 |
-
"dev": true,
|
1902 |
-
"requires": {
|
1903 |
-
"camelcase": "4.1.0"
|
1904 |
-
}
|
1905 |
-
}
|
1906 |
-
}
|
1907 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vendor/boldgrid/library/package.json
CHANGED
@@ -1,12 +1,15 @@
|
|
1 |
{
|
2 |
"scripts": {
|
3 |
-
"js-lint": "prettier-eslint **/*.js --list-different",
|
4 |
-
"js-lint-fix": "prettier-eslint **/*.js --write"
|
5 |
},
|
6 |
"devDependencies": {
|
7 |
"eslint": "^4.19.1",
|
8 |
"eslint-config-wordpress": "^2.0.0",
|
9 |
"eslint-plugin-html": "^4.0.2",
|
|
|
|
|
|
|
10 |
"prettier-eslint": "^8.8.1",
|
11 |
"prettier-eslint-cli": "^4.7.1"
|
12 |
}
|
1 |
{
|
2 |
"scripts": {
|
3 |
+
"js-lint": "prettier-eslint **/*.js --list-different --ignore **/build/**",
|
4 |
+
"js-lint-fix": "prettier-eslint **/*.js --write --ignore **/build/**"
|
5 |
},
|
6 |
"devDependencies": {
|
7 |
"eslint": "^4.19.1",
|
8 |
"eslint-config-wordpress": "^2.0.0",
|
9 |
"eslint-plugin-html": "^4.0.2",
|
10 |
+
"gulp": "^3.9.1",
|
11 |
+
"gulp-cli": "^2.0.1",
|
12 |
+
"jquery-toggles": "^4.0.0",
|
13 |
"prettier-eslint": "^8.8.1",
|
14 |
"prettier-eslint-cli": "^4.7.1"
|
15 |
}
|
vendor/boldgrid/library/src/Library/Api/Call.php
CHANGED
@@ -173,7 +173,7 @@ class Call {
|
|
173 |
|
174 |
// Response should be an object.
|
175 |
if ( ! is_object( $this->response ) ) {
|
176 |
-
$this->error = __( 'An invalid response was returned.', 'boldgrid-
|
177 |
return false;
|
178 |
}
|
179 |
|
173 |
|
174 |
// Response should be an object.
|
175 |
if ( ! is_object( $this->response ) ) {
|
176 |
+
$this->error = __( 'An invalid response was returned.', 'boldgrid-connect' );
|
177 |
return false;
|
178 |
}
|
179 |
|
vendor/boldgrid/library/src/Library/Editor.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: Editor.php
|
4 |
+
*
|
5 |
+
* BoldGrid Library -- Editor
|
6 |
+
*
|
7 |
+
* @package Boldgrid\Library
|
8 |
+
*
|
9 |
+
* @since 2.7.3
|
10 |
+
* @author BoldGrid <support@boldgrid.com>
|
11 |
+
*/
|
12 |
+
|
13 |
+
namespace Boldgrid\Library\Library;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Class: Editor
|
17 |
+
*
|
18 |
+
* This class is responsible for manipulating behaviors in the WordPress editor.
|
19 |
+
*
|
20 |
+
* @since 2.7.3
|
21 |
+
*/
|
22 |
+
class Editor {
|
23 |
+
/**
|
24 |
+
* Constructor.
|
25 |
+
*
|
26 |
+
* @since 2.7.3
|
27 |
+
*/
|
28 |
+
public function __construct() {
|
29 |
+
Filter::add( $this );
|
30 |
+
}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Disable the Connect Key notice if Gutenberg is used.
|
34 |
+
*
|
35 |
+
* @since 2.7.3
|
36 |
+
*
|
37 |
+
* @hook: enqueue_block_editor_assets
|
38 |
+
*/
|
39 |
+
public function disableNotices() {
|
40 |
+
add_filter( 'Boldgrid\Library\Library\Notice\KeyPrompt_display', '__return_false', 20 );
|
41 |
+
}
|
42 |
+
}
|
vendor/boldgrid/library/src/Library/License.php
CHANGED
@@ -70,19 +70,23 @@ class License {
|
|
70 |
*/
|
71 |
public function ajaxClear() {
|
72 |
$plugin = ! empty( $_POST['plugin'] ) ? sanitize_text_field( $_POST['plugin'] ) : null;
|
73 |
-
|
74 |
-
|
|
|
75 |
}
|
76 |
|
77 |
-
if( ! current_user_can( 'manage_options' ) ) {
|
78 |
-
wp_send_json_error( __( 'Access denied.',
|
79 |
}
|
80 |
|
81 |
$success = $this->clearTransient();
|
82 |
-
if( ! $success ) {
|
83 |
wp_send_json_error( array(
|
84 |
'string' => sprintf(
|
85 |
-
__(
|
|
|
|
|
|
|
86 |
$this->getKey()
|
87 |
),
|
88 |
));
|
@@ -113,7 +117,7 @@ class License {
|
|
113 |
);
|
114 |
|
115 |
$translations = array(
|
116 |
-
'unknownError' => __( 'Unknown error' ),
|
117 |
);
|
118 |
|
119 |
wp_localize_script( 'bglib-license', 'bglibLicense', $translations );
|
@@ -140,7 +144,7 @@ class License {
|
|
140 |
* @return mixed $license The response object or error string of call.
|
141 |
*/
|
142 |
private function setLicense() {
|
143 |
-
if ( !
|
144 |
$license = 'Missing Connect Key';
|
145 |
} else if ( ! ( $license = $this->getTransient() ) || ! $this->isVersionValid( $license ) ) {
|
146 |
delete_site_transient( $this->getKey() );
|
@@ -323,6 +327,17 @@ class License {
|
|
323 |
return $this->licenseString;
|
324 |
}
|
325 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
326 |
/**
|
327 |
* Get the data class property.
|
328 |
*
|
@@ -373,14 +388,15 @@ class License {
|
|
373 |
*
|
374 |
* @since 1.1.4
|
375 |
*
|
376 |
-
* @
|
377 |
*
|
378 |
* @return bool
|
379 |
*/
|
380 |
public function isPremium( $product ) {
|
381 |
$isPremium = isset( $this->getData()->$product );
|
382 |
|
383 |
-
$this->licenseString = $isPremium ?
|
|
|
384 |
|
385 |
return $isPremium;
|
386 |
}
|
70 |
*/
|
71 |
public function ajaxClear() {
|
72 |
$plugin = ! empty( $_POST['plugin'] ) ? sanitize_text_field( $_POST['plugin'] ) : null;
|
73 |
+
|
74 |
+
if ( empty( $plugin ) ) {
|
75 |
+
wp_send_json_error( __( 'Unknown plugin.', 'boldgrid-connect' ) );
|
76 |
}
|
77 |
|
78 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
79 |
+
wp_send_json_error( __( 'Access denied.', 'boldgrid-connect' ) );
|
80 |
}
|
81 |
|
82 |
$success = $this->clearTransient();
|
83 |
+
if ( ! $success ) {
|
84 |
wp_send_json_error( array(
|
85 |
'string' => sprintf(
|
86 |
+
__(
|
87 |
+
'Failed to clear license data. Unable to delete site transient "%1$s".',
|
88 |
+
'boldgrid-connect'
|
89 |
+
),
|
90 |
$this->getKey()
|
91 |
),
|
92 |
));
|
117 |
);
|
118 |
|
119 |
$translations = array(
|
120 |
+
'unknownError' => __( 'Unknown error', 'boldgrid-connect' ),
|
121 |
);
|
122 |
|
123 |
wp_localize_script( 'bglib-license', 'bglibLicense', $translations );
|
144 |
* @return mixed $license The response object or error string of call.
|
145 |
*/
|
146 |
private function setLicense() {
|
147 |
+
if ( ! $this->getApiKey() ) {
|
148 |
$license = 'Missing Connect Key';
|
149 |
} else if ( ! ( $license = $this->getTransient() ) || ! $this->isVersionValid( $license ) ) {
|
150 |
delete_site_transient( $this->getKey() );
|
327 |
return $this->licenseString;
|
328 |
}
|
329 |
|
330 |
+
/**
|
331 |
+
* Get our API Key.
|
332 |
+
*
|
333 |
+
* @since 2.6.0
|
334 |
+
*
|
335 |
+
* @hook Boldgrid\Library\License\getApiKey
|
336 |
+
*/
|
337 |
+
public function getApiKey() {
|
338 |
+
return get_option( 'boldgrid_api_key' );
|
339 |
+
}
|
340 |
+
|
341 |
/**
|
342 |
* Get the data class property.
|
343 |
*
|
388 |
*
|
389 |
* @since 1.1.4
|
390 |
*
|
391 |
+
* @hook Boldgrid\Library\License\isPremium
|
392 |
*
|
393 |
* @return bool
|
394 |
*/
|
395 |
public function isPremium( $product ) {
|
396 |
$isPremium = isset( $this->getData()->$product );
|
397 |
|
398 |
+
$this->licenseString = $isPremium ?
|
399 |
+
__( 'Premium', 'boldgrid-connect' ) : __( 'Free', 'boldgrid-connect' );
|
400 |
|
401 |
return $isPremium;
|
402 |
}
|
vendor/boldgrid/library/src/Library/Menu/External.php
CHANGED
@@ -63,7 +63,7 @@ class External {
|
|
63 |
array(
|
64 |
'id' => 'boldgrid-site-url',
|
65 |
'parent' => 'boldgrid-adminbar-icon',
|
66 |
-
'title' => __( 'BoldGrid.com', 'boldgrid-
|
67 |
'href' => 'https://www.boldgrid.com/',
|
68 |
'meta' => array(
|
69 |
'class' => 'boldgrid-dropdown',
|
@@ -74,7 +74,7 @@ class External {
|
|
74 |
array(
|
75 |
'id' => 'boldgrid-site-documentation',
|
76 |
'parent' => 'boldgrid-adminbar-icon',
|
77 |
-
'title' => __( 'Documentation', 'boldgrid-
|
78 |
'href' => 'https://www.boldgrid.com/docs',
|
79 |
'meta' => array(
|
80 |
'class' => 'boldgrid-dropdown',
|
@@ -85,7 +85,7 @@ class External {
|
|
85 |
array(
|
86 |
'id' => 'boldgrid-central-url',
|
87 |
'parent' => 'boldgrid-adminbar-icon',
|
88 |
-
'title' => __( 'BoldGrid Central', 'boldgrid-
|
89 |
'href' => 'https://www.boldgrid.com/central',
|
90 |
'meta' => array(
|
91 |
'class' => 'boldgrid-dropdown',
|
@@ -96,7 +96,7 @@ class External {
|
|
96 |
array(
|
97 |
'id' => 'boldgrid-connect-url',
|
98 |
'parent' => 'boldgrid-adminbar-icon',
|
99 |
-
'title' => __( 'BoldGrid Connect', 'boldgrid-
|
100 |
'href' => get_admin_url( null, 'options-general.php?page=boldgrid-connect.php' ),
|
101 |
'meta' => array(
|
102 |
'class' => 'boldgrid-dropdown',
|
@@ -106,7 +106,7 @@ class External {
|
|
106 |
array(
|
107 |
'id' => 'boldgrid-feedback-url',
|
108 |
'parent' => 'boldgrid-adminbar-icon',
|
109 |
-
'title' => __( 'Feedback', 'boldgrid-
|
110 |
'href' => 'https://www.boldgrid.com/feedback',
|
111 |
'meta' => array(
|
112 |
'class' => 'boldgrid-dropdown',
|
63 |
array(
|
64 |
'id' => 'boldgrid-site-url',
|
65 |
'parent' => 'boldgrid-adminbar-icon',
|
66 |
+
'title' => __( 'BoldGrid.com', 'boldgrid-connect' ),
|
67 |
'href' => 'https://www.boldgrid.com/',
|
68 |
'meta' => array(
|
69 |
'class' => 'boldgrid-dropdown',
|
74 |
array(
|
75 |
'id' => 'boldgrid-site-documentation',
|
76 |
'parent' => 'boldgrid-adminbar-icon',
|
77 |
+
'title' => __( 'Documentation', 'boldgrid-connect' ),
|
78 |
'href' => 'https://www.boldgrid.com/docs',
|
79 |
'meta' => array(
|
80 |
'class' => 'boldgrid-dropdown',
|
85 |
array(
|
86 |
'id' => 'boldgrid-central-url',
|
87 |
'parent' => 'boldgrid-adminbar-icon',
|
88 |
+
'title' => __( 'BoldGrid Central', 'boldgrid-connect' ),
|
89 |
'href' => 'https://www.boldgrid.com/central',
|
90 |
'meta' => array(
|
91 |
'class' => 'boldgrid-dropdown',
|
96 |
array(
|
97 |
'id' => 'boldgrid-connect-url',
|
98 |
'parent' => 'boldgrid-adminbar-icon',
|
99 |
+
'title' => __( 'BoldGrid Connect', 'boldgrid-connect' ),
|
100 |
'href' => get_admin_url( null, 'options-general.php?page=boldgrid-connect.php' ),
|
101 |
'meta' => array(
|
102 |
'class' => 'boldgrid-dropdown',
|
106 |
array(
|
107 |
'id' => 'boldgrid-feedback-url',
|
108 |
'parent' => 'boldgrid-adminbar-icon',
|
109 |
+
'title' => __( 'Feedback', 'boldgrid-connect' ),
|
110 |
'href' => 'https://www.boldgrid.com/feedback',
|
111 |
'meta' => array(
|
112 |
'class' => 'boldgrid-dropdown',
|
vendor/boldgrid/library/src/Library/Menu/Reseller.php
CHANGED
@@ -59,7 +59,7 @@ class Reseller {
|
|
59 |
esc_url( $data['reseller_website_url'] ) : 'https://www.boldgrid.com/';
|
60 |
|
61 |
$data['reseller_title'] = ! empty( $data['reseller_title'] ) ?
|
62 |
-
|
63 |
|
64 |
$data['reseller_support_url'] = ! empty( $data['reseller_support_url'] ) ?
|
65 |
esc_url( $data['reseller_support_url'] ) : 'https://www.boldgrid.com/documentation';
|
@@ -119,23 +119,23 @@ class Reseller {
|
|
119 |
array(
|
120 |
'id' => 'reseller-support-center',
|
121 |
'parent' => 'reseller-adminbar-icon',
|
122 |
-
'title' => esc_html__( 'Support Center' ),
|
123 |
'href' => $data['reseller_support_url'],
|
124 |
'meta' => array(
|
125 |
'class' => 'reseller-dropdown',
|
126 |
'target' => '_blank',
|
127 |
-
'title' => __( 'Support Center' ),
|
128 |
),
|
129 |
),
|
130 |
array(
|
131 |
'id' => 'reseller-amp-login',
|
132 |
'parent' => 'reseller-adminbar-icon',
|
133 |
-
'title' => esc_html__( 'AMP Login' ),
|
134 |
'href' => $data['reseller_amp_url'],
|
135 |
'meta' => array(
|
136 |
'class' => 'reseller-dropdown',
|
137 |
'target' => '_blank',
|
138 |
-
'title' => __( 'Account Management' ),
|
139 |
),
|
140 |
),
|
141 |
),
|
59 |
esc_url( $data['reseller_website_url'] ) : 'https://www.boldgrid.com/';
|
60 |
|
61 |
$data['reseller_title'] = ! empty( $data['reseller_title'] ) ?
|
62 |
+
esc_html( $data['reseller_title'] ) : esc_html( 'BoldGrid.com' );
|
63 |
|
64 |
$data['reseller_support_url'] = ! empty( $data['reseller_support_url'] ) ?
|
65 |
esc_url( $data['reseller_support_url'] ) : 'https://www.boldgrid.com/documentation';
|
119 |
array(
|
120 |
'id' => 'reseller-support-center',
|
121 |
'parent' => 'reseller-adminbar-icon',
|
122 |
+
'title' => esc_html__( 'Support Center', 'boldgrid-connect' ),
|
123 |
'href' => $data['reseller_support_url'],
|
124 |
'meta' => array(
|
125 |
'class' => 'reseller-dropdown',
|
126 |
'target' => '_blank',
|
127 |
+
'title' => __( 'Support Center', 'boldgrid-connect' ),
|
128 |
),
|
129 |
),
|
130 |
array(
|
131 |
'id' => 'reseller-amp-login',
|
132 |
'parent' => 'reseller-adminbar-icon',
|
133 |
+
'title' => esc_html__( 'AMP Login', 'boldgrid-connect' ),
|
134 |
'href' => $data['reseller_amp_url'],
|
135 |
'meta' => array(
|
136 |
'class' => 'reseller-dropdown',
|
137 |
'target' => '_blank',
|
138 |
+
'title' => __( 'Account Management', 'boldgrid-connect' ),
|
139 |
),
|
140 |
),
|
141 |
),
|
vendor/boldgrid/library/src/Library/Notice.php
CHANGED
@@ -96,6 +96,15 @@ class Notice {
|
|
96 |
$message,
|
97 |
$nonce
|
98 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
}
|
100 |
|
101 |
/**
|
@@ -226,7 +235,7 @@ class Notice {
|
|
226 |
*
|
227 |
* @hook: admin_enqueue_scripts
|
228 |
*/
|
229 |
-
public function enqueue() {
|
230 |
wp_enqueue_script(
|
231 |
'bglib-notice-js',
|
232 |
Configs::get( 'libraryUrl' ) . 'src/assets/js/notice.js'
|
96 |
$message,
|
97 |
$nonce
|
98 |
);
|
99 |
+
|
100 |
+
/*
|
101 |
+
* Enqueue js required to allow for notices to be dismissed permanently.
|
102 |
+
*
|
103 |
+
* When notices (such as the "keyPrompt" notice) are shown by creating a new instance of
|
104 |
+
* this class, the js is enqueued by the Filter::add call in the constructor. We do however
|
105 |
+
* allow notices to be shown via this static method, and so we need to enqueue the js now.
|
106 |
+
*/
|
107 |
+
self::enqueue();
|
108 |
}
|
109 |
|
110 |
/**
|
235 |
*
|
236 |
* @hook: admin_enqueue_scripts
|
237 |
*/
|
238 |
+
public static function enqueue() {
|
239 |
wp_enqueue_script(
|
240 |
'bglib-notice-js',
|
241 |
Configs::get( 'libraryUrl' ) . 'src/assets/js/notice.js'
|
vendor/boldgrid/library/src/Library/Notice/KeyPrompt.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* BoldGrid Library Key Prompt Notice
|
4 |
*
|
5 |
* @package Boldgrid\Library
|
6 |
-
* @subpackage \
|
7 |
*
|
8 |
* @version 1.0.0
|
9 |
* @author BoldGrid <wpb@boldgrid.com>
|
@@ -91,8 +91,23 @@ class KeyPrompt {
|
|
91 |
* @return object $messages Messages used by key prompt.
|
92 |
*/
|
93 |
private function setMessages() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
$msg = new \stdClass();
|
95 |
-
$msg->success =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
$msg->error = sprintf( esc_html__( 'Your API key appears to be invalid!%sPlease try to enter your BoldGrid Connect Key again.', 'boldgrid-inspirations' ), '<br />' );
|
97 |
$msg->nonce = esc_html__( 'Security violation! An invalid nonce was detected.', 'boldgrid-inspirations' );
|
98 |
$msg->timeout = esc_html__( 'Connection timed out. Please try again.', 'boldgrid-inspirations' );
|
3 |
* BoldGrid Library Key Prompt Notice
|
4 |
*
|
5 |
* @package Boldgrid\Library
|
6 |
+
* @subpackage \Notice
|
7 |
*
|
8 |
* @version 1.0.0
|
9 |
* @author BoldGrid <wpb@boldgrid.com>
|
91 |
* @return object $messages Messages used by key prompt.
|
92 |
*/
|
93 |
private function setMessages() {
|
94 |
+
// Allowed html for wp_kses.
|
95 |
+
$allowed_html = array(
|
96 |
+
'a' => array(
|
97 |
+
'href' => array(),
|
98 |
+
),
|
99 |
+
'strong' => array(),
|
100 |
+
);
|
101 |
+
|
102 |
$msg = new \stdClass();
|
103 |
+
$msg->success = sprintf(
|
104 |
+
wp_kses(
|
105 |
+
/* translators: The Url to the BoldGrid Connect settings page. */
|
106 |
+
__( 'Your api key has been saved. To change, see <strong>Settings » <a href="%1$s">BoldGrid Connect</a></strong>.', 'boldgrid-inspirations' ),
|
107 |
+
$allowed_html
|
108 |
+
),
|
109 |
+
admin_url( 'options-general.php?page=boldgrid-connect.php' )
|
110 |
+
);
|
111 |
$msg->error = sprintf( esc_html__( 'Your API key appears to be invalid!%sPlease try to enter your BoldGrid Connect Key again.', 'boldgrid-inspirations' ), '<br />' );
|
112 |
$msg->nonce = esc_html__( 'Security violation! An invalid nonce was detected.', 'boldgrid-inspirations' );
|
113 |
$msg->timeout = esc_html__( 'Connection timed out. Please try again.', 'boldgrid-inspirations' );
|
vendor/boldgrid/library/src/Library/Page/Connect.php
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
* @subpackage \Library\Library\Page
|
7 |
*
|
8 |
* @version 2.4.0
|
9 |
-
* @author BoldGrid <
|
10 |
*/
|
11 |
|
12 |
namespace Boldgrid\Library\Library\Page;
|
@@ -98,7 +98,7 @@ class Connect {
|
|
98 |
}
|
99 |
|
100 |
/**
|
101 |
-
* Enqueue
|
102 |
*
|
103 |
* @since 2.4.0
|
104 |
*
|
@@ -106,8 +106,39 @@ class Connect {
|
|
106 |
*/
|
107 |
public function addScripts() {
|
108 |
if ( $this->isConnectScreen( get_current_screen() ) ) {
|
109 |
-
|
110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
112 |
/**
|
113 |
* Add additional scripts to Connect page.
|
@@ -128,8 +159,8 @@ class Connect {
|
|
128 |
public function addPage() {
|
129 |
add_submenu_page(
|
130 |
'options-general.php',
|
131 |
-
__( 'BoldGrid Connect' ),
|
132 |
-
__( 'BoldGrid Connect' ),
|
133 |
'manage_options',
|
134 |
'boldgrid-connect.php',
|
135 |
function () {
|
@@ -137,4 +168,125 @@ class Connect {
|
|
137 |
}
|
138 |
);
|
139 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
}
|
6 |
* @subpackage \Library\Library\Page
|
7 |
*
|
8 |
* @version 2.4.0
|
9 |
+
* @author BoldGrid <support@boldgrid.com>
|
10 |
*/
|
11 |
|
12 |
namespace Boldgrid\Library\Library\Page;
|
98 |
}
|
99 |
|
100 |
/**
|
101 |
+
* Enqueue scripts needed for this page.
|
102 |
*
|
103 |
* @since 2.4.0
|
104 |
*
|
106 |
*/
|
107 |
public function addScripts() {
|
108 |
if ( $this->isConnectScreen( get_current_screen() ) ) {
|
109 |
+
// Enqueue boldgrid-library-connect js.
|
110 |
+
$handle = 'boldgrid-library-connect';
|
111 |
+
|
112 |
+
wp_register_script(
|
113 |
+
$handle,
|
114 |
+
Configs::get( 'libraryUrl' ) . 'src/assets/js/connect.js' ,
|
115 |
+
array( 'jquery' ),
|
116 |
+
date( 'Ymd' ),
|
117 |
+
false
|
118 |
+
);
|
119 |
+
|
120 |
+
$translation = array(
|
121 |
+
'settingsSaved' => __( 'Settings saved.', 'boldgrid-connect' ),
|
122 |
+
'unknownError' => __( 'Unknown error.', 'boldgrid-connect' ),
|
123 |
+
'ajaxError' => __( 'Could not reach the AJAX URL address. HTTP error: ', 'boldgrid-connect' ),
|
124 |
+
);
|
125 |
+
|
126 |
+
wp_localize_script( $handle, 'BoldGridLibraryConnect', $translation );
|
127 |
+
|
128 |
+
wp_enqueue_script( $handle );
|
129 |
+
|
130 |
+
// Enqueue jquery-toggles js.
|
131 |
+
wp_enqueue_script(
|
132 |
+
'jquery-toggles',
|
133 |
+
Configs::get( 'libraryUrl' ) . 'build/toggles.min.js',
|
134 |
+
array( 'jquery' ),
|
135 |
+
date( 'Ymd' ),
|
136 |
+
true
|
137 |
+
);
|
138 |
+
|
139 |
+
// Enqueue jquery-toggles css.
|
140 |
+
wp_enqueue_style( 'jquery-toggles-full',
|
141 |
+
Configs::get( 'libraryUrl' ) . 'build/toggles-full.css', array(), date( 'Ymd' ) );
|
142 |
|
143 |
/**
|
144 |
* Add additional scripts to Connect page.
|
159 |
public function addPage() {
|
160 |
add_submenu_page(
|
161 |
'options-general.php',
|
162 |
+
__( 'BoldGrid Connect', 'boldgrid-connect' ),
|
163 |
+
__( 'BoldGrid Connect', 'boldgrid-connect' ),
|
164 |
'manage_options',
|
165 |
'boldgrid-connect.php',
|
166 |
function () {
|
168 |
}
|
169 |
);
|
170 |
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* AJAX callback for the Connect Settings page.
|
174 |
+
*
|
175 |
+
* @since 2.7.0
|
176 |
+
*
|
177 |
+
* @uses $_POST['autoupdate'] Optional auto-update settings for plugins and themes.
|
178 |
+
* @uses $_POST['plugin_release_channel'] Plugin release channel.
|
179 |
+
* @uses $_POST['theme_release_channel'] Theme release channel.
|
180 |
+
*
|
181 |
+
* @see self::sanitizeSettings()
|
182 |
+
*
|
183 |
+
* @hook wp_ajax_boldgrid_library_connect_settings_save
|
184 |
+
*/
|
185 |
+
public function saveSettings() {
|
186 |
+
// Check user permissions.
|
187 |
+
if ( ! current_user_can( 'update_plugins' ) ) {
|
188 |
+
wp_send_json_error( array(
|
189 |
+
'error' => __( 'User access violation!', 'boldgrid-connect' ),
|
190 |
+
) );
|
191 |
+
}
|
192 |
+
|
193 |
+
// Check security nonce and referer.
|
194 |
+
if ( ! check_admin_referer( 'boldgrid_library_connect_settings_save' ) ) {
|
195 |
+
wp_send_json_error( array(
|
196 |
+
'error' => __( 'Security violation! Please try again.', 'boldgrid-connect' ),
|
197 |
+
) );
|
198 |
+
}
|
199 |
+
|
200 |
+
// Read settings form POST request, sanitize, and merge settings with saved.
|
201 |
+
$boldgridSettings = array_merge(
|
202 |
+
get_option( 'boldgrid_settings' ),
|
203 |
+
self::sanitizeSettings(
|
204 |
+
array(
|
205 |
+
'autoupdate' => ! empty( $_POST['autoupdate'] ) ?
|
206 |
+
(array) $_POST['autoupdate'] : array(),
|
207 |
+
'release_channel' => ! empty( $_POST['plugin_release_channel'] ) ?
|
208 |
+
sanitize_key( $_POST['plugin_release_channel'] ) : 'stable',
|
209 |
+
'theme_release_channel' => ! empty( $_POST['theme_release_channel'] ) ?
|
210 |
+
sanitize_key( $_POST['theme_release_channel'] ) : 'stable',
|
211 |
+
)
|
212 |
+
)
|
213 |
+
);
|
214 |
+
|
215 |
+
// If new auto-update settings were passed, then remove deprecated settings.
|
216 |
+
if ( ! empty( $_POST['autoupdate'] ) ) {
|
217 |
+
unset( $boldgridSettings['plugin_autoupdate'], $boldgridSettings['theme_autoupdate'] );
|
218 |
+
}
|
219 |
+
|
220 |
+
update_option( 'boldgrid_settings', $boldgridSettings );
|
221 |
+
|
222 |
+
wp_send_json_success();
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Sanitize settings.
|
227 |
+
*
|
228 |
+
* @since 2.7.0
|
229 |
+
*
|
230 |
+
* @static
|
231 |
+
*
|
232 |
+
* @param array $settings {
|
233 |
+
* Settings.
|
234 |
+
*
|
235 |
+
* @type array $autoupdate {
|
236 |
+
* Optional auto-update settings. This array does not always get included.
|
237 |
+
*
|
238 |
+
* @type array $plugins {
|
239 |
+
* Plugin auto-update settings.
|
240 |
+
*
|
241 |
+
* @type string $slug Plugin auto-update setting (1=Enabled, 0=Disabled).
|
242 |
+
* }
|
243 |
+
* @type array $themes {
|
244 |
+
* Theme auto-update settings.
|
245 |
+
*
|
246 |
+
* @type string $stylesheet Theme auto-update setting (1=Enabled, 0=Disabled).
|
247 |
+
* }
|
248 |
+
* }
|
249 |
+
* @type string $release_channel Plugin release channel.
|
250 |
+
* @type string $theme_release_channel Theme release channel.
|
251 |
+
* }
|
252 |
+
* @return array
|
253 |
+
*/
|
254 |
+
public static function sanitizeSettings( array $settings ) {
|
255 |
+
$result = array();
|
256 |
+
|
257 |
+
if ( ! empty( $settings['autoupdate'] ) && is_array( $settings['autoupdate'] ) ) {
|
258 |
+
foreach ( $settings['autoupdate'] as $category => $itemSetting ) {
|
259 |
+
$category = sanitize_key( $category );
|
260 |
+
|
261 |
+
foreach ( $itemSetting as $id => $val ) {
|
262 |
+
$id = sanitize_text_field( $id );
|
263 |
+
|
264 |
+
$result['autoupdate'][ $category ][ $id ] = (bool) $val;
|
265 |
+
}
|
266 |
+
}
|
267 |
+
}
|
268 |
+
|
269 |
+
// Validate release channel settings.
|
270 |
+
$channels = array(
|
271 |
+
'stable',
|
272 |
+
'edge',
|
273 |
+
'candidate',
|
274 |
+
);
|
275 |
+
|
276 |
+
if ( empty( $settings['release_channel'] ) ||
|
277 |
+
! in_array( $settings['release_channel'], $channels, true ) ) {
|
278 |
+
$result['release_channel'] = 'stable';
|
279 |
+
} else {
|
280 |
+
$result['release_channel'] = $settings['release_channel'];
|
281 |
+
}
|
282 |
+
|
283 |
+
if ( empty( $settings['theme_release_channel'] ) ||
|
284 |
+
! in_array( $settings['theme_release_channel'], $channels, true ) ) {
|
285 |
+
$result['theme_release_channel'] = 'stable';
|
286 |
+
} else {
|
287 |
+
$result['theme_release_channel'] = $settings['theme_release_channel'];
|
288 |
+
}
|
289 |
+
|
290 |
+
return $result;
|
291 |
+
}
|
292 |
}
|
vendor/boldgrid/library/src/Library/Plugin/Checker.php
CHANGED
@@ -75,7 +75,7 @@ class Checker {
|
|
75 |
* @since 1.0.0
|
76 |
*
|
77 |
* @link https://developer.wordpress.org/reference/functions/get_site_option/
|
78 |
-
* @see
|
79 |
* @see Boldgrid\Library\Util\Plugin::getFiltered()
|
80 |
*
|
81 |
* @return bool
|
@@ -83,7 +83,7 @@ class Checker {
|
|
83 |
public function findUpdated() {
|
84 |
$updated = array();
|
85 |
|
86 |
-
$boldgridSettings =
|
87 |
|
88 |
$plugins = get_site_transient( 'boldgrid_plugins_filtered' );
|
89 |
|
@@ -134,7 +134,7 @@ class Checker {
|
|
134 |
do_action( 'boldgrid_plugins_updated' );
|
135 |
}
|
136 |
|
137 |
-
|
138 |
|
139 |
return $updated;
|
140 |
}
|
75 |
* @since 1.0.0
|
76 |
*
|
77 |
* @link https://developer.wordpress.org/reference/functions/get_site_option/
|
78 |
+
* @see get_option()
|
79 |
* @see Boldgrid\Library\Util\Plugin::getFiltered()
|
80 |
*
|
81 |
* @return bool
|
83 |
public function findUpdated() {
|
84 |
$updated = array();
|
85 |
|
86 |
+
$boldgridSettings = get_option( 'boldgrid_settings' );
|
87 |
|
88 |
$plugins = get_site_transient( 'boldgrid_plugins_filtered' );
|
89 |
|
134 |
do_action( 'boldgrid_plugins_updated' );
|
135 |
}
|
136 |
|
137 |
+
update_option( 'boldgrid_settings', $boldgridSettings );
|
138 |
|
139 |
return $updated;
|
140 |
}
|
vendor/boldgrid/library/src/Library/ReleaseChannel.php
CHANGED
@@ -65,49 +65,54 @@ class ReleaseChannel {
|
|
65 |
}
|
66 |
|
67 |
/**
|
68 |
-
* Update Plugin Channel
|
69 |
*
|
70 |
* This methods fires when boldgrid_settings is updated. We check the values
|
71 |
* for the new plugin release channel to see if it changed here.
|
72 |
*
|
73 |
* @since 1.0.0
|
74 |
*
|
75 |
-
* @
|
|
|
76 |
*
|
77 |
-
* @
|
78 |
-
* @param mixed $new New option value being set.
|
79 |
-
* @param mixed $old Old option value being set.
|
80 |
*
|
81 |
-
* @
|
|
|
|
|
|
|
82 |
*/
|
83 |
-
public function updateChannel( $
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
|
85 |
// Plugin checks.
|
86 |
-
if (
|
87 |
-
|
88 |
-
|
89 |
-
wp_update_plugins();
|
90 |
-
}
|
91 |
}
|
92 |
|
93 |
// Theme checks.
|
94 |
-
if (
|
95 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
* @since 1.1
|
101 |
-
*
|
102 |
-
* @param type string $old Old theme release channel.
|
103 |
-
* @param type string $new New theme release channel.
|
104 |
-
*/
|
105 |
-
do_action( 'Boldgrid\Library\Library\ReleaseChannel\theme_channel_updated', $old['theme_release_channel'], $new['theme_release_channel'] );
|
106 |
-
|
107 |
-
delete_site_transient( 'boldgrid_api_data' );
|
108 |
-
delete_site_transient( 'update_themes' );
|
109 |
-
wp_update_themes();
|
110 |
-
}
|
111 |
}
|
112 |
|
113 |
return $new;
|
65 |
}
|
66 |
|
67 |
/**
|
68 |
+
* Update Plugin Channel.
|
69 |
*
|
70 |
* This methods fires when boldgrid_settings is updated. We check the values
|
71 |
* for the new plugin release channel to see if it changed here.
|
72 |
*
|
73 |
* @since 1.0.0
|
74 |
*
|
75 |
+
* @link https://developer.wordpress.org/reference/hooks/update_option_option/
|
76 |
+
* @link https://developer.wordpress.org/reference/hooks/update_site_option_option/
|
77 |
*
|
78 |
+
* @hook: update_option_boldgrid_settings
|
|
|
|
|
79 |
*
|
80 |
+
* @param mixed $old Old option value being set.
|
81 |
+
* @param mixed $new New option value being set.
|
82 |
+
* @param string $option The option name.
|
83 |
+
* @return mixed $new The new option being set.
|
84 |
*/
|
85 |
+
public function updateChannel( $old, $new, $option ) {
|
86 |
+
$old['release_channel'] = ! empty( $old['release_channel'] ) ?
|
87 |
+
$old['release_channel'] : null;
|
88 |
+
$new['release_channel'] = ! empty( $new['release_channel'] ) ?
|
89 |
+
$new['release_channel'] : 'stable';
|
90 |
+
$old['theme_release_channel'] = ! empty( $old['theme_release_channel'] ) ?
|
91 |
+
$old['theme_release_channel'] : null;
|
92 |
+
$new['theme_release_channel'] = ! empty( $new['theme_release_channel'] ) ?
|
93 |
+
$new['theme_release_channel'] : 'stable';
|
94 |
|
95 |
// Plugin checks.
|
96 |
+
if ( $old['release_channel'] !== $new['release_channel'] ) {
|
97 |
+
Util\Option::deletePluginTransients();
|
98 |
+
wp_update_plugins();
|
|
|
|
|
99 |
}
|
100 |
|
101 |
// Theme checks.
|
102 |
+
if ( $old['theme_release_channel'] !== $new['theme_release_channel'] ) {
|
103 |
+
/**
|
104 |
+
* Action to take when theme release channel has changed.
|
105 |
+
*
|
106 |
+
* @since 1.1
|
107 |
+
*
|
108 |
+
* @param string $old Old theme release channel.
|
109 |
+
* @param string $new New theme release channel.
|
110 |
+
*/
|
111 |
+
do_action( 'Boldgrid\Library\Library\ReleaseChannel\theme_channel_updated', $old['theme_release_channel'], $new['theme_release_channel'] );
|
112 |
|
113 |
+
delete_site_transient( 'boldgrid_api_data' );
|
114 |
+
delete_site_transient( 'update_themes' );
|
115 |
+
wp_update_themes();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
116 |
}
|
117 |
|
118 |
return $new;
|
vendor/boldgrid/library/src/Library/Start.php
CHANGED
@@ -113,6 +113,7 @@ class Start {
|
|
113 |
Configs::setItem( 'menu-reseller', new Menu\Reseller() );
|
114 |
Configs::setItem( 'page-connect', new Page\Connect() );
|
115 |
Configs::setItem( 'assets', new Asset() );
|
|
|
116 |
}
|
117 |
|
118 |
/**
|
113 |
Configs::setItem( 'menu-reseller', new Menu\Reseller() );
|
114 |
Configs::setItem( 'page-connect', new Page\Connect() );
|
115 |
Configs::setItem( 'assets', new Asset() );
|
116 |
+
new Editor();
|
117 |
}
|
118 |
|
119 |
/**
|
vendor/boldgrid/library/src/Library/Ui.php
CHANGED
@@ -93,6 +93,17 @@ class Ui {
|
|
93 |
Library\Configs::get( 'libraryUrl' ) . 'src/assets/js/sticky.js',
|
94 |
'jquery'
|
95 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
}
|
97 |
|
98 |
/**
|
@@ -102,6 +113,8 @@ class Ui {
|
|
102 |
*
|
103 |
* @hook Boldgrid\Library\Ui\render_col_container
|
104 |
*
|
|
|
|
|
105 |
* @param array $sections {
|
106 |
* An array of data used to create a left and right columned page.
|
107 |
*
|
@@ -123,7 +136,8 @@ class Ui {
|
|
123 |
|
124 |
$section_count = 0;
|
125 |
|
126 |
-
$show_section = ! empty( $
|
|
|
127 |
|
128 |
$content = '';
|
129 |
$navigation = '<ul class="bg-left-nav">';
|
93 |
Library\Configs::get( 'libraryUrl' ) . 'src/assets/js/sticky.js',
|
94 |
'jquery'
|
95 |
);
|
96 |
+
|
97 |
+
wp_register_style(
|
98 |
+
'bglib-attributes-css',
|
99 |
+
Library\Configs::get( 'libraryUrl' ) . 'src/assets/css/attributes.css'
|
100 |
+
);
|
101 |
+
|
102 |
+
wp_register_script(
|
103 |
+
'bglib-attributes-js',
|
104 |
+
Library\Configs::get( 'libraryUrl' ) . 'src/assets/js/attributes.js',
|
105 |
+
'jquery'
|
106 |
+
);
|
107 |
}
|
108 |
|
109 |
/**
|
113 |
*
|
114 |
* @hook Boldgrid\Library\Ui\render_col_container
|
115 |
*
|
116 |
+
* @uses $_REQUEST['section'] Section to switch to on load.
|
117 |
+
*
|
118 |
* @param array $sections {
|
119 |
* An array of data used to create a left and right columned page.
|
120 |
*
|
136 |
|
137 |
$section_count = 0;
|
138 |
|
139 |
+
$show_section = ! empty( $_REQUEST['section'] ) ?
|
140 |
+
sanitize_key( $_REQUEST['section'] ) : null;
|
141 |
|
142 |
$content = '';
|
143 |
$navigation = '<ul class="bg-left-nav">';
|
vendor/boldgrid/library/src/Library/Update.php
CHANGED
@@ -24,14 +24,120 @@ use Boldgrid\Library\Library;
|
|
24 |
* @see https://codex.wordpress.org/Configuring_Automatic_Background_Updates
|
25 |
*/
|
26 |
class Update {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
|
28 |
/**
|
29 |
* Constructor.
|
30 |
*
|
31 |
* @since 2.3.0
|
|
|
|
|
32 |
*/
|
33 |
public function __construct() {
|
34 |
Filter::add( $this );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
|
37 |
/**
|
@@ -40,11 +146,28 @@ class Update {
|
|
40 |
* @since 2.3.0
|
41 |
*
|
42 |
* @hook: auto_update_plugin
|
|
|
|
|
|
|
|
|
43 |
*/
|
44 |
-
public function auto_update_plugin() {
|
|
|
|
|
|
|
|
|
|
|
45 |
$pluginAutoupdate = \Boldgrid\Library\Util\Option::get( 'plugin_autoupdate' );
|
46 |
|
47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
}
|
49 |
|
50 |
/**
|
@@ -53,10 +176,27 @@ class Update {
|
|
53 |
* @since 2.3.0
|
54 |
*
|
55 |
* @hook: auto_update_theme
|
|
|
|
|
|
|
|
|
56 |
*/
|
57 |
-
public function auto_update_theme() {
|
|
|
|
|
|
|
|
|
|
|
58 |
$themeAutoupdate = \Boldgrid\Library\Util\Option::get( 'theme_autoupdate' );
|
59 |
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
}
|
62 |
}
|
24 |
* @see https://codex.wordpress.org/Configuring_Automatic_Background_Updates
|
25 |
*/
|
26 |
class Update {
|
27 |
+
/**
|
28 |
+
* Auto-update settings.
|
29 |
+
*
|
30 |
+
* @since 2.6.0
|
31 |
+
*
|
32 |
+
* @var array
|
33 |
+
*/
|
34 |
+
protected $settings;
|
35 |
|
36 |
/**
|
37 |
* Constructor.
|
38 |
*
|
39 |
* @since 2.3.0
|
40 |
+
*
|
41 |
+
* @see \Boldgrid\Library\Util\Option::get()
|
42 |
*/
|
43 |
public function __construct() {
|
44 |
Filter::add( $this );
|
45 |
+
|
46 |
+
$this->settings = (array) \Boldgrid\Library\Util\Option::get( 'autoupdate' );
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Auto update WordPress Core: All types.
|
51 |
+
*
|
52 |
+
* @since 2.6.0
|
53 |
+
*
|
54 |
+
* @hook: auto_update_core
|
55 |
+
*
|
56 |
+
* @param bool $update Update API response.
|
57 |
+
* @return bool
|
58 |
+
*/
|
59 |
+
public function auto_update_core( $update ) {
|
60 |
+
if ( ! apply_filters( 'Boldgrid\Library\Update\isEnalbed', false ) ) {
|
61 |
+
return $update;
|
62 |
+
}
|
63 |
+
|
64 |
+
return $update || ! empty( $this->settings['wpcore']['all'] );
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* Auto update WordPress Core: Major Updates.
|
69 |
+
*
|
70 |
+
* @since 2.6.0
|
71 |
+
*
|
72 |
+
* @hook: allow_major_auto_core_updates
|
73 |
+
*
|
74 |
+
* @param bool $update Update API response.
|
75 |
+
* @return bool
|
76 |
+
*/
|
77 |
+
public function allow_major_auto_core_updates( $update ) {
|
78 |
+
if ( ! apply_filters( 'Boldgrid\Library\Update\isEnalbed', false ) ) {
|
79 |
+
return $update;
|
80 |
+
}
|
81 |
+
|
82 |
+
return $update || ! empty( $this->settings['wpcore']['all'] ) ||
|
83 |
+
! empty( $this->settings['wpcore']['major'] );
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Auto update WordPress Core: Minor Updates.
|
88 |
+
*
|
89 |
+
* @since 2.6.0
|
90 |
+
*
|
91 |
+
* @hook: allow_minor_auto_core_updates
|
92 |
+
*
|
93 |
+
* @param bool $update Update API response.
|
94 |
+
* @return bool
|
95 |
+
*/
|
96 |
+
public function allow_minor_auto_core_updates( $update ) {
|
97 |
+
if ( ! apply_filters( 'Boldgrid\Library\Update\isEnalbed', false ) ) {
|
98 |
+
return $update;
|
99 |
+
}
|
100 |
+
|
101 |
+
return $update || ! empty( $this->settings['wpcore']['all'] ) ||
|
102 |
+
! empty( $this->settings['wpcore']['minor'] );
|
103 |
+
}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* Auto update WordPress Core: Development Updates.
|
107 |
+
*
|
108 |
+
* @since 2.6.0
|
109 |
+
*
|
110 |
+
* @hook: allow_dev_auto_core_updates
|
111 |
+
*
|
112 |
+
* @param bool $update Update API response.
|
113 |
+
* @return bool
|
114 |
+
*/
|
115 |
+
public function allow_dev_auto_core_updates( $update ) {
|
116 |
+
if ( ! apply_filters( 'Boldgrid\Library\Update\isEnalbed', false ) ) {
|
117 |
+
return $update;
|
118 |
+
}
|
119 |
+
|
120 |
+
return $update || ! empty( $this->settings['wpcore']['all'] ) ||
|
121 |
+
! empty( $this->settings['wpcore']['dev'] );
|
122 |
+
}
|
123 |
+
|
124 |
+
/**
|
125 |
+
* Auto update WordPress Core: Translation Updates.
|
126 |
+
*
|
127 |
+
* @since 2.6.0
|
128 |
+
*
|
129 |
+
* @hook: auto_update_translation
|
130 |
+
*
|
131 |
+
* @param bool $update Update API response.
|
132 |
+
* @return bool
|
133 |
+
*/
|
134 |
+
public function auto_update_translation( $update ) {
|
135 |
+
if ( ! apply_filters( 'Boldgrid\Library\Update\isEnalbed', false ) ) {
|
136 |
+
return $update;
|
137 |
+
}
|
138 |
+
|
139 |
+
return $update || ! empty( $this->settings['wpcore']['all'] ) ||
|
140 |
+
! empty( $this->settings['wpcore']['translation'] );
|
141 |
}
|
142 |
|
143 |
/**
|
146 |
* @since 2.3.0
|
147 |
*
|
148 |
* @hook: auto_update_plugin
|
149 |
+
*
|
150 |
+
* @param bool $update Update API response.
|
151 |
+
* @param object $item Item being updated.
|
152 |
+
* @return bool
|
153 |
*/
|
154 |
+
public function auto_update_plugin( $update, $item ) {
|
155 |
+
if ( ! apply_filters( 'Boldgrid\Library\Update\isEnalbed', false ) ) {
|
156 |
+
return $update;
|
157 |
+
}
|
158 |
+
|
159 |
+
// Old settings.
|
160 |
$pluginAutoupdate = \Boldgrid\Library\Util\Option::get( 'plugin_autoupdate' );
|
161 |
|
162 |
+
// Update if global setting is on, individual settings is on, or not set and default is on.
|
163 |
+
if ( ! empty( $pluginAutoupdate ) ||
|
164 |
+
! empty( $this->settings['plugins'][ $item->plugin ] ) ||
|
165 |
+
( ! isset( $this->settings['plugins'][ $item->plugin ] ) &&
|
166 |
+
! empty( $this->settings['plugins']['default'] ) ) ) {
|
167 |
+
$update = true;
|
168 |
+
}
|
169 |
+
|
170 |
+
return $update;
|
171 |
}
|
172 |
|
173 |
/**
|
176 |
* @since 2.3.0
|
177 |
*
|
178 |
* @hook: auto_update_theme
|
179 |
+
*
|
180 |
+
* @param bool $update Update API response.
|
181 |
+
* @param object $item Item being updated.
|
182 |
+
* @return bool
|
183 |
*/
|
184 |
+
public function auto_update_theme( $update, $item ) {
|
185 |
+
if ( ! apply_filters( 'Boldgrid\Library\Update\isEnalbed', false ) ) {
|
186 |
+
return $update;
|
187 |
+
}
|
188 |
+
|
189 |
+
// Old settings.
|
190 |
$themeAutoupdate = \Boldgrid\Library\Util\Option::get( 'theme_autoupdate' );
|
191 |
|
192 |
+
// Update if global setting is on, individual settings is on, or not set and default is on.
|
193 |
+
if ( ! empty( $themeAutoupdate ) ||
|
194 |
+
! empty( $this->settings['themes'][ $item->theme ] ) ||
|
195 |
+
( ! isset( $this->settings['themes'][ $item->theme ] ) &&
|
196 |
+
! empty( $this->settings['themes']['default'] ) ) ) {
|
197 |
+
$update = true;
|
198 |
+
}
|
199 |
+
|
200 |
+
return $update;
|
201 |
}
|
202 |
}
|
vendor/boldgrid/library/src/Library/Views/Connect.php
CHANGED
@@ -1,6 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<div class="wrap">
|
2 |
<h1>BoldGrid Connect</h1>
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
</div>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: Connect.php
|
4 |
+
*
|
5 |
+
* @package Boldgrid\Library
|
6 |
+
* @subpackage Library\Views
|
7 |
+
* @version 2.4.0
|
8 |
+
* @author BoldGrid <support@boldgrid.com>
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Build markup container.
|
12 |
+
$sections = array(
|
13 |
+
'sections' => array(
|
14 |
+
array(
|
15 |
+
'id' => 'section_connect_key',
|
16 |
+
'title' => __( 'BoldGrid Connect Key', 'boldgrid-connect' ),
|
17 |
+
'content' => include __DIR__ . '/Connect/ConnectKey.php',
|
18 |
+
),
|
19 |
+
),
|
20 |
+
'post_col_right' => '
|
21 |
+
<div id="settings-notice" class="notice notice-success is-dismissible inline"></div>
|
22 |
+
<p class="submit">
|
23 |
+
<input name="submit" id="submit" class="button button-primary" value="' .
|
24 |
+
esc_attr( 'Save Changes', 'boldgrid-connect' ) . '" type="submit">
|
25 |
+
<span class="spinner"></span>
|
26 |
+
</p>
|
27 |
+
',
|
28 |
+
);
|
29 |
+
|
30 |
+
array_push( $sections['sections'], array(
|
31 |
+
'id' => 'section_update_channels',
|
32 |
+
'title' => __( 'Update Channels', 'boldgrid-connect' ),
|
33 |
+
'content' => include __DIR__ . '/Connect/UpdateChannels.php',
|
34 |
+
) );
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Render sections into markup.
|
38 |
+
*
|
39 |
+
* @since 2.7.0
|
40 |
+
*
|
41 |
+
* @param array $sections
|
42 |
+
*
|
43 |
+
* phpcs:disable WordPress.NamingConventions.ValidHookName
|
44 |
+
*/
|
45 |
+
if ( ! has_filter( 'Boldgrid\Library\Ui\render_col_container' ) ) {
|
46 |
+
$ui = new \Boldgrid\Library\Library\Ui();
|
47 |
+
$ui->enqueue();
|
48 |
+
add_filter( 'Boldgrid\Library\Ui\render_col_container' , array( $ui, 'render_col_container' ) );
|
49 |
+
}
|
50 |
+
|
51 |
+
$container = apply_filters( 'Boldgrid\Library\Ui\render_col_container', $sections );
|
52 |
+
|
53 |
+
if ( is_array( $container ) ) {
|
54 |
+
$container = '<div class="notice notice-error inline">' .
|
55 |
+
__( 'Unable to display settings page. Unknown BoldGrid Library error.', 'boldgrid-connect' ) .
|
56 |
+
'</div>';
|
57 |
+
} else {
|
58 |
+
// Enqueue styles and scripts (registered in "\Boldgrid\Library\Ui::enqueue()").
|
59 |
+
wp_enqueue_style( 'bglib-ui-css' );
|
60 |
+
wp_enqueue_script( 'bglib-ui-js' );
|
61 |
+
wp_enqueue_script( 'bglib-sticky' );
|
62 |
+
wp_nonce_field( 'boldgrid_library_connect_settings_save' );
|
63 |
+
}
|
64 |
+
|
65 |
+
// Display page.
|
66 |
+
?>
|
67 |
<div class="wrap">
|
68 |
<h1>BoldGrid Connect</h1>
|
69 |
+
<?php
|
70 |
+
echo $container; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped
|
71 |
+
?>
|
72 |
</div>
|
vendor/boldgrid/library/src/Library/Views/Connect/AutoUpdates.php
ADDED
@@ -0,0 +1,358 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: Connect.php
|
4 |
+
*
|
5 |
+
* @package Boldgrid\Library
|
6 |
+
* @subpackage Library\Views
|
7 |
+
* @version 2.5.0
|
8 |
+
* @author BoldGrid <support@boldgrid.com>
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Get BoldGrid settings.
|
12 |
+
\Boldgrid\Library\Util\Option::init();
|
13 |
+
$autoupdateSettings = \Boldgrid\Library\Util\Option::get( 'autoupdate' );
|
14 |
+
$pluginsDefault = ! empty( $autoupdateSettings['plugins']['default'] );
|
15 |
+
$themesDefault = ! empty( $autoupdateSettings['themes']['default'] );
|
16 |
+
|
17 |
+
// Get BoldGrid Backup settings.
|
18 |
+
$boldgridBackupSettings = get_site_option( 'boldgrid_backup_settings', array() );
|
19 |
+
|
20 |
+
// Get deprecated settings.
|
21 |
+
$pluginAutoupdate = (bool) \Boldgrid\Library\Util\Option::get( 'plugin_autoupdate' );
|
22 |
+
$themeAutoupdate = (bool) \Boldgrid\Library\Util\Option::get( 'theme_autoupdate' );
|
23 |
+
|
24 |
+
// Get WordPress Core auto-update setting.
|
25 |
+
$wpcoreAutoupdates = ! empty( $autoupdateSettings['wpcore'] ) ?
|
26 |
+
$autoupdateSettings['wpcore'] : array();
|
27 |
+
$wpcoreMajor = ! empty( $wpcoreAutoupdates['major'] );
|
28 |
+
$wpcoreMinor = ! isset( $wpcoreAutoupdates['minor'] ) || $wpcoreAutoupdates['minor'];
|
29 |
+
$wpcoreDev = ! empty( $wpcoreAutoupdates['dev'] );
|
30 |
+
$wpcoreTranslation = ! empty( $wpcoreAutoupdates['translation'] );
|
31 |
+
$wpcoreAll = ! empty( $wpcoreAutoupdates['all'] ) ||
|
32 |
+
( $wpcoreMajor && $wpcoreMinor && $wpcoreDev && $wpcoreTranslation );
|
33 |
+
$translations = array(
|
34 |
+
'active' => esc_attr__( 'Active', 'boldgrid-connect' ),
|
35 |
+
'inactive' => esc_attr__( 'Inactive', 'boldgrid-connect' ),
|
36 |
+
'parent' => esc_attr__( 'Parent', 'boldgrid-connect' ),
|
37 |
+
);
|
38 |
+
$return = '';
|
39 |
+
$helpMarkup = sprintf(
|
40 |
+
// translators: 1: HTML anchor open tag, 2: HTML anchor close tag.
|
41 |
+
esc_html__(
|
42 |
+
'Automatically perform WordPress core, plugin, and theme updates. This feature utilizes %1$sWordPress filters%2$s, which enables automatic updates as they become available.',
|
43 |
+
'boldgrid-backup'
|
44 |
+
),
|
45 |
+
'<a target="_blank" href="https://codex.wordpress.org/Configuring_Automatic_Background_Updates">',
|
46 |
+
'</a>'
|
47 |
+
);
|
48 |
+
|
49 |
+
if ( empty( $boldgridBackupSettings['auto_backup'] ) ) {
|
50 |
+
$bbsLinkOpen = '';
|
51 |
+
$bbsLinkClose = '';
|
52 |
+
|
53 |
+
if ( empty( $_GET['page'] ) || 'boldgrid-backup-settings' !== $_GET['page'] ) {
|
54 |
+
$bbsLinkOpen = '<a href="' . admin_url( 'admin.php?page=boldgrid-backup-settings§ion=section_auto_rollback' ) . '">';
|
55 |
+
$bbsLinkClose = '</a>';
|
56 |
+
}
|
57 |
+
|
58 |
+
$return .= '
|
59 |
+
<div><p>' .
|
60 |
+
sprintf(
|
61 |
+
// translators: 1: HTML anchor open tag, 2: HTML anchor close tag, 3: HTML em open tag, 4: HTML em close tag..
|
62 |
+
esc_html__(
|
63 |
+
'You have %3$sAuto-Backup%4$s disabled in the %1$sBoldGrid Backup Settings%2$s. Please consider enabling the setting.',
|
64 |
+
'boldgrid-backup'
|
65 |
+
),
|
66 |
+
$bbsLinkOpen,
|
67 |
+
$bbsLinkClose,
|
68 |
+
'<em>',
|
69 |
+
'</em>'
|
70 |
+
) .
|
71 |
+
'</p></div>' . PHP_EOL;
|
72 |
+
}
|
73 |
+
|
74 |
+
$return .= '
|
75 |
+
<div class="bg-box">
|
76 |
+
<div class="bg-box-top">
|
77 |
+
' . esc_html__( 'WordPress Core', 'boldgrid-connect' ) . '
|
78 |
+
<span class="dashicons dashicons-editor-help" data-id="core-autoupdate"></span>
|
79 |
+
</div>
|
80 |
+
<div class="bg-box-bottom">
|
81 |
+
<p class="help" data-id="core-autoupdate">' . $helpMarkup . '</p>
|
82 |
+
|
83 |
+
<div class="auto-update-management div-table">
|
84 |
+
<div class="auto-update-settings div-table-body">
|
85 |
+
<div class="div-table-row">
|
86 |
+
<div class="div-tableCell">
|
87 |
+
<div class="div-table"><div class="div-table-body">
|
88 |
+
<div class="div-table-row">
|
89 |
+
<div class="div-tableCell">' .
|
90 |
+
esc_html__( 'All Update Types', 'boldgrid-connect' ) . '</div>
|
91 |
+
<div class="toggle toggle-light toggle-group wpcore-toggle"
|
92 |
+
data-wpcore="all"
|
93 |
+
data-toggle-on="' . ( $wpcoreAll ? 'true' : 'false' ) . '">
|
94 |
+
</div>
|
95 |
+
<input type="hidden" name="autoupdate[wpcore][all]"
|
96 |
+
value="' . ( $wpcoreAll ? 1 : 0 ) . '" />
|
97 |
+
</div>
|
98 |
+
<div class="div-table-row"><br /></div>
|
99 |
+
<div class="div-table-row">
|
100 |
+
<div class="div-tableCell">' .
|
101 |
+
esc_html__( 'Major Updates', 'boldgrid-connect' ) . '</div>
|
102 |
+
<div class="toggle toggle-light wpcore-toggle"
|
103 |
+
data-wpcore="major"
|
104 |
+
data-toggle-on="' . ( $wpcoreMajor ? 'true' : 'false' ) . '">
|
105 |
+
</div>
|
106 |
+
<input type="hidden" name="autoupdate[wpcore][major]"
|
107 |
+
value="' . ( $wpcoreMajor ? 1 : 0 ) . '" />
|
108 |
+
</div>
|
109 |
+
<div class="div-table-row">
|
110 |
+
<div class="div-tableCell">' .
|
111 |
+
esc_html__( 'Minor Updates', 'boldgrid-connect' ) . '</div>
|
112 |
+
<div class="toggle toggle-light wpcore-toggle"
|
113 |
+
data-wpcore="minor"
|
114 |
+
data-toggle-on="' . ( $wpcoreMinor ? 'true' : 'false' ) . '">
|
115 |
+
</div>
|
116 |
+
<input type="hidden" name="autoupdate[wpcore][minor]"
|
117 |
+
value="' . ( $wpcoreMinor ? 1 : 0 ) . '" />
|
118 |
+
</div>
|
119 |
+
<div class="div-table-row">
|
120 |
+
<div class="div-tableCell">' .
|
121 |
+
esc_html__( 'Development Updates', 'boldgrid-connect' ) . '</div>
|
122 |
+
<div class="toggle toggle-light wpcore-toggle"
|
123 |
+
data-wpcore="dev"
|
124 |
+
data-toggle-on="' . ( $wpcoreDev ? 'true' : 'false' ) . '">
|
125 |
+
</div>
|
126 |
+
<input type="hidden" name="autoupdate[wpcore][dev]"
|
127 |
+
value="' . ( $wpcoreDev ? 1 : 0 ) . '" />
|
128 |
+
</div>
|
129 |
+
<div class="div-table-row">
|
130 |
+
<div class="div-tableCell">' .
|
131 |
+
esc_html__( 'Translation Updates', 'boldgrid-connect' ) . '</div>
|
132 |
+
<div class="toggle toggle-light wpcore-toggle"
|
133 |
+
data-wpcore="translation"
|
134 |
+
data-toggle-on="' . ( $wpcoreTranslation ? 'true' : 'false' ) . '">
|
135 |
+
</div>
|
136 |
+
<input type="hidden" name="autoupdate[wpcore][translation]"
|
137 |
+
value="' . ( $wpcoreTranslation ? 1 : 0 ) . '" />
|
138 |
+
</div>
|
139 |
+
</div></div>
|
140 |
+
</div>
|
141 |
+
</div>
|
142 |
+
</div>
|
143 |
+
</div>
|
144 |
+
|
145 |
+
</div>
|
146 |
+
</div>
|
147 |
+
|
148 |
+
<div class="bg-box">
|
149 |
+
<div class="bg-box-top">
|
150 |
+
' . esc_html__( 'Plugins', 'boldgrid-connect' ) . '
|
151 |
+
<span class="dashicons dashicons-editor-help" data-id="plugins-autoupdate"></span>
|
152 |
+
</div>
|
153 |
+
<div class="bg-box-bottom">
|
154 |
+
<p class="help" data-id="plugins-autoupdate">' . $helpMarkup . '</p>
|
155 |
+
|
156 |
+
<div class="auto-update-management div-table">
|
157 |
+
<div class="auto-update-settings div-table-body">
|
158 |
+
<div class="div-table-row">
|
159 |
+
<div class="div-tableCell">
|
160 |
+
|
161 |
+
<div class="div-table"><div class="div-table-body">
|
162 |
+
<div class="div-table-row">
|
163 |
+
<div class="div-tableCell">' .
|
164 |
+
esc_html__( 'Default for New Plugins', 'boldgrid-connect' ) . '</div>
|
165 |
+
<div class="div-tableCell">
|
166 |
+
<div class="toggle toggle-light" id="toggle-default-plugins"
|
167 |
+
data-toggle-on="' . ( $pluginsDefault ? 'true' : 'false' ) . '">
|
168 |
+
</div>
|
169 |
+
</div>
|
170 |
+
<input type="hidden" name="autoupdate[plugins][default]"
|
171 |
+
value="' . ( $pluginsDefault ? 1 : 0 ) . '" />
|
172 |
+
</div>
|
173 |
+
<div class="div-table-row"><br /></div>
|
174 |
+
<div class="div-table-row">
|
175 |
+
<div class="div-tableCell">' .
|
176 |
+
esc_html__( 'All Plugins', 'boldgrid-connect' ) . '</div>
|
177 |
+
<div class="div-tableCell">
|
178 |
+
<div class="toggle toggle-light toggle-group" id="toggle-plugins"></div>
|
179 |
+
</div>
|
180 |
+
</div>
|
181 |
+
';
|
182 |
+
|
183 |
+
$plugins = get_plugins();
|
184 |
+
|
185 |
+
// Split into groups: active/inactive.
|
186 |
+
$pluginsActive = array();
|
187 |
+
$pluginsInactive = array();
|
188 |
+
|
189 |
+
foreach ( $plugins as $slug => $pluginData ) {
|
190 |
+
if ( is_plugin_active( $slug ) ) {
|
191 |
+
$pluginsActive[ $slug ] = $pluginData;
|
192 |
+
} else {
|
193 |
+
$pluginsInactive[ $slug ] = $pluginData;
|
194 |
+
}
|
195 |
+
}
|
196 |
+
|
197 |
+
$statuses = array(
|
198 |
+
'Active',
|
199 |
+
'Inactive',
|
200 |
+
);
|
201 |
+
|
202 |
+
foreach ( $statuses as $status ) {
|
203 |
+
$statusLower = strtolower( $status );
|
204 |
+
|
205 |
+
$return .= '<div class="div-table-contents">
|
206 |
+
<div class="div-table-row bglib-collapsible-control' . ( 'Inactive' !== $status ?
|
207 |
+
' bglib-collapsible-open' : '' ) . '">
|
208 |
+
<div class="div-tableCell"><h3>' . $translations[ $statusLower ] . '</h3></div>
|
209 |
+
<div class="div-tableCell">
|
210 |
+
<span class="dashicons dashicons-arrow-down-alt2 bglib-collapsible-' . $statusLower . '"></span>
|
211 |
+
</div>
|
212 |
+
</div>
|
213 |
+
';
|
214 |
+
|
215 |
+
foreach ( ${ 'plugins' . $status } as $slug => $pluginData ) {
|
216 |
+
// Enable if global setting is on, individual settings is on, or not set and default is on.
|
217 |
+
$toggle = $pluginAutoupdate || ! empty( $autoupdateSettings['plugins'][ $slug ] ) ||
|
218 |
+
( ! isset( $autoupdateSettings['plugins'][ $slug ] ) && $pluginsDefault );
|
219 |
+
|
220 |
+
$return .= '
|
221 |
+
<div class="div-table-row plugin-update-setting bglib-collapsible">
|
222 |
+
<div class="div-tableCell">' . $pluginData['Name'] . '</div>
|
223 |
+
<div class="div-tableCell">
|
224 |
+
<div class="toggle toggle-light plugin-toggle"
|
225 |
+
data-plugin="' . $slug . '"
|
226 |
+
data-toggle-on="' . ( $toggle ? 'true' : 'false' ) . '">
|
227 |
+
</div>
|
228 |
+
</div>
|
229 |
+
<input type="hidden" name="autoupdate[plugins][' . $slug . ']"
|
230 |
+
value="' . ( $toggle ? 1 : 0 ) . '" />
|
231 |
+
</div>
|
232 |
+
';
|
233 |
+
}
|
234 |
+
$return .= '</div>
|
235 |
+
';
|
236 |
+
}
|
237 |
+
|
238 |
+
$return .= '
|
239 |
+
</div></div>
|
240 |
+
</div>
|
241 |
+
</div>
|
242 |
+
</div>
|
243 |
+
</div>
|
244 |
+
|
245 |
+
</div>
|
246 |
+
</div>
|
247 |
+
|
248 |
+
<div class="bg-box">
|
249 |
+
<div class="bg-box-top">
|
250 |
+
' . esc_html__( 'Themes', 'boldgrid-connect' ) . '
|
251 |
+
<span class="dashicons dashicons-editor-help" data-id="themes-autoupdate"></span>
|
252 |
+
</div>
|
253 |
+
<div class="bg-box-bottom">
|
254 |
+
<p class="help" data-id="themes-autoupdate">' . $helpMarkup . '</p>
|
255 |
+
|
256 |
+
<div class="auto-update-management div-table">
|
257 |
+
<div class="auto-update-settings div-table-body">
|
258 |
+
<div class="div-table-row">
|
259 |
+
<div class="div-tableCell">
|
260 |
+
|
261 |
+
<div class="div-table"><div class="div-table-body">
|
262 |
+
<div class="div-table-row">
|
263 |
+
<div class="div-tableCell">' .
|
264 |
+
esc_html__( 'Default for New Themes', 'boldgrid-connect' ) . '</div>
|
265 |
+
<div class="div-tableCell">
|
266 |
+
<div class="toggle toggle-light" id="toggle-default-themes"
|
267 |
+
data-toggle-on="' . ( $themesDefault ? 'true' : 'false' ) . '">
|
268 |
+
</div>
|
269 |
+
</div>
|
270 |
+
<input type="hidden" name="autoupdate[themes][default]"
|
271 |
+
value="' . ( 'true' === $themesDefault ? 1 : 0 ) . '" />
|
272 |
+
</div>
|
273 |
+
<div class="div-table-row"><br /></div>
|
274 |
+
<div class="div-table-row">
|
275 |
+
<div class="div-tableCell">' .
|
276 |
+
esc_html__( 'All Themes', 'boldgrid-connect' ) . '</div>
|
277 |
+
<div class="div-tableCell">
|
278 |
+
<div class="toggle toggle-light toggle-group" id="toggle-themes"></div>
|
279 |
+
</div>
|
280 |
+
</div>
|
281 |
+
';
|
282 |
+
|
283 |
+
$activeStylesheet = get_option( 'stylesheet' );
|
284 |
+
$activeTemplate = get_option( 'template' );
|
285 |
+
$themes = wp_get_themes();
|
286 |
+
|
287 |
+
// Split into groups: active/inactive.
|
288 |
+
$themesActive = array();
|
289 |
+
$themesInactive = array();
|
290 |
+
|
291 |
+
foreach ( $themes as $stylesheet => $theme ) {
|
292 |
+
$isActive = $stylesheet === $activeStylesheet;
|
293 |
+
$isParent = ( $activeStylesheet !== $activeTemplate && $stylesheet === $activeTemplate );
|
294 |
+
|
295 |
+
if ( $isActive || $isParent ) {
|
296 |
+
$themesActive[ $stylesheet ] = $theme;
|
297 |
+
} else {
|
298 |
+
$themesInactive[ $stylesheet ] = $theme;
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
$statuses = array(
|
303 |
+
'Active',
|
304 |
+
'Inactive',
|
305 |
+
);
|
306 |
+
|
307 |
+
foreach ( $statuses as $status ) {
|
308 |
+
$statusLower = strtolower( $status );
|
309 |
+
|
310 |
+
$return .= '<div class="div-table-contents">
|
311 |
+
<div class="div-table-row bglib-collapsible-control' . ( 'Inactive' !== $status ?
|
312 |
+
' bglib-collapsible-open' : '' ) . '">
|
313 |
+
<div class="div-tableCell"><h3>' . $translations[ $statusLower ] . '</h3></div>
|
314 |
+
<div class="div-tableCell">
|
315 |
+
<span class="dashicons dashicons-arrow-down-alt2 bglib-collapsible-' . $statusLower .'"></span>
|
316 |
+
</div>
|
317 |
+
</div>
|
318 |
+
';
|
319 |
+
|
320 |
+
foreach ( ${ 'themes' . $status } as $stylesheet => $theme ) {
|
321 |
+
$isParent = ( $activeStylesheet !== $activeTemplate && $stylesheet === $activeTemplate );
|
322 |
+
|
323 |
+
// Enable if global setting is on, individual settings is on, or not set and default is on.
|
324 |
+
$toggle = $themeAutoupdate || ! empty( $autoupdateSettings['themes'][ $stylesheet ] ) ||
|
325 |
+
( ! isset( $autoupdateSettings['themes'][ $stylesheet ] ) && $themesDefault );
|
326 |
+
|
327 |
+
$return .= '
|
328 |
+
<div class="div-table-row theme-update-setting bglib-collapsible">
|
329 |
+
<div class="div-tableCell">' . $theme->get( 'Name' ) .
|
330 |
+
( $isParent ? ' (' . $translations['parent'] . ')' : '' ) . '</div>
|
331 |
+
<div class="div-tableCell">
|
332 |
+
<div class="toggle toggle-light theme-toggle"
|
333 |
+
data-stylesheet="' . $stylesheet . '"
|
334 |
+
data-toggle-on="' . ( $toggle ? 'true' : 'false' ) . '">
|
335 |
+
</div>
|
336 |
+
</div>
|
337 |
+
<input type="hidden" name="autoupdate[themes][' . $stylesheet . ']"
|
338 |
+
value="' . ( $toggle ? 1 : 0 ) . '" />
|
339 |
+
</div>
|
340 |
+
';
|
341 |
+
}
|
342 |
+
|
343 |
+
$return .= '</div>
|
344 |
+
';
|
345 |
+
}
|
346 |
+
|
347 |
+
$return .= '
|
348 |
+
</div></div>
|
349 |
+
</div>
|
350 |
+
</div>
|
351 |
+
</div>
|
352 |
+
</div>
|
353 |
+
|
354 |
+
</div>
|
355 |
+
</div>
|
356 |
+
';
|
357 |
+
|
358 |
+
return $return;
|
vendor/boldgrid/library/src/Library/Views/Connect/ConnectKey.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: ConnectKey.php
|
4 |
+
*
|
5 |
+
* @package Boldgrid\Library
|
6 |
+
* @subpackage Library\Views
|
7 |
+
* @version 2.5.0
|
8 |
+
* @author BoldGrid <support@boldgrid.com>
|
9 |
+
*/
|
10 |
+
|
11 |
+
return '
|
12 |
+
<div class="card connect-key-management">
|
13 |
+
<div class="connect-key-prompt"></div>
|
14 |
+
</div>
|
15 |
+
';
|
vendor/boldgrid/library/src/Library/Views/Connect/UpdateChannels.php
ADDED
@@ -0,0 +1,165 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: UpdateChannels.php
|
4 |
+
*
|
5 |
+
* @package Boldgrid\Library
|
6 |
+
* @subpackage Library\Views
|
7 |
+
* @version 2.5.0
|
8 |
+
* @author BoldGrid <support@boldgrid.com>
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Get settings.
|
12 |
+
\Boldgrid\Library\Util\Option::init();
|
13 |
+
$pluginReleaseChannel = \Boldgrid\Library\Util\Option::get( 'release_channel' );
|
14 |
+
$themeReleaseChannel = \Boldgrid\Library\Util\Option::get( 'theme_release_channel' );
|
15 |
+
|
16 |
+
// Validate release channel settings.
|
17 |
+
$channels = array(
|
18 |
+
'stable',
|
19 |
+
'edge',
|
20 |
+
'candidate',
|
21 |
+
);
|
22 |
+
|
23 |
+
if ( ! in_array( $pluginReleaseChannel, $channels, true ) ) {
|
24 |
+
$pluginReleaseChannel = 'stable';
|
25 |
+
}
|
26 |
+
|
27 |
+
if ( ! in_array( $themeReleaseChannel, $channels, true ) ) {
|
28 |
+
$themeReleaseChannel = 'stable';
|
29 |
+
}
|
30 |
+
|
31 |
+
$showCandidateChoice = false;
|
32 |
+
|
33 |
+
if ( 'candidate' === $pluginReleaseChannel || 'candidate' === $themeReleaseChannel ||
|
34 |
+
! empty( $_GET['channels'] ) ) {
|
35 |
+
$showCandidateChoice = true;
|
36 |
+
}
|
37 |
+
|
38 |
+
$helpMarkup = esc_html__(
|
39 |
+
'Update release channels determine which versions are retrieved from the BoldGrid Connect system.',
|
40 |
+
'boldgrid-backup'
|
41 |
+
);
|
42 |
+
|
43 |
+
$return = '
|
44 |
+
<div class="bg-box">
|
45 |
+
<div class="bg-box-top">
|
46 |
+
' . esc_html__( 'Plugins', 'boldgrid-connect' ) . '
|
47 |
+
<span class="dashicons dashicons-editor-help" data-id="plugins-update-channels"></span>
|
48 |
+
</div>
|
49 |
+
<div class="bg-box-bottom">
|
50 |
+
|
51 |
+
<p class="help" data-id="plugins-update-channels">' . $helpMarkup . '</p>
|
52 |
+
|
53 |
+
<div class="auto-update-management div-table">
|
54 |
+
<div class="auto-update-settings div-table-body">
|
55 |
+
<div class="div-table-row">
|
56 |
+
<div class="div-tableCell">
|
57 |
+
<div class="div-table"><div class="div-table-body">
|
58 |
+
<div class="div-table-row plugin-update-channel">
|
59 |
+
<div class="div-tableCell">
|
60 |
+
<input type="radio" name="plugin_release_channel" value="stable"';
|
61 |
+
|
62 |
+
if ( 'stable' === $pluginReleaseChannel ) {
|
63 |
+
$return .= ' checked="checked"';
|
64 |
+
}
|
65 |
+
|
66 |
+
$return .= '> Stable
|
67 |
+
</div>
|
68 |
+
<div class="div-tableCell">
|
69 |
+
<input type="radio" name="plugin_release_channel" value="edge"';
|
70 |
+
|
71 |
+
if ( 'edge' === $pluginReleaseChannel ) {
|
72 |
+
$return .= ' checked="checked"';
|
73 |
+
}
|
74 |
+
|
75 |
+
$return .='> Edge
|
76 |
+
</div>
|
77 |
+
';
|
78 |
+
|
79 |
+
if ( $showCandidateChoice ) {
|
80 |
+
$return .='
|
81 |
+
<div class="div-tableCell">
|
82 |
+
<input type="radio" name="plugin_release_channel" value="candidate"';
|
83 |
+
|
84 |
+
if ( 'candidate' === $pluginReleaseChannel ) {
|
85 |
+
$return .= ' checked="checked"';
|
86 |
+
}
|
87 |
+
|
88 |
+
$return .= '> Candidate
|
89 |
+
</div>
|
90 |
+
';
|
91 |
+
}
|
92 |
+
|
93 |
+
$return .= '
|
94 |
+
</div>
|
95 |
+
</div></div>
|
96 |
+
</div>
|
97 |
+
</div>
|
98 |
+
</div>
|
99 |
+
</div>
|
100 |
+
|
101 |
+
</div>
|
102 |
+
</div>
|
103 |
+
|
104 |
+
<div class="bg-box">
|
105 |
+
<div class="bg-box-top">
|
106 |
+
' . esc_html__( 'Themes', 'boldgrid-connect' ) . '
|
107 |
+
<span class="dashicons dashicons-editor-help" data-id="themes-update-channels"></span>
|
108 |
+
</div>
|
109 |
+
<div class="bg-box-bottom">
|
110 |
+
|
111 |
+
<p class="help" data-id="themes-update-channels">' . $helpMarkup . '</p>
|
112 |
+
|
113 |
+
<div class="auto-update-management div-table">
|
114 |
+
<div class="auto-update-settings div-table-body">
|
115 |
+
<div class="div-table-row">
|
116 |
+
<div class="div-tableCell">
|
117 |
+
<div class="div-table"><div class="div-table-body">
|
118 |
+
<div class="div-table-row theme-update-channel">
|
119 |
+
<div class="div-tableCell">
|
120 |
+
<input type="radio" name="theme_release_channel" value="stable"';
|
121 |
+
|
122 |
+
if ( 'stable' === $themeReleaseChannel ) {
|
123 |
+
$return .= ' checked="checked"';
|
124 |
+
}
|
125 |
+
|
126 |
+
$return .= '> Stable
|
127 |
+
</div>
|
128 |
+
<div class="div-tableCell">
|
129 |
+
<input type="radio" name="theme_release_channel" value="edge"';
|
130 |
+
|
131 |
+
if ( 'edge' === $themeReleaseChannel ) {
|
132 |
+
$return .= ' checked="checked"';
|
133 |
+
}
|
134 |
+
|
135 |
+
$return .= '> Edge
|
136 |
+
</div>
|
137 |
+
';
|
138 |
+
|
139 |
+
if ( $showCandidateChoice ) {
|
140 |
+
$return .= '
|
141 |
+
<div class="div-tableCell">
|
142 |
+
<input type="radio" name="theme_release_channel" value="candidate"';
|
143 |
+
|
144 |
+
if ( 'candidate' === $themeReleaseChannel ) {
|
145 |
+
$return .= ' checked="checked"';
|
146 |
+
}
|
147 |
+
|
148 |
+
$return .= '> Candidate
|
149 |
+
</div>
|
150 |
+
';
|
151 |
+
}
|
152 |
+
|
153 |
+
$return .= '
|
154 |
+
</div>
|
155 |
+
</div></div>
|
156 |
+
</div>
|
157 |
+
</div>
|
158 |
+
</div>
|
159 |
+
</div>
|
160 |
+
|
161 |
+
</div>
|
162 |
+
</div>
|
163 |
+
';
|
164 |
+
|
165 |
+
return $return;
|
vendor/boldgrid/library/src/Library/Views/EnvatoFreeKey.php
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
<!-- User has free key entered and should claim their free key -->
|
2 |
<div class="envato-claim-message">
|
3 |
<p>
|
4 |
-
<?php
|
5 |
-
but your Envato purchase entitles you to a Premium Connect Key.' ) ?>
|
6 |
</p>
|
7 |
<p>
|
8 |
<?php printf( __( 'Please visit %sBoldGrid Central%s
|
9 |
-
to link your accounts and claim your Premium Connect Key.' ),
|
10 |
'<a target="_blank" href="https://www.boldgrid.com/central/code/envato">',
|
11 |
'</a>' ) ?>
|
12 |
</p>
|
1 |
<!-- User has free key entered and should claim their free key -->
|
2 |
<div class="envato-claim-message">
|
3 |
<p>
|
4 |
+
<?php esc_html_e( 'Thank you for your Envato Market purchase. You currently have a Free Connect Key entered,
|
5 |
+
but your Envato purchase entitles you to a Premium Connect Key.', 'boldgrid-connect' ) ?>
|
6 |
</p>
|
7 |
<p>
|
8 |
<?php printf( __( 'Please visit %sBoldGrid Central%s
|
9 |
+
to link your accounts and claim your Premium Connect Key.', 'boldgrid-connect' ),
|
10 |
'<a target="_blank" href="https://www.boldgrid.com/central/code/envato">',
|
11 |
'</a>' ) ?>
|
12 |
</p>
|
vendor/boldgrid/library/src/Library/Views/KeyPrompt.php
CHANGED
@@ -5,51 +5,51 @@
|
|
5 |
>
|
6 |
<div class="premium-key-active key-entry-message">
|
7 |
<h2 class="dashicons-before dashicons-admin-network">
|
8 |
-
<?php esc_html_e( 'Premium BoldGrid Connect Key', 'boldgrid-
|
9 |
<p>
|
10 |
-
<?php esc_html_e( 'Awesome! You have Premium Connect Key saved on this site.' ) ?>
|
11 |
</p>
|
12 |
<p>
|
13 |
-
<?php printf( esc_html__( 'Make sure you\'re getting the most out of your premium subscription by installing our other %sBoldGrid plugins%s. As a Premium user, you also have
|
14 |
'<a href="https://www.boldgrid.com/wordpress-plugins/" target="_blank">', '</a>',
|
15 |
-
'<a href="https://www.boldgrid.com/central/
|
16 |
) ?>
|
17 |
</p>
|
18 |
-
<p class='change-key'><a href="#" data-action="change-connect-key"><?php _e( 'Click here to change your Connect Key' ) ?></a></p>
|
19 |
</div>
|
20 |
<div class="basic-key-active key-entry-message">
|
21 |
<h2 class="dashicons-before dashicons-admin-network">
|
22 |
-
<?php esc_html_e( 'Free BoldGrid Connect Key', 'boldgrid-
|
23 |
|
24 |
<?php if ( ! $enableClaimMessage ) { ?>
|
25 |
<p>
|
26 |
-
<?php esc_html_e( 'Thank you for adding your Connect Key. Try upgrading to a Premium subscription for full access to BoldGrid!', 'boldgrid-
|
27 |
</p>
|
28 |
<p><a target="_blank" href="https://www.boldgrid.com/connect-keys?source=library-prompt"
|
29 |
-
class="button button-primary"><?php
|
30 |
</p>
|
31 |
<?php } else {
|
32 |
include __DIR__ . '/EnvatoFreeKey.php';
|
33 |
} ?>
|
34 |
-
<p class='change-key'><a href="#" data-action="change-connect-key"><?php _e( 'Click here to change your Connect Key' ) ?></a></p>
|
35 |
</div>
|
36 |
<div class="api-notice">
|
37 |
<h2 class="dashicons-before dashicons-admin-network">
|
38 |
-
<?php esc_html_e( 'Enter Your BoldGrid Connect Key', 'boldgrid-
|
39 |
</h2>
|
40 |
<p id="boldgrid_api_key_notice_message">
|
41 |
-
<?php printf( esc_html__( 'Please enter your %s32 digit BoldGrid Connect Key%s below and click submit.', 'boldgrid-
|
42 |
</p>
|
43 |
<form id="boldgrid-api-form" autocomplete="off">
|
44 |
<?php wp_nonce_field( 'boldgrid_set_key', 'set_key_auth' ); ?>
|
45 |
<div class="tos-box">
|
46 |
<label><input id="tos-box" type="checkbox" value="0">
|
47 |
-
<?php printf( esc_html__( 'I agree to the %sTerms of Use and Privacy Policy%s.', 'boldgrid-
|
48 |
</div>
|
49 |
<br />
|
50 |
<input type="text" id="boldgrid_api_key" maxlength="37" placeholder="XXXXXXXX - XXXXXXXX - XXXXXXXX - XXXXXXXX" autocomplete="off" />
|
51 |
<button id="submit_api_key" class="button button-primary">
|
52 |
-
<?php esc_html_e( 'Submit', 'boldgrid-
|
53 |
</button>
|
54 |
<span>
|
55 |
<div id="boldgrid-api-loading" class="boldgrid-wp-spin"></div>
|
@@ -63,7 +63,7 @@
|
|
63 |
?>
|
64 |
<p><a href="#" class="boldgridApiKeyLink">
|
65 |
<?php
|
66 |
-
esc_html_e( 'Don\'t have a Connect Key yet or lost your Key?', 'boldgrid-
|
67 |
?>
|
68 |
</a></p>
|
69 |
<?php } ?>
|
@@ -74,10 +74,10 @@
|
|
74 |
?>
|
75 |
<div class="new-api-key hidden">
|
76 |
<h2 class="dashicons-before dashicons-admin-network">
|
77 |
-
<?php esc_html_e( 'Request a BoldGrid Connect Key', 'boldgrid-
|
78 |
</h2>
|
79 |
<a href="#" class="enterKeyLink">
|
80 |
-
<?php esc_html_e( 'Have a Connect Key to enter?', 'boldgrid-
|
81 |
</a>
|
82 |
<br />
|
83 |
<br />
|
@@ -90,7 +90,7 @@
|
|
90 |
If you do not have a Premium Connect Key, then you may request a free key below.
|
91 |
Please visit %sour site%s for full details.%s
|
92 |
If you have lost your key, you can have it resent by entering your information below.',
|
93 |
-
'boldgrid-
|
94 |
),
|
95 |
'<b>',
|
96 |
'</b>',
|
@@ -103,22 +103,22 @@
|
|
103 |
<p class="error-alerts"></p>
|
104 |
<form id="requestKeyForm">
|
105 |
<label>
|
106 |
-
<?php esc_html_e( 'First Name', 'boldgrid-
|
107 |
</label>
|
108 |
-
<input type="text" id="firstName" maxlength="50" placeholder="<?php esc_html_e( 'First Name', 'boldgrid-
|
109 |
<label>
|
110 |
-
<?php esc_html_e( 'Last Name', 'boldgrid-
|
111 |
</label>
|
112 |
-
<input type="text" id="lastName" maxlength="50" placeholder="<?php esc_html_e( 'Last Name', 'boldgrid-
|
113 |
<label>
|
114 |
-
<?php esc_html_e( 'E-mail', 'boldgrid-
|
115 |
</label>
|
116 |
<input type="text" id="emailAddr" maxlength="50" placeholder="your@name.com" value="<?php echo esc_attr( $email ); ?>" />
|
117 |
<br />
|
118 |
<input type="hidden" id="siteUrl" value="<?php echo get_admin_url(); ?>" />
|
119 |
<br />
|
120 |
<button id="requestKey" class="button button-primary">
|
121 |
-
<?php esc_html_e( 'Submit', 'boldgrid-
|
122 |
</button>
|
123 |
<span class="spinner"></span>
|
124 |
<input type="hidden" id="generate-api-key" value="<?php echo esc_attr( $api ); ?>" />
|
5 |
>
|
6 |
<div class="premium-key-active key-entry-message">
|
7 |
<h2 class="dashicons-before dashicons-admin-network">
|
8 |
+
<?php esc_html_e( 'Premium BoldGrid Connect Key', 'boldgrid-connect' )?></h2>
|
9 |
<p>
|
10 |
+
<?php esc_html_e( 'Awesome! You have a Premium Connect Key saved on this site.', 'boldgrid-connect' ) ?>
|
11 |
</p>
|
12 |
<p>
|
13 |
+
<?php printf( esc_html__( 'Make sure you\'re getting the most out of your premium subscription by installing our other %sBoldGrid plugins%s. As a Premium user, you also have access to %sCloud WordPress%s where you can create new WordPress sites for free. If you need any help, our support team is eager to serve!', 'boldgrid-connect' ),
|
14 |
'<a href="https://www.boldgrid.com/wordpress-plugins/" target="_blank">', '</a>',
|
15 |
+
'<a href="https://www.boldgrid.com/central/" target="_blank">', '</a>'
|
16 |
) ?>
|
17 |
</p>
|
18 |
+
<p class='change-key'><a href="#" data-action="change-connect-key"><?php _e( 'Click here to change your Connect Key', 'boldgrid-connect' ) ?></a></p>
|
19 |
</div>
|
20 |
<div class="basic-key-active key-entry-message">
|
21 |
<h2 class="dashicons-before dashicons-admin-network">
|
22 |
+
<?php esc_html_e( 'Free BoldGrid Connect Key', 'boldgrid-connect' )?></h2>
|
23 |
|
24 |
<?php if ( ! $enableClaimMessage ) { ?>
|
25 |
<p>
|
26 |
+
<?php esc_html_e( 'Thank you for adding your Connect Key. Try upgrading to a Premium subscription for full access to BoldGrid!', 'boldgrid-connect' ); ?>
|
27 |
</p>
|
28 |
<p><a target="_blank" href="https://www.boldgrid.com/connect-keys?source=library-prompt"
|
29 |
+
class="button button-primary"><?php esc_html_e( 'Upgrade', 'boldgrid-connect' ) ?></a>
|
30 |
</p>
|
31 |
<?php } else {
|
32 |
include __DIR__ . '/EnvatoFreeKey.php';
|
33 |
} ?>
|
34 |
+
<p class='change-key'><a href="#" data-action="change-connect-key"><?php _e( 'Click here to change your Connect Key', 'boldgrid-connect' ) ?></a></p>
|
35 |
</div>
|
36 |
<div class="api-notice">
|
37 |
<h2 class="dashicons-before dashicons-admin-network">
|
38 |
+
<?php esc_html_e( 'Enter Your BoldGrid Connect Key', 'boldgrid-connect' ); ?>
|
39 |
</h2>
|
40 |
<p id="boldgrid_api_key_notice_message">
|
41 |
+
<?php printf( esc_html__( 'Please enter your %s32 digit BoldGrid Connect Key%s below and click submit.', 'boldgrid-connect' ), '<b>', '</b>' ); ?>
|
42 |
</p>
|
43 |
<form id="boldgrid-api-form" autocomplete="off">
|
44 |
<?php wp_nonce_field( 'boldgrid_set_key', 'set_key_auth' ); ?>
|
45 |
<div class="tos-box">
|
46 |
<label><input id="tos-box" type="checkbox" value="0">
|
47 |
+
<?php printf( esc_html__( 'I agree to the %sTerms of Use and Privacy Policy%s.', 'boldgrid-connect' ), '<a href="https://www.boldgrid.com/software-privacy-policy/" target="_blank">', '</a>' ); ?></label>
|
48 |
</div>
|
49 |
<br />
|
50 |
<input type="text" id="boldgrid_api_key" maxlength="37" placeholder="XXXXXXXX - XXXXXXXX - XXXXXXXX - XXXXXXXX" autocomplete="off" />
|
51 |
<button id="submit_api_key" class="button button-primary">
|
52 |
+
<?php esc_html_e( 'Submit', 'boldgrid-connect' ); ?>
|
53 |
</button>
|
54 |
<span>
|
55 |
<div id="boldgrid-api-loading" class="boldgrid-wp-spin"></div>
|
63 |
?>
|
64 |
<p><a href="#" class="boldgridApiKeyLink">
|
65 |
<?php
|
66 |
+
esc_html_e( 'Don\'t have a Connect Key yet or lost your Key?', 'boldgrid-connect' );
|
67 |
?>
|
68 |
</a></p>
|
69 |
<?php } ?>
|
74 |
?>
|
75 |
<div class="new-api-key hidden">
|
76 |
<h2 class="dashicons-before dashicons-admin-network">
|
77 |
+
<?php esc_html_e( 'Request a BoldGrid Connect Key', 'boldgrid-connect' ); ?>
|
78 |
</h2>
|
79 |
<a href="#" class="enterKeyLink">
|
80 |
+
<?php esc_html_e( 'Have a Connect Key to enter?', 'boldgrid-connect' ); ?>
|
81 |
</a>
|
82 |
<br />
|
83 |
<br />
|
90 |
If you do not have a Premium Connect Key, then you may request a free key below.
|
91 |
Please visit %sour site%s for full details.%s
|
92 |
If you have lost your key, you can have it resent by entering your information below.',
|
93 |
+
'boldgrid-connect'
|
94 |
),
|
95 |
'<b>',
|
96 |
'</b>',
|
103 |
<p class="error-alerts"></p>
|
104 |
<form id="requestKeyForm">
|
105 |
<label>
|
106 |
+
<?php esc_html_e( 'First Name', 'boldgrid-connect' ); ?>:
|
107 |
</label>
|
108 |
+
<input type="text" id="firstName" maxlength="50" placeholder="<?php esc_html_e( 'First Name', 'boldgrid-connect' ); ?>" value="<?php echo esc_attr( $first_name ); ?>" />
|
109 |
<label>
|
110 |
+
<?php esc_html_e( 'Last Name', 'boldgrid-connect' ); ?>:
|
111 |
</label>
|
112 |
+
<input type="text" id="lastName" maxlength="50" placeholder="<?php esc_html_e( 'Last Name', 'boldgrid-connect' ); ?>" value="<?php echo esc_attr( $last_name ); ?>" />
|
113 |
<label>
|
114 |
+
<?php esc_html_e( 'E-mail', 'boldgrid-connect' ); ?>:
|
115 |
</label>
|
116 |
<input type="text" id="emailAddr" maxlength="50" placeholder="your@name.com" value="<?php echo esc_attr( $email ); ?>" />
|
117 |
<br />
|
118 |
<input type="hidden" id="siteUrl" value="<?php echo get_admin_url(); ?>" />
|
119 |
<br />
|
120 |
<button id="requestKey" class="button button-primary">
|
121 |
+
<?php esc_html_e( 'Submit', 'boldgrid-connect' ); ?>
|
122 |
</button>
|
123 |
<span class="spinner"></span>
|
124 |
<input type="hidden" id="generate-api-key" value="<?php echo esc_attr( $api ); ?>" />
|
vendor/boldgrid/library/src/Library/Views/KeyPromptMini.php
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* File: KeyPromptMini.php
|
4 |
+
*
|
5 |
+
* @package Boldgrid\Library
|
6 |
+
* @subpackage Library\Views
|
7 |
+
* @version 2.6.0
|
8 |
+
* @author BoldGrid <support@boldgrid.com>
|
9 |
+
*/
|
10 |
+
|
11 |
+
namespace Boldgrid\Library\Library\Views;
|
12 |
+
|
13 |
+
use Boldgrid\Library\Library;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* Class: KeyPromptMini
|
17 |
+
*
|
18 |
+
* Print a mini Connect Key entry prompt.
|
19 |
+
*
|
20 |
+
* @since 2.6.0.
|
21 |
+
*/
|
22 |
+
class KeyPromptMini {
|
23 |
+
/**
|
24 |
+
* Display form.
|
25 |
+
*
|
26 |
+
* @since 2.6.0
|
27 |
+
*
|
28 |
+
* @static
|
29 |
+
*
|
30 |
+
* @see self::enqueue()
|
31 |
+
*/
|
32 |
+
public static function displayForm() {
|
33 |
+
self::enqueue();
|
34 |
+
?>
|
35 |
+
<div id="container_boldgrid_api_key_notice" class="library is-dismissible keyprompt-mini"
|
36 |
+
data-notice-id="bg-key-prompt"
|
37 |
+
data-notice-state="<?php echo \Boldgrid\Library\Library\Notice\KeyPrompt::getState() ?>">
|
38 |
+
<div>
|
39 |
+
<form id="boldgrid-api-form" autocomplete="off">
|
40 |
+
<?php wp_nonce_field( 'boldgrid_set_key', 'set_key_auth' ); ?>
|
41 |
+
<input id="tos-box" class="hidden" type="checkbox" value="0" checked="checked" />
|
42 |
+
<input type="text" id="boldgrid_api_key" maxlength="37" placeholder="XXXXXXXX - XXXXXXXX - XXXXXXXX - XXXXXXXX" autocomplete="off" />
|
43 |
+
<button id="submit_api_key" class="button button-primary">
|
44 |
+
<?php esc_html_e( 'Submit', 'boldgrid-inspirations' ); ?>
|
45 |
+
</button>
|
46 |
+
<span>
|
47 |
+
<div id="boldgrid-api-loading" class="boldgrid-wp-spin"></div>
|
48 |
+
</span>
|
49 |
+
<p id="boldgrid_api_key_notice_message"></p>
|
50 |
+
</form>
|
51 |
+
</div>
|
52 |
+
</div>
|
53 |
+
<?php
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Adds the required CSS and JS.
|
58 |
+
*
|
59 |
+
* @since 2.6.0
|
60 |
+
*
|
61 |
+
* @static
|
62 |
+
*/
|
63 |
+
public static function enqueue() {
|
64 |
+
wp_enqueue_style(
|
65 |
+
'bglib-api-notice-css',
|
66 |
+
Library\Configs::get( 'libraryUrl' ) . 'src/assets/css/api-notice.css'
|
67 |
+
);
|
68 |
+
wp_enqueue_script(
|
69 |
+
'bglib-api-notice-js',
|
70 |
+
Library\Configs::get( 'libraryUrl' ) . 'src/assets/js/api-notice.js'
|
71 |
+
);
|
72 |
+
}
|
73 |
+
}
|
vendor/boldgrid/library/src/Util/Load.php
CHANGED
@@ -52,6 +52,8 @@ class Load {
|
|
52 |
// Build the registration class.
|
53 |
$class = __NAMESPACE__ . '\\Registration\\' . ucfirst( $this->configs['type'] );
|
54 |
|
|
|
|
|
55 |
// Add hooks for registration.
|
56 |
$this->registration = new $class( $this->configs['file'] );
|
57 |
|
@@ -74,6 +76,21 @@ class Load {
|
|
74 |
$this->load( $this->configs['loader'] );
|
75 |
}
|
76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
/**
|
78 |
* Sets the product and version of library to load.
|
79 |
*
|
52 |
// Build the registration class.
|
53 |
$class = __NAMESPACE__ . '\\Registration\\' . ucfirst( $this->configs['type'] );
|
54 |
|
55 |
+
$this->filesystemFixes();
|
56 |
+
|
57 |
// Add hooks for registration.
|
58 |
$this->registration = new $class( $this->configs['file'] );
|
59 |
|
76 |
$this->load( $this->configs['loader'] );
|
77 |
}
|
78 |
|
79 |
+
/**
|
80 |
+
* Avoid fatal errors due to certain filesystem types.
|
81 |
+
*
|
82 |
+
* This fix is only to prevent fatal errors. It is up to the plugins including this library to
|
83 |
+
* test the filesystem and determine whether or not they're compatible.
|
84 |
+
*
|
85 |
+
* ftpext
|
86 |
+
* Fatal error: Call to undefined function wp_generate_password() in wp-admin/includes/file.php
|
87 |
+
*/
|
88 |
+
public function filesystemFixes() {
|
89 |
+
if ( ! function_exists( 'wp_generate_password' ) ) {
|
90 |
+
require( ABSPATH . WPINC . '/pluggable.php' );
|
91 |
+
}
|
92 |
+
}
|
93 |
+
|
94 |
/**
|
95 |
* Sets the product and version of library to load.
|
96 |
*
|
vendor/boldgrid/library/src/Util/Option.php
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
* @subpackage \Util
|
7 |
*
|
8 |
* @version 1.0.0
|
9 |
-
* @author BoldGrid <
|
10 |
*/
|
11 |
|
12 |
namespace Boldgrid\Library\Util;
|
@@ -19,7 +19,6 @@ namespace Boldgrid\Library\Util;
|
|
19 |
* @since 1.0.0
|
20 |
*/
|
21 |
class Option {
|
22 |
-
|
23 |
/**
|
24 |
* @access public
|
25 |
*
|
@@ -57,7 +56,7 @@ class Option {
|
|
57 |
* @return array Returns the option data from WordPress database.
|
58 |
*/
|
59 |
public static function getOption() {
|
60 |
-
return
|
61 |
}
|
62 |
|
63 |
/**
|
@@ -72,7 +71,7 @@ class Option {
|
|
72 |
*/
|
73 |
public static function set( $key, $value ) {
|
74 |
self::$option[ self::$key ][ $key ] = $value;
|
75 |
-
return
|
76 |
}
|
77 |
|
78 |
/**
|
@@ -86,7 +85,7 @@ class Option {
|
|
86 |
*/
|
87 |
public static function delete( $key ) {
|
88 |
unset( self::$option[ self::$key ][ $key ] );
|
89 |
-
return
|
90 |
}
|
91 |
|
92 |
/**
|
6 |
* @subpackage \Util
|
7 |
*
|
8 |
* @version 1.0.0
|
9 |
+
* @author BoldGrid <support@boldgrid.com>
|
10 |
*/
|
11 |
|
12 |
namespace Boldgrid\Library\Util;
|
19 |
* @since 1.0.0
|
20 |
*/
|
21 |
class Option {
|
|
|
22 |
/**
|
23 |
* @access public
|
24 |
*
|
56 |
* @return array Returns the option data from WordPress database.
|
57 |
*/
|
58 |
public static function getOption() {
|
59 |
+
return get_option( self::$name, array() );
|
60 |
}
|
61 |
|
62 |
/**
|
71 |
*/
|
72 |
public static function set( $key, $value ) {
|
73 |
self::$option[ self::$key ][ $key ] = $value;
|
74 |
+
return update_option( self::$name, self::$option );
|
75 |
}
|
76 |
|
77 |
/**
|
85 |
*/
|
86 |
public static function delete( $key ) {
|
87 |
unset( self::$option[ self::$key ][ $key ] );
|
88 |
+
return update_option( self::$name, self::$option );
|
89 |
}
|
90 |
|
91 |
/**
|
vendor/boldgrid/library/src/Util/Version.php
CHANGED
@@ -65,8 +65,15 @@ class Version {
|
|
65 |
}
|
66 |
|
67 |
// Get installed composer package data.
|
68 |
-
$
|
69 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
$installed = json_decode( $file, true );
|
71 |
|
72 |
// Check for dep's installed version.
|
65 |
}
|
66 |
|
67 |
// Get installed composer package data.
|
68 |
+
$installedFile = wp_normalize_path( realpath( __DIR__ . '/../../../../' ) ) . '/composer/installed.json';
|
69 |
+
|
70 |
+
if ( 'direct' === get_filesystem_method() ) {
|
71 |
+
$file = $wp_filesystem->get_contents( $installedFile );
|
72 |
+
} else {
|
73 |
+
$installedUrl = str_replace( ABSPATH, get_site_url() . '/', $installedFile );
|
74 |
+
$file = wp_remote_retrieve_body( wp_remote_get( $installedUrl ) );
|
75 |
+
}
|
76 |
+
|
77 |
$installed = json_decode( $file, true );
|
78 |
|
79 |
// Check for dep's installed version.
|
vendor/boldgrid/library/src/assets/css/admin.css
CHANGED
@@ -11,7 +11,9 @@
|
|
11 |
display: none;
|
12 |
}
|
13 |
.settings_page_boldgrid-connect .connect-key-management {
|
|
|
14 |
max-width: 590px;
|
|
|
15 |
}
|
16 |
/** BoldGrid Connect Page End **/
|
17 |
|
@@ -129,4 +131,132 @@
|
|
129 |
-webkit-font-smoothing: antialiased;
|
130 |
-moz-osx-font-smoothing: grayscale;
|
131 |
}
|
132 |
-
/** Admin Bar Icons **/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
display: none;
|
12 |
}
|
13 |
.settings_page_boldgrid-connect .connect-key-management {
|
14 |
+
margin: 0;
|
15 |
max-width: 590px;
|
16 |
+
padding: 0;
|
17 |
}
|
18 |
/** BoldGrid Connect Page End **/
|
19 |
|
131 |
-webkit-font-smoothing: antialiased;
|
132 |
-moz-osx-font-smoothing: grayscale;
|
133 |
}
|
134 |
+
/** Admin Bar Icons End **/
|
135 |
+
|
136 |
+
/** div-table classes Start **/
|
137 |
+
.div-table {
|
138 |
+
display: table;
|
139 |
+
}
|
140 |
+
|
141 |
+
.div-table-row {
|
142 |
+
display: table-row;
|
143 |
+
}
|
144 |
+
|
145 |
+
.div-table-heading {
|
146 |
+
background-color: #EEE;
|
147 |
+
display: table-header-group;
|
148 |
+
font-weight: bold;
|
149 |
+
}
|
150 |
+
|
151 |
+
.div-tableCell, .div-tableHead {
|
152 |
+
display: table-cell;
|
153 |
+
padding: 3px 10px;
|
154 |
+
}
|
155 |
+
|
156 |
+
.div-table-foot {
|
157 |
+
background-color: #EEE;
|
158 |
+
display: table-footer-group;
|
159 |
+
font-weight: bold;
|
160 |
+
}
|
161 |
+
|
162 |
+
.div-table-body {
|
163 |
+
display: table-row-group;
|
164 |
+
}
|
165 |
+
|
166 |
+
.div-table-contents {
|
167 |
+
display: contents;
|
168 |
+
}
|
169 |
+
/** div-table classes End **/
|
170 |
+
|
171 |
+
.auto-update-settings .toggle {
|
172 |
+
width: 50px;
|
173 |
+
}
|
174 |
+
|
175 |
+
#settings-notice {
|
176 |
+
display: none;
|
177 |
+
}
|
178 |
+
|
179 |
+
/* Create an inline spinner. */
|
180 |
+
.spinner.inline {
|
181 |
+
float: none;
|
182 |
+
visibility: visible;
|
183 |
+
vertical-align: bottom;
|
184 |
+
margin-left: 0px;
|
185 |
+
}
|
186 |
+
.spinner.inline.middle {
|
187 |
+
vertical-align: middle;
|
188 |
+
}
|
189 |
+
.spinner.hidden {
|
190 |
+
display: none;
|
191 |
+
}
|
192 |
+
|
193 |
+
div .dashicons {
|
194 |
+
vertical-align: bottom;
|
195 |
+
}
|
196 |
+
|
197 |
+
.dashicons-editor-help {
|
198 |
+
display: inline-block;
|
199 |
+
position: relative;
|
200 |
+
cursor: pointer;
|
201 |
+
}
|
202 |
+
|
203 |
+
.help[data-id] {
|
204 |
+
display: none;
|
205 |
+
}
|
206 |
+
|
207 |
+
.toggle .toggle-on {
|
208 |
+
background-color: #009CCD;
|
209 |
+
}
|
210 |
+
|
211 |
+
.bglib-collapsible-control:not(.bglib-collapsible-open) ~ .bglib-collapsible {
|
212 |
+
display: none;
|
213 |
+
}
|
214 |
+
|
215 |
+
.bglib-collapsible-control .dashicons {
|
216 |
+
transform: rotateZ(0deg);
|
217 |
+
}
|
218 |
+
|
219 |
+
.bglib-collapsible-open .dashicons {
|
220 |
+
transform: rotateZ(-180deg);
|
221 |
+
}
|
222 |
+
|
223 |
+
.bglib-collapsible-control .dashicons {
|
224 |
+
vertical-align: middle;
|
225 |
+
}
|
226 |
+
|
227 |
+
.bglib-collapsible-control {
|
228 |
+
cursor: pointer;
|
229 |
+
}
|
230 |
+
|
231 |
+
.auto-update-settings .div-table-contents::before {
|
232 |
+
content: "";
|
233 |
+
display: table-row;
|
234 |
+
height: 20px;
|
235 |
+
}
|
236 |
+
|
237 |
+
.bglib-collapsible-control .div-tableCell {
|
238 |
+
border-bottom: 1px solid #e2e4e7;
|
239 |
+
border-top: 1px solid #e2e4e7;
|
240 |
+
}
|
241 |
+
|
242 |
+
.bglib-collapsible-control h3 {
|
243 |
+
font-size: 13px;
|
244 |
+
font-weight: bold;
|
245 |
+
margin: 12px 0px;
|
246 |
+
}
|
247 |
+
|
248 |
+
.bglib-collapsible-control:hover {
|
249 |
+
background-color: #f2f2f2;
|
250 |
+
}
|
251 |
+
|
252 |
+
.bglib-collapsible-control span {
|
253 |
+
right: 0;
|
254 |
+
}
|
255 |
+
|
256 |
+
.bglib-collapsible-control .div-tableCell:last-of-type {
|
257 |
+
text-align: center;
|
258 |
+
}
|
259 |
+
|
260 |
+
.bglib-collapsible-control + .div-table-row > .div-tableCell:first-of-type {
|
261 |
+
padding-top: 10px;
|
262 |
+
}
|
vendor/boldgrid/library/src/assets/css/api-notice.css
CHANGED
@@ -1,19 +1,23 @@
|
|
1 |
#container_boldgrid_api_key_notice:not(.is-dismissible) {
|
2 |
display: none;
|
3 |
}
|
|
|
4 |
#container_boldgrid_api_key_notice .dashicons-before:before {
|
5 |
padding-right: .8em !important;
|
6 |
font-size: 58px !important;
|
7 |
color: #ff6600;
|
8 |
}
|
|
|
9 |
#container_boldgrid_api_key_notice {
|
10 |
width: 563px;
|
11 |
padding: 1.4em;
|
12 |
}
|
|
|
13 |
#requestKeyForm input {
|
14 |
width: 83%;
|
15 |
margin: .5em 0;
|
16 |
}
|
|
|
17 |
#requestKeyForm label {
|
18 |
display: block;
|
19 |
}
|
@@ -43,14 +47,17 @@
|
|
43 |
#container_boldgrid_api_key_notice[data-notice-state="basic-key-active"] .basic-key-active {
|
44 |
display: block;
|
45 |
}
|
|
|
46 |
#container_boldgrid_api_key_notice .boldgridApiKeyLink {
|
47 |
margin-top: 10px;
|
48 |
display: inline-block;
|
49 |
}
|
|
|
50 |
#container_boldgrid_api_key_notice[data-notice-state="basic-key-active"] .envato-claim-message {
|
51 |
padding-left: 0;
|
52 |
margin-bottom: 10px;
|
53 |
}
|
|
|
54 |
#container_boldgrid_api_key_notice.success-add-key .tos-box,
|
55 |
#container_boldgrid_api_key_notice.success-add-key .envato-claim-message {
|
56 |
display: none;
|
@@ -105,12 +112,15 @@
|
|
105 |
.boldgridApiKeyLink {
|
106 |
margin-left: 66px;
|
107 |
}
|
|
|
108 |
#requestKeyMessage {
|
109 |
margin-right: 66px;
|
110 |
}
|
|
|
111 |
.error-alerts {
|
112 |
color: red;
|
113 |
}
|
|
|
114 |
.error-color::before {
|
115 |
content: '*';
|
116 |
padding-right: 5px;
|
@@ -118,10 +128,12 @@
|
|
118 |
.error-color {
|
119 |
color: red;
|
120 |
}
|
|
|
121 |
input#boldgrid_api_key {
|
122 |
margin-left: 66px !important;
|
123 |
width: 59%;
|
124 |
}
|
|
|
125 |
.boldgrid-wp-spin {
|
126 |
width: 20px;
|
127 |
height: 20px;
|
@@ -132,6 +144,7 @@ input#boldgrid_api_key {
|
|
132 |
-moz-animation: rotation 1.5s infinite linear;
|
133 |
-animation: rotation 1.5s infinite linear;
|
134 |
}
|
|
|
135 |
.boldgrid-wp-spin::after {
|
136 |
width: 4px;
|
137 |
height: 4px;
|
@@ -143,6 +156,7 @@ input#boldgrid_api_key {
|
|
143 |
display: block;
|
144 |
content: '';
|
145 |
}
|
|
|
146 |
@ -webkit-keyframes rotation {
|
147 |
from {
|
148 |
-webkit-transform: rotate(0deg);
|
@@ -151,6 +165,7 @@ input#boldgrid_api_key {
|
|
151 |
-webkit-transform: rotate(359deg);
|
152 |
}
|
153 |
}
|
|
|
154 |
@ -moz-keyframes rotation {
|
155 |
from {
|
156 |
-moz-transform: rotate(0deg);
|
@@ -159,6 +174,7 @@ input#boldgrid_api_key {
|
|
159 |
-moz-transform: rotate(359deg);
|
160 |
}
|
161 |
}
|
|
|
162 |
@ -keyframes rotation {
|
163 |
from {
|
164 |
-transform: rotate(0deg);
|
@@ -167,13 +183,31 @@ input#boldgrid_api_key {
|
|
167 |
-transform: rotate(359deg);
|
168 |
}
|
169 |
}
|
|
|
170 |
#boldgrid-api-loading {
|
171 |
margin-left: 423px;
|
172 |
margin-top: -2em;
|
173 |
display: none;
|
174 |
}
|
|
|
175 |
#requestKeyForm .spinner.inline {
|
176 |
visibility: visible;
|
177 |
float: none;
|
178 |
vertical-align: bottom;
|
179 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
#container_boldgrid_api_key_notice:not(.is-dismissible) {
|
2 |
display: none;
|
3 |
}
|
4 |
+
|
5 |
#container_boldgrid_api_key_notice .dashicons-before:before {
|
6 |
padding-right: .8em !important;
|
7 |
font-size: 58px !important;
|
8 |
color: #ff6600;
|
9 |
}
|
10 |
+
|
11 |
#container_boldgrid_api_key_notice {
|
12 |
width: 563px;
|
13 |
padding: 1.4em;
|
14 |
}
|
15 |
+
|
16 |
#requestKeyForm input {
|
17 |
width: 83%;
|
18 |
margin: .5em 0;
|
19 |
}
|
20 |
+
|
21 |
#requestKeyForm label {
|
22 |
display: block;
|
23 |
}
|
47 |
#container_boldgrid_api_key_notice[data-notice-state="basic-key-active"] .basic-key-active {
|
48 |
display: block;
|
49 |
}
|
50 |
+
|
51 |
#container_boldgrid_api_key_notice .boldgridApiKeyLink {
|
52 |
margin-top: 10px;
|
53 |
display: inline-block;
|
54 |
}
|
55 |
+
|
56 |
#container_boldgrid_api_key_notice[data-notice-state="basic-key-active"] .envato-claim-message {
|
57 |
padding-left: 0;
|
58 |
margin-bottom: 10px;
|
59 |
}
|
60 |
+
|
61 |
#container_boldgrid_api_key_notice.success-add-key .tos-box,
|
62 |
#container_boldgrid_api_key_notice.success-add-key .envato-claim-message {
|
63 |
display: none;
|
112 |
.boldgridApiKeyLink {
|
113 |
margin-left: 66px;
|
114 |
}
|
115 |
+
|
116 |
#requestKeyMessage {
|
117 |
margin-right: 66px;
|
118 |
}
|
119 |
+
|
120 |
.error-alerts {
|
121 |
color: red;
|
122 |
}
|
123 |
+
|
124 |
.error-color::before {
|
125 |
content: '*';
|
126 |
padding-right: 5px;
|
128 |
.error-color {
|
129 |
color: red;
|
130 |
}
|
131 |
+
|
132 |
input#boldgrid_api_key {
|
133 |
margin-left: 66px !important;
|
134 |
width: 59%;
|
135 |
}
|
136 |
+
|
137 |
.boldgrid-wp-spin {
|
138 |
width: 20px;
|
139 |
height: 20px;
|
144 |
-moz-animation: rotation 1.5s infinite linear;
|
145 |
-animation: rotation 1.5s infinite linear;
|
146 |
}
|
147 |
+
|
148 |
.boldgrid-wp-spin::after {
|
149 |
width: 4px;
|
150 |
height: 4px;
|
156 |
display: block;
|
157 |
content: '';
|
158 |
}
|
159 |
+
|
160 |
@ -webkit-keyframes rotation {
|
161 |
from {
|
162 |
-webkit-transform: rotate(0deg);
|
165 |
-webkit-transform: rotate(359deg);
|
166 |
}
|
167 |
}
|
168 |
+
|
169 |
@ -moz-keyframes rotation {
|
170 |
from {
|
171 |
-moz-transform: rotate(0deg);
|
174 |
-moz-transform: rotate(359deg);
|
175 |
}
|
176 |
}
|
177 |
+
|
178 |
@ -keyframes rotation {
|
179 |
from {
|
180 |
-transform: rotate(0deg);
|
183 |
-transform: rotate(359deg);
|
184 |
}
|
185 |
}
|
186 |
+
|
187 |
#boldgrid-api-loading {
|
188 |
margin-left: 423px;
|
189 |
margin-top: -2em;
|
190 |
display: none;
|
191 |
}
|
192 |
+
|
193 |
#requestKeyForm .spinner.inline {
|
194 |
visibility: visible;
|
195 |
float: none;
|
196 |
vertical-align: bottom;
|
197 |
}
|
198 |
+
|
199 |
+
.keyprompt-mini {
|
200 |
+
padding: 0 !important;
|
201 |
+
}
|
202 |
+
|
203 |
+
.keyprompt-mini input#boldgrid_api_key {
|
204 |
+
margin-left: 0 !important;
|
205 |
+
}
|
206 |
+
|
207 |
+
.keyprompt-mini .hidden {
|
208 |
+
display: none;
|
209 |
+
}
|
210 |
+
|
211 |
+
.keyprompt-mini #boldgrid_api_key_notice_message.error-color {
|
212 |
+
color: #dc3232;
|
213 |
+
}
|
vendor/boldgrid/library/src/assets/css/attributes.css
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.bglib-misc-pub-section:before {
|
2 |
+
/* Taken from wp-admin/css/edit.css */
|
3 |
+
font: normal 20px/1 dashicons;
|
4 |
+
speak: none;
|
5 |
+
display: inline-block;
|
6 |
+
margin-left: -1px;
|
7 |
+
vertical-align: top;
|
8 |
+
-webkit-font-smoothing: antialiased;
|
9 |
+
-moz-osx-font-smoothing: grayscale;
|
10 |
+
color: #82878c;
|
11 |
+
}
|
12 |
+
|
13 |
+
.bglib-misc-pub-section .dashicons-lock:before {
|
14 |
+
content: "\f160";
|
15 |
+
}
|
16 |
+
|
17 |
+
.bglib-misc-pub-section .options {
|
18 |
+
margin: 10px 0px;
|
19 |
+
display: none;
|
20 |
+
}
|
21 |
+
|
22 |
+
.bglib-misc-pub-section .options > label {
|
23 |
+
display: block;
|
24 |
+
}
|
25 |
+
|
26 |
+
.bglib-misc-pub-section .value-displayed {
|
27 |
+
font-weight: bold;
|
28 |
+
}
|
29 |
+
|
30 |
+
.bglib-misc-pub-section .value-displayed .template-subtitle,
|
31 |
+
.bglib-page-title .template-subtitle {
|
32 |
+
display: inline;
|
33 |
+
margin: 0;
|
34 |
+
}
|
35 |
+
|
36 |
+
#bglib-attributes-meta-box div.inside {
|
37 |
+
margin: 0px;
|
38 |
+
padding: 0px;
|
39 |
+
}
|
vendor/boldgrid/library/src/assets/css/ui.css
CHANGED
@@ -19,6 +19,10 @@
|
|
19 |
padding: 10px;
|
20 |
}
|
21 |
|
|
|
|
|
|
|
|
|
22 |
.bg-box-bottom.premium {
|
23 |
border-left: 4px solid #46b450;
|
24 |
}
|
19 |
padding: 10px;
|
20 |
}
|
21 |
|
22 |
+
.bg-box-bottom > p:first-child {
|
23 |
+
margin-top: 0px;
|
24 |
+
}
|
25 |
+
|
26 |
.bg-box-bottom.premium {
|
27 |
border-left: 4px solid #46b450;
|
28 |
}
|
vendor/boldgrid/library/src/assets/fonts/boldgrid.eot
CHANGED
Binary file
|
vendor/boldgrid/library/src/assets/fonts/boldgrid.svg
CHANGED
@@ -6,8 +6,9 @@
|
|
6 |
<font id="icomoon" horiz-adv-x="1024">
|
7 |
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
8 |
<missing-glyph horiz-adv-x="1024" />
|
9 |
-
<glyph unicode=" "
|
10 |
-
<glyph unicode="" d="M524.8 524.8c0-19.2-12.8-32-32-32h-220.8c-19.2 0-32 16-32 32v179.2c0 19.2 12.8 32 32 32h220.8c19.2 0 32-16 32-32v-179.2zM665.6 192c0-19.2-22.4-32-48-32h-329.6c-28.8 0-48 16-48 32v179.2c0 19.2 22.4 32 48 32h329.6c28.8 0 48-16 48-32v-179.2zM832 902.4c83.2 0 131.2-57.6 128-140.8 0-25.6-6.4-48-35.2-44.8-25.6 0-35.2 19.2-32 41.6 3.2 57.6-32 76.8-83.2 76.8-198.4 0-396.8 0-595.2 0-67.2 0-83.2-19.2-83.2-86.4 0-201.6 0-400 0-601.6 0-73.6 16-86.4 86.4-86.4 195.2 0 393.6 0 588.8 0 67.2 0 83.2 16 83.2 83.2 0 92.8 0 182.4 0 272 0 57.6-19.2 76.8-76.8 76.8-35.2 0-73.6 0-108.8 0-19.2 0-35.2 9.6-38.4 32 0 25.6 16 35.2 38.4 35.2 48 0 99.2 3.2 147.2-3.2 57.6-3.2 102.4-54.4 102.4-112 3.2-112 3.2-227.2 0-339.2 0-70.4-51.2-118.4-121.6-118.4-108.8 0-217.6 0-326.4 0-105.6 0-211.2 0-316.8 0-80 0-131.2 48-131.2 131.2 0 217.6 0 435.2 0 649.6 0 80 48 131.2 124.8 131.2z" />
|
11 |
-
<glyph unicode="" d="M814.933 162.133c-25.6 0-51.2 4.267-76.8 17.067-68.267-51.2-145.067-81.067-226.133-81.067-25.6 0-51.2 4.267-76.8 8.533-46.933-46.933-106.667-68.267-170.667-68.267-68.267 0-123.733 25.6-174.933 72.533s-72.533 106.667-72.533 174.933c0 42.667 12.8 85.333 34.133 123.733s51.2 68.267 89.6 89.6c4.267 64 25.6 119.467 55.467 170.667 38.4 51.2 81.067 89.6 136.533 119.467s115.2 46.933 174.933 46.933c93.867 0 170.667-29.867 243.2-89.6 68.267-59.733 110.933-136.533 123.733-226.133 38.4-12.8 68.267-34.133 89.6-68.267s34.133-68.267 34.133-106.667c0-51.2-17.067-93.867-55.467-132.267s-76.8-51.2-128-51.2zM512 772.267c-76.8 0-140.8-25.6-196.267-72.533-59.733-46.933-93.867-106.667-106.667-179.2 17.067 4.267 38.4 8.533 55.467 8.533 68.267 0 123.733-25.6 174.933-72.533s72.533-106.667 72.533-174.933c0-42.667-8.533-81.067-29.867-119.467 12.8 0 21.333 0 29.867 0 64 0 123.733 17.067 174.933 55.467-34.133 34.133-51.2 76.8-51.2 128s17.067 93.867 51.2 128 76.8 55.467 128 55.467c-12.8 72.533-51.2 128-106.667 174.933-59.733 46.933-123.733 68.267-196.267 68.267zM605.867 554.667c-17.067-17.067-38.4-25.6-64-25.6s-46.933 8.533-64 25.6c-17.067 17.067-25.6 38.4-25.6 64s8.533 46.933 25.6 64c17.067 17.067 38.4 25.6 64 25.6s46.933-8.533 64-25.6c17.067-17.067 25.6-38.4 25.6-64 0-21.333-8.533-46.933-25.6-64z" />
|
12 |
-
<glyph unicode="" d="M315.733 622.933l1668.267 4.267-34.133-174.933zM64 601.6l1868.8-204.8-34.133-149.333z"
|
|
|
13 |
</font></defs></svg>
|
6 |
<font id="icomoon" horiz-adv-x="1024">
|
7 |
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
8 |
<missing-glyph horiz-adv-x="1024" />
|
9 |
+
<glyph unicode=" " horiz-adv-x="512" d="" />
|
10 |
+
<glyph unicode="" glyph-name="boldgrid" d="M524.8 524.8c0-19.2-12.8-32-32-32h-220.8c-19.2 0-32 16-32 32v179.2c0 19.2 12.8 32 32 32h220.8c19.2 0 32-16 32-32v-179.2zM665.6 192c0-19.2-22.4-32-48-32h-329.6c-28.8 0-48 16-48 32v179.2c0 19.2 22.4 32 48 32h329.6c28.8 0 48-16 48-32v-179.2zM832 902.4c83.2 0 131.2-57.6 128-140.8 0-25.6-6.4-48-35.2-44.8-25.6 0-35.2 19.2-32 41.6 3.2 57.6-32 76.8-83.2 76.8-198.4 0-396.8 0-595.2 0-67.2 0-83.2-19.2-83.2-86.4 0-201.6 0-400 0-601.6 0-73.6 16-86.4 86.4-86.4 195.2 0 393.6 0 588.8 0 67.2 0 83.2 16 83.2 83.2 0 92.8 0 182.4 0 272 0 57.6-19.2 76.8-76.8 76.8-35.2 0-73.6 0-108.8 0-19.2 0-35.2 9.6-38.4 32 0 25.6 16 35.2 38.4 35.2 48 0 99.2 3.2 147.2-3.2 57.6-3.2 102.4-54.4 102.4-112 3.2-112 3.2-227.2 0-339.2 0-70.4-51.2-118.4-121.6-118.4-108.8 0-217.6 0-326.4 0-105.6 0-211.2 0-316.8 0-80 0-131.2 48-131.2 131.2 0 217.6 0 435.2 0 649.6 0 80 48 131.2 124.8 131.2z" />
|
11 |
+
<glyph unicode="" glyph-name="whh" d="M814.933 162.133c-25.6 0-51.2 4.267-76.8 17.067-68.267-51.2-145.067-81.067-226.133-81.067-25.6 0-51.2 4.267-76.8 8.533-46.933-46.933-106.667-68.267-170.667-68.267-68.267 0-123.733 25.6-174.933 72.533s-72.533 106.667-72.533 174.933c0 42.667 12.8 85.333 34.133 123.733s51.2 68.267 89.6 89.6c4.267 64 25.6 119.467 55.467 170.667 38.4 51.2 81.067 89.6 136.533 119.467s115.2 46.933 174.933 46.933c93.867 0 170.667-29.867 243.2-89.6 68.267-59.733 110.933-136.533 123.733-226.133 38.4-12.8 68.267-34.133 89.6-68.267s34.133-68.267 34.133-106.667c0-51.2-17.067-93.867-55.467-132.267s-76.8-51.2-128-51.2zM512 772.267c-76.8 0-140.8-25.6-196.267-72.533-59.733-46.933-93.867-106.667-106.667-179.2 17.067 4.267 38.4 8.533 55.467 8.533 68.267 0 123.733-25.6 174.933-72.533s72.533-106.667 72.533-174.933c0-42.667-8.533-81.067-29.867-119.467 12.8 0 21.333 0 29.867 0 64 0 123.733 17.067 174.933 55.467-34.133 34.133-51.2 76.8-51.2 128s17.067 93.867 51.2 128 76.8 55.467 128 55.467c-12.8 72.533-51.2 128-106.667 174.933-59.733 46.933-123.733 68.267-196.267 68.267zM605.867 554.667c-17.067-17.067-38.4-25.6-64-25.6s-46.933 8.533-64 25.6c-17.067 17.067-25.6 38.4-25.6 64s8.533 46.933 25.6 64c17.067 17.067 38.4 25.6 64 25.6s46.933-8.533 64-25.6c17.067-17.067 25.6-38.4 25.6-64 0-21.333-8.533-46.933-25.6-64z" />
|
12 |
+
<glyph unicode="" glyph-name="imh" horiz-adv-x="2048" d="M315.733 622.933l1668.267 4.267-34.133-174.933zM64 601.6l1868.8-204.8-34.133-149.333z" />
|
13 |
+
<glyph unicode="" glyph-name="crio-enzo" d="M33.010 387.478c0 7.196-1.799 14.393 1.799 21.589 1.799 3.598 0 12.594-1.799 17.991-10.795 26.987-8.996 52.174-1.799 79.16 5.397 17.991 7.196 35.982 10.795 53.973 1.799 0 3.598 0 3.598 0-1.799-10.795-3.598-19.79-5.397-30.585 1.799 0 1.799 0 3.598-1.799 5.397 14.393 10.795 28.786 16.192 43.178 12.594 32.384 25.187 62.969 35.982 95.352 14.393 35.982 35.982 66.567 61.169 93.553 43.178 46.777 93.553 84.558 152.924 107.946 14.393 5.397 26.987 14.393 43.178 17.991 17.991 3.598 35.982 10.795 55.772 7.196 7.196-1.799 16.192 0 23.388-1.799-16.192-7.196-30.585-12.594-46.777-19.79-7.196-1.799-14.393-3.598-21.589-5.397-3.598-1.799-10.795-1.799-12.594-5.397-5.397-8.996-12.594-8.996-21.589-5.397-1.799 0-3.598 0-5.397-1.799 1.799-1.799 1.799-5.397 1.799-5.397-10.795-7.196-23.388-12.594-34.183-19.79-5.397-1.799-8.996-5.397-14.393-5.397-16.192 1.799-30.585-5.397-43.178-16.192-21.589-17.991-41.379-39.58-62.969-57.571-41.379-39.58-64.768-88.156-86.357-140.33-16.192-39.58-25.187-82.759-23.388-127.736 1.799-23.388 0-48.576 3.598-71.964 5.397-28.786 12.594-59.37 23.388-86.357 8.996-17.991 26.987-32.384 41.379-48.576 5.397-5.397 10.795-10.795 16.192-17.991-10.795 35.982-23.388 70.165-34.183 104.348 1.799 1.799 5.397 1.799 8.996 3.598 3.598-14.393 5.397-30.585 12.594-44.978 3.598-8.996 12.594-16.192 19.79-25.187 1.799 0 3.598 1.799 3.598 1.799-7.196 14.393-14.393 28.786-21.589 43.178-3.598 7.196-5.397 10.795 3.598 10.795-7.196 21.589-14.393 41.379-21.589 62.969 0 0-1.799 0-1.799 0 0-12.594 0-23.388 0-35.982 0 0-1.799 0-1.799 0 0 14.393 0 26.987-1.799 41.379-1.799 21.589 0 43.178-5.397 64.768-7.196 30.585-3.598 59.37 5.397 88.156 3.598 14.393 7.196 30.585 12.594 44.978s10.795 30.585 19.79 44.978c23.388 37.781 48.576 75.562 82.759 106.147 8.996 8.996 19.79 14.393 30.585 21.589s21.589 16.192 32.384 23.388c10.795 7.196 25.187 10.795 35.982 16.192 3.598 1.799 7.196 1.799 8.996 3.598 7.196 8.996 17.991 8.996 28.786 8.996 3.598-1.799 8.996-3.598 12.594-3.598 5.397 0 8.996 1.799 14.393 1.799 0-1.799 1.799-1.799 1.799-3.598-7.196-3.598-12.594-8.996-19.79-12.594-17.991-8.996-37.781-14.393-55.772-25.187s-37.781-21.589-48.576-37.781c-12.594-19.79-35.982-30.585-43.178-52.174 0-1.799-1.799-3.598-3.598-3.598-19.79-14.393-30.585-35.982-41.379-55.772-10.795-17.991-17.991-37.781-28.786-55.772-3.598-7.196-8.996-12.594-12.594-19.79s-7.196-16.192-8.996-25.187c-3.598-14.393-3.598-30.585-7.196-48.576-1.799 5.397-1.799 7.196-3.598 8.996-1.799 0-1.799 0-3.598 0 1.799-25.187 3.598-50.375 5.397-73.763 1.799 0 3.598 0 3.598 0 0 1.799 1.799 3.598 1.799 5.397 7.196-19.79 14.393-39.58 21.589-59.37 1.799 0 1.799 0 3.598 0-1.799 10.795-1.799 23.388-3.598 34.183 1.799 0 1.799 0 3.598 0 8.996-12.594 16.192-25.187 25.187-37.781 1.799 0 1.799 1.799 3.598 1.799-1.799 8.996-3.598 16.192-5.397 25.187 34.183-109.745 93.553-197.901 203.299-244.678 0-1.799-1.799-7.196-3.598-12.594-17.991 8.996-35.982 17.991-53.973 25.187-1.799 0-3.598-1.799-5.397-1.799s-5.397 0-5.397 0c5.397-5.397 10.795-12.594 16.192-17.991 0 0-1.799-1.799-1.799-1.799-12.594 7.196-26.987 14.393-39.58 21.589-1.799-1.799-1.799-3.598-3.598-5.397 3.598-3.598 7.196-5.397 8.996-8.996 30.585-21.589 62.969-35.982 98.951-46.777 43.178-14.393 88.156-14.393 133.134-17.991 34.183-1.799 64.768 14.393 97.152 21.589s61.169 21.589 89.955 37.781c35.982 21.589 68.366 50.375 93.553 86.357 17.991 25.187 37.781 52.174 43.178 84.558 1.799 10.795 8.996 19.79 12.594 30.585s5.397 21.589 3.598 30.585c0 5.397-10.795 8.996-17.991 14.393 0-10.795 0-17.991 0-23.388-23.388-17.991-26.987-46.777-35.982-75.562-5.397 19.79 1.799 32.384 7.196 44.978s5.397 26.987 8.996 41.379c1.799 8.996 3.598 19.79 5.397 28.786-1.799 0-3.598 0-3.598 1.799-7.196-17.991-12.594-35.982-19.79-53.973 0 0-1.799 0-1.799 0 3.598 17.991 5.397 37.781 8.996 55.772 3.598 21.589 1.799 41.379-7.196 61.169-1.799-1.799-3.598-3.598-5.397-5.397-3.598 17.991-5.397 34.183-8.996 50.375-1.799 7.196-3.598 12.594-3.598 19.79 0 5.397 0 10.795 1.799 16.192 0 1.799 1.799 5.397 1.799 7.196-3.598 12.594-7.196 23.388-8.996 35.982-7.196 26.987-21.589 46.777-39.58 66.567-3.598 3.598-3.598 14.393-5.397 21.589-1.799 3.598-3.598 7.196-7.196 8.996-28.786 17.991-48.576 46.777-79.16 62.969 3.598 1.799 5.397 1.799 5.397 3.598-5.397 5.397-12.594 10.795-19.79 17.991 3.598 1.799 5.397 1.799 8.996 3.598-12.594 7.196-23.388 12.594-34.183 17.991 16.192 16.192 26.987-10.795 43.178-1.799-17.991 19.79-25.187 48.576-53.973 57.571 1.799 1.799 5.397 3.598 8.996 5.397-3.598 1.799-7.196 5.397-10.795 7.196-10.795 3.598-21.589 5.397-30.585 7.196-8.996 16.192-17.991 30.585-28.786 46.777 17.991 0 37.781 3.598 55.772 1.799 19.79-1.799 41.379-7.196 61.169-14.393 8.996-3.598 17.991-10.795 26.987-16.192 10.795-5.397 21.589-8.996 32.384-12.594 7.196-3.598 10.795-7.196 7.196-16.192-1.799-3.598 3.598-10.795 3.598-12.594 14.393 1.799 23.388 3.598 34.183 5.397 1.799-1.799 1.799-3.598 3.598-5.397-5.397-8.996-10.795-16.192-16.192-25.187-3.598-7.196-3.598-10.795 3.598-14.393 3.598 5.397 5.397 10.795 8.996 17.991 1.799 0 1.799-1.799 3.598-1.799 0-3.598 0-7.196 1.799-10.795 7.196 3.598 14.393 8.996 19.79 12.594 0 1.799 1.799 1.799 1.799 3.598 5.397-5.397 8.996-10.795 16.192-17.991-7.196-3.598-12.594-7.196-19.79-12.594 5.397-3.598 12.594-7.196 17.991-10.795 1.799 5.397 1.799 10.795 3.598 16.192 8.996-7.196 14.393-12.594 21.589-17.991 0 0 0 0 1.799 1.799-1.799 3.598-3.598 7.196-5.397 10.795 0 1.799 1.799 1.799 1.799 3.598 5.397-1.799 12.594-3.598 17.991-7.196 12.594-10.795 25.187-23.388 35.982-35.982 7.196-7.196 16.192-12.594 3.598-23.388-1.799-1.799 0-5.397 0-10.795 7.196 7.196 14.393 12.594 21.589 19.79 3.598-5.397 7.196-10.795 10.795-16.192 7.196-8.996 12.594-19.79 21.589-28.786 7.196-7.196 3.598-12.594 0-19.79-3.598-5.397-3.598-10.795-5.397-16.192 1.799 0 1.799 0 3.598-1.799 5.397 5.397 12.594 8.996 16.192 16.192 1.799 3.598 0 10.795-1.799 16.192-3.598 8.996-10.795 16.192-16.192 28.786 21.589-12.594 25.187-34.183 34.183-50.375 5.397-10.795 14.393-19.79 16.192-28.786 1.799-10.795 10.795-17.991 12.594-26.987 10.795-37.781 23.388-73.763 21.589-113.343-1.799-21.589 7.196-41.379 3.598-59.37-1.799-14.393-1.799-26.987-1.799-41.379-1.799-43.178-16.192-80.96-34.183-118.741-1.799-3.598-1.799-7.196-1.799-12.594-3.598-10.795-8.996-23.388-14.393-34.183-5.397-12.594-8.996-25.187-16.192-37.781-1.799-5.397-8.996-7.196-12.594-12.594-1.799-1.799-3.598-3.598-5.397-5.397-17.991-23.388-34.183-46.777-52.174-68.366-10.795-12.594-26.987-23.388-41.379-35.982-14.393-10.795-28.786-23.388-43.178-34.183-17.991-14.393-37.781-26.987-57.571-34.183-14.393-5.397-28.786-14.393-43.178-19.79-34.183-14.393-68.366-26.987-104.348-30.585-10.795-1.799-19.79-3.598-30.585-3.598-17.991-1.799-35.982-1.799-53.973-1.799-26.987 0-53.973 0-80.96 3.598-34.183 5.397-68.366 16.192-100.75 25.187-12.594 3.598-25.187 8.996-37.781 16.192-16.192 8.996-32.384 17.991-48.576 26.987-48.576 26.987-88.156 62.969-125.937 104.348-10.795 12.594-17.991 26.987-26.987 41.379s-21.589 26.987-28.786 43.178c-10.795 19.79-17.991 41.379-25.187 62.969-8.996 23.388-16.192 46.777-23.388 70.165-3.598 8.996-3.598 19.79-3.598 30.585-1.799 7.196-1.799 16.192-1.799 23.388 0 14.393 0 28.786-1.799 43.178 0 7.196-3.598 14.393-3.598 21.589 0 3.598 1.799 8.996 1.799 12.594 0 1.799 3.598 5.397 1.799 7.196-3.598 14.393 1.799 28.786 5.397 41.379 5.397 14.393 8.996 28.786 16.192 41.379 0-8.996 0-16.192 0-25.187-1.799-23.388-7.196-44.978-7.196-68.366 0-19.79 1.799-41.379 3.598-61.169 0-7.196 0-14.393 0-19.79 3.598-3.598 7.196-10.795 10.795-17.991 0-3.598-1.799-7.196-1.799-10.795 0-25.187 12.594-46.777 25.187-68.366 0 0 1.799 0 5.397 1.799-10.795 26.987-19.79 52.174-28.786 77.361zM702.276 112.216c0-1.799 0-1.799 0-3.598 5.397 0 12.594-3.598 16.192-1.799 16.192 8.996 30.585 19.79 46.777 30.585-3.598 5.397-7.196 8.996-8.996 12.594-17.991-10.795-35.982-23.388-53.973-37.781zM153.55 376.684c-1.799-1.799-3.598-1.799-5.397-3.598 8.996-19.79 17.991-37.781 26.987-57.571 1.799 0 3.598 1.799 5.397 1.799-8.996 21.589-17.991 39.58-26.987 59.37zM743.655 51.046c0 1.799-1.799 3.598-1.799 3.598-17.991-8.996-34.183-16.192-52.174-25.187 0-1.799 1.799-3.598 1.799-3.598 17.991 8.996 34.183 16.192 52.174 25.187zM855.199 781.481c-1.799 0-3.598 0-5.397 0-1.799-7.196-3.598-16.192-5.397-26.987 8.996 5.397 14.393 8.996 19.79 12.594-5.397 5.397-7.196 8.996-8.996 14.393zM45.604 490.027c1.799 0 3.598 0 5.397 0 0 10.795 1.799 21.589 1.799 34.183-1.799 0-3.598 0-3.598 0 0-10.795-1.799-23.388-3.598-34.183zM633.91 909.218c-1.799-5.397-1.799-7.196-1.799-10.795s0-7.196 0-10.795c1.799 0 1.799 0 3.598 0 3.598 7.196 5.397 12.594 8.996 19.79-3.598 0-7.196 1.799-10.795 1.799zM590.731 187.778c-21.589-10.795-43.178-14.393-66.567-17.991-21.589-1.799-43.178 0-66.567 1.799-7.196 0-14.393-1.799-23.388 0-1.799 0-5.397 5.397-7.196 7.196-23.388 8.996-46.777 17.991-70.165 25.187-7.196 1.799-14.393 3.598-21.589 3.598-1.799-1.799-1.799-1.799-3.598-3.598 7.196-3.598 12.594-5.397 19.79-8.996-1.799-1.799-3.598-3.598-5.397-5.397-30.585 8.996-48.576 35.982-70.165 59.37 0 0 0 0 0 0 1.799 0 3.598 0 7.196 0-8.996 10.795-17.991 21.589-26.987 30.585-5.397 5.397-14.393 7.196-16.192 14.393-7.196 16.192-10.795 32.384-16.192 50.375-19.79 3.598-1.799 19.79-5.397 28.786 1.799-1.799 3.598-3.598 7.196-5.397-1.799 8.996-1.799 16.192-3.598 25.187 0 0 1.799 0 1.799 0 1.799-7.196 5.397-14.393 7.196-21.589 12.594-35.982 39.58-62.969 59.37-93.553 14.393-19.79 37.781-34.183 59.37-48.576 35.982-26.987 75.562-39.58 120.54-44.978 37.781-3.598 73.763-5.397 109.745 7.196 5.397 0 8.996-1.799 10.795-3.598zM587.133 139.202c-5.397-1.799-8.996-3.598-14.393-5.397-28.786-3.598-59.37-8.996-88.156-8.996-17.991 0-35.982 1.799-52.174 7.196-8.996 3.598-17.991 7.196-26.987 7.196-5.397 0-8.996 8.996-14.393 14.393 8.996 0 10.795-7.196 12.594-7.196 7.196-3.598 16.192-3.598 25.187-5.397 7.196 0 14.393 1.799 21.589 0 43.178-7.196 86.357-8.996 129.535 0 3.598 0 5.397 0 8.996 0-1.799 1.799-1.799 0-1.799-1.799zM380.237 175.184c37.781-7.196 77.361-14.393 115.143-23.388-41.379-3.598-79.16 8.996-115.143 23.388zM731.061 655.544c-16.192 16.192-32.384 28.786-46.777 43.178 12.594 5.397 44.978-23.388 46.777-43.178zM731.061 686.129c-19.79 14.393-37.781 30.585-57.571 44.978 0 1.799 1.799 1.799 1.799 3.598 19.79-14.393 39.58-30.585 57.571-44.978 0 0-1.799-1.799-1.799-3.598zM896.579 774.285c-10.795 8.996-23.388 19.79-37.781 28.786 19.79-3.598 30.585-16.192 37.781-28.786zM378.437 840.852c-3.598 1.799-8.996 3.598-12.594 3.598 12.594 3.598 25.187 8.996 39.58 12.594 0-1.799 0-1.799 1.799-3.598-10.795-3.598-19.79-7.196-28.786-12.594zM865.994 826.459c-12.594 10.795-23.388 21.589-35.982 32.384 0 1.799 1.799 1.799 1.799 3.598 12.594-10.795 23.388-21.589 35.982-32.384 0 0-1.799-1.799-1.799-3.598z" />
|
14 |
</font></defs></svg>
|
vendor/boldgrid/library/src/assets/fonts/boldgrid.ttf
CHANGED
Binary file
|
vendor/boldgrid/library/src/assets/fonts/boldgrid.woff
CHANGED
Binary file
|
vendor/boldgrid/library/src/assets/js/api-notice.js
CHANGED
@@ -20,11 +20,11 @@ BOLDGRID.LIBRARY.Api = function( $ ) {
|
|
20 |
$( '.boldgridApiKeyLink', notice ).on( 'click', function() {
|
21 |
$( '.api-notice', notice ).hide();
|
22 |
$( '.new-api-key', notice ).fadeIn( 'slow' );
|
23 |
-
});
|
24 |
$( '.enterKeyLink', notice ).on( 'click', function() {
|
25 |
$( '.new-api-key', notice ).hide();
|
26 |
$( '.api-notice', notice ).fadeIn( 'slow' );
|
27 |
-
});
|
28 |
|
29 |
/** Submit action **/
|
30 |
$( '#requestKeyForm' ).submit( function( event ) {
|
@@ -37,88 +37,106 @@ BOLDGRID.LIBRARY.Api = function( $ ) {
|
|
37 |
$email = $form.find( '#emailAddr' ).val(),
|
38 |
$link = $form.find( '#siteUrl' ).val(),
|
39 |
$alertBox = $( '.error-alerts' ),
|
40 |
-
$genericError =
|
|
|
41 |
$submit = $form.find( '#requestKey' ),
|
42 |
$spinner = $form.find( '.spinner' );
|
43 |
|
44 |
-
|
45 |
-
|
46 |
-
$('.error-color').removeClass( 'error-color' );
|
47 |
|
48 |
// Basic js checks before server-side verification.
|
49 |
if ( ! $firstName ) {
|
50 |
$alertBox.text( 'First name is required.' );
|
51 |
-
$form
|
|
|
|
|
|
|
52 |
return false;
|
53 |
}
|
54 |
if ( ! $lastName ) {
|
55 |
$alertBox.text( 'Last name is required.' );
|
56 |
-
$form
|
|
|
|
|
|
|
57 |
return false;
|
58 |
}
|
59 |
-
if ( ! ( $email.indexOf( '@' )
|
60 |
$alertBox.text( 'Please enter a valid e-mail address.' );
|
61 |
-
$form
|
|
|
|
|
|
|
62 |
return false;
|
63 |
}
|
64 |
|
65 |
$submit.prop( 'disabled', 'disabled' );
|
66 |
$spinner.addClass( 'inline' );
|
67 |
|
68 |
-
posting = $.post( $( '#generate-api-key' ).val(),
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
}
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
|
100 |
/**
|
101 |
* When the submit button is pressed.
|
102 |
*/
|
103 |
-
$( '#boldgrid-api-form' ).submit( function( e ){
|
104 |
e.preventDefault();
|
105 |
-
});
|
106 |
|
107 |
$( '#boldgrid-api-loading', notice ).hide();
|
108 |
|
109 |
-
$( '#submit_api_key', notice ).on('click', function() {
|
110 |
$( '#boldgrid_api_key_notice_message' ).empty();
|
111 |
-
if ( ! $( '#tos-box:checked').length
|
112 |
$( '#boldgrid_api_key_notice_message', notice )
|
113 |
.html( 'You must agree to the Terms of Service before continuing.' )
|
114 |
.addClass( 'error-color' );
|
115 |
return false;
|
116 |
}
|
117 |
-
var key = $( '#boldgrid_api_key', notice )
|
118 |
-
.
|
119 |
-
.replace( /
|
|
|
120 |
.slice( 0, -1 );
|
121 |
-
if ( ! key || key.length
|
122 |
$( '#boldgrid_api_key_notice_message', notice )
|
123 |
.html( 'You must enter a valid BoldGrid Connect Key.' )
|
124 |
.addClass( 'error-color' );
|
@@ -133,10 +151,10 @@ BOLDGRID.LIBRARY.Api = function( $ ) {
|
|
133 |
|
134 |
// show the loading graphic.
|
135 |
$( '#boldgrid-api-loading', notice ).show();
|
136 |
-
});
|
137 |
|
138 |
self._setupChangeKey();
|
139 |
-
});
|
140 |
|
141 |
/**
|
142 |
* When a user clicks on change connect key, change the presentation to key input.
|
@@ -144,7 +162,7 @@ BOLDGRID.LIBRARY.Api = function( $ ) {
|
|
144 |
* @since 2.4.0
|
145 |
*/
|
146 |
this._setupChangeKey = function() {
|
147 |
-
notice.find( 'a[data-action="change-connect-key"]' ).on( 'click', function
|
148 |
e.preventDefault();
|
149 |
notice.attr( 'data-notice-state', 'no-key-added' );
|
150 |
} );
|
@@ -170,22 +188,30 @@ BOLDGRID.LIBRARY.Api = function( $ ) {
|
|
170 |
}
|
171 |
};
|
172 |
|
173 |
-
this.trackActivation = function
|
|
|
174 |
// Create iframe element.
|
175 |
var iframe = document.createElement( 'iframe' );
|
|
|
176 |
// Assign iframe ID.
|
177 |
iframe.setAttribute( 'id', 'tracking' );
|
|
|
178 |
// Assign iframe width.
|
179 |
iframe.setAttribute( 'width', 0 );
|
|
|
180 |
// Assign iframe height.
|
181 |
iframe.setAttribute( 'height', 0 );
|
|
|
182 |
// Assign iframe tabindex.
|
183 |
iframe.setAttribute( 'tabindex', -1 );
|
|
|
184 |
// Place iframe before response message.
|
185 |
var el = document.getElementById( 'boldgrid_api_key_notice_message' );
|
186 |
el.parentNode.insertBefore( iframe, el );
|
|
|
187 |
// Assign src URL to iframe.
|
188 |
iframe.setAttribute( 'src', 'https://www.boldgrid.com/activation/' );
|
|
|
189 |
// Set display:none to iframe;
|
190 |
iframe.style.display = 'none';
|
191 |
};
|
@@ -195,19 +221,20 @@ BOLDGRID.LIBRARY.Api = function( $ ) {
|
|
195 |
*/
|
196 |
this.set = function( key ) {
|
197 |
var data, nonce, wpHttpReferer, $noticeContainer;
|
|
|
198 |
// Get the wpnonce and referer values.
|
199 |
nonce = $( '#set_key_auth', notice ).val();
|
200 |
wpHttpReferer = $( '[name="_wp_http_referer"]', notice ).val();
|
201 |
data = {
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
};
|
207 |
|
208 |
$noticeContainer = $( '#container_boldgrid_api_key_notice' );
|
209 |
|
210 |
-
var fail = function
|
211 |
message = message || 'An unexpected error occured. Please try again later.';
|
212 |
|
213 |
$( '#boldgrid-api-loading', $noticeContainer ).hide();
|
@@ -218,20 +245,28 @@ BOLDGRID.LIBRARY.Api = function( $ ) {
|
|
218 |
};
|
219 |
|
220 |
$.post( ajaxurl, data, function( response ) {
|
|
|
221 |
// Declare variables.
|
222 |
-
var message
|
|
|
223 |
|
224 |
// If the key was saved successfully.
|
225 |
if ( response.success ) {
|
226 |
-
|
227 |
-
|
228 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
|
230 |
// Initiate tracking iframe.
|
231 |
self.trackActivation();
|
232 |
|
233 |
-
$( '#boldgrid_api_key_notice_message', $noticeContainer )
|
234 |
-
.html( response.data.message + ' <a class="dismiss-notification" onClick="window.location.reload(true)" style="cursor:pointer;"> Dismiss Notification</a>' );
|
235 |
|
236 |
// Remove the loading graphic since success.
|
237 |
$( '#boldgrid-api-loading', $noticeContainer ).fadeOut();
|
@@ -239,10 +274,15 @@ BOLDGRID.LIBRARY.Api = function( $ ) {
|
|
239 |
// Finally hide the input elements as we do not need them anymore.
|
240 |
$( '#boldgrid_api_key', $noticeContainer ).fadeOut();
|
241 |
|
242 |
-
//
|
243 |
-
|
244 |
-
|
245 |
-
|
|
|
|
|
|
|
|
|
|
|
246 |
} else {
|
247 |
fail( response.data ? response.data.message : null );
|
248 |
}
|
20 |
$( '.boldgridApiKeyLink', notice ).on( 'click', function() {
|
21 |
$( '.api-notice', notice ).hide();
|
22 |
$( '.new-api-key', notice ).fadeIn( 'slow' );
|
23 |
+
} );
|
24 |
$( '.enterKeyLink', notice ).on( 'click', function() {
|
25 |
$( '.new-api-key', notice ).hide();
|
26 |
$( '.api-notice', notice ).fadeIn( 'slow' );
|
27 |
+
} );
|
28 |
|
29 |
/** Submit action **/
|
30 |
$( '#requestKeyForm' ).submit( function( event ) {
|
37 |
$email = $form.find( '#emailAddr' ).val(),
|
38 |
$link = $form.find( '#siteUrl' ).val(),
|
39 |
$alertBox = $( '.error-alerts' ),
|
40 |
+
$genericError =
|
41 |
+
'There was an error communicating with the BoldGrid Connect Key server. Please try again.',
|
42 |
$submit = $form.find( '#requestKey' ),
|
43 |
$spinner = $form.find( '.spinner' );
|
44 |
|
45 |
+
$( '.error-color' ).removeClass( 'error-color' );
|
|
|
|
|
46 |
|
47 |
// Basic js checks before server-side verification.
|
48 |
if ( ! $firstName ) {
|
49 |
$alertBox.text( 'First name is required.' );
|
50 |
+
$form
|
51 |
+
.find( '#firstName' )
|
52 |
+
.prev()
|
53 |
+
.addClass( 'error-color' );
|
54 |
return false;
|
55 |
}
|
56 |
if ( ! $lastName ) {
|
57 |
$alertBox.text( 'Last name is required.' );
|
58 |
+
$form
|
59 |
+
.find( '#lastName' )
|
60 |
+
.prev()
|
61 |
+
.addClass( 'error-color' );
|
62 |
return false;
|
63 |
}
|
64 |
+
if ( ! ( -1 < $email.indexOf( '@' ) && -1 < $email.indexOf( '.' ) ) ) {
|
65 |
$alertBox.text( 'Please enter a valid e-mail address.' );
|
66 |
+
$form
|
67 |
+
.find( '#emailAddr' )
|
68 |
+
.prev()
|
69 |
+
.addClass( 'error-color' );
|
70 |
return false;
|
71 |
}
|
72 |
|
73 |
$submit.prop( 'disabled', 'disabled' );
|
74 |
$spinner.addClass( 'inline' );
|
75 |
|
76 |
+
posting = $.post( $( '#generate-api-key' ).val(), {
|
77 |
+
first: $firstName,
|
78 |
+
last: $lastName,
|
79 |
+
email: $email,
|
80 |
+
link: $link
|
81 |
+
} );
|
82 |
+
|
83 |
+
posting
|
84 |
+
.done( function( response ) {
|
85 |
+
$alertBox.text( $genericError );
|
86 |
+
if ( 200 === response.status ) {
|
87 |
+
$( '.key-request-content' ).text( response.message );
|
88 |
+
}
|
89 |
+
} )
|
90 |
+
.fail( function( post ) {
|
91 |
+
var message = post.responseJSON.message;
|
92 |
+
if ( 0 <= message.indexOf( 'First name' ) ) {
|
93 |
+
$form
|
94 |
+
.find( '#firstName' )
|
95 |
+
.prev()
|
96 |
+
.addClass( 'error-color' );
|
97 |
+
}
|
98 |
+
if ( 0 <= message.indexOf( 'Last name' ) ) {
|
99 |
+
$form
|
100 |
+
.find( '#lastName' )
|
101 |
+
.prev()
|
102 |
+
.addClass( 'error-color' );
|
103 |
+
}
|
104 |
+
if ( 0 <= message.indexOf( 'e-mail' ) ) {
|
105 |
+
$form
|
106 |
+
.find( '#emailAddr' )
|
107 |
+
.prev()
|
108 |
+
.addClass( 'error-color' );
|
109 |
+
}
|
110 |
+
$alertBox.text( message );
|
111 |
+
|
112 |
+
$submit.prop( 'disabled', false );
|
113 |
+
$spinner.removeClass( 'inline' );
|
114 |
+
} );
|
115 |
+
} );
|
116 |
|
117 |
/**
|
118 |
* When the submit button is pressed.
|
119 |
*/
|
120 |
+
$( '#boldgrid-api-form' ).submit( function( e ) {
|
121 |
e.preventDefault();
|
122 |
+
} );
|
123 |
|
124 |
$( '#boldgrid-api-loading', notice ).hide();
|
125 |
|
126 |
+
$( '#submit_api_key', notice ).on( 'click', function() {
|
127 |
$( '#boldgrid_api_key_notice_message' ).empty();
|
128 |
+
if ( ! $( '#tos-box:checked' ).length ) {
|
129 |
$( '#boldgrid_api_key_notice_message', notice )
|
130 |
.html( 'You must agree to the Terms of Service before continuing.' )
|
131 |
.addClass( 'error-color' );
|
132 |
return false;
|
133 |
}
|
134 |
+
var key = $( '#boldgrid_api_key', notice )
|
135 |
+
.val()
|
136 |
+
.replace( /[^a-z0-9]/gi, '' )
|
137 |
+
.replace( /(.{8})/g, '$1-' )
|
138 |
.slice( 0, -1 );
|
139 |
+
if ( ! key || 35 !== key.length ) {
|
140 |
$( '#boldgrid_api_key_notice_message', notice )
|
141 |
.html( 'You must enter a valid BoldGrid Connect Key.' )
|
142 |
.addClass( 'error-color' );
|
151 |
|
152 |
// show the loading graphic.
|
153 |
$( '#boldgrid-api-loading', notice ).show();
|
154 |
+
} );
|
155 |
|
156 |
self._setupChangeKey();
|
157 |
+
} );
|
158 |
|
159 |
/**
|
160 |
* When a user clicks on change connect key, change the presentation to key input.
|
162 |
* @since 2.4.0
|
163 |
*/
|
164 |
this._setupChangeKey = function() {
|
165 |
+
notice.find( 'a[data-action="change-connect-key"]' ).on( 'click', function( e ) {
|
166 |
e.preventDefault();
|
167 |
notice.attr( 'data-notice-state', 'no-key-added' );
|
168 |
} );
|
188 |
}
|
189 |
};
|
190 |
|
191 |
+
this.trackActivation = function() {
|
192 |
+
|
193 |
// Create iframe element.
|
194 |
var iframe = document.createElement( 'iframe' );
|
195 |
+
|
196 |
// Assign iframe ID.
|
197 |
iframe.setAttribute( 'id', 'tracking' );
|
198 |
+
|
199 |
// Assign iframe width.
|
200 |
iframe.setAttribute( 'width', 0 );
|
201 |
+
|
202 |
// Assign iframe height.
|
203 |
iframe.setAttribute( 'height', 0 );
|
204 |
+
|
205 |
// Assign iframe tabindex.
|
206 |
iframe.setAttribute( 'tabindex', -1 );
|
207 |
+
|
208 |
// Place iframe before response message.
|
209 |
var el = document.getElementById( 'boldgrid_api_key_notice_message' );
|
210 |
el.parentNode.insertBefore( iframe, el );
|
211 |
+
|
212 |
// Assign src URL to iframe.
|
213 |
iframe.setAttribute( 'src', 'https://www.boldgrid.com/activation/' );
|
214 |
+
|
215 |
// Set display:none to iframe;
|
216 |
iframe.style.display = 'none';
|
217 |
};
|
221 |
*/
|
222 |
this.set = function( key ) {
|
223 |
var data, nonce, wpHttpReferer, $noticeContainer;
|
224 |
+
|
225 |
// Get the wpnonce and referer values.
|
226 |
nonce = $( '#set_key_auth', notice ).val();
|
227 |
wpHttpReferer = $( '[name="_wp_http_referer"]', notice ).val();
|
228 |
data = {
|
229 |
+
action: 'addKey',
|
230 |
+
api_key: key,
|
231 |
+
set_key_auth: nonce,
|
232 |
+
_wp_http_referer: wpHttpReferer
|
233 |
};
|
234 |
|
235 |
$noticeContainer = $( '#container_boldgrid_api_key_notice' );
|
236 |
|
237 |
+
var fail = function( message ) {
|
238 |
message = message || 'An unexpected error occured. Please try again later.';
|
239 |
|
240 |
$( '#boldgrid-api-loading', $noticeContainer ).hide();
|
245 |
};
|
246 |
|
247 |
$.post( ajaxurl, data, function( response ) {
|
248 |
+
|
249 |
// Declare variables.
|
250 |
+
var message,
|
251 |
+
isKeypromptMini = $( '.keyprompt-mini', $noticeContainer );
|
252 |
|
253 |
// If the key was saved successfully.
|
254 |
if ( response.success ) {
|
255 |
+
message = response.data.message;
|
256 |
+
|
257 |
+
// Change the notice from red to green, and hide the form.
|
258 |
+
if ( ! isKeypromptMini.length ) {
|
259 |
+
$noticeContainer.toggleClass( 'error' ).toggleClass( 'updated' );
|
260 |
+
$noticeContainer.addClass( 'success-add-key' );
|
261 |
+
message +=
|
262 |
+
' <a class="dismiss-notification" onClick="window.location.reload(true)" style="cursor:pointer;"> Dismiss Notification</a>';
|
263 |
+
$( '.tos-box', $noticeContainer ).fadeOut();
|
264 |
+
}
|
265 |
|
266 |
// Initiate tracking iframe.
|
267 |
self.trackActivation();
|
268 |
|
269 |
+
$( '#boldgrid_api_key_notice_message', $noticeContainer ).html( message );
|
|
|
270 |
|
271 |
// Remove the loading graphic since success.
|
272 |
$( '#boldgrid-api-loading', $noticeContainer ).fadeOut();
|
274 |
// Finally hide the input elements as we do not need them anymore.
|
275 |
$( '#boldgrid_api_key', $noticeContainer ).fadeOut();
|
276 |
|
277 |
+
// Trigger an event, for others to do things.
|
278 |
+
$( 'body' ).trigger( 'boldgrid-key-saved' );
|
279 |
+
|
280 |
+
// Reload page after 2 seconds, if not a mini key entry prompt.
|
281 |
+
if ( ! isKeypromptMini.length ) {
|
282 |
+
setTimeout( function() {
|
283 |
+
window.location.reload();
|
284 |
+
}, 2000 );
|
285 |
+
}
|
286 |
} else {
|
287 |
fail( response.data ? response.data.message : null );
|
288 |
}
|
vendor/boldgrid/library/src/assets/js/attributes.js
ADDED
@@ -0,0 +1,255 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Handle page attributes within the editor.
|
3 |
+
*
|
4 |
+
* Specifically, handle the edit, ok, and cancel options. This replicates the options native to
|
5 |
+
* meta boxes (such as the status and visibility settings in the publish meta box).
|
6 |
+
*
|
7 |
+
* @since 2.7.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
/* global jQuery */
|
11 |
+
|
12 |
+
var BOLDGRID = BOLDGRID || {};
|
13 |
+
BOLDGRID.LIBRARY = BOLDGRID.LIBRARY || {};
|
14 |
+
|
15 |
+
( function( $ ) {
|
16 |
+
'use strict';
|
17 |
+
|
18 |
+
var self;
|
19 |
+
|
20 |
+
BOLDGRID.LIBRARY.Attributes = {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* @summary Get the default option element.
|
24 |
+
*
|
25 |
+
* Either we explicity flagged an element with data-default-option="1", or we get the
|
26 |
+
* selected value.
|
27 |
+
*
|
28 |
+
* @since 2.7.0
|
29 |
+
*
|
30 |
+
* @param Object $section A ".misc-pub-section" section.
|
31 |
+
* @return Object The default option.
|
32 |
+
*/
|
33 |
+
getDefaultOption: function( $section ) {
|
34 |
+
var $defaultOption = $section.find( '[data-default-option="1"]' );
|
35 |
+
|
36 |
+
if( 0 === $defaultOption.length ) {
|
37 |
+
$defaultOption = self.getSectionChecked( $section );
|
38 |
+
$defaultOption.attr( 'data-default-option', '1' );
|
39 |
+
}
|
40 |
+
|
41 |
+
return $defaultOption;
|
42 |
+
},
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @summary Get the display value of an element.
|
46 |
+
*
|
47 |
+
* @see self.initValueDisplayed().
|
48 |
+
*
|
49 |
+
* @since 2.7.0
|
50 |
+
*
|
51 |
+
* @param Object $element The element to determine the display value of.
|
52 |
+
* @return string
|
53 |
+
*/
|
54 |
+
getDisplayValue: function( $element ) {
|
55 |
+
var displayValue = $element.attr( 'data-value-displayed' ),
|
56 |
+
inputType,
|
57 |
+
$parent;
|
58 |
+
|
59 |
+
if( displayValue === undefined ) {
|
60 |
+
$parent = $element.closest( '.bglib-misc-pub-section' );
|
61 |
+
inputType = self.getSectionInput( $parent );
|
62 |
+
|
63 |
+
switch( inputType ) {
|
64 |
+
case 'select':
|
65 |
+
displayValue = $element.text();
|
66 |
+
break;
|
67 |
+
case 'radio':
|
68 |
+
// This is a guess.
|
69 |
+
displayValue = $element.parent().text();
|
70 |
+
break;
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
return displayValue;
|
75 |
+
},
|
76 |
+
|
77 |
+
/**
|
78 |
+
* @summary Get the selected value of a section.
|
79 |
+
*
|
80 |
+
* Determine whether we're dealing with a radio button or a select, and get the selected /
|
81 |
+
* checked option.
|
82 |
+
*
|
83 |
+
* @since 2.7.0
|
84 |
+
*
|
85 |
+
* @param Object $section A ".misc-pub-section" section.
|
86 |
+
* @return Object
|
87 |
+
*/
|
88 |
+
getSectionChecked: function( $section ) {
|
89 |
+
var inputType = self.getSectionInput( $section ),
|
90 |
+
$checked;
|
91 |
+
|
92 |
+
switch( inputType ) {
|
93 |
+
case 'select':
|
94 |
+
$checked = $section.find( ':selected' );
|
95 |
+
break;
|
96 |
+
case 'radio':
|
97 |
+
$checked = $section.find( '[type="radio"]:checked' );
|
98 |
+
break;
|
99 |
+
}
|
100 |
+
|
101 |
+
return $checked;
|
102 |
+
},
|
103 |
+
|
104 |
+
/**
|
105 |
+
* @summary Get the type of input available in this section.
|
106 |
+
*
|
107 |
+
* For example, when selecting a status value, you may have a "select". Or, when selecting
|
108 |
+
* visibility value, you may have a "radio".
|
109 |
+
*
|
110 |
+
* @since 2.7.0
|
111 |
+
*
|
112 |
+
* @param Object $section A ".misc-pub-section" section.
|
113 |
+
* @return string
|
114 |
+
*/
|
115 |
+
getSectionInput: function( $section ) {
|
116 |
+
var types = {
|
117 |
+
select: 'select',
|
118 |
+
radio : 'input[type="radio"]'
|
119 |
+
},
|
120 |
+
inputType = false,
|
121 |
+
key;
|
122 |
+
|
123 |
+
for( key in types ) {
|
124 |
+
if( 0 < $section.find( types[key] ).length ) {
|
125 |
+
inputType = key;
|
126 |
+
break;
|
127 |
+
}
|
128 |
+
}
|
129 |
+
|
130 |
+
return inputType;
|
131 |
+
},
|
132 |
+
|
133 |
+
/**
|
134 |
+
* @summary Initialize the "value displayed" element.
|
135 |
+
*
|
136 |
+
* The value displayed is the "VALUE" in the below example:
|
137 |
+
* Key: VALUE Edit
|
138 |
+
*
|
139 |
+
* The above example can be further broken down with the following markup example:
|
140 |
+
* <div class="misc-pub-section bglib-misc-pub-section">
|
141 |
+
* Status: <span class="value-displayed">Published</span> <a>Edit</a>
|
142 |
+
* </div>
|
143 |
+
*
|
144 |
+
* The reason we need to initialize it is because there may be no value set at all, but we
|
145 |
+
* need to show the user what the default value is. The text for the value-displayed element
|
146 |
+
* is retrieved via self.getDisplayValue.
|
147 |
+
*
|
148 |
+
* @since 2.7.0
|
149 |
+
*
|
150 |
+
* @param Object $section A ".misc-pub-section" section.
|
151 |
+
*/
|
152 |
+
initValueDisplayed: function( $section ) {
|
153 |
+
var $defaultOption = self.getDefaultOption( $section ),
|
154 |
+
displayValue = self.getDisplayValue( $defaultOption ),
|
155 |
+
inputType = self.getSectionInput( $section );
|
156 |
+
|
157 |
+
// Set the "value-displayed" text.
|
158 |
+
$section.find( '.value-displayed' ).html( displayValue );
|
159 |
+
|
160 |
+
/*
|
161 |
+
* Usually the $defaultOption is already selected. In the event of the user clicking
|
162 |
+
* cancel, we'll have to reset the selected value.
|
163 |
+
*/
|
164 |
+
switch( inputType ) {
|
165 |
+
case 'select':
|
166 |
+
$defaultOption.prop( 'selected', true );
|
167 |
+
break;
|
168 |
+
case 'radio':
|
169 |
+
$defaultOption.prop( 'checked', true );
|
170 |
+
break;
|
171 |
+
}
|
172 |
+
},
|
173 |
+
|
174 |
+
/**
|
175 |
+
* Initialize all .bglib-misc-pub-section feilds.
|
176 |
+
*
|
177 |
+
* @since 2.7.0
|
178 |
+
*/
|
179 |
+
initValuesDisplayed: function() {
|
180 |
+
$( '.bglib-misc-pub-section' ).each( function() {
|
181 |
+
self.initValueDisplayed( $( this ) );
|
182 |
+
});
|
183 |
+
},
|
184 |
+
|
185 |
+
/**
|
186 |
+
* @summary Handle the click of the Edit link.
|
187 |
+
*
|
188 |
+
* When the Edit link is clicked, we need to show the available options to the user.
|
189 |
+
*
|
190 |
+
* @since 2.7.0
|
191 |
+
*
|
192 |
+
* @memberOf BOLDGRID.LIBRARY.Attributes
|
193 |
+
*/
|
194 |
+
onClickEdit: function() {
|
195 |
+
var $edit = $( this ),
|
196 |
+
$section = $edit.closest( '.bglib-misc-pub-section' );
|
197 |
+
|
198 |
+
$section.find( '.options' ).slideToggle( 'fast' );
|
199 |
+
$edit.toggle();
|
200 |
+
|
201 |
+
// This is a button / anchor click. Return false.
|
202 |
+
return false;
|
203 |
+
},
|
204 |
+
|
205 |
+
/**
|
206 |
+
* @summary Handle the click of the Cancel link.
|
207 |
+
*
|
208 |
+
* When the cancel link is clicked, the selected value needs to be reset.
|
209 |
+
*
|
210 |
+
* @since 2.7.0
|
211 |
+
*/
|
212 |
+
onClickCancel: function() {
|
213 |
+
var $cancel = $( this ),
|
214 |
+
$section = $cancel.closest( '.bglib-misc-pub-section' );
|
215 |
+
|
216 |
+
$section
|
217 |
+
.find( '.options' ).slideToggle( 'fast' ).end()
|
218 |
+
.find( '.edit' ).toggle();
|
219 |
+
|
220 |
+
self.initValueDisplayed( $section );
|
221 |
+
|
222 |
+
// This is a button / anchor click. Return false.
|
223 |
+
return false;
|
224 |
+
},
|
225 |
+
|
226 |
+
/**
|
227 |
+
* @summary Handle the click of the OK button.
|
228 |
+
*
|
229 |
+
* @since 2.7.0
|
230 |
+
*/
|
231 |
+
onClickOk: function() {
|
232 |
+
var $ok = $( this ),
|
233 |
+
$section = $ok.closest( '.bglib-misc-pub-section' ),
|
234 |
+
$selected = self.getSectionChecked( $section ),
|
235 |
+
displayValue = self.getDisplayValue( $selected );
|
236 |
+
|
237 |
+
$section
|
238 |
+
.find( '.options' ).slideToggle( 'fast' ).end()
|
239 |
+
.find( '.edit' ).toggle().end()
|
240 |
+
.find( '.value-displayed' ).html( displayValue );
|
241 |
+
|
242 |
+
// This is a button / anchor click. Return false.
|
243 |
+
return false;
|
244 |
+
}
|
245 |
+
};
|
246 |
+
|
247 |
+
self = BOLDGRID.LIBRARY.Attributes;
|
248 |
+
|
249 |
+
$( function() {
|
250 |
+
$( 'body' ).on( 'click', '.bglib-misc-pub-section a.edit', BOLDGRID.LIBRARY.Attributes.onClickEdit );
|
251 |
+
$( 'body' ).on( 'click', '.bglib-misc-pub-section a.button-cancel', BOLDGRID.LIBRARY.Attributes.onClickCancel );
|
252 |
+
$( 'body' ).on( 'click', '.bglib-misc-pub-section a.button', BOLDGRID.LIBRARY.Attributes.onClickOk );
|
253 |
+
self.initValuesDisplayed();
|
254 |
+
} );
|
255 |
+
})( jQuery );
|
vendor/boldgrid/library/src/assets/js/connect.js
CHANGED
@@ -1,9 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
/* global ajaxurl,jQuery */
|
2 |
|
3 |
var BOLDGRID = BOLDGRID || {};
|
4 |
BOLDGRID.LIBRARY = BOLDGRID.LIBRARY || {};
|
5 |
|
6 |
-
( function
|
7 |
BOLDGRID.LIBRARY.Connect = {
|
8 |
|
9 |
/**
|
@@ -11,7 +19,7 @@ BOLDGRID.LIBRARY = BOLDGRID.LIBRARY || {};
|
|
11 |
*
|
12 |
* @since 2.4.0
|
13 |
*/
|
14 |
-
init: function
|
15 |
$( self._onLoad );
|
16 |
},
|
17 |
|
@@ -22,6 +30,8 @@ BOLDGRID.LIBRARY = BOLDGRID.LIBRARY || {};
|
|
22 |
*/
|
23 |
_onLoad: function() {
|
24 |
self._repositionNotice();
|
|
|
|
|
25 |
},
|
26 |
|
27 |
/**
|
@@ -32,10 +42,107 @@ BOLDGRID.LIBRARY = BOLDGRID.LIBRARY || {};
|
|
32 |
_repositionNotice: function() {
|
33 |
var $connectKeySection = $( '.connect-key-prompt' );
|
34 |
|
35 |
-
setTimeout( function
|
36 |
$connectKeySection.after( $( '#container_boldgrid_api_key_notice' ) );
|
37 |
} );
|
38 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
};
|
40 |
|
41 |
var self = BOLDGRID.LIBRARY.Connect;
|
1 |
+
/**
|
2 |
+
* BoldGrid Library Connect.
|
3 |
+
*
|
4 |
+
* @summary JavaScript to handle UI/UX.
|
5 |
+
*
|
6 |
+
* @since 2.4.0
|
7 |
+
*/
|
8 |
+
|
9 |
/* global ajaxurl,jQuery */
|
10 |
|
11 |
var BOLDGRID = BOLDGRID || {};
|
12 |
BOLDGRID.LIBRARY = BOLDGRID.LIBRARY || {};
|
13 |
|
14 |
+
( function( $ ) {
|
15 |
BOLDGRID.LIBRARY.Connect = {
|
16 |
|
17 |
/**
|
19 |
*
|
20 |
* @since 2.4.0
|
21 |
*/
|
22 |
+
init: function() {
|
23 |
$( self._onLoad );
|
24 |
},
|
25 |
|
30 |
*/
|
31 |
_onLoad: function() {
|
32 |
self._repositionNotice();
|
33 |
+
|
34 |
+
$( '#submit' ).on( 'click', self._submit );
|
35 |
},
|
36 |
|
37 |
/**
|
42 |
_repositionNotice: function() {
|
43 |
var $connectKeySection = $( '.connect-key-prompt' );
|
44 |
|
45 |
+
setTimeout( function() {
|
46 |
$connectKeySection.after( $( '#container_boldgrid_api_key_notice' ) );
|
47 |
} );
|
48 |
+
},
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Handle form submission.
|
52 |
+
*
|
53 |
+
* @since 2.7.0
|
54 |
+
*/
|
55 |
+
_submit: function() {
|
56 |
+
var $this = $( this ),
|
57 |
+
$spinner = $this.next(),
|
58 |
+
$notice = $( '#settings-notice' ),
|
59 |
+
data = {
|
60 |
+
action: 'boldgrid_library_connect_settings_save',
|
61 |
+
_wpnonce: $( '[name="_wpnonce"]' ).val(),
|
62 |
+
_wp_http_referer: $( '[name="_wp_http_referer"]' ).val(),
|
63 |
+
plugin_release_channel: $( 'input[name="plugin_release_channel"]:checked' ).val(),
|
64 |
+
theme_release_channel: $( 'input[name="theme_release_channel"]:checked' ).val()
|
65 |
+
};
|
66 |
+
|
67 |
+
$this.attr( 'disabled', 'disabled' );
|
68 |
+
|
69 |
+
$spinner.addClass( 'inline' );
|
70 |
+
|
71 |
+
$.post(
|
72 |
+
ajaxurl,
|
73 |
+
data,
|
74 |
+
function( response ) {
|
75 |
+
if ( response.success !== undefined && true === response.success ) {
|
76 |
+
$notice
|
77 |
+
.removeClass( 'notice-error' )
|
78 |
+
.addClass( 'notice-success' )
|
79 |
+
.html( BoldGridLibraryConnect.settingsSaved );
|
80 |
+
} else if ( response.data !== undefined && response.data.error !== undefined ) {
|
81 |
+
$notice
|
82 |
+
.removeClass( 'notice-success' )
|
83 |
+
.addClass( 'notice-error' )
|
84 |
+
.html( response.data.error );
|
85 |
+
$this.removeAttr( 'disabled' );
|
86 |
+
} else {
|
87 |
+
$notice
|
88 |
+
.removeClass( 'notice-success' )
|
89 |
+
.addClass( 'notice-error' )
|
90 |
+
.html( BoldGridLibraryConnect.unknownError );
|
91 |
+
$this.removeAttr( 'disabled' );
|
92 |
+
}
|
93 |
+
},
|
94 |
+
'json'
|
95 |
+
)
|
96 |
+
.fail( function( jqXHR ) {
|
97 |
+
$notice
|
98 |
+
.removeClass( 'notice-success' )
|
99 |
+
.addClass( 'notice-error' )
|
100 |
+
.html( BoldGridLibraryConnect.ajaxError + jqXHR.status + ' (' + jqXHR.statusText + ')' );
|
101 |
+
} )
|
102 |
+
.always( function() {
|
103 |
+
self._replaceNotice( $notice );
|
104 |
+
|
105 |
+
$notice.wrapInner( '<p></p>' ).show();
|
106 |
+
$spinner.removeClass( 'inline' );
|
107 |
+
$this.removeAttr( 'disabled' );
|
108 |
+
$( 'body' ).trigger( 'make_notices_dismissible' );
|
109 |
+
} );
|
110 |
+
},
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Replace the notice with a clone when removed by dismissal.
|
114 |
+
*
|
115 |
+
* @since 2.7.0
|
116 |
+
*/
|
117 |
+
_replaceNotice: function( $notice ) {
|
118 |
+
var $noticeClone = $notice.clone(),
|
119 |
+
$noticeNext = $notice.next();
|
120 |
+
|
121 |
+
$notice.one( 'click.wp-dismiss-notice', '.notice-dismiss', function() {
|
122 |
+
$noticeNext.before( $noticeClone );
|
123 |
+
$notice = $noticeClone;
|
124 |
+
$notice.hide();
|
125 |
+
} );
|
126 |
+
},
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Handle form submission.
|
130 |
+
*
|
131 |
+
* @since 2.7.0
|
132 |
+
*/
|
133 |
+
_toggleHelp: function( e ) {
|
134 |
+
var id = $( this ).attr( 'data-id' );
|
135 |
+
|
136 |
+
e.preventDefault();
|
137 |
+
|
138 |
+
if ( id === undefined ) {
|
139 |
+
return false;
|
140 |
+
}
|
141 |
+
|
142 |
+
$( '.help[data-id="' + id + '"]' ).slideToggle();
|
143 |
+
|
144 |
+
return false;
|
145 |
+
},
|
146 |
};
|
147 |
|
148 |
var self = BOLDGRID.LIBRARY.Connect;
|
vendor/boldgrid/library/src/assets/js/license.js
CHANGED
@@ -19,17 +19,15 @@ BOLDGRID.LIBRARY = BOLDGRID.LIBRARY || {};
|
|
19 |
*/
|
20 |
clear: function( plugin, onSuccess, onError ) {
|
21 |
var data = {
|
22 |
-
|
23 |
-
|
24 |
};
|
25 |
|
26 |
$.post( ajaxurl, data, function( response ) {
|
27 |
onSuccess( response );
|
28 |
-
}).error( function() {
|
29 |
onError();
|
30 |
-
});
|
31 |
-
}
|
32 |
};
|
33 |
-
|
34 |
-
})( jQuery );
|
35 |
-
|
19 |
*/
|
20 |
clear: function( plugin, onSuccess, onError ) {
|
21 |
var data = {
|
22 |
+
action: 'bg_clear_license',
|
23 |
+
plugin: plugin
|
24 |
};
|
25 |
|
26 |
$.post( ajaxurl, data, function( response ) {
|
27 |
onSuccess( response );
|
28 |
+
} ).error( function() {
|
29 |
onError();
|
30 |
+
} );
|
31 |
+
}
|
32 |
};
|
33 |
+
} )( jQuery );
|
|
|
|
vendor/boldgrid/library/src/assets/js/notice.js
CHANGED
@@ -10,7 +10,6 @@ BOLDGRID.LIBRARY.Notice = function( $ ) {
|
|
10 |
|
11 |
/** Dismissible action **/
|
12 |
$notices.on( 'click', '.notice-dismiss', self.dismiss );
|
13 |
-
|
14 |
} );
|
15 |
|
16 |
/**
|
@@ -22,10 +21,10 @@ BOLDGRID.LIBRARY.Notice = function( $ ) {
|
|
22 |
var $notice = $( this ).closest( '.boldgrid-notice' );
|
23 |
|
24 |
$.post( ajaxurl, {
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
} );
|
30 |
};
|
31 |
};
|
10 |
|
11 |
/** Dismissible action **/
|
12 |
$notices.on( 'click', '.notice-dismiss', self.dismiss );
|
|
|
13 |
} );
|
14 |
|
15 |
/**
|
21 |
var $notice = $( this ).closest( '.boldgrid-notice' );
|
22 |
|
23 |
$.post( ajaxurl, {
|
24 |
+
action: 'dismissBoldgridNotice',
|
25 |
+
notice: $notice.data( 'notice-id' ),
|
26 |
+
set_key_auth: $( '#set_key_auth', $notice ).val(),
|
27 |
+
_wp_http_referer: $( '[name="_wp_http_referer"]', $notice ).val()
|
28 |
} );
|
29 |
};
|
30 |
};
|
vendor/boldgrid/library/src/assets/js/sticky.js
CHANGED
@@ -10,279 +10,309 @@
|
|
10 |
// It will only set the 'top' and 'position' of your element, you
|
11 |
// might need to adjust the width in some cases.
|
12 |
|
13 |
-
(function
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
// It will only set the 'top' and 'position' of your element, you
|
11 |
// might need to adjust the width in some cases.
|
12 |
|
13 |
+
( function( factory ) {
|
14 |
+
if ( 'function' === typeof define && define.amd ) {
|
15 |
+
|
16 |
+
// AMD. Register as an anonymous module.
|
17 |
+
define( [ 'jquery' ], factory );
|
18 |
+
} else if ( 'object' === typeof module && module.exports ) {
|
19 |
+
|
20 |
+
// Node/CommonJS
|
21 |
+
module.exports = factory( require( 'jquery' ) );
|
22 |
+
} else {
|
23 |
+
|
24 |
+
// Browser globals
|
25 |
+
factory( jQuery );
|
26 |
+
}
|
27 |
+
} )( function( $ ) {
|
28 |
+
var slice = Array.prototype.slice; // save ref to original slice()
|
29 |
+
var splice = Array.prototype.splice; // save ref to original slice()
|
30 |
+
|
31 |
+
var defaults = {
|
32 |
+
topSpacing: 0,
|
33 |
+
bottomSpacing: 0,
|
34 |
+
className: 'is-sticky',
|
35 |
+
wrapperClassName: 'sticky-wrapper',
|
36 |
+
center: false,
|
37 |
+
getWidthFrom: '',
|
38 |
+
widthFromWrapper: true, // works only when .getWidthFrom is empty
|
39 |
+
responsiveWidth: false,
|
40 |
+
zIndex: 'inherit'
|
41 |
+
},
|
42 |
+
$window = $( window ),
|
43 |
+
$document = $( document ),
|
44 |
+
sticked = [],
|
45 |
+
windowHeight = $window.height(),
|
46 |
+
scroller = function() {
|
47 |
+
var scrollTop = $window.scrollTop(),
|
48 |
+
documentHeight = $document.height(),
|
49 |
+
dwh = documentHeight - windowHeight,
|
50 |
+
extra = scrollTop > dwh ? dwh - scrollTop : 0;
|
51 |
+
|
52 |
+
for ( var i = 0, l = sticked.length; i < l; i++ ) {
|
53 |
+
var s = sticked[i],
|
54 |
+
elementTop = s.stickyWrapper.offset().top,
|
55 |
+
etse = elementTop - s.topSpacing - extra;
|
56 |
+
|
57 |
+
//update height in case of dynamic content
|
58 |
+
s.stickyWrapper.css( 'height', s.stickyElement.outerHeight() );
|
59 |
+
|
60 |
+
if ( scrollTop <= etse ) {
|
61 |
+
if ( null !== s.currentTop ) {
|
62 |
+
s.stickyElement.css( {
|
63 |
+
width: '',
|
64 |
+
position: '',
|
65 |
+
top: '',
|
66 |
+
'z-index': ''
|
67 |
+
} );
|
68 |
+
s.stickyElement.parent().removeClass( s.className );
|
69 |
+
s.stickyElement.trigger( 'sticky-end', [ s ] );
|
70 |
+
s.currentTop = null;
|
71 |
+
}
|
72 |
+
} else {
|
73 |
+
var newTop =
|
74 |
+
documentHeight -
|
75 |
+
s.stickyElement.outerHeight() -
|
76 |
+
s.topSpacing -
|
77 |
+
s.bottomSpacing -
|
78 |
+
scrollTop -
|
79 |
+
extra;
|
80 |
+
if ( 0 > newTop ) {
|
81 |
+
newTop = newTop + s.topSpacing;
|
82 |
+
} else {
|
83 |
+
newTop = s.topSpacing;
|
84 |
+
}
|
85 |
+
if ( s.currentTop !== newTop ) {
|
86 |
+
var newWidth;
|
87 |
+
if ( s.getWidthFrom ) {
|
88 |
+
padding = s.stickyElement.innerWidth() - s.stickyElement.width();
|
89 |
+
newWidth = $( s.getWidthFrom ).width() - padding || null;
|
90 |
+
} else if ( s.widthFromWrapper ) {
|
91 |
+
newWidth = s.stickyWrapper.width();
|
92 |
+
}
|
93 |
+
if ( null == newWidth ) {
|
94 |
+
newWidth = s.stickyElement.width();
|
95 |
+
}
|
96 |
+
s.stickyElement
|
97 |
+
.css( 'width', newWidth )
|
98 |
+
.css( 'position', 'fixed' )
|
99 |
+
.css( 'top', newTop )
|
100 |
+
.css( 'z-index', s.zIndex );
|
101 |
+
|
102 |
+
s.stickyElement.parent().addClass( s.className );
|
103 |
+
|
104 |
+
if ( null === s.currentTop ) {
|
105 |
+
s.stickyElement.trigger( 'sticky-start', [ s ] );
|
106 |
+
} else {
|
107 |
+
|
108 |
+
// sticky is started but it have to be repositioned
|
109 |
+
s.stickyElement.trigger( 'sticky-update', [ s ] );
|
110 |
+
}
|
111 |
+
|
112 |
+
if (
|
113 |
+
( s.currentTop === s.topSpacing && s.currentTop > newTop ) ||
|
114 |
+
( null === s.currentTop && newTop < s.topSpacing )
|
115 |
+
) {
|
116 |
+
|
117 |
+
// just reached bottom || just started to stick but bottom is already reached
|
118 |
+
s.stickyElement.trigger( 'sticky-bottom-reached', [ s ] );
|
119 |
+
} else if ( null !== s.currentTop && newTop === s.topSpacing && s.currentTop < newTop ) {
|
120 |
+
|
121 |
+
// sticky is started && sticked at topSpacing && overflowing from top just finished
|
122 |
+
s.stickyElement.trigger( 'sticky-bottom-unreached', [ s ] );
|
123 |
+
}
|
124 |
+
|
125 |
+
s.currentTop = newTop;
|
126 |
+
}
|
127 |
+
|
128 |
+
// Check if sticky has reached end of container and stop sticking
|
129 |
+
var stickyWrapperContainer = s.stickyWrapper.parent();
|
130 |
+
var unstick =
|
131 |
+
s.stickyElement.offset().top + s.stickyElement.outerHeight() >=
|
132 |
+
stickyWrapperContainer.offset().top + stickyWrapperContainer.outerHeight() &&
|
133 |
+
s.stickyElement.offset().top <= s.topSpacing;
|
134 |
+
|
135 |
+
if ( unstick ) {
|
136 |
+
s.stickyElement
|
137 |
+
.css( 'position', 'absolute' )
|
138 |
+
.css( 'top', '' )
|
139 |
+
.css( 'bottom', 0 )
|
140 |
+
.css( 'z-index', '' );
|
141 |
+
} else {
|
142 |
+
s.stickyElement
|
143 |
+
.css( 'position', 'fixed' )
|
144 |
+
.css( 'top', newTop )
|
145 |
+
.css( 'bottom', '' )
|
146 |
+
.css( 'z-index', s.zIndex );
|
147 |
+
}
|
148 |
+
}
|
149 |
+
}
|
150 |
+
},
|
151 |
+
resizer = function() {
|
152 |
+
windowHeight = $window.height();
|
153 |
+
|
154 |
+
for ( var i = 0, l = sticked.length; i < l; i++ ) {
|
155 |
+
var s = sticked[i];
|
156 |
+
var newWidth = null;
|
157 |
+
if ( s.getWidthFrom ) {
|
158 |
+
if ( s.responsiveWidth ) {
|
159 |
+
newWidth = $( s.getWidthFrom ).width();
|
160 |
+
}
|
161 |
+
} else if ( s.widthFromWrapper ) {
|
162 |
+
newWidth = s.stickyWrapper.width();
|
163 |
+
}
|
164 |
+
if ( null != newWidth ) {
|
165 |
+
s.stickyElement.css( 'width', newWidth );
|
166 |
+
}
|
167 |
+
}
|
168 |
+
},
|
169 |
+
methods = {
|
170 |
+
init: function( options ) {
|
171 |
+
return this.each( function() {
|
172 |
+
var o = $.extend( {}, defaults, options );
|
173 |
+
var stickyElement = $( this );
|
174 |
+
|
175 |
+
var stickyId = stickyElement.attr( 'id' );
|
176 |
+
var wrapperId = stickyId ?
|
177 |
+
stickyId + '-' + defaults.wrapperClassName :
|
178 |
+
defaults.wrapperClassName;
|
179 |
+
var wrapper = $( '<div></div>' )
|
180 |
+
.attr( 'id', wrapperId )
|
181 |
+
.addClass( o.wrapperClassName );
|
182 |
+
|
183 |
+
stickyElement.wrapAll( function() {
|
184 |
+
if ( 0 == $( this ).parent( '#' + wrapperId ).length ) {
|
185 |
+
return wrapper;
|
186 |
+
}
|
187 |
+
} );
|
188 |
+
|
189 |
+
var stickyWrapper = stickyElement.parent();
|
190 |
+
|
191 |
+
if ( o.center ) {
|
192 |
+
stickyWrapper.css( {
|
193 |
+
width: stickyElement.outerWidth(),
|
194 |
+
marginLeft: 'auto',
|
195 |
+
marginRight: 'auto'
|
196 |
+
} );
|
197 |
+
}
|
198 |
+
|
199 |
+
if ( 'right' === stickyElement.css( 'float' ) ) {
|
200 |
+
stickyElement
|
201 |
+
.css( { float: 'none' } )
|
202 |
+
.parent()
|
203 |
+
.css( { float: 'right' } );
|
204 |
+
}
|
205 |
+
|
206 |
+
o.stickyElement = stickyElement;
|
207 |
+
o.stickyWrapper = stickyWrapper;
|
208 |
+
o.currentTop = null;
|
209 |
+
|
210 |
+
sticked.push( o );
|
211 |
+
|
212 |
+
methods.setWrapperHeight( this );
|
213 |
+
methods.setupChangeListeners( this );
|
214 |
+
} );
|
215 |
+
},
|
216 |
+
|
217 |
+
setWrapperHeight: function( stickyElement ) {
|
218 |
+
var element = $( stickyElement );
|
219 |
+
var stickyWrapper = element.parent();
|
220 |
+
if ( stickyWrapper ) {
|
221 |
+
stickyWrapper.css( 'height', element.outerHeight() );
|
222 |
+
}
|
223 |
+
},
|
224 |
+
|
225 |
+
setupChangeListeners: function( stickyElement ) {
|
226 |
+
if ( window.MutationObserver ) {
|
227 |
+
var mutationObserver = new window.MutationObserver( function( mutations ) {
|
228 |
+
if ( mutations[0].addedNodes.length || mutations[0].removedNodes.length ) {
|
229 |
+
methods.setWrapperHeight( stickyElement );
|
230 |
+
}
|
231 |
+
} );
|
232 |
+
mutationObserver.observe( stickyElement, { subtree: true, childList: true } );
|
233 |
+
} else {
|
234 |
+
if ( window.addEventListener ) {
|
235 |
+
stickyElement.addEventListener(
|
236 |
+
'DOMNodeInserted',
|
237 |
+
function() {
|
238 |
+
methods.setWrapperHeight( stickyElement );
|
239 |
+
},
|
240 |
+
false
|
241 |
+
);
|
242 |
+
stickyElement.addEventListener(
|
243 |
+
'DOMNodeRemoved',
|
244 |
+
function() {
|
245 |
+
methods.setWrapperHeight( stickyElement );
|
246 |
+
},
|
247 |
+
false
|
248 |
+
);
|
249 |
+
} else if ( window.attachEvent ) {
|
250 |
+
stickyElement.attachEvent( 'onDOMNodeInserted', function() {
|
251 |
+
methods.setWrapperHeight( stickyElement );
|
252 |
+
} );
|
253 |
+
stickyElement.attachEvent( 'onDOMNodeRemoved', function() {
|
254 |
+
methods.setWrapperHeight( stickyElement );
|
255 |
+
} );
|
256 |
+
}
|
257 |
+
}
|
258 |
+
},
|
259 |
+
update: scroller,
|
260 |
+
unstick: function( options ) {
|
261 |
+
return this.each( function() {
|
262 |
+
var that = this;
|
263 |
+
var unstickyElement = $( that );
|
264 |
+
|
265 |
+
var removeIdx = -1;
|
266 |
+
var i = sticked.length;
|
267 |
+
while ( 0 < i-- ) {
|
268 |
+
if ( sticked[i].stickyElement.get( 0 ) === that ) {
|
269 |
+
splice.call( sticked, i, 1 );
|
270 |
+
removeIdx = i;
|
271 |
+
}
|
272 |
+
}
|
273 |
+
if ( -1 !== removeIdx ) {
|
274 |
+
unstickyElement.unwrap();
|
275 |
+
unstickyElement.css( {
|
276 |
+
width: '',
|
277 |
+
position: '',
|
278 |
+
top: '',
|
279 |
+
float: '',
|
280 |
+
'z-index': ''
|
281 |
+
} );
|
282 |
+
}
|
283 |
+
} );
|
284 |
+
}
|
285 |
+
};
|
286 |
+
|
287 |
+
// should be more efficient than using $window.scroll(scroller) and $window.resize(resizer):
|
288 |
+
if ( window.addEventListener ) {
|
289 |
+
window.addEventListener( 'scroll', scroller, false );
|
290 |
+
window.addEventListener( 'resize', resizer, false );
|
291 |
+
} else if ( window.attachEvent ) {
|
292 |
+
window.attachEvent( 'onscroll', scroller );
|
293 |
+
window.attachEvent( 'onresize', resizer );
|
294 |
+
}
|
295 |
+
|
296 |
+
$.fn.sticky = function( method ) {
|
297 |
+
if ( methods[method] ) {
|
298 |
+
return methods[method].apply( this, slice.call( arguments, 1 ) );
|
299 |
+
} else if ( 'object' === typeof method || ! method ) {
|
300 |
+
return methods.init.apply( this, arguments );
|
301 |
+
} else {
|
302 |
+
$.error( 'Method ' + method + ' does not exist on jQuery.sticky' );
|
303 |
+
}
|
304 |
+
};
|
305 |
+
|
306 |
+
$.fn.unstick = function( method ) {
|
307 |
+
if ( methods[method] ) {
|
308 |
+
return methods[method].apply( this, slice.call( arguments, 1 ) );
|
309 |
+
} else if ( 'object' === typeof method || ! method ) {
|
310 |
+
return methods.unstick.apply( this, arguments );
|
311 |
+
} else {
|
312 |
+
$.error( 'Method ' + method + ' does not exist on jQuery.sticky' );
|
313 |
+
}
|
314 |
+
};
|
315 |
+
$( function() {
|
316 |
+
setTimeout( scroller, 0 );
|
317 |
+
} );
|
318 |
+
} );
|
vendor/boldgrid/library/src/assets/js/ui.js
CHANGED
@@ -41,13 +41,31 @@ BOLDGRID.LIBRARY.Ui = function( $ ) {
|
|
41 |
var width = document.body.clientWidth,
|
42 |
$leftNav = $( '.bg-left-nav' );
|
43 |
|
44 |
-
if(
|
45 |
-
$leftNav.sticky( { topSpacing
|
46 |
} else {
|
47 |
$leftNav.unstick();
|
48 |
}
|
49 |
};
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
/**
|
52 |
* @summary Init.
|
53 |
*
|
@@ -62,7 +80,9 @@ BOLDGRID.LIBRARY.Ui = function( $ ) {
|
|
62 |
self.setSticky();
|
63 |
|
64 |
$( window ).resize( self.setSticky );
|
65 |
-
|
|
|
|
|
66 |
};
|
67 |
|
68 |
-
|
41 |
var width = document.body.clientWidth,
|
42 |
$leftNav = $( '.bg-left-nav' );
|
43 |
|
44 |
+
if ( 782 <= width ) {
|
45 |
+
$leftNav.sticky( { topSpacing: 33 } );
|
46 |
} else {
|
47 |
$leftNav.unstick();
|
48 |
}
|
49 |
};
|
50 |
|
51 |
+
/**
|
52 |
+
* @summary Take action when a form is submitted.
|
53 |
+
*
|
54 |
+
* @since 1.7.0
|
55 |
+
*/
|
56 |
+
self.onFormSubmit = function() {
|
57 |
+
var $form = $( this ),
|
58 |
+
activeSection,
|
59 |
+
sectionInput = $( '<input type="hidden" name="section" />' );
|
60 |
+
|
61 |
+
// If the form does not already have a section, add it.
|
62 |
+
if( ! $form.find( '[name="section"]' ).length ) {
|
63 |
+
activeSection = $( '.bg-left-nav .active' ).attr( 'data-section-id' );
|
64 |
+
sectionInput.val( activeSection );
|
65 |
+
$form.append( sectionInput );
|
66 |
+
}
|
67 |
+
};
|
68 |
+
|
69 |
/**
|
70 |
* @summary Init.
|
71 |
*
|
80 |
self.setSticky();
|
81 |
|
82 |
$( window ).resize( self.setSticky );
|
83 |
+
|
84 |
+
$( 'form' ).on( 'submit', self.onFormSubmit );
|
85 |
+
} );
|
86 |
};
|
87 |
|
88 |
+
BOLDGRID.LIBRARY.Ui( jQuery );
|
vendor/boldgrid/library/yarn.lock
CHANGED
@@ -5,79 +5,166 @@
|
|
5 |
abbrev@1:
|
6 |
version "1.1.1"
|
7 |
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
|
|
8 |
|
9 |
acorn-jsx@^3.0.0:
|
10 |
version "3.0.1"
|
11 |
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
|
|
|
12 |
dependencies:
|
13 |
acorn "^3.0.4"
|
14 |
|
15 |
acorn@^3.0.4:
|
16 |
version "3.3.0"
|
17 |
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
|
|
|
18 |
|
19 |
acorn@^5.5.0:
|
20 |
-
version "5.
|
21 |
-
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.
|
|
|
22 |
|
23 |
ajv-keywords@^2.1.0:
|
24 |
version "2.1.1"
|
25 |
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
|
|
|
26 |
|
27 |
ajv@^5.2.3, ajv@^5.3.0:
|
28 |
version "5.5.2"
|
29 |
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
|
|
|
30 |
dependencies:
|
31 |
co "^4.6.0"
|
32 |
fast-deep-equal "^1.0.0"
|
33 |
fast-json-stable-stringify "^2.0.0"
|
34 |
json-schema-traverse "^0.3.0"
|
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
ansi-escapes@^3.0.0:
|
37 |
version "3.1.0"
|
38 |
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
|
40 |
ansi-regex@^2.0.0:
|
41 |
version "2.1.1"
|
42 |
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
|
|
43 |
|
44 |
ansi-regex@^3.0.0:
|
45 |
version "3.0.0"
|
46 |
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
|
|
|
47 |
|
48 |
ansi-styles@^2.2.1:
|
49 |
version "2.2.1"
|
50 |
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
|
|
|
51 |
|
52 |
ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1:
|
53 |
version "3.2.1"
|
54 |
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
|
|
55 |
dependencies:
|
56 |
color-convert "^1.9.0"
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
argparse@^1.0.7:
|
59 |
version "1.0.10"
|
60 |
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
|
|
|
61 |
dependencies:
|
62 |
sprintf-js "~1.0.2"
|
63 |
|
64 |
-
|
65 |
-
version "
|
66 |
-
resolved "https://registry.yarnpkg.com/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
dependencies:
|
68 |
-
|
|
|
|
|
69 |
|
70 |
-
array-uniq@^1.0.
|
71 |
version "1.0.3"
|
72 |
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
|
|
|
73 |
|
74 |
-
|
|
|
|
|
|
|
|
|
|
|
75 |
version "1.0.1"
|
76 |
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
|
78 |
babel-code-frame@^6.22.0:
|
79 |
version "6.26.0"
|
80 |
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
|
|
|
81 |
dependencies:
|
82 |
chalk "^1.1.3"
|
83 |
esutils "^2.0.2"
|
@@ -86,6 +173,7 @@ babel-code-frame@^6.22.0:
|
|
86 |
babel-runtime@^6.23.0, babel-runtime@^6.26.0:
|
87 |
version "6.26.0"
|
88 |
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
|
|
|
89 |
dependencies:
|
90 |
core-js "^2.4.0"
|
91 |
regenerator-runtime "^0.11.0"
|
@@ -93,55 +181,124 @@ babel-runtime@^6.23.0, babel-runtime@^6.26.0:
|
|
93 |
balanced-match@^1.0.0:
|
94 |
version "1.0.0"
|
95 |
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
|
97 |
boolify@^1.0.0:
|
98 |
version "1.0.1"
|
99 |
resolved "https://registry.yarnpkg.com/boolify/-/boolify-1.0.1.tgz#b5c09e17cacd113d11b7bb3ed384cc012994d86b"
|
|
|
100 |
|
101 |
-
brace-expansion@^1.1.7:
|
102 |
version "1.1.11"
|
103 |
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
|
|
104 |
dependencies:
|
105 |
balanced-match "^1.0.0"
|
106 |
concat-map "0.0.1"
|
107 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
108 |
buffer-from@^1.0.0:
|
109 |
-
version "1.
|
110 |
-
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
112 |
caller-path@^0.1.0:
|
113 |
version "0.1.0"
|
114 |
resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
|
|
|
115 |
dependencies:
|
116 |
callsites "^0.2.0"
|
117 |
|
118 |
callsites@^0.2.0:
|
119 |
version "0.2.0"
|
120 |
resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
|
|
|
121 |
|
122 |
camelcase-keys@^4.1.0:
|
123 |
version "4.2.0"
|
124 |
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77"
|
|
|
125 |
dependencies:
|
126 |
camelcase "^4.1.0"
|
127 |
map-obj "^2.0.0"
|
128 |
quick-lru "^1.0.0"
|
129 |
|
|
|
|
|
|
|
|
|
|
|
130 |
camelcase@^4.1.0:
|
131 |
version "4.1.0"
|
132 |
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
|
|
|
133 |
|
134 |
chalk@2.3.0:
|
135 |
version "2.3.0"
|
136 |
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
|
|
|
137 |
dependencies:
|
138 |
ansi-styles "^3.1.0"
|
139 |
escape-string-regexp "^1.0.5"
|
140 |
supports-color "^4.0.0"
|
141 |
|
142 |
-
chalk@^1.1.3:
|
143 |
version "1.1.3"
|
144 |
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
|
|
145 |
dependencies:
|
146 |
ansi-styles "^2.2.1"
|
147 |
escape-string-regexp "^1.0.2"
|
@@ -150,8 +307,9 @@ chalk@^1.1.3:
|
|
150 |
supports-color "^2.0.0"
|
151 |
|
152 |
chalk@^2.0.0, chalk@^2.1.0:
|
153 |
-
version "2.
|
154 |
-
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.
|
|
|
155 |
dependencies:
|
156 |
ansi-styles "^3.2.1"
|
157 |
escape-string-regexp "^1.0.5"
|
@@ -160,167 +318,369 @@ chalk@^2.0.0, chalk@^2.1.0:
|
|
160 |
chardet@^0.4.0:
|
161 |
version "0.4.2"
|
162 |
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
|
|
|
163 |
|
164 |
circular-json@^0.3.1:
|
165 |
version "0.3.3"
|
166 |
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
|
168 |
cli-cursor@^2.1.0:
|
169 |
version "2.1.0"
|
170 |
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
|
|
|
171 |
dependencies:
|
172 |
restore-cursor "^2.0.0"
|
173 |
|
174 |
cli-width@^2.0.0:
|
175 |
version "2.2.0"
|
176 |
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
|
|
|
177 |
|
178 |
cliui@^3.2.0:
|
179 |
version "3.2.0"
|
180 |
resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
|
|
|
181 |
dependencies:
|
182 |
string-width "^1.0.1"
|
183 |
strip-ansi "^3.0.1"
|
184 |
wrap-ansi "^2.0.0"
|
185 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
co@^4.6.0:
|
187 |
version "4.6.0"
|
188 |
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
|
|
189 |
|
190 |
code-point-at@^1.0.0:
|
191 |
version "1.1.0"
|
192 |
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
|
194 |
color-convert@^1.9.0:
|
195 |
-
version "1.9.
|
196 |
-
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.
|
|
|
197 |
dependencies:
|
198 |
-
color-name "
|
199 |
|
200 |
-
color-name
|
201 |
version "1.1.3"
|
202 |
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
|
|
|
|
|
|
|
|
|
|
|
|
203 |
|
204 |
common-tags@^1.4.0:
|
205 |
-
version "1.
|
206 |
-
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.
|
207 |
-
|
208 |
-
|
|
|
|
|
|
|
|
|
209 |
|
210 |
concat-map@0.0.1:
|
211 |
version "0.0.1"
|
212 |
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
|
|
213 |
|
214 |
concat-stream@^1.6.0:
|
215 |
version "1.6.2"
|
216 |
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
|
|
|
217 |
dependencies:
|
218 |
buffer-from "^1.0.0"
|
219 |
inherits "^2.0.3"
|
220 |
readable-stream "^2.2.2"
|
221 |
typedarray "^0.0.6"
|
222 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
223 |
core-js@^2.4.0:
|
224 |
-
version "2.5.
|
225 |
-
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.
|
|
|
226 |
|
227 |
core-util-is@~1.0.0:
|
228 |
version "1.0.2"
|
229 |
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
|
|
230 |
|
231 |
cross-spawn@^5.0.1, cross-spawn@^5.1.0:
|
232 |
version "5.1.0"
|
233 |
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
|
|
|
234 |
dependencies:
|
235 |
lru-cache "^4.0.1"
|
236 |
shebang-command "^1.2.0"
|
237 |
which "^1.2.9"
|
238 |
|
239 |
-
|
240 |
-
version "
|
241 |
-
resolved "https://registry.yarnpkg.com/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
dependencies:
|
243 |
ms "2.0.0"
|
244 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
245 |
decamelize@^1.1.1:
|
246 |
version "1.2.0"
|
247 |
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
|
|
|
|
|
|
|
|
|
|
|
|
248 |
|
249 |
deep-is@~0.1.3:
|
250 |
version "0.1.3"
|
251 |
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
|
|
252 |
|
253 |
-
|
254 |
-
version "
|
255 |
-
resolved "https://registry.yarnpkg.com/
|
|
|
256 |
dependencies:
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
|
265 |
dlv@^1.1.0:
|
266 |
-
version "1.1.
|
267 |
-
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.
|
|
|
268 |
|
269 |
doctrine@^2.1.0:
|
270 |
version "2.1.0"
|
271 |
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
|
|
|
272 |
dependencies:
|
273 |
esutils "^2.0.2"
|
274 |
|
275 |
dom-serializer@0:
|
276 |
version "0.1.0"
|
277 |
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
|
|
|
278 |
dependencies:
|
279 |
domelementtype "~1.1.1"
|
280 |
entities "~1.1.1"
|
281 |
|
282 |
-
domelementtype@1
|
|
|
|
|
|
|
|
|
|
|
283 |
version "1.3.0"
|
284 |
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
|
|
|
285 |
|
286 |
domelementtype@~1.1.1:
|
287 |
version "1.1.3"
|
288 |
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
|
|
|
289 |
|
290 |
domhandler@^2.3.0:
|
291 |
-
version "2.4.
|
292 |
-
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.
|
|
|
293 |
dependencies:
|
294 |
domelementtype "1"
|
295 |
|
296 |
domutils@^1.5.1:
|
297 |
version "1.7.0"
|
298 |
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
|
|
|
299 |
dependencies:
|
300 |
dom-serializer "0"
|
301 |
domelementtype "1"
|
302 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
303 |
entities@^1.1.1, entities@~1.1.1:
|
304 |
-
version "1.1.
|
305 |
-
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
306 |
|
307 |
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
|
308 |
version "1.0.5"
|
309 |
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
|
|
310 |
|
311 |
eslint-config-wordpress@^2.0.0:
|
312 |
version "2.0.0"
|
313 |
resolved "https://registry.yarnpkg.com/eslint-config-wordpress/-/eslint-config-wordpress-2.0.0.tgz#5201206c6964d648315232edf6dfbd2e925e4cd6"
|
|
|
314 |
|
315 |
eslint-plugin-html@^4.0.2:
|
316 |
-
version "4.0.
|
317 |
-
resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-4.0.
|
|
|
318 |
dependencies:
|
319 |
htmlparser2 "^3.8.2"
|
320 |
|
321 |
eslint-scope@^3.7.1:
|
322 |
-
version "3.7.
|
323 |
-
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.
|
|
|
324 |
dependencies:
|
325 |
esrecurse "^4.1.0"
|
326 |
estraverse "^4.1.1"
|
@@ -328,10 +688,12 @@ eslint-scope@^3.7.1:
|
|
328 |
eslint-visitor-keys@^1.0.0:
|
329 |
version "1.0.0"
|
330 |
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
|
|
|
331 |
|
332 |
eslint@^4.0.0, eslint@^4.19.1, eslint@^4.5.0:
|
333 |
version "4.19.1"
|
334 |
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300"
|
|
|
335 |
dependencies:
|
336 |
ajv "^5.3.0"
|
337 |
babel-code-frame "^6.22.0"
|
@@ -372,40 +734,47 @@ eslint@^4.0.0, eslint@^4.19.1, eslint@^4.5.0:
|
|
372 |
table "4.0.2"
|
373 |
text-table "~0.2.0"
|
374 |
|
375 |
-
espree@^3.5.4:
|
376 |
version "3.5.4"
|
377 |
resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
|
|
|
378 |
dependencies:
|
379 |
acorn "^5.5.0"
|
380 |
acorn-jsx "^3.0.0"
|
381 |
|
382 |
esprima@^4.0.0:
|
383 |
-
version "4.0.
|
384 |
-
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.
|
|
|
385 |
|
386 |
esquery@^1.0.0:
|
387 |
-
version "1.0.
|
388 |
-
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.
|
|
|
389 |
dependencies:
|
390 |
estraverse "^4.0.0"
|
391 |
|
392 |
esrecurse@^4.1.0:
|
393 |
version "4.2.1"
|
394 |
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
|
|
|
395 |
dependencies:
|
396 |
estraverse "^4.1.0"
|
397 |
|
398 |
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
|
399 |
version "4.2.0"
|
400 |
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
|
|
|
401 |
|
402 |
esutils@^2.0.2:
|
403 |
version "2.0.2"
|
404 |
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
|
|
405 |
|
406 |
execa@^0.7.0:
|
407 |
version "0.7.0"
|
408 |
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
|
|
|
409 |
dependencies:
|
410 |
cross-spawn "^5.0.1"
|
411 |
get-stream "^3.0.0"
|
@@ -415,77 +784,275 @@ execa@^0.7.0:
|
|
415 |
signal-exit "^3.0.0"
|
416 |
strip-eof "^1.0.0"
|
417 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
418 |
external-editor@^2.0.4:
|
419 |
-
version "2.
|
420 |
-
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.
|
|
|
421 |
dependencies:
|
422 |
chardet "^0.4.0"
|
423 |
iconv-lite "^0.4.17"
|
424 |
tmp "^0.0.33"
|
425 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
426 |
fast-deep-equal@^1.0.0:
|
427 |
version "1.1.0"
|
428 |
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
|
|
|
429 |
|
430 |
fast-json-stable-stringify@^2.0.0:
|
431 |
version "2.0.0"
|
432 |
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
|
|
433 |
|
434 |
fast-levenshtein@~2.0.4:
|
435 |
version "2.0.6"
|
436 |
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
|
|
|
437 |
|
438 |
figures@^2.0.0:
|
439 |
version "2.0.0"
|
440 |
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
|
|
|
441 |
dependencies:
|
442 |
escape-string-regexp "^1.0.5"
|
443 |
|
444 |
file-entry-cache@^2.0.0:
|
445 |
version "2.0.0"
|
446 |
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
|
|
|
447 |
dependencies:
|
448 |
flat-cache "^1.2.1"
|
449 |
object-assign "^4.0.1"
|
450 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
451 |
find-up@^2.1.0:
|
452 |
version "2.1.0"
|
453 |
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
|
|
|
454 |
dependencies:
|
455 |
locate-path "^2.0.0"
|
456 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
457 |
flat-cache@^1.2.1:
|
458 |
-
version "1.3.
|
459 |
-
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.
|
|
|
460 |
dependencies:
|
461 |
circular-json "^0.3.1"
|
462 |
-
del "^2.0.2"
|
463 |
graceful-fs "^4.1.2"
|
|
|
464 |
write "^0.2.1"
|
465 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
466 |
fs.realpath@^1.0.0:
|
467 |
version "1.0.0"
|
468 |
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
|
|
469 |
|
470 |
functional-red-black-tree@^1.0.1:
|
471 |
version "1.0.1"
|
472 |
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
473 |
|
474 |
get-caller-file@^1.0.1:
|
475 |
-
version "1.0.
|
476 |
-
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.
|
|
|
477 |
|
478 |
get-stdin@^5.0.1:
|
479 |
version "5.0.1"
|
480 |
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
|
|
|
481 |
|
482 |
get-stream@^3.0.0:
|
483 |
version "3.0.0"
|
484 |
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
|
|
485 |
|
486 |
-
|
487 |
-
version "
|
488 |
-
resolved "https://registry.yarnpkg.com/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
489 |
dependencies:
|
490 |
fs.realpath "^1.0.0"
|
491 |
inflight "^1.0.4"
|
@@ -494,9 +1061,19 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
|
|
494 |
once "^1.3.0"
|
495 |
path-is-absolute "^1.0.0"
|
496 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
497 |
glob@~7.0.6:
|
498 |
version "7.0.6"
|
499 |
resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a"
|
|
|
500 |
dependencies:
|
501 |
fs.realpath "^1.0.0"
|
502 |
inflight "^1.0.4"
|
@@ -505,80 +1082,266 @@ glob@~7.0.6:
|
|
505 |
once "^1.3.0"
|
506 |
path-is-absolute "^1.0.0"
|
507 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
508 |
globals@^11.0.1:
|
509 |
-
version "11.
|
510 |
-
resolved "https://registry.yarnpkg.com/globals/-/globals-11.
|
|
|
511 |
|
512 |
-
|
513 |
-
version "
|
514 |
-
resolved "https://registry.yarnpkg.com/
|
|
|
515 |
dependencies:
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
522 |
|
523 |
graceful-fs@^4.1.2:
|
524 |
-
version "4.1.
|
525 |
-
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
526 |
|
527 |
has-ansi@^2.0.0:
|
528 |
version "2.0.0"
|
529 |
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
|
|
|
530 |
dependencies:
|
531 |
ansi-regex "^2.0.0"
|
532 |
|
533 |
has-flag@^2.0.0:
|
534 |
version "2.0.0"
|
535 |
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
|
|
|
536 |
|
537 |
has-flag@^3.0.0:
|
538 |
version "3.0.0"
|
539 |
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
540 |
|
541 |
htmlparser2@^3.8.2:
|
542 |
-
version "3.
|
543 |
-
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.
|
|
|
544 |
dependencies:
|
545 |
domelementtype "^1.3.0"
|
546 |
domhandler "^2.3.0"
|
547 |
domutils "^1.5.1"
|
548 |
entities "^1.1.1"
|
549 |
inherits "^2.0.1"
|
550 |
-
readable-stream "^
|
551 |
|
552 |
iconv-lite@^0.4.17:
|
553 |
-
version "0.4.
|
554 |
-
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.
|
|
|
|
|
|
|
555 |
|
556 |
ignore@^3.2.7, ignore@^3.3.3:
|
557 |
-
version "3.3.
|
558 |
-
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.
|
|
|
559 |
|
560 |
imurmurhash@^0.1.4:
|
561 |
version "0.1.4"
|
562 |
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
|
|
563 |
|
564 |
indent-string@^3.1.0, indent-string@^3.2.0:
|
565 |
version "3.2.0"
|
566 |
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
|
|
|
567 |
|
568 |
inflight@^1.0.4:
|
569 |
version "1.0.6"
|
570 |
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
|
|
571 |
dependencies:
|
572 |
once "^1.3.0"
|
573 |
wrappy "1"
|
574 |
|
575 |
-
inherits@
|
|
|
|
|
|
|
|
|
|
|
576 |
version "2.0.3"
|
577 |
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
|
|
|
|
|
|
|
|
|
|
|
|
578 |
|
579 |
inquirer@^3.0.6:
|
580 |
version "3.3.0"
|
581 |
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
|
|
|
582 |
dependencies:
|
583 |
ansi-escapes "^3.0.0"
|
584 |
chalk "^2.0.0"
|
@@ -595,63 +1358,217 @@ inquirer@^3.0.6:
|
|
595 |
strip-ansi "^4.0.0"
|
596 |
through "^2.3.6"
|
597 |
|
|
|
|
|
|
|
|
|
|
|
598 |
invert-kv@^1.0.0:
|
599 |
version "1.0.0"
|
600 |
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
601 |
|
602 |
is-fullwidth-code-point@^1.0.0:
|
603 |
version "1.0.0"
|
604 |
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
|
|
|
605 |
dependencies:
|
606 |
number-is-nan "^1.0.0"
|
607 |
|
608 |
is-fullwidth-code-point@^2.0.0:
|
609 |
version "2.0.0"
|
610 |
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
|
|
|
611 |
|
612 |
-
is-
|
613 |
-
version "1.0
|
614 |
-
resolved "https://registry.yarnpkg.com/is-
|
|
|
|
|
|
|
615 |
|
616 |
-
is-
|
617 |
-
version "
|
618 |
-
resolved "https://registry.yarnpkg.com/is-
|
|
|
619 |
dependencies:
|
620 |
-
|
621 |
|
622 |
-
is-
|
623 |
-
version "
|
624 |
-
resolved "https://registry.yarnpkg.com/is-
|
|
|
625 |
dependencies:
|
626 |
-
|
627 |
|
628 |
is-promise@^2.1.0:
|
629 |
version "2.1.0"
|
630 |
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
631 |
|
632 |
is-resolvable@^1.0.0:
|
633 |
version "1.1.0"
|
634 |
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
|
|
|
635 |
|
636 |
is-stream@^1.1.0:
|
637 |
version "1.1.0"
|
638 |
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
639 |
|
640 |
-
isarray
|
|
|
|
|
|
|
|
|
|
|
641 |
version "1.0.0"
|
642 |
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
|
|
643 |
|
644 |
isexe@^2.0.0:
|
645 |
version "2.0.0"
|
646 |
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
647 |
|
648 |
js-tokens@^3.0.2:
|
649 |
version "3.0.2"
|
650 |
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
|
|
|
651 |
|
652 |
js-yaml@^3.9.1:
|
653 |
-
version "3.
|
654 |
-
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.
|
|
|
655 |
dependencies:
|
656 |
argparse "^1.0.7"
|
657 |
esprima "^4.0.0"
|
@@ -659,50 +1576,213 @@ js-yaml@^3.9.1:
|
|
659 |
json-schema-traverse@^0.3.0:
|
660 |
version "0.3.1"
|
661 |
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
|
|
|
662 |
|
663 |
json-stable-stringify-without-jsonify@^1.0.1:
|
664 |
version "1.0.1"
|
665 |
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
666 |
|
667 |
lcid@^1.0.0:
|
668 |
version "1.0.0"
|
669 |
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
|
|
|
670 |
dependencies:
|
671 |
invert-kv "^1.0.0"
|
672 |
|
673 |
levn@^0.3.0, levn@~0.3.0:
|
674 |
version "0.3.0"
|
675 |
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
|
|
|
676 |
dependencies:
|
677 |
prelude-ls "~1.1.2"
|
678 |
type-check "~0.3.2"
|
679 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
680 |
locate-path@^2.0.0:
|
681 |
version "2.0.0"
|
682 |
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
|
|
|
683 |
dependencies:
|
684 |
p-locate "^2.0.0"
|
685 |
path-exists "^3.0.0"
|
686 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
687 |
lodash.memoize@^4.1.2:
|
688 |
version "4.1.2"
|
689 |
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
|
|
|
690 |
|
691 |
lodash.merge@^4.6.0:
|
692 |
version "4.6.1"
|
693 |
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
694 |
|
695 |
lodash.unescape@4.0.1:
|
696 |
version "4.0.1"
|
697 |
resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
|
|
|
698 |
|
699 |
lodash@^4.17.4, lodash@^4.3.0:
|
700 |
-
version "4.17.
|
701 |
-
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.
|
|
|
|
|
|
|
|
|
|
|
|
|
702 |
|
703 |
loglevel-colored-level-prefix@^1.0.0:
|
704 |
version "1.0.0"
|
705 |
resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e"
|
|
|
706 |
dependencies:
|
707 |
chalk "^1.1.3"
|
708 |
loglevel "^1.4.1"
|
@@ -710,37 +1790,78 @@ loglevel-colored-level-prefix@^1.0.0:
|
|
710 |
loglevel@^1.4.1:
|
711 |
version "1.6.1"
|
712 |
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
|
|
|
|
|
|
|
|
|
|
|
|
|
713 |
|
714 |
lru-cache@^4.0.1:
|
715 |
-
version "4.1.
|
716 |
-
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.
|
|
|
717 |
dependencies:
|
718 |
pseudomap "^1.0.2"
|
719 |
-
yallist "^
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
720 |
|
721 |
make-plural@^4.1.1:
|
722 |
-
version "4.
|
723 |
-
resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-4.
|
|
|
724 |
optionalDependencies:
|
725 |
minimist "^1.2.0"
|
726 |
|
|
|
|
|
|
|
|
|
|
|
727 |
map-obj@^2.0.0:
|
728 |
version "2.0.0"
|
729 |
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
730 |
|
731 |
mem@^1.1.0:
|
732 |
version "1.1.0"
|
733 |
resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
|
|
|
734 |
dependencies:
|
735 |
mimic-fn "^1.0.0"
|
736 |
|
737 |
messageformat-parser@^1.1.0:
|
738 |
version "1.1.0"
|
739 |
resolved "https://registry.yarnpkg.com/messageformat-parser/-/messageformat-parser-1.1.0.tgz#13ba2250a76bbde8e0fca0dbb3475f95c594a90a"
|
|
|
740 |
|
741 |
messageformat@^1.0.2:
|
742 |
version "1.1.1"
|
743 |
resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-1.1.1.tgz#ceaa2e6c86929d4807058275a7372b1bd963bdf6"
|
|
|
744 |
dependencies:
|
745 |
glob "~7.0.6"
|
746 |
make-plural "^4.1.1"
|
@@ -748,77 +1869,241 @@ messageformat@^1.0.2:
|
|
748 |
nopt "~3.0.6"
|
749 |
reserved-words "^0.1.2"
|
750 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
751 |
mimic-fn@^1.0.0:
|
752 |
version "1.2.0"
|
753 |
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
754 |
|
755 |
minimatch@^3.0.2, minimatch@^3.0.4:
|
756 |
version "3.0.4"
|
757 |
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
|
|
758 |
dependencies:
|
759 |
brace-expansion "^1.1.7"
|
760 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
761 |
minimist@0.0.8:
|
762 |
version "0.0.8"
|
763 |
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
|
|
|
764 |
|
765 |
-
minimist@^1.2.0:
|
766 |
version "1.2.0"
|
767 |
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
768 |
|
769 |
-
mkdirp@^0.5.1:
|
770 |
version "0.5.1"
|
771 |
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
|
|
772 |
dependencies:
|
773 |
minimist "0.0.8"
|
774 |
|
775 |
ms@2.0.0:
|
776 |
version "2.0.0"
|
777 |
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
778 |
|
779 |
mute-stream@0.0.7:
|
780 |
version "0.0.7"
|
781 |
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
782 |
|
783 |
natural-compare@^1.4.0:
|
784 |
version "1.4.0"
|
785 |
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
|
|
|
|
|
|
|
|
|
|
|
|
786 |
|
787 |
nopt@~3.0.6:
|
788 |
version "3.0.6"
|
789 |
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
|
|
|
790 |
dependencies:
|
791 |
abbrev "1"
|
792 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
793 |
npm-run-path@^2.0.0:
|
794 |
version "2.0.2"
|
795 |
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
|
|
796 |
dependencies:
|
797 |
path-key "^2.0.0"
|
798 |
|
799 |
number-is-nan@^1.0.0:
|
800 |
version "1.0.1"
|
801 |
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
|
|
|
|
|
|
|
|
|
|
|
|
802 |
|
803 |
object-assign@^4.0.1:
|
804 |
version "4.1.1"
|
805 |
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
806 |
|
807 |
once@^1.3.0:
|
808 |
version "1.4.0"
|
809 |
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
810 |
dependencies:
|
811 |
wrappy "1"
|
812 |
|
813 |
onetime@^2.0.0:
|
814 |
version "2.0.1"
|
815 |
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
|
|
|
816 |
dependencies:
|
817 |
mimic-fn "^1.0.0"
|
818 |
|
819 |
optionator@^0.8.2:
|
820 |
version "0.8.2"
|
821 |
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
|
|
|
822 |
dependencies:
|
823 |
deep-is "~0.1.3"
|
824 |
fast-levenshtein "~2.0.4"
|
@@ -827,9 +2112,36 @@ optionator@^0.8.2:
|
|
827 |
type-check "~0.3.2"
|
828 |
wordwrap "~1.0.0"
|
829 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
830 |
os-locale@^2.0.0:
|
831 |
version "2.1.0"
|
832 |
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
|
|
|
833 |
dependencies:
|
834 |
execa "^0.7.0"
|
835 |
lcid "^1.0.0"
|
@@ -838,68 +2150,147 @@ os-locale@^2.0.0:
|
|
838 |
os-tmpdir@~1.0.2:
|
839 |
version "1.0.2"
|
840 |
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
|
|
841 |
|
842 |
p-finally@^1.0.0:
|
843 |
version "1.0.0"
|
844 |
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
|
|
845 |
|
846 |
p-limit@^1.1.0:
|
847 |
-
version "1.
|
848 |
-
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.
|
|
|
849 |
dependencies:
|
850 |
p-try "^1.0.0"
|
851 |
|
852 |
p-locate@^2.0.0:
|
853 |
version "2.0.0"
|
854 |
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
|
|
|
855 |
dependencies:
|
856 |
p-limit "^1.1.0"
|
857 |
|
858 |
p-try@^1.0.0:
|
859 |
version "1.0.0"
|
860 |
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
861 |
|
862 |
path-exists@^3.0.0:
|
863 |
version "3.0.0"
|
864 |
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
|
|
|
865 |
|
866 |
path-is-absolute@^1.0.0:
|
867 |
version "1.0.1"
|
868 |
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
|
|
869 |
|
870 |
-
path-is-inside@^1.0.
|
871 |
version "1.0.2"
|
872 |
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
|
|
|
873 |
|
874 |
path-key@^2.0.0:
|
875 |
version "2.0.1"
|
876 |
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
877 |
|
878 |
pify@^2.0.0:
|
879 |
version "2.3.0"
|
880 |
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
|
|
881 |
|
882 |
pinkie-promise@^2.0.0:
|
883 |
version "2.0.1"
|
884 |
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
|
|
|
885 |
dependencies:
|
886 |
pinkie "^2.0.0"
|
887 |
|
888 |
pinkie@^2.0.0:
|
889 |
version "2.0.4"
|
890 |
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
|
|
|
891 |
|
892 |
pluralize@^7.0.0:
|
893 |
version "7.0.0"
|
894 |
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
|
|
|
|
|
|
|
|
|
|
|
|
|
895 |
|
896 |
prelude-ls@~1.1.2:
|
897 |
version "1.1.2"
|
898 |
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
|
|
899 |
|
900 |
prettier-eslint-cli@^4.7.1:
|
901 |
version "4.7.1"
|
902 |
resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-4.7.1.tgz#3d103c494baa4e80b99ad53e2b9db7620101859f"
|
|
|
903 |
dependencies:
|
904 |
arrify "^1.0.1"
|
905 |
babel-runtime "^6.23.0"
|
@@ -921,8 +2312,9 @@ prettier-eslint-cli@^4.7.1:
|
|
921 |
yargs "10.0.3"
|
922 |
|
923 |
prettier-eslint@^8.5.0, prettier-eslint@^8.8.1:
|
924 |
-
version "8.8.
|
925 |
-
resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.8.
|
|
|
926 |
dependencies:
|
927 |
babel-runtime "^6.26.0"
|
928 |
common-tags "^1.4.0"
|
@@ -932,73 +2324,182 @@ prettier-eslint@^8.5.0, prettier-eslint@^8.8.1:
|
|
932 |
lodash.merge "^4.6.0"
|
933 |
loglevel-colored-level-prefix "^1.0.0"
|
934 |
prettier "^1.7.0"
|
935 |
-
pretty-format "^
|
936 |
require-relative "^0.8.7"
|
937 |
typescript "^2.5.1"
|
938 |
-
typescript-eslint-parser "^
|
|
|
939 |
|
940 |
prettier@^1.7.0:
|
941 |
-
version "1.
|
942 |
-
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.
|
|
|
943 |
|
944 |
-
pretty-format@^
|
945 |
-
version "
|
946 |
-
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-
|
|
|
947 |
dependencies:
|
948 |
ansi-regex "^3.0.0"
|
949 |
ansi-styles "^3.2.0"
|
950 |
|
|
|
|
|
|
|
|
|
|
|
951 |
process-nextick-args@~2.0.0:
|
952 |
version "2.0.0"
|
953 |
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
|
|
|
954 |
|
955 |
progress@^2.0.0:
|
956 |
-
version "2.0.
|
957 |
-
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.
|
|
|
958 |
|
959 |
pseudomap@^1.0.2:
|
960 |
version "1.0.2"
|
961 |
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
|
|
962 |
|
963 |
quick-lru@^1.0.0:
|
964 |
version "1.1.0"
|
965 |
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
966 |
|
967 |
-
|
968 |
-
version "
|
969 |
-
resolved "https://registry.yarnpkg.com/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
970 |
dependencies:
|
971 |
core-util-is "~1.0.0"
|
972 |
inherits "~2.0.3"
|
973 |
isarray "~1.0.0"
|
974 |
process-nextick-args "~2.0.0"
|
975 |
safe-buffer "~5.1.1"
|
976 |
-
string_decoder "~1.
|
977 |
util-deprecate "~1.0.1"
|
978 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
979 |
regenerator-runtime@^0.11.0:
|
980 |
version "0.11.1"
|
981 |
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
982 |
|
983 |
regexpp@^1.0.1:
|
984 |
version "1.1.0"
|
985 |
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
986 |
|
987 |
require-directory@^2.1.1:
|
988 |
version "2.1.1"
|
989 |
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
|
|
990 |
|
991 |
require-main-filename@^1.0.1:
|
992 |
version "1.0.1"
|
993 |
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
|
|
|
994 |
|
995 |
require-relative@^0.8.7:
|
996 |
version "0.8.7"
|
997 |
resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
|
|
|
998 |
|
999 |
require-uncached@^1.0.3:
|
1000 |
version "1.0.3"
|
1001 |
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
|
|
|
1002 |
dependencies:
|
1003 |
caller-path "^0.1.0"
|
1004 |
resolve-from "^1.0.0"
|
@@ -1006,89 +2507,293 @@ require-uncached@^1.0.3:
|
|
1006 |
reserved-words@^0.1.2:
|
1007 |
version "0.1.2"
|
1008 |
resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1009 |
|
1010 |
resolve-from@^1.0.0:
|
1011 |
version "1.0.1"
|
1012 |
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1013 |
|
1014 |
restore-cursor@^2.0.0:
|
1015 |
version "2.0.0"
|
1016 |
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
|
|
|
1017 |
dependencies:
|
1018 |
onetime "^2.0.0"
|
1019 |
signal-exit "^3.0.2"
|
1020 |
|
1021 |
-
|
|
|
|
|
|
|
|
|
|
|
1022 |
version "2.6.2"
|
1023 |
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
|
|
|
1024 |
dependencies:
|
1025 |
glob "^7.0.5"
|
1026 |
|
1027 |
run-async@^2.2.0:
|
1028 |
version "2.3.0"
|
1029 |
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
|
|
|
1030 |
dependencies:
|
1031 |
is-promise "^2.1.0"
|
1032 |
|
1033 |
rx-lite-aggregates@^4.0.8:
|
1034 |
version "4.0.8"
|
1035 |
resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
|
|
|
1036 |
dependencies:
|
1037 |
rx-lite "*"
|
1038 |
|
1039 |
rx-lite@*, rx-lite@^4.0.8:
|
1040 |
version "4.0.8"
|
1041 |
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
|
|
|
1042 |
|
1043 |
rxjs@^5.3.0:
|
1044 |
-
version "5.5.
|
1045 |
-
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.
|
|
|
1046 |
dependencies:
|
1047 |
symbol-observable "1.0.1"
|
1048 |
|
1049 |
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
1050 |
-
version "5.1.
|
1051 |
-
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1052 |
|
1053 |
-
|
1054 |
-
version "
|
1055 |
-
resolved "https://registry.yarnpkg.com/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1056 |
|
1057 |
-
semver@^5.3.0:
|
|
|
|
|
|
|
|
|
|
|
1058 |
version "5.5.0"
|
1059 |
resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1060 |
|
1061 |
set-blocking@^2.0.0:
|
1062 |
version "2.0.0"
|
1063 |
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1064 |
|
1065 |
shebang-command@^1.2.0:
|
1066 |
version "1.2.0"
|
1067 |
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
|
|
|
1068 |
dependencies:
|
1069 |
shebang-regex "^1.0.0"
|
1070 |
|
1071 |
shebang-regex@^1.0.0:
|
1072 |
version "1.0.0"
|
1073 |
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
|
|
|
|
|
|
|
|
|
|
|
|
|
1074 |
|
1075 |
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
1076 |
version "3.0.2"
|
1077 |
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
|
|
1078 |
|
1079 |
slice-ansi@1.0.0:
|
1080 |
version "1.0.0"
|
1081 |
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
|
|
|
1082 |
dependencies:
|
1083 |
is-fullwidth-code-point "^2.0.0"
|
1084 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1085 |
sprintf-js@~1.0.2:
|
1086 |
version "1.0.3"
|
1087 |
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1088 |
|
1089 |
-
string-width@^1.0.1:
|
1090 |
version "1.0.2"
|
1091 |
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
|
|
1092 |
dependencies:
|
1093 |
code-point-at "^1.0.0"
|
1094 |
is-fullwidth-code-point "^1.0.0"
|
@@ -1097,59 +2802,98 @@ string-width@^1.0.1:
|
|
1097 |
string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
|
1098 |
version "2.1.1"
|
1099 |
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
|
|
1100 |
dependencies:
|
1101 |
is-fullwidth-code-point "^2.0.0"
|
1102 |
strip-ansi "^4.0.0"
|
1103 |
|
1104 |
-
string_decoder@~1.
|
1105 |
-
version "1.
|
1106 |
-
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.
|
|
|
1107 |
dependencies:
|
1108 |
safe-buffer "~5.1.0"
|
1109 |
|
|
|
|
|
|
|
|
|
|
|
1110 |
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
|
1111 |
version "3.0.1"
|
1112 |
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
|
|
|
1113 |
dependencies:
|
1114 |
ansi-regex "^2.0.0"
|
1115 |
|
1116 |
strip-ansi@^4.0.0:
|
1117 |
version "4.0.0"
|
1118 |
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
|
|
|
1119 |
dependencies:
|
1120 |
ansi-regex "^3.0.0"
|
1121 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1122 |
strip-eof@^1.0.0:
|
1123 |
version "1.0.0"
|
1124 |
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
|
|
|
1125 |
|
1126 |
strip-json-comments@~2.0.1:
|
1127 |
version "2.0.1"
|
1128 |
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
|
|
1129 |
|
1130 |
supports-color@^2.0.0:
|
1131 |
version "2.0.0"
|
1132 |
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
|
|
1133 |
|
1134 |
supports-color@^4.0.0:
|
1135 |
version "4.5.0"
|
1136 |
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
|
|
|
1137 |
dependencies:
|
1138 |
has-flag "^2.0.0"
|
1139 |
|
1140 |
supports-color@^5.3.0:
|
1141 |
-
version "5.
|
1142 |
-
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.
|
|
|
1143 |
dependencies:
|
1144 |
has-flag "^3.0.0"
|
1145 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1146 |
symbol-observable@1.0.1:
|
1147 |
version "1.0.1"
|
1148 |
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
|
|
|
1149 |
|
1150 |
table@4.0.2:
|
1151 |
version "4.0.2"
|
1152 |
resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
|
|
|
1153 |
dependencies:
|
1154 |
ajv "^5.2.3"
|
1155 |
ajv-keywords "^2.1.0"
|
@@ -1161,59 +2905,237 @@ table@4.0.2:
|
|
1161 |
text-table@~0.2.0:
|
1162 |
version "0.2.0"
|
1163 |
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1164 |
|
1165 |
through@^2.3.6:
|
1166 |
version "2.3.8"
|
1167 |
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1168 |
|
1169 |
tmp@^0.0.33:
|
1170 |
version "0.0.33"
|
1171 |
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
|
|
|
1172 |
dependencies:
|
1173 |
os-tmpdir "~1.0.2"
|
1174 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1175 |
type-check@~0.3.2:
|
1176 |
version "0.3.2"
|
1177 |
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
|
|
|
1178 |
dependencies:
|
1179 |
prelude-ls "~1.1.2"
|
1180 |
|
1181 |
typedarray@^0.0.6:
|
1182 |
version "0.0.6"
|
1183 |
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
|
|
1184 |
|
1185 |
-
typescript-eslint-parser@^
|
1186 |
-
version "
|
1187 |
-
resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-
|
|
|
1188 |
dependencies:
|
1189 |
lodash.unescape "4.0.1"
|
1190 |
-
semver "5.
|
1191 |
|
1192 |
typescript@^2.5.1:
|
1193 |
-
version "2.
|
1194 |
-
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.
|
|
|
1195 |
|
1196 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1197 |
version "1.0.2"
|
1198 |
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1199 |
|
1200 |
which-module@^2.0.0:
|
1201 |
version "2.0.0"
|
1202 |
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
|
|
1203 |
|
1204 |
-
which@^1.2.9:
|
1205 |
-
version "1.3.
|
1206 |
-
resolved "https://registry.yarnpkg.com/which/-/which-1.3.
|
|
|
1207 |
dependencies:
|
1208 |
isexe "^2.0.0"
|
1209 |
|
1210 |
wordwrap@~1.0.0:
|
1211 |
version "1.0.0"
|
1212 |
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
|
|
1213 |
|
1214 |
wrap-ansi@^2.0.0:
|
1215 |
version "2.1.0"
|
1216 |
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
|
|
|
1217 |
dependencies:
|
1218 |
string-width "^1.0.1"
|
1219 |
strip-ansi "^3.0.1"
|
@@ -1221,30 +3143,48 @@ wrap-ansi@^2.0.0:
|
|
1221 |
wrappy@1:
|
1222 |
version "1.0.2"
|
1223 |
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
|
|
1224 |
|
1225 |
write@^0.2.1:
|
1226 |
version "0.2.1"
|
1227 |
resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
|
|
|
1228 |
dependencies:
|
1229 |
mkdirp "^0.5.1"
|
1230 |
|
|
|
|
|
|
|
|
|
|
|
1231 |
y18n@^3.2.1:
|
1232 |
version "3.2.1"
|
1233 |
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
|
|
|
1234 |
|
1235 |
-
yallist@^
|
1236 |
-
version "
|
1237 |
-
resolved "https://registry.yarnpkg.com/yallist/-/yallist-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1238 |
|
1239 |
yargs-parser@^8.0.0:
|
1240 |
version "8.1.0"
|
1241 |
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950"
|
|
|
1242 |
dependencies:
|
1243 |
camelcase "^4.1.0"
|
1244 |
|
1245 |
yargs@10.0.3:
|
1246 |
version "10.0.3"
|
1247 |
resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.0.3.tgz#6542debd9080ad517ec5048fb454efe9e4d4aaae"
|
|
|
1248 |
dependencies:
|
1249 |
cliui "^3.2.0"
|
1250 |
decamelize "^1.1.1"
|
@@ -1258,3 +3198,22 @@ yargs@10.0.3:
|
|
1258 |
which-module "^2.0.0"
|
1259 |
y18n "^3.2.1"
|
1260 |
yargs-parser "^8.0.0"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
abbrev@1:
|
6 |
version "1.1.1"
|
7 |
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
|
8 |
+
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
|
9 |
|
10 |
acorn-jsx@^3.0.0:
|
11 |
version "3.0.1"
|
12 |
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
|
13 |
+
integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=
|
14 |
dependencies:
|
15 |
acorn "^3.0.4"
|
16 |
|
17 |
acorn@^3.0.4:
|
18 |
version "3.3.0"
|
19 |
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
|
20 |
+
integrity sha1-ReN/s56No/JbruP/U2niu18iAXo=
|
21 |
|
22 |
acorn@^5.5.0:
|
23 |
+
version "5.7.3"
|
24 |
+
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
|
25 |
+
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
|
26 |
|
27 |
ajv-keywords@^2.1.0:
|
28 |
version "2.1.1"
|
29 |
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762"
|
30 |
+
integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=
|
31 |
|
32 |
ajv@^5.2.3, ajv@^5.3.0:
|
33 |
version "5.5.2"
|
34 |
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
|
35 |
+
integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=
|
36 |
dependencies:
|
37 |
co "^4.6.0"
|
38 |
fast-deep-equal "^1.0.0"
|
39 |
fast-json-stable-stringify "^2.0.0"
|
40 |
json-schema-traverse "^0.3.0"
|
41 |
|
42 |
+
ansi-colors@^1.0.1:
|
43 |
+
version "1.1.0"
|
44 |
+
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9"
|
45 |
+
integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==
|
46 |
+
dependencies:
|
47 |
+
ansi-wrap "^0.1.0"
|
48 |
+
|
49 |
ansi-escapes@^3.0.0:
|
50 |
version "3.1.0"
|
51 |
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
|
52 |
+
integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==
|
53 |
+
|
54 |
+
ansi-gray@^0.1.1:
|
55 |
+
version "0.1.1"
|
56 |
+
resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
|
57 |
+
integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE=
|
58 |
+
dependencies:
|
59 |
+
ansi-wrap "0.1.0"
|
60 |
|
61 |
ansi-regex@^2.0.0:
|
62 |
version "2.1.1"
|
63 |
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
64 |
+
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
|
65 |
|
66 |
ansi-regex@^3.0.0:
|
67 |
version "3.0.0"
|
68 |
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
|
69 |
+
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
|
70 |
|
71 |
ansi-styles@^2.2.1:
|
72 |
version "2.2.1"
|
73 |
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
|
74 |
+
integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
|
75 |
|
76 |
ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1:
|
77 |
version "3.2.1"
|
78 |
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
79 |
+
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
|
80 |
dependencies:
|
81 |
color-convert "^1.9.0"
|
82 |
|
83 |
+
ansi-wrap@0.1.0, ansi-wrap@^0.1.0:
|
84 |
+
version "0.1.0"
|
85 |
+
resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf"
|
86 |
+
integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768=
|
87 |
+
|
88 |
+
archy@^1.0.0:
|
89 |
+
version "1.0.0"
|
90 |
+
resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
|
91 |
+
integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=
|
92 |
+
|
93 |
argparse@^1.0.7:
|
94 |
version "1.0.10"
|
95 |
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
|
96 |
+
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
|
97 |
dependencies:
|
98 |
sprintf-js "~1.0.2"
|
99 |
|
100 |
+
arr-diff@^4.0.0:
|
101 |
+
version "4.0.0"
|
102 |
+
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
|
103 |
+
integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
|
104 |
+
|
105 |
+
arr-flatten@^1.1.0:
|
106 |
+
version "1.1.0"
|
107 |
+
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
|
108 |
+
integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
|
109 |
+
|
110 |
+
arr-union@^3.1.0:
|
111 |
+
version "3.1.0"
|
112 |
+
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
|
113 |
+
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
|
114 |
+
|
115 |
+
array-differ@^1.0.0:
|
116 |
+
version "1.0.0"
|
117 |
+
resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
|
118 |
+
integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=
|
119 |
+
|
120 |
+
array-each@^1.0.1:
|
121 |
+
version "1.0.1"
|
122 |
+
resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f"
|
123 |
+
integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8=
|
124 |
+
|
125 |
+
array-slice@^1.0.0:
|
126 |
+
version "1.1.0"
|
127 |
+
resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4"
|
128 |
+
integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==
|
129 |
+
|
130 |
+
array-sort@^1.0.0:
|
131 |
+
version "1.0.0"
|
132 |
+
resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a"
|
133 |
+
integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==
|
134 |
dependencies:
|
135 |
+
default-compare "^1.0.0"
|
136 |
+
get-value "^2.0.6"
|
137 |
+
kind-of "^5.0.2"
|
138 |
|
139 |
+
array-uniq@^1.0.2:
|
140 |
version "1.0.3"
|
141 |
resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
|
142 |
+
integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
|
143 |
|
144 |
+
array-unique@^0.3.2:
|
145 |
+
version "0.3.2"
|
146 |
+
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
|
147 |
+
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
|
148 |
+
|
149 |
+
arrify@^1.0.1:
|
150 |
version "1.0.1"
|
151 |
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
|
152 |
+
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
|
153 |
+
|
154 |
+
assign-symbols@^1.0.0:
|
155 |
+
version "1.0.0"
|
156 |
+
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
|
157 |
+
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
|
158 |
+
|
159 |
+
atob@^2.1.1:
|
160 |
+
version "2.1.2"
|
161 |
+
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
162 |
+
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
|
163 |
|
164 |
babel-code-frame@^6.22.0:
|
165 |
version "6.26.0"
|
166 |
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
|
167 |
+
integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
|
168 |
dependencies:
|
169 |
chalk "^1.1.3"
|
170 |
esutils "^2.0.2"
|
173 |
babel-runtime@^6.23.0, babel-runtime@^6.26.0:
|
174 |
version "6.26.0"
|
175 |
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
|
176 |
+
integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
|
177 |
dependencies:
|
178 |
core-js "^2.4.0"
|
179 |
regenerator-runtime "^0.11.0"
|
181 |
balanced-match@^1.0.0:
|
182 |
version "1.0.0"
|
183 |
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
184 |
+
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
|
185 |
+
|
186 |
+
base@^0.11.1:
|
187 |
+
version "0.11.2"
|
188 |
+
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
|
189 |
+
integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
|
190 |
+
dependencies:
|
191 |
+
cache-base "^1.0.1"
|
192 |
+
class-utils "^0.3.5"
|
193 |
+
component-emitter "^1.2.1"
|
194 |
+
define-property "^1.0.0"
|
195 |
+
isobject "^3.0.1"
|
196 |
+
mixin-deep "^1.2.0"
|
197 |
+
pascalcase "^0.1.1"
|
198 |
+
|
199 |
+
beeper@^1.0.0:
|
200 |
+
version "1.1.1"
|
201 |
+
resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809"
|
202 |
+
integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=
|
203 |
|
204 |
boolify@^1.0.0:
|
205 |
version "1.0.1"
|
206 |
resolved "https://registry.yarnpkg.com/boolify/-/boolify-1.0.1.tgz#b5c09e17cacd113d11b7bb3ed384cc012994d86b"
|
207 |
+
integrity sha1-tcCeF8rNET0Rt7s+04TMASmU2Gs=
|
208 |
|
209 |
+
brace-expansion@^1.0.0, brace-expansion@^1.1.7:
|
210 |
version "1.1.11"
|
211 |
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
212 |
+
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
213 |
dependencies:
|
214 |
balanced-match "^1.0.0"
|
215 |
concat-map "0.0.1"
|
216 |
|
217 |
+
braces@^2.3.1:
|
218 |
+
version "2.3.2"
|
219 |
+
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
|
220 |
+
integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
|
221 |
+
dependencies:
|
222 |
+
arr-flatten "^1.1.0"
|
223 |
+
array-unique "^0.3.2"
|
224 |
+
extend-shallow "^2.0.1"
|
225 |
+
fill-range "^4.0.0"
|
226 |
+
isobject "^3.0.1"
|
227 |
+
repeat-element "^1.1.2"
|
228 |
+
snapdragon "^0.8.1"
|
229 |
+
snapdragon-node "^2.0.1"
|
230 |
+
split-string "^3.0.2"
|
231 |
+
to-regex "^3.0.1"
|
232 |
+
|
233 |
buffer-from@^1.0.0:
|
234 |
+
version "1.1.1"
|
235 |
+
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
|
236 |
+
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
|
237 |
+
|
238 |
+
builtin-modules@^1.0.0:
|
239 |
+
version "1.1.1"
|
240 |
+
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
|
241 |
+
integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
|
242 |
+
|
243 |
+
cache-base@^1.0.1:
|
244 |
+
version "1.0.1"
|
245 |
+
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
|
246 |
+
integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
|
247 |
+
dependencies:
|
248 |
+
collection-visit "^1.0.0"
|
249 |
+
component-emitter "^1.2.1"
|
250 |
+
get-value "^2.0.6"
|
251 |
+
has-value "^1.0.0"
|
252 |
+
isobject "^3.0.1"
|
253 |
+
set-value "^2.0.0"
|
254 |
+
to-object-path "^0.3.0"
|
255 |
+
union-value "^1.0.0"
|
256 |
+
unset-value "^1.0.0"
|
257 |
|
258 |
caller-path@^0.1.0:
|
259 |
version "0.1.0"
|
260 |
resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
|
261 |
+
integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=
|
262 |
dependencies:
|
263 |
callsites "^0.2.0"
|
264 |
|
265 |
callsites@^0.2.0:
|
266 |
version "0.2.0"
|
267 |
resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
|
268 |
+
integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=
|
269 |
|
270 |
camelcase-keys@^4.1.0:
|
271 |
version "4.2.0"
|
272 |
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77"
|
273 |
+
integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=
|
274 |
dependencies:
|
275 |
camelcase "^4.1.0"
|
276 |
map-obj "^2.0.0"
|
277 |
quick-lru "^1.0.0"
|
278 |
|
279 |
+
camelcase@^3.0.0:
|
280 |
+
version "3.0.0"
|
281 |
+
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
|
282 |
+
integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
|
283 |
+
|
284 |
camelcase@^4.1.0:
|
285 |
version "4.1.0"
|
286 |
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
|
287 |
+
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
|
288 |
|
289 |
chalk@2.3.0:
|
290 |
version "2.3.0"
|
291 |
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba"
|
292 |
+
integrity sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==
|
293 |
dependencies:
|
294 |
ansi-styles "^3.1.0"
|
295 |
escape-string-regexp "^1.0.5"
|
296 |
supports-color "^4.0.0"
|
297 |
|
298 |
+
chalk@^1.0.0, chalk@^1.1.3:
|
299 |
version "1.1.3"
|
300 |
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
|
301 |
+
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
|
302 |
dependencies:
|
303 |
ansi-styles "^2.2.1"
|
304 |
escape-string-regexp "^1.0.2"
|
307 |
supports-color "^2.0.0"
|
308 |
|
309 |
chalk@^2.0.0, chalk@^2.1.0:
|
310 |
+
version "2.4.1"
|
311 |
+
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
|
312 |
+
integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
|
313 |
dependencies:
|
314 |
ansi-styles "^3.2.1"
|
315 |
escape-string-regexp "^1.0.5"
|
318 |
chardet@^0.4.0:
|
319 |
version "0.4.2"
|
320 |
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
|
321 |
+
integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=
|
322 |
|
323 |
circular-json@^0.3.1:
|
324 |
version "0.3.3"
|
325 |
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
|
326 |
+
integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==
|
327 |
+
|
328 |
+
class-utils@^0.3.5:
|
329 |
+
version "0.3.6"
|
330 |
+
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
|
331 |
+
integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
|
332 |
+
dependencies:
|
333 |
+
arr-union "^3.1.0"
|
334 |
+
define-property "^0.2.5"
|
335 |
+
isobject "^3.0.0"
|
336 |
+
static-extend "^0.1.1"
|
337 |
|
338 |
cli-cursor@^2.1.0:
|
339 |
version "2.1.0"
|
340 |
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
|
341 |
+
integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
|
342 |
dependencies:
|
343 |
restore-cursor "^2.0.0"
|
344 |
|
345 |
cli-width@^2.0.0:
|
346 |
version "2.2.0"
|
347 |
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
|
348 |
+
integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
|
349 |
|
350 |
cliui@^3.2.0:
|
351 |
version "3.2.0"
|
352 |
resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
|
353 |
+
integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
|
354 |
dependencies:
|
355 |
string-width "^1.0.1"
|
356 |
strip-ansi "^3.0.1"
|
357 |
wrap-ansi "^2.0.0"
|
358 |
|
359 |
+
clone-stats@^0.0.1:
|
360 |
+
version "0.0.1"
|
361 |
+
resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
|
362 |
+
integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=
|
363 |
+
|
364 |
+
clone@^0.2.0:
|
365 |
+
version "0.2.0"
|
366 |
+
resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f"
|
367 |
+
integrity sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=
|
368 |
+
|
369 |
+
clone@^1.0.0, clone@^1.0.2:
|
370 |
+
version "1.0.4"
|
371 |
+
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
|
372 |
+
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
|
373 |
+
|
374 |
co@^4.6.0:
|
375 |
version "4.6.0"
|
376 |
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
377 |
+
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
|
378 |
|
379 |
code-point-at@^1.0.0:
|
380 |
version "1.1.0"
|
381 |
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
382 |
+
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
|
383 |
+
|
384 |
+
collection-visit@^1.0.0:
|
385 |
+
version "1.0.0"
|
386 |
+
resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
|
387 |
+
integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
|
388 |
+
dependencies:
|
389 |
+
map-visit "^1.0.0"
|
390 |
+
object-visit "^1.0.0"
|
391 |
|
392 |
color-convert@^1.9.0:
|
393 |
+
version "1.9.3"
|
394 |
+
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
395 |
+
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
|
396 |
dependencies:
|
397 |
+
color-name "1.1.3"
|
398 |
|
399 |
+
color-name@1.1.3:
|
400 |
version "1.1.3"
|
401 |
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
402 |
+
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
403 |
+
|
404 |
+
color-support@^1.1.3:
|
405 |
+
version "1.1.3"
|
406 |
+
resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
|
407 |
+
integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
|
408 |
|
409 |
common-tags@^1.4.0:
|
410 |
+
version "1.8.0"
|
411 |
+
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
|
412 |
+
integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==
|
413 |
+
|
414 |
+
component-emitter@^1.2.1:
|
415 |
+
version "1.2.1"
|
416 |
+
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
|
417 |
+
integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
|
418 |
|
419 |
concat-map@0.0.1:
|
420 |
version "0.0.1"
|
421 |
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
422 |
+
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
423 |
|
424 |
concat-stream@^1.6.0:
|
425 |
version "1.6.2"
|
426 |
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
|
427 |
+
integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
|
428 |
dependencies:
|
429 |
buffer-from "^1.0.0"
|
430 |
inherits "^2.0.3"
|
431 |
readable-stream "^2.2.2"
|
432 |
typedarray "^0.0.6"
|
433 |
|
434 |
+
copy-descriptor@^0.1.0:
|
435 |
+
version "0.1.1"
|
436 |
+
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
|
437 |
+
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
|
438 |
+
|
439 |
+
copy-props@^2.0.1:
|
440 |
+
version "2.0.4"
|
441 |
+
resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe"
|
442 |
+
integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==
|
443 |
+
dependencies:
|
444 |
+
each-props "^1.3.0"
|
445 |
+
is-plain-object "^2.0.1"
|
446 |
+
|
447 |
core-js@^2.4.0:
|
448 |
+
version "2.5.7"
|
449 |
+
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
|
450 |
+
integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==
|
451 |
|
452 |
core-util-is@~1.0.0:
|
453 |
version "1.0.2"
|
454 |
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
455 |
+
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
|
456 |
|
457 |
cross-spawn@^5.0.1, cross-spawn@^5.1.0:
|
458 |
version "5.1.0"
|
459 |
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
|
460 |
+
integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
|
461 |
dependencies:
|
462 |
lru-cache "^4.0.1"
|
463 |
shebang-command "^1.2.0"
|
464 |
which "^1.2.9"
|
465 |
|
466 |
+
d@1:
|
467 |
+
version "1.0.0"
|
468 |
+
resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f"
|
469 |
+
integrity sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=
|
470 |
+
dependencies:
|
471 |
+
es5-ext "^0.10.9"
|
472 |
+
|
473 |
+
dateformat@^2.0.0:
|
474 |
+
version "2.2.0"
|
475 |
+
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062"
|
476 |
+
integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=
|
477 |
+
|
478 |
+
debug@^2.2.0, debug@^2.3.3:
|
479 |
+
version "2.6.9"
|
480 |
+
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
481 |
+
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
482 |
dependencies:
|
483 |
ms "2.0.0"
|
484 |
|
485 |
+
debug@^3.1.0:
|
486 |
+
version "3.2.6"
|
487 |
+
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
|
488 |
+
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
|
489 |
+
dependencies:
|
490 |
+
ms "^2.1.1"
|
491 |
+
|
492 |
decamelize@^1.1.1:
|
493 |
version "1.2.0"
|
494 |
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
495 |
+
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
|
496 |
+
|
497 |
+
decode-uri-component@^0.2.0:
|
498 |
+
version "0.2.0"
|
499 |
+
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
|
500 |
+
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
|
501 |
|
502 |
deep-is@~0.1.3:
|
503 |
version "0.1.3"
|
504 |
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
|
505 |
+
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
|
506 |
|
507 |
+
default-compare@^1.0.0:
|
508 |
+
version "1.0.0"
|
509 |
+
resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f"
|
510 |
+
integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==
|
511 |
dependencies:
|
512 |
+
kind-of "^5.0.2"
|
513 |
+
|
514 |
+
defaults@^1.0.0:
|
515 |
+
version "1.0.3"
|
516 |
+
resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
|
517 |
+
integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
|
518 |
+
dependencies:
|
519 |
+
clone "^1.0.2"
|
520 |
+
|
521 |
+
define-property@^0.2.5:
|
522 |
+
version "0.2.5"
|
523 |
+
resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
|
524 |
+
integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
|
525 |
+
dependencies:
|
526 |
+
is-descriptor "^0.1.0"
|
527 |
+
|
528 |
+
define-property@^1.0.0:
|
529 |
+
version "1.0.0"
|
530 |
+
resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
|
531 |
+
integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
|
532 |
+
dependencies:
|
533 |
+
is-descriptor "^1.0.0"
|
534 |
+
|
535 |
+
define-property@^2.0.2:
|
536 |
+
version "2.0.2"
|
537 |
+
resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
|
538 |
+
integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
|
539 |
+
dependencies:
|
540 |
+
is-descriptor "^1.0.2"
|
541 |
+
isobject "^3.0.1"
|
542 |
+
|
543 |
+
deprecated@^0.0.1:
|
544 |
+
version "0.0.1"
|
545 |
+
resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19"
|
546 |
+
integrity sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=
|
547 |
+
|
548 |
+
detect-file@^1.0.0:
|
549 |
+
version "1.0.0"
|
550 |
+
resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
|
551 |
+
integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
|
552 |
|
553 |
dlv@^1.1.0:
|
554 |
+
version "1.1.2"
|
555 |
+
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.2.tgz#270f6737b30d25b6657a7e962c784403f85137e5"
|
556 |
+
integrity sha512-xxD4VSH67GbRvSGUrckvha94RD7hjgOH7rqGxiytLpkaeMvixOHFZTGFK6EkIm3T761OVHT8ABHmGkq9gXgu6Q==
|
557 |
|
558 |
doctrine@^2.1.0:
|
559 |
version "2.1.0"
|
560 |
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
|
561 |
+
integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
|
562 |
dependencies:
|
563 |
esutils "^2.0.2"
|
564 |
|
565 |
dom-serializer@0:
|
566 |
version "0.1.0"
|
567 |
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
|
568 |
+
integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=
|
569 |
dependencies:
|
570 |
domelementtype "~1.1.1"
|
571 |
entities "~1.1.1"
|
572 |
|
573 |
+
domelementtype@1:
|
574 |
+
version "1.2.1"
|
575 |
+
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.2.1.tgz#578558ef23befac043a1abb0db07635509393479"
|
576 |
+
integrity sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA==
|
577 |
+
|
578 |
+
domelementtype@^1.3.0:
|
579 |
version "1.3.0"
|
580 |
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
|
581 |
+
integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=
|
582 |
|
583 |
domelementtype@~1.1.1:
|
584 |
version "1.1.3"
|
585 |
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
|
586 |
+
integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=
|
587 |
|
588 |
domhandler@^2.3.0:
|
589 |
+
version "2.4.2"
|
590 |
+
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
|
591 |
+
integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
|
592 |
dependencies:
|
593 |
domelementtype "1"
|
594 |
|
595 |
domutils@^1.5.1:
|
596 |
version "1.7.0"
|
597 |
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
|
598 |
+
integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
|
599 |
dependencies:
|
600 |
dom-serializer "0"
|
601 |
domelementtype "1"
|
602 |
|
603 |
+
duplexer2@0.0.2:
|
604 |
+
version "0.0.2"
|
605 |
+
resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db"
|
606 |
+
integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=
|
607 |
+
dependencies:
|
608 |
+
readable-stream "~1.1.9"
|
609 |
+
|
610 |
+
each-props@^1.3.0:
|
611 |
+
version "1.3.2"
|
612 |
+
resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333"
|
613 |
+
integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==
|
614 |
+
dependencies:
|
615 |
+
is-plain-object "^2.0.1"
|
616 |
+
object.defaults "^1.1.0"
|
617 |
+
|
618 |
+
end-of-stream@~0.1.5:
|
619 |
+
version "0.1.5"
|
620 |
+
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf"
|
621 |
+
integrity sha1-jhdyBsPICDfYVjLouTWd/osvbq8=
|
622 |
+
dependencies:
|
623 |
+
once "~1.3.0"
|
624 |
+
|
625 |
entities@^1.1.1, entities@~1.1.1:
|
626 |
+
version "1.1.2"
|
627 |
+
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
|
628 |
+
integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
|
629 |
+
|
630 |
+
error-ex@^1.2.0:
|
631 |
+
version "1.3.2"
|
632 |
+
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
|
633 |
+
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
|
634 |
+
dependencies:
|
635 |
+
is-arrayish "^0.2.1"
|
636 |
+
|
637 |
+
es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14:
|
638 |
+
version "0.10.46"
|
639 |
+
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.46.tgz#efd99f67c5a7ec789baa3daa7f79870388f7f572"
|
640 |
+
integrity sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==
|
641 |
+
dependencies:
|
642 |
+
es6-iterator "~2.0.3"
|
643 |
+
es6-symbol "~3.1.1"
|
644 |
+
next-tick "1"
|
645 |
+
|
646 |
+
es6-iterator@^2.0.1, es6-iterator@~2.0.3:
|
647 |
+
version "2.0.3"
|
648 |
+
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
|
649 |
+
integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c=
|
650 |
+
dependencies:
|
651 |
+
d "1"
|
652 |
+
es5-ext "^0.10.35"
|
653 |
+
es6-symbol "^3.1.1"
|
654 |
+
|
655 |
+
es6-symbol@^3.1.1, es6-symbol@~3.1.1:
|
656 |
+
version "3.1.1"
|
657 |
+
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77"
|
658 |
+
integrity sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=
|
659 |
+
dependencies:
|
660 |
+
d "1"
|
661 |
+
es5-ext "~0.10.14"
|
662 |
|
663 |
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
|
664 |
version "1.0.5"
|
665 |
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
666 |
+
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
667 |
|
668 |
eslint-config-wordpress@^2.0.0:
|
669 |
version "2.0.0"
|
670 |
resolved "https://registry.yarnpkg.com/eslint-config-wordpress/-/eslint-config-wordpress-2.0.0.tgz#5201206c6964d648315232edf6dfbd2e925e4cd6"
|
671 |
+
integrity sha1-UgEgbGlk1kgxUjLt9t+9LpJeTNY=
|
672 |
|
673 |
eslint-plugin-html@^4.0.2:
|
674 |
+
version "4.0.6"
|
675 |
+
resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-4.0.6.tgz#724bb9272efb4df007dfee8dfb269ed83577e5b4"
|
676 |
+
integrity sha512-nj6A9oK+7BKnMm0E7dMRH3r75BfpkXtcVIb3pFC4AcDdBTNyg2NGxHXyFNT1emW4VsR7P2SZvRXXQtUR+kY08w==
|
677 |
dependencies:
|
678 |
htmlparser2 "^3.8.2"
|
679 |
|
680 |
eslint-scope@^3.7.1:
|
681 |
+
version "3.7.3"
|
682 |
+
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535"
|
683 |
+
integrity sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==
|
684 |
dependencies:
|
685 |
esrecurse "^4.1.0"
|
686 |
estraverse "^4.1.1"
|
688 |
eslint-visitor-keys@^1.0.0:
|
689 |
version "1.0.0"
|
690 |
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
|
691 |
+
integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==
|
692 |
|
693 |
eslint@^4.0.0, eslint@^4.19.1, eslint@^4.5.0:
|
694 |
version "4.19.1"
|
695 |
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300"
|
696 |
+
integrity sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==
|
697 |
dependencies:
|
698 |
ajv "^5.3.0"
|
699 |
babel-code-frame "^6.22.0"
|
734 |
table "4.0.2"
|
735 |
text-table "~0.2.0"
|
736 |
|
737 |
+
espree@^3.5.2, espree@^3.5.4:
|
738 |
version "3.5.4"
|
739 |
resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
|
740 |
+
integrity sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==
|
741 |
dependencies:
|
742 |
acorn "^5.5.0"
|
743 |
acorn-jsx "^3.0.0"
|
744 |
|
745 |
esprima@^4.0.0:
|
746 |
+
version "4.0.1"
|
747 |
+
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
|
748 |
+
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
|
749 |
|
750 |
esquery@^1.0.0:
|
751 |
+
version "1.0.1"
|
752 |
+
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708"
|
753 |
+
integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==
|
754 |
dependencies:
|
755 |
estraverse "^4.0.0"
|
756 |
|
757 |
esrecurse@^4.1.0:
|
758 |
version "4.2.1"
|
759 |
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
|
760 |
+
integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==
|
761 |
dependencies:
|
762 |
estraverse "^4.1.0"
|
763 |
|
764 |
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
|
765 |
version "4.2.0"
|
766 |
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
|
767 |
+
integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
|
768 |
|
769 |
esutils@^2.0.2:
|
770 |
version "2.0.2"
|
771 |
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
|
772 |
+
integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
|
773 |
|
774 |
execa@^0.7.0:
|
775 |
version "0.7.0"
|
776 |
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
|
777 |
+
integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
|
778 |
dependencies:
|
779 |
cross-spawn "^5.0.1"
|
780 |
get-stream "^3.0.0"
|
784 |
signal-exit "^3.0.0"
|
785 |
strip-eof "^1.0.0"
|
786 |
|
787 |
+
expand-brackets@^2.1.4:
|
788 |
+
version "2.1.4"
|
789 |
+
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
|
790 |
+
integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
|
791 |
+
dependencies:
|
792 |
+
debug "^2.3.3"
|
793 |
+
define-property "^0.2.5"
|
794 |
+
extend-shallow "^2.0.1"
|
795 |
+
posix-character-classes "^0.1.0"
|
796 |
+
regex-not "^1.0.0"
|
797 |
+
snapdragon "^0.8.1"
|
798 |
+
to-regex "^3.0.1"
|
799 |
+
|
800 |
+
expand-tilde@^2.0.0, expand-tilde@^2.0.2:
|
801 |
+
version "2.0.2"
|
802 |
+
resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
|
803 |
+
integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
|
804 |
+
dependencies:
|
805 |
+
homedir-polyfill "^1.0.1"
|
806 |
+
|
807 |
+
extend-shallow@^2.0.1:
|
808 |
+
version "2.0.1"
|
809 |
+
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
|
810 |
+
integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
|
811 |
+
dependencies:
|
812 |
+
is-extendable "^0.1.0"
|
813 |
+
|
814 |
+
extend-shallow@^3.0.0, extend-shallow@^3.0.2:
|
815 |
+
version "3.0.2"
|
816 |
+
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
|
817 |
+
integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
|
818 |
+
dependencies:
|
819 |
+
assign-symbols "^1.0.0"
|
820 |
+
is-extendable "^1.0.1"
|
821 |
+
|
822 |
+
extend@^3.0.0:
|
823 |
+
version "3.0.2"
|
824 |
+
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
825 |
+
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
|
826 |
+
|
827 |
external-editor@^2.0.4:
|
828 |
+
version "2.2.0"
|
829 |
+
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
|
830 |
+
integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==
|
831 |
dependencies:
|
832 |
chardet "^0.4.0"
|
833 |
iconv-lite "^0.4.17"
|
834 |
tmp "^0.0.33"
|
835 |
|
836 |
+
extglob@^2.0.4:
|
837 |
+
version "2.0.4"
|
838 |
+
resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
|
839 |
+
integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
|
840 |
+
dependencies:
|
841 |
+
array-unique "^0.3.2"
|
842 |
+
define-property "^1.0.0"
|
843 |
+
expand-brackets "^2.1.4"
|
844 |
+
extend-shallow "^2.0.1"
|
845 |
+
fragment-cache "^0.2.1"
|
846 |
+
regex-not "^1.0.0"
|
847 |
+
snapdragon "^0.8.1"
|
848 |
+
to-regex "^3.0.1"
|
849 |
+
|
850 |
+
fancy-log@^1.1.0, fancy-log@^1.3.2:
|
851 |
+
version "1.3.2"
|
852 |
+
resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.2.tgz#f41125e3d84f2e7d89a43d06d958c8f78be16be1"
|
853 |
+
integrity sha1-9BEl49hPLn2JpD0G2VjI94vha+E=
|
854 |
+
dependencies:
|
855 |
+
ansi-gray "^0.1.1"
|
856 |
+
color-support "^1.1.3"
|
857 |
+
time-stamp "^1.0.0"
|
858 |
+
|
859 |
fast-deep-equal@^1.0.0:
|
860 |
version "1.1.0"
|
861 |
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
|
862 |
+
integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=
|
863 |
|
864 |
fast-json-stable-stringify@^2.0.0:
|
865 |
version "2.0.0"
|
866 |
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
|
867 |
+
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
|
868 |
|
869 |
fast-levenshtein@~2.0.4:
|
870 |
version "2.0.6"
|
871 |
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
|
872 |
+
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
|
873 |
|
874 |
figures@^2.0.0:
|
875 |
version "2.0.0"
|
876 |
resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
|
877 |
+
integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=
|
878 |
dependencies:
|
879 |
escape-string-regexp "^1.0.5"
|
880 |
|
881 |
file-entry-cache@^2.0.0:
|
882 |
version "2.0.0"
|
883 |
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
|
884 |
+
integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=
|
885 |
dependencies:
|
886 |
flat-cache "^1.2.1"
|
887 |
object-assign "^4.0.1"
|
888 |
|
889 |
+
fill-range@^4.0.0:
|
890 |
+
version "4.0.0"
|
891 |
+
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
|
892 |
+
integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
|
893 |
+
dependencies:
|
894 |
+
extend-shallow "^2.0.1"
|
895 |
+
is-number "^3.0.0"
|
896 |
+
repeat-string "^1.6.1"
|
897 |
+
to-regex-range "^2.1.0"
|
898 |
+
|
899 |
+
find-index@^0.1.1:
|
900 |
+
version "0.1.1"
|
901 |
+
resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4"
|
902 |
+
integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=
|
903 |
+
|
904 |
+
find-up@^1.0.0:
|
905 |
+
version "1.1.2"
|
906 |
+
resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
|
907 |
+
integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
|
908 |
+
dependencies:
|
909 |
+
path-exists "^2.0.0"
|
910 |
+
pinkie-promise "^2.0.0"
|
911 |
+
|
912 |
find-up@^2.1.0:
|
913 |
version "2.1.0"
|
914 |
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
|
915 |
+
integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
|
916 |
dependencies:
|
917 |
locate-path "^2.0.0"
|
918 |
|
919 |
+
findup-sync@^2.0.0:
|
920 |
+
version "2.0.0"
|
921 |
+
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc"
|
922 |
+
integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=
|
923 |
+
dependencies:
|
924 |
+
detect-file "^1.0.0"
|
925 |
+
is-glob "^3.1.0"
|
926 |
+
micromatch "^3.0.4"
|
927 |
+
resolve-dir "^1.0.1"
|
928 |
+
|
929 |
+
fined@^1.0.1:
|
930 |
+
version "1.1.0"
|
931 |
+
resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.0.tgz#b37dc844b76a2f5e7081e884f7c0ae344f153476"
|
932 |
+
integrity sha1-s33IRLdqL15wgeiE98CuNE8VNHY=
|
933 |
+
dependencies:
|
934 |
+
expand-tilde "^2.0.2"
|
935 |
+
is-plain-object "^2.0.3"
|
936 |
+
object.defaults "^1.1.0"
|
937 |
+
object.pick "^1.2.0"
|
938 |
+
parse-filepath "^1.0.1"
|
939 |
+
|
940 |
+
first-chunk-stream@^1.0.0:
|
941 |
+
version "1.0.0"
|
942 |
+
resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e"
|
943 |
+
integrity sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=
|
944 |
+
|
945 |
+
flagged-respawn@^1.0.0:
|
946 |
+
version "1.0.0"
|
947 |
+
resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.0.tgz#4e79ae9b2eb38bf86b3bb56bf3e0a56aa5fcabd7"
|
948 |
+
integrity sha1-Tnmumy6zi/hrO7Vr8+ClaqX8q9c=
|
949 |
+
|
950 |
flat-cache@^1.2.1:
|
951 |
+
version "1.3.4"
|
952 |
+
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f"
|
953 |
+
integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==
|
954 |
dependencies:
|
955 |
circular-json "^0.3.1"
|
|
|
956 |
graceful-fs "^4.1.2"
|
957 |
+
rimraf "~2.6.2"
|
958 |
write "^0.2.1"
|
959 |
|
960 |
+
for-in@^1.0.1, for-in@^1.0.2:
|
961 |
+
version "1.0.2"
|
962 |
+
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
|
963 |
+
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
|
964 |
+
|
965 |
+
for-own@^1.0.0:
|
966 |
+
version "1.0.0"
|
967 |
+
resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
|
968 |
+
integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
|
969 |
+
dependencies:
|
970 |
+
for-in "^1.0.1"
|
971 |
+
|
972 |
+
fragment-cache@^0.2.1:
|
973 |
+
version "0.2.1"
|
974 |
+
resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
|
975 |
+
integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
|
976 |
+
dependencies:
|
977 |
+
map-cache "^0.2.2"
|
978 |
+
|
979 |
fs.realpath@^1.0.0:
|
980 |
version "1.0.0"
|
981 |
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
982 |
+
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
|
983 |
|
984 |
functional-red-black-tree@^1.0.1:
|
985 |
version "1.0.1"
|
986 |
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
|
987 |
+
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
|
988 |
+
|
989 |
+
gaze@^0.5.1:
|
990 |
+
version "0.5.2"
|
991 |
+
resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f"
|
992 |
+
integrity sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=
|
993 |
+
dependencies:
|
994 |
+
globule "~0.1.0"
|
995 |
|
996 |
get-caller-file@^1.0.1:
|
997 |
+
version "1.0.3"
|
998 |
+
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
|
999 |
+
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
|
1000 |
|
1001 |
get-stdin@^5.0.1:
|
1002 |
version "5.0.1"
|
1003 |
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398"
|
1004 |
+
integrity sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=
|
1005 |
|
1006 |
get-stream@^3.0.0:
|
1007 |
version "3.0.0"
|
1008 |
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
|
1009 |
+
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
|
1010 |
|
1011 |
+
get-value@^2.0.3, get-value@^2.0.6:
|
1012 |
+
version "2.0.6"
|
1013 |
+
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
|
1014 |
+
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
|
1015 |
+
|
1016 |
+
glob-stream@^3.1.5:
|
1017 |
+
version "3.1.18"
|
1018 |
+
resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b"
|
1019 |
+
integrity sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=
|
1020 |
+
dependencies:
|
1021 |
+
glob "^4.3.1"
|
1022 |
+
glob2base "^0.0.12"
|
1023 |
+
minimatch "^2.0.1"
|
1024 |
+
ordered-read-streams "^0.1.0"
|
1025 |
+
through2 "^0.6.1"
|
1026 |
+
unique-stream "^1.0.0"
|
1027 |
+
|
1028 |
+
glob-watcher@^0.0.6:
|
1029 |
+
version "0.0.6"
|
1030 |
+
resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b"
|
1031 |
+
integrity sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=
|
1032 |
+
dependencies:
|
1033 |
+
gaze "^0.5.1"
|
1034 |
+
|
1035 |
+
glob2base@^0.0.12:
|
1036 |
+
version "0.0.12"
|
1037 |
+
resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56"
|
1038 |
+
integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=
|
1039 |
+
dependencies:
|
1040 |
+
find-index "^0.1.1"
|
1041 |
+
|
1042 |
+
glob@^4.3.1:
|
1043 |
+
version "4.5.3"
|
1044 |
+
resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f"
|
1045 |
+
integrity sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=
|
1046 |
+
dependencies:
|
1047 |
+
inflight "^1.0.4"
|
1048 |
+
inherits "2"
|
1049 |
+
minimatch "^2.0.1"
|
1050 |
+
once "^1.3.0"
|
1051 |
+
|
1052 |
+
glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
|
1053 |
+
version "7.1.3"
|
1054 |
+
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
|
1055 |
+
integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
|
1056 |
dependencies:
|
1057 |
fs.realpath "^1.0.0"
|
1058 |
inflight "^1.0.4"
|
1061 |
once "^1.3.0"
|
1062 |
path-is-absolute "^1.0.0"
|
1063 |
|
1064 |
+
glob@~3.1.21:
|
1065 |
+
version "3.1.21"
|
1066 |
+
resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd"
|
1067 |
+
integrity sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=
|
1068 |
+
dependencies:
|
1069 |
+
graceful-fs "~1.2.0"
|
1070 |
+
inherits "1"
|
1071 |
+
minimatch "~0.2.11"
|
1072 |
+
|
1073 |
glob@~7.0.6:
|
1074 |
version "7.0.6"
|
1075 |
resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a"
|
1076 |
+
integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=
|
1077 |
dependencies:
|
1078 |
fs.realpath "^1.0.0"
|
1079 |
inflight "^1.0.4"
|
1082 |
once "^1.3.0"
|
1083 |
path-is-absolute "^1.0.0"
|
1084 |
|
1085 |
+
global-modules@^1.0.0:
|
1086 |
+
version "1.0.0"
|
1087 |
+
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
|
1088 |
+
integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
|
1089 |
+
dependencies:
|
1090 |
+
global-prefix "^1.0.1"
|
1091 |
+
is-windows "^1.0.1"
|
1092 |
+
resolve-dir "^1.0.0"
|
1093 |
+
|
1094 |
+
global-prefix@^1.0.1:
|
1095 |
+
version "1.0.2"
|
1096 |
+
resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
|
1097 |
+
integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
|
1098 |
+
dependencies:
|
1099 |
+
expand-tilde "^2.0.2"
|
1100 |
+
homedir-polyfill "^1.0.1"
|
1101 |
+
ini "^1.3.4"
|
1102 |
+
is-windows "^1.0.1"
|
1103 |
+
which "^1.2.14"
|
1104 |
+
|
1105 |
globals@^11.0.1:
|
1106 |
+
version "11.9.0"
|
1107 |
+
resolved "https://registry.yarnpkg.com/globals/-/globals-11.9.0.tgz#bde236808e987f290768a93d065060d78e6ab249"
|
1108 |
+
integrity sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==
|
1109 |
|
1110 |
+
globule@~0.1.0:
|
1111 |
+
version "0.1.0"
|
1112 |
+
resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5"
|
1113 |
+
integrity sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=
|
1114 |
dependencies:
|
1115 |
+
glob "~3.1.21"
|
1116 |
+
lodash "~1.0.1"
|
1117 |
+
minimatch "~0.2.11"
|
1118 |
+
|
1119 |
+
glogg@^1.0.0:
|
1120 |
+
version "1.0.1"
|
1121 |
+
resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.1.tgz#dcf758e44789cc3f3d32c1f3562a3676e6a34810"
|
1122 |
+
integrity sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==
|
1123 |
+
dependencies:
|
1124 |
+
sparkles "^1.0.0"
|
1125 |
+
|
1126 |
+
graceful-fs@^3.0.0:
|
1127 |
+
version "3.0.11"
|
1128 |
+
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818"
|
1129 |
+
integrity sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=
|
1130 |
+
dependencies:
|
1131 |
+
natives "^1.1.0"
|
1132 |
|
1133 |
graceful-fs@^4.1.2:
|
1134 |
+
version "4.1.15"
|
1135 |
+
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
|
1136 |
+
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
|
1137 |
+
|
1138 |
+
graceful-fs@~1.2.0:
|
1139 |
+
version "1.2.3"
|
1140 |
+
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364"
|
1141 |
+
integrity sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=
|
1142 |
+
|
1143 |
+
gulp-cli@^2.0.1:
|
1144 |
+
version "2.0.1"
|
1145 |
+
resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.0.1.tgz#7847e220cb3662f2be8a6d572bf14e17be5a994b"
|
1146 |
+
integrity sha512-RxujJJdN8/O6IW2nPugl7YazhmrIEjmiVfPKrWt68r71UCaLKS71Hp0gpKT+F6qOUFtr7KqtifDKaAJPRVvMYQ==
|
1147 |
+
dependencies:
|
1148 |
+
ansi-colors "^1.0.1"
|
1149 |
+
archy "^1.0.0"
|
1150 |
+
array-sort "^1.0.0"
|
1151 |
+
color-support "^1.1.3"
|
1152 |
+
concat-stream "^1.6.0"
|
1153 |
+
copy-props "^2.0.1"
|
1154 |
+
fancy-log "^1.3.2"
|
1155 |
+
gulplog "^1.0.0"
|
1156 |
+
interpret "^1.1.0"
|
1157 |
+
isobject "^3.0.1"
|
1158 |
+
liftoff "^2.5.0"
|
1159 |
+
matchdep "^2.0.0"
|
1160 |
+
mute-stdout "^1.0.0"
|
1161 |
+
pretty-hrtime "^1.0.0"
|
1162 |
+
replace-homedir "^1.0.0"
|
1163 |
+
semver-greatest-satisfied-range "^1.1.0"
|
1164 |
+
v8flags "^3.0.1"
|
1165 |
+
yargs "^7.1.0"
|
1166 |
+
|
1167 |
+
gulp-util@^3.0.0:
|
1168 |
+
version "3.0.8"
|
1169 |
+
resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f"
|
1170 |
+
integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08=
|
1171 |
+
dependencies:
|
1172 |
+
array-differ "^1.0.0"
|
1173 |
+
array-uniq "^1.0.2"
|
1174 |
+
beeper "^1.0.0"
|
1175 |
+
chalk "^1.0.0"
|
1176 |
+
dateformat "^2.0.0"
|
1177 |
+
fancy-log "^1.1.0"
|
1178 |
+
gulplog "^1.0.0"
|
1179 |
+
has-gulplog "^0.1.0"
|
1180 |
+
lodash._reescape "^3.0.0"
|
1181 |
+
lodash._reevaluate "^3.0.0"
|
1182 |
+
lodash._reinterpolate "^3.0.0"
|
1183 |
+
lodash.template "^3.0.0"
|
1184 |
+
minimist "^1.1.0"
|
1185 |
+
multipipe "^0.1.2"
|
1186 |
+
object-assign "^3.0.0"
|
1187 |
+
replace-ext "0.0.1"
|
1188 |
+
through2 "^2.0.0"
|
1189 |
+
vinyl "^0.5.0"
|
1190 |
+
|
1191 |
+
gulp@^3.9.1:
|
1192 |
+
version "3.9.1"
|
1193 |
+
resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4"
|
1194 |
+
integrity sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=
|
1195 |
+
dependencies:
|
1196 |
+
archy "^1.0.0"
|
1197 |
+
chalk "^1.0.0"
|
1198 |
+
deprecated "^0.0.1"
|
1199 |
+
gulp-util "^3.0.0"
|
1200 |
+
interpret "^1.0.0"
|
1201 |
+
liftoff "^2.1.0"
|
1202 |
+
minimist "^1.1.0"
|
1203 |
+
orchestrator "^0.3.0"
|
1204 |
+
pretty-hrtime "^1.0.0"
|
1205 |
+
semver "^4.1.0"
|
1206 |
+
tildify "^1.0.0"
|
1207 |
+
v8flags "^2.0.2"
|
1208 |
+
vinyl-fs "^0.3.0"
|
1209 |
+
|
1210 |
+
gulplog@^1.0.0:
|
1211 |
+
version "1.0.0"
|
1212 |
+
resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5"
|
1213 |
+
integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U=
|
1214 |
+
dependencies:
|
1215 |
+
glogg "^1.0.0"
|
1216 |
|
1217 |
has-ansi@^2.0.0:
|
1218 |
version "2.0.0"
|
1219 |
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
|
1220 |
+
integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
|
1221 |
dependencies:
|
1222 |
ansi-regex "^2.0.0"
|
1223 |
|
1224 |
has-flag@^2.0.0:
|
1225 |
version "2.0.0"
|
1226 |
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
|
1227 |
+
integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=
|
1228 |
|
1229 |
has-flag@^3.0.0:
|
1230 |
version "3.0.0"
|
1231 |
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
|
1232 |
+
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
|
1233 |
+
|
1234 |
+
has-gulplog@^0.1.0:
|
1235 |
+
version "0.1.0"
|
1236 |
+
resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
|
1237 |
+
integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=
|
1238 |
+
dependencies:
|
1239 |
+
sparkles "^1.0.0"
|
1240 |
+
|
1241 |
+
has-value@^0.3.1:
|
1242 |
+
version "0.3.1"
|
1243 |
+
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
|
1244 |
+
integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
|
1245 |
+
dependencies:
|
1246 |
+
get-value "^2.0.3"
|
1247 |
+
has-values "^0.1.4"
|
1248 |
+
isobject "^2.0.0"
|
1249 |
+
|
1250 |
+
has-value@^1.0.0:
|
1251 |
+
version "1.0.0"
|
1252 |
+
resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
|
1253 |
+
integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
|
1254 |
+
dependencies:
|
1255 |
+
get-value "^2.0.6"
|
1256 |
+
has-values "^1.0.0"
|
1257 |
+
isobject "^3.0.0"
|
1258 |
+
|
1259 |
+
has-values@^0.1.4:
|
1260 |
+
version "0.1.4"
|
1261 |
+
resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
|
1262 |
+
integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
|
1263 |
+
|
1264 |
+
has-values@^1.0.0:
|
1265 |
+
version "1.0.0"
|
1266 |
+
resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
|
1267 |
+
integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
|
1268 |
+
dependencies:
|
1269 |
+
is-number "^3.0.0"
|
1270 |
+
kind-of "^4.0.0"
|
1271 |
+
|
1272 |
+
homedir-polyfill@^1.0.1:
|
1273 |
+
version "1.0.1"
|
1274 |
+
resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc"
|
1275 |
+
integrity sha1-TCu8inWJmP7r9e1oWA921GdotLw=
|
1276 |
+
dependencies:
|
1277 |
+
parse-passwd "^1.0.0"
|
1278 |
+
|
1279 |
+
hosted-git-info@^2.1.4:
|
1280 |
+
version "2.7.1"
|
1281 |
+
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
|
1282 |
+
integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
|
1283 |
|
1284 |
htmlparser2@^3.8.2:
|
1285 |
+
version "3.10.0"
|
1286 |
+
resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.0.tgz#5f5e422dcf6119c0d983ed36260ce9ded0bee464"
|
1287 |
+
integrity sha512-J1nEUGv+MkXS0weHNWVKJJ+UrLfePxRWpN3C9bEi9fLxL2+ggW94DQvgYVXsaT30PGwYRIZKNZXuyMhp3Di4bQ==
|
1288 |
dependencies:
|
1289 |
domelementtype "^1.3.0"
|
1290 |
domhandler "^2.3.0"
|
1291 |
domutils "^1.5.1"
|
1292 |
entities "^1.1.1"
|
1293 |
inherits "^2.0.1"
|
1294 |
+
readable-stream "^3.0.6"
|
1295 |
|
1296 |
iconv-lite@^0.4.17:
|
1297 |
+
version "0.4.24"
|
1298 |
+
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
|
1299 |
+
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
|
1300 |
+
dependencies:
|
1301 |
+
safer-buffer ">= 2.1.2 < 3"
|
1302 |
|
1303 |
ignore@^3.2.7, ignore@^3.3.3:
|
1304 |
+
version "3.3.10"
|
1305 |
+
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
|
1306 |
+
integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
|
1307 |
|
1308 |
imurmurhash@^0.1.4:
|
1309 |
version "0.1.4"
|
1310 |
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
|
1311 |
+
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
|
1312 |
|
1313 |
indent-string@^3.1.0, indent-string@^3.2.0:
|
1314 |
version "3.2.0"
|
1315 |
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
|
1316 |
+
integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
|
1317 |
|
1318 |
inflight@^1.0.4:
|
1319 |
version "1.0.6"
|
1320 |
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
1321 |
+
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
|
1322 |
dependencies:
|
1323 |
once "^1.3.0"
|
1324 |
wrappy "1"
|
1325 |
|
1326 |
+
inherits@1:
|
1327 |
+
version "1.0.2"
|
1328 |
+
resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b"
|
1329 |
+
integrity sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=
|
1330 |
+
|
1331 |
+
inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
|
1332 |
version "2.0.3"
|
1333 |
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
|
1334 |
+
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
1335 |
+
|
1336 |
+
ini@^1.3.4:
|
1337 |
+
version "1.3.5"
|
1338 |
+
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
1339 |
+
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
1340 |
|
1341 |
inquirer@^3.0.6:
|
1342 |
version "3.3.0"
|
1343 |
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
|
1344 |
+
integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==
|
1345 |
dependencies:
|
1346 |
ansi-escapes "^3.0.0"
|
1347 |
chalk "^2.0.0"
|
1358 |
strip-ansi "^4.0.0"
|
1359 |
through "^2.3.6"
|
1360 |
|
1361 |
+
interpret@^1.0.0, interpret@^1.1.0:
|
1362 |
+
version "1.1.0"
|
1363 |
+
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
|
1364 |
+
integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=
|
1365 |
+
|
1366 |
invert-kv@^1.0.0:
|
1367 |
version "1.0.0"
|
1368 |
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
|
1369 |
+
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
|
1370 |
+
|
1371 |
+
is-absolute@^1.0.0:
|
1372 |
+
version "1.0.0"
|
1373 |
+
resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576"
|
1374 |
+
integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==
|
1375 |
+
dependencies:
|
1376 |
+
is-relative "^1.0.0"
|
1377 |
+
is-windows "^1.0.1"
|
1378 |
+
|
1379 |
+
is-accessor-descriptor@^0.1.6:
|
1380 |
+
version "0.1.6"
|
1381 |
+
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
|
1382 |
+
integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
|
1383 |
+
dependencies:
|
1384 |
+
kind-of "^3.0.2"
|
1385 |
+
|
1386 |
+
is-accessor-descriptor@^1.0.0:
|
1387 |
+
version "1.0.0"
|
1388 |
+
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
|
1389 |
+
integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
|
1390 |
+
dependencies:
|
1391 |
+
kind-of "^6.0.0"
|
1392 |
+
|
1393 |
+
is-arrayish@^0.2.1:
|
1394 |
+
version "0.2.1"
|
1395 |
+
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
1396 |
+
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
|
1397 |
+
|
1398 |
+
is-buffer@^1.1.5:
|
1399 |
+
version "1.1.6"
|
1400 |
+
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
1401 |
+
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
|
1402 |
+
|
1403 |
+
is-builtin-module@^1.0.0:
|
1404 |
+
version "1.0.0"
|
1405 |
+
resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
|
1406 |
+
integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
|
1407 |
+
dependencies:
|
1408 |
+
builtin-modules "^1.0.0"
|
1409 |
+
|
1410 |
+
is-data-descriptor@^0.1.4:
|
1411 |
+
version "0.1.4"
|
1412 |
+
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
|
1413 |
+
integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
|
1414 |
+
dependencies:
|
1415 |
+
kind-of "^3.0.2"
|
1416 |
+
|
1417 |
+
is-data-descriptor@^1.0.0:
|
1418 |
+
version "1.0.0"
|
1419 |
+
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
|
1420 |
+
integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
|
1421 |
+
dependencies:
|
1422 |
+
kind-of "^6.0.0"
|
1423 |
+
|
1424 |
+
is-descriptor@^0.1.0:
|
1425 |
+
version "0.1.6"
|
1426 |
+
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
|
1427 |
+
integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
|
1428 |
+
dependencies:
|
1429 |
+
is-accessor-descriptor "^0.1.6"
|
1430 |
+
is-data-descriptor "^0.1.4"
|
1431 |
+
kind-of "^5.0.0"
|
1432 |
+
|
1433 |
+
is-descriptor@^1.0.0, is-descriptor@^1.0.2:
|
1434 |
+
version "1.0.2"
|
1435 |
+
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
|
1436 |
+
integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
|
1437 |
+
dependencies:
|
1438 |
+
is-accessor-descriptor "^1.0.0"
|
1439 |
+
is-data-descriptor "^1.0.0"
|
1440 |
+
kind-of "^6.0.2"
|
1441 |
+
|
1442 |
+
is-extendable@^0.1.0, is-extendable@^0.1.1:
|
1443 |
+
version "0.1.1"
|
1444 |
+
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
|
1445 |
+
integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
|
1446 |
+
|
1447 |
+
is-extendable@^1.0.1:
|
1448 |
+
version "1.0.1"
|
1449 |
+
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
|
1450 |
+
integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
|
1451 |
+
dependencies:
|
1452 |
+
is-plain-object "^2.0.4"
|
1453 |
+
|
1454 |
+
is-extglob@^2.1.0:
|
1455 |
+
version "2.1.1"
|
1456 |
+
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
1457 |
+
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
|
1458 |
|
1459 |
is-fullwidth-code-point@^1.0.0:
|
1460 |
version "1.0.0"
|
1461 |
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
|
1462 |
+
integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
|
1463 |
dependencies:
|
1464 |
number-is-nan "^1.0.0"
|
1465 |
|
1466 |
is-fullwidth-code-point@^2.0.0:
|
1467 |
version "2.0.0"
|
1468 |
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
|
1469 |
+
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
|
1470 |
|
1471 |
+
is-glob@^3.1.0:
|
1472 |
+
version "3.1.0"
|
1473 |
+
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
|
1474 |
+
integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
|
1475 |
+
dependencies:
|
1476 |
+
is-extglob "^2.1.0"
|
1477 |
|
1478 |
+
is-number@^3.0.0:
|
1479 |
+
version "3.0.0"
|
1480 |
+
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
|
1481 |
+
integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
|
1482 |
dependencies:
|
1483 |
+
kind-of "^3.0.2"
|
1484 |
|
1485 |
+
is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
1486 |
+
version "2.0.4"
|
1487 |
+
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
|
1488 |
+
integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
|
1489 |
dependencies:
|
1490 |
+
isobject "^3.0.1"
|
1491 |
|
1492 |
is-promise@^2.1.0:
|
1493 |
version "2.1.0"
|
1494 |
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
|
1495 |
+
integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=
|
1496 |
+
|
1497 |
+
is-relative@^1.0.0:
|
1498 |
+
version "1.0.0"
|
1499 |
+
resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
|
1500 |
+
integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==
|
1501 |
+
dependencies:
|
1502 |
+
is-unc-path "^1.0.0"
|
1503 |
|
1504 |
is-resolvable@^1.0.0:
|
1505 |
version "1.1.0"
|
1506 |
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
|
1507 |
+
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
|
1508 |
|
1509 |
is-stream@^1.1.0:
|
1510 |
version "1.1.0"
|
1511 |
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
1512 |
+
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
|
1513 |
+
|
1514 |
+
is-unc-path@^1.0.0:
|
1515 |
+
version "1.0.0"
|
1516 |
+
resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d"
|
1517 |
+
integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==
|
1518 |
+
dependencies:
|
1519 |
+
unc-path-regex "^0.1.2"
|
1520 |
+
|
1521 |
+
is-utf8@^0.2.0:
|
1522 |
+
version "0.2.1"
|
1523 |
+
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
1524 |
+
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
|
1525 |
+
|
1526 |
+
is-windows@^1.0.1, is-windows@^1.0.2:
|
1527 |
+
version "1.0.2"
|
1528 |
+
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
1529 |
+
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
1530 |
|
1531 |
+
isarray@0.0.1:
|
1532 |
+
version "0.0.1"
|
1533 |
+
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
1534 |
+
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
|
1535 |
+
|
1536 |
+
isarray@1.0.0, isarray@~1.0.0:
|
1537 |
version "1.0.0"
|
1538 |
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
1539 |
+
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
1540 |
|
1541 |
isexe@^2.0.0:
|
1542 |
version "2.0.0"
|
1543 |
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
1544 |
+
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
|
1545 |
+
|
1546 |
+
isobject@^2.0.0:
|
1547 |
+
version "2.1.0"
|
1548 |
+
resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
|
1549 |
+
integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
|
1550 |
+
dependencies:
|
1551 |
+
isarray "1.0.0"
|
1552 |
+
|
1553 |
+
isobject@^3.0.0, isobject@^3.0.1:
|
1554 |
+
version "3.0.1"
|
1555 |
+
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
|
1556 |
+
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
|
1557 |
+
|
1558 |
+
jquery-toggles@^4.0.0:
|
1559 |
+
version "4.0.0"
|
1560 |
+
resolved "https://registry.yarnpkg.com/jquery-toggles/-/jquery-toggles-4.0.0.tgz#820eebffb63dade7644eb5bc56198f0214726c19"
|
1561 |
+
integrity sha1-gg7r/7Y9redkTrW8VhmPAhRybBk=
|
1562 |
|
1563 |
js-tokens@^3.0.2:
|
1564 |
version "3.0.2"
|
1565 |
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
|
1566 |
+
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
|
1567 |
|
1568 |
js-yaml@^3.9.1:
|
1569 |
+
version "3.12.0"
|
1570 |
+
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
|
1571 |
+
integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==
|
1572 |
dependencies:
|
1573 |
argparse "^1.0.7"
|
1574 |
esprima "^4.0.0"
|
1576 |
json-schema-traverse@^0.3.0:
|
1577 |
version "0.3.1"
|
1578 |
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
|
1579 |
+
integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=
|
1580 |
|
1581 |
json-stable-stringify-without-jsonify@^1.0.1:
|
1582 |
version "1.0.1"
|
1583 |
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
|
1584 |
+
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
|
1585 |
+
|
1586 |
+
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
|
1587 |
+
version "3.2.2"
|
1588 |
+
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
|
1589 |
+
integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
|
1590 |
+
dependencies:
|
1591 |
+
is-buffer "^1.1.5"
|
1592 |
+
|
1593 |
+
kind-of@^4.0.0:
|
1594 |
+
version "4.0.0"
|
1595 |
+
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
|
1596 |
+
integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
|
1597 |
+
dependencies:
|
1598 |
+
is-buffer "^1.1.5"
|
1599 |
+
|
1600 |
+
kind-of@^5.0.0, kind-of@^5.0.2:
|
1601 |
+
version "5.1.0"
|
1602 |
+
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
|
1603 |
+
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
|
1604 |
+
|
1605 |
+
kind-of@^6.0.0, kind-of@^6.0.2:
|
1606 |
+
version "6.0.2"
|
1607 |
+
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
|
1608 |
+
integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
|
1609 |
|
1610 |
lcid@^1.0.0:
|
1611 |
version "1.0.0"
|
1612 |
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
|
1613 |
+
integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
|
1614 |
dependencies:
|
1615 |
invert-kv "^1.0.0"
|
1616 |
|
1617 |
levn@^0.3.0, levn@~0.3.0:
|
1618 |
version "0.3.0"
|
1619 |
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
|
1620 |
+
integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
|
1621 |
dependencies:
|
1622 |
prelude-ls "~1.1.2"
|
1623 |
type-check "~0.3.2"
|
1624 |
|
1625 |
+
liftoff@^2.1.0, liftoff@^2.5.0:
|
1626 |
+
version "2.5.0"
|
1627 |
+
resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec"
|
1628 |
+
integrity sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=
|
1629 |
+
dependencies:
|
1630 |
+
extend "^3.0.0"
|
1631 |
+
findup-sync "^2.0.0"
|
1632 |
+
fined "^1.0.1"
|
1633 |
+
flagged-respawn "^1.0.0"
|
1634 |
+
is-plain-object "^2.0.4"
|
1635 |
+
object.map "^1.0.0"
|
1636 |
+
rechoir "^0.6.2"
|
1637 |
+
resolve "^1.1.7"
|
1638 |
+
|
1639 |
+
load-json-file@^1.0.0:
|
1640 |
+
version "1.1.0"
|
1641 |
+
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
|
1642 |
+
integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
|
1643 |
+
dependencies:
|
1644 |
+
graceful-fs "^4.1.2"
|
1645 |
+
parse-json "^2.2.0"
|
1646 |
+
pify "^2.0.0"
|
1647 |
+
pinkie-promise "^2.0.0"
|
1648 |
+
strip-bom "^2.0.0"
|
1649 |
+
|
1650 |
locate-path@^2.0.0:
|
1651 |
version "2.0.0"
|
1652 |
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
|
1653 |
+
integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
|
1654 |
dependencies:
|
1655 |
p-locate "^2.0.0"
|
1656 |
path-exists "^3.0.0"
|
1657 |
|
1658 |
+
lodash._basecopy@^3.0.0:
|
1659 |
+
version "3.0.1"
|
1660 |
+
resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
|
1661 |
+
integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=
|
1662 |
+
|
1663 |
+
lodash._basetostring@^3.0.0:
|
1664 |
+
version "3.0.1"
|
1665 |
+
resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5"
|
1666 |
+
integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=
|
1667 |
+
|
1668 |
+
lodash._basevalues@^3.0.0:
|
1669 |
+
version "3.0.0"
|
1670 |
+
resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7"
|
1671 |
+
integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=
|
1672 |
+
|
1673 |
+
lodash._getnative@^3.0.0:
|
1674 |
+
version "3.9.1"
|
1675 |
+
resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
|
1676 |
+
integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=
|
1677 |
+
|
1678 |
+
lodash._isiterateecall@^3.0.0:
|
1679 |
+
version "3.0.9"
|
1680 |
+
resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
|
1681 |
+
integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=
|
1682 |
+
|
1683 |
+
lodash._reescape@^3.0.0:
|
1684 |
+
version "3.0.0"
|
1685 |
+
resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a"
|
1686 |
+
integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=
|
1687 |
+
|
1688 |
+
lodash._reevaluate@^3.0.0:
|
1689 |
+
version "3.0.0"
|
1690 |
+
resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed"
|
1691 |
+
integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=
|
1692 |
+
|
1693 |
+
lodash._reinterpolate@^3.0.0:
|
1694 |
+
version "3.0.0"
|
1695 |
+
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
|
1696 |
+
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
|
1697 |
+
|
1698 |
+
lodash._root@^3.0.0:
|
1699 |
+
version "3.0.1"
|
1700 |
+
resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
|
1701 |
+
integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=
|
1702 |
+
|
1703 |
+
lodash.escape@^3.0.0:
|
1704 |
+
version "3.2.0"
|
1705 |
+
resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
|
1706 |
+
integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=
|
1707 |
+
dependencies:
|
1708 |
+
lodash._root "^3.0.0"
|
1709 |
+
|
1710 |
+
lodash.isarguments@^3.0.0:
|
1711 |
+
version "3.1.0"
|
1712 |
+
resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
|
1713 |
+
integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=
|
1714 |
+
|
1715 |
+
lodash.isarray@^3.0.0:
|
1716 |
+
version "3.0.4"
|
1717 |
+
resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
|
1718 |
+
integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=
|
1719 |
+
|
1720 |
+
lodash.keys@^3.0.0:
|
1721 |
+
version "3.1.2"
|
1722 |
+
resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
|
1723 |
+
integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=
|
1724 |
+
dependencies:
|
1725 |
+
lodash._getnative "^3.0.0"
|
1726 |
+
lodash.isarguments "^3.0.0"
|
1727 |
+
lodash.isarray "^3.0.0"
|
1728 |
+
|
1729 |
lodash.memoize@^4.1.2:
|
1730 |
version "4.1.2"
|
1731 |
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
|
1732 |
+
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
|
1733 |
|
1734 |
lodash.merge@^4.6.0:
|
1735 |
version "4.6.1"
|
1736 |
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54"
|
1737 |
+
integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==
|
1738 |
+
|
1739 |
+
lodash.restparam@^3.0.0:
|
1740 |
+
version "3.6.1"
|
1741 |
+
resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
|
1742 |
+
integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
|
1743 |
+
|
1744 |
+
lodash.template@^3.0.0:
|
1745 |
+
version "3.6.2"
|
1746 |
+
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
|
1747 |
+
integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=
|
1748 |
+
dependencies:
|
1749 |
+
lodash._basecopy "^3.0.0"
|
1750 |
+
lodash._basetostring "^3.0.0"
|
1751 |
+
lodash._basevalues "^3.0.0"
|
1752 |
+
lodash._isiterateecall "^3.0.0"
|
1753 |
+
lodash._reinterpolate "^3.0.0"
|
1754 |
+
lodash.escape "^3.0.0"
|
1755 |
+
lodash.keys "^3.0.0"
|
1756 |
+
lodash.restparam "^3.0.0"
|
1757 |
+
lodash.templatesettings "^3.0.0"
|
1758 |
+
|
1759 |
+
lodash.templatesettings@^3.0.0:
|
1760 |
+
version "3.1.1"
|
1761 |
+
resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5"
|
1762 |
+
integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=
|
1763 |
+
dependencies:
|
1764 |
+
lodash._reinterpolate "^3.0.0"
|
1765 |
+
lodash.escape "^3.0.0"
|
1766 |
|
1767 |
lodash.unescape@4.0.1:
|
1768 |
version "4.0.1"
|
1769 |
resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
|
1770 |
+
integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
|
1771 |
|
1772 |
lodash@^4.17.4, lodash@^4.3.0:
|
1773 |
+
version "4.17.11"
|
1774 |
+
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
|
1775 |
+
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
|
1776 |
+
|
1777 |
+
lodash@~1.0.1:
|
1778 |
+
version "1.0.2"
|
1779 |
+
resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551"
|
1780 |
+
integrity sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=
|
1781 |
|
1782 |
loglevel-colored-level-prefix@^1.0.0:
|
1783 |
version "1.0.0"
|
1784 |
resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e"
|
1785 |
+
integrity sha1-akAhj9x64V/HbD0PPmdsRlOIYD4=
|
1786 |
dependencies:
|
1787 |
chalk "^1.1.3"
|
1788 |
loglevel "^1.4.1"
|
1790 |
loglevel@^1.4.1:
|
1791 |
version "1.6.1"
|
1792 |
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa"
|
1793 |
+
integrity sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=
|
1794 |
+
|
1795 |
+
lru-cache@2:
|
1796 |
+
version "2.7.3"
|
1797 |
+
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952"
|
1798 |
+
integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=
|
1799 |
|
1800 |
lru-cache@^4.0.1:
|
1801 |
+
version "4.1.4"
|
1802 |
+
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.4.tgz#51cc46e8e6d9530771c857e24ccc720ecdbcc031"
|
1803 |
+
integrity sha512-EPstzZ23znHUVLKj+lcXO1KvZkrlw+ZirdwvOmnAnA/1PB4ggyXJ77LRkCqkff+ShQ+cqoxCxLQOh4cKITO5iA==
|
1804 |
dependencies:
|
1805 |
pseudomap "^1.0.2"
|
1806 |
+
yallist "^3.0.2"
|
1807 |
+
|
1808 |
+
make-iterator@^1.0.0:
|
1809 |
+
version "1.0.1"
|
1810 |
+
resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6"
|
1811 |
+
integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==
|
1812 |
+
dependencies:
|
1813 |
+
kind-of "^6.0.2"
|
1814 |
|
1815 |
make-plural@^4.1.1:
|
1816 |
+
version "4.3.0"
|
1817 |
+
resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-4.3.0.tgz#f23de08efdb0cac2e0c9ba9f315b0dff6b4c2735"
|
1818 |
+
integrity sha512-xTYd4JVHpSCW+aqDof6w/MebaMVNTVYBZhbB/vi513xXdiPT92JMVCo0Jq8W2UZnzYRFeVbQiQ+I25l13JuKvA==
|
1819 |
optionalDependencies:
|
1820 |
minimist "^1.2.0"
|
1821 |
|
1822 |
+
map-cache@^0.2.0, map-cache@^0.2.2:
|
1823 |
+
version "0.2.2"
|
1824 |
+
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
|
1825 |
+
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
|
1826 |
+
|
1827 |
map-obj@^2.0.0:
|
1828 |
version "2.0.0"
|
1829 |
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9"
|
1830 |
+
integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk=
|
1831 |
+
|
1832 |
+
map-visit@^1.0.0:
|
1833 |
+
version "1.0.0"
|
1834 |
+
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
|
1835 |
+
integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
|
1836 |
+
dependencies:
|
1837 |
+
object-visit "^1.0.0"
|
1838 |
+
|
1839 |
+
matchdep@^2.0.0:
|
1840 |
+
version "2.0.0"
|
1841 |
+
resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e"
|
1842 |
+
integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4=
|
1843 |
+
dependencies:
|
1844 |
+
findup-sync "^2.0.0"
|
1845 |
+
micromatch "^3.0.4"
|
1846 |
+
resolve "^1.4.0"
|
1847 |
+
stack-trace "0.0.10"
|
1848 |
|
1849 |
mem@^1.1.0:
|
1850 |
version "1.1.0"
|
1851 |
resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
|
1852 |
+
integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=
|
1853 |
dependencies:
|
1854 |
mimic-fn "^1.0.0"
|
1855 |
|
1856 |
messageformat-parser@^1.1.0:
|
1857 |
version "1.1.0"
|
1858 |
resolved "https://registry.yarnpkg.com/messageformat-parser/-/messageformat-parser-1.1.0.tgz#13ba2250a76bbde8e0fca0dbb3475f95c594a90a"
|
1859 |
+
integrity sha512-Hwem6G3MsKDLS1FtBRGIs8T50P1Q00r3srS6QJePCFbad9fq0nYxwf3rnU2BreApRGhmpKMV7oZI06Sy1c9TPA==
|
1860 |
|
1861 |
messageformat@^1.0.2:
|
1862 |
version "1.1.1"
|
1863 |
resolved "https://registry.yarnpkg.com/messageformat/-/messageformat-1.1.1.tgz#ceaa2e6c86929d4807058275a7372b1bd963bdf6"
|
1864 |
+
integrity sha512-Q0uXcDtF5pEZsVSyhzDOGgZZK6ykN79VY9CwU3Nv0gsqx62BjdJW0MT+63UkHQ4exe3HE33ZlxR2/YwoJarRTg==
|
1865 |
dependencies:
|
1866 |
glob "~7.0.6"
|
1867 |
make-plural "^4.1.1"
|
1869 |
nopt "~3.0.6"
|
1870 |
reserved-words "^0.1.2"
|
1871 |
|
1872 |
+
micromatch@^3.0.4:
|
1873 |
+
version "3.1.10"
|
1874 |
+
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
|
1875 |
+
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
|
1876 |
+
dependencies:
|
1877 |
+
arr-diff "^4.0.0"
|
1878 |
+
array-unique "^0.3.2"
|
1879 |
+
braces "^2.3.1"
|
1880 |
+
define-property "^2.0.2"
|
1881 |
+
extend-shallow "^3.0.2"
|
1882 |
+
extglob "^2.0.4"
|
1883 |
+
fragment-cache "^0.2.1"
|
1884 |
+
kind-of "^6.0.2"
|
1885 |
+
nanomatch "^1.2.9"
|
1886 |
+
object.pick "^1.3.0"
|
1887 |
+
regex-not "^1.0.0"
|
1888 |
+
snapdragon "^0.8.1"
|
1889 |
+
to-regex "^3.0.2"
|
1890 |
+
|
1891 |
mimic-fn@^1.0.0:
|
1892 |
version "1.2.0"
|
1893 |
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
|
1894 |
+
integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
|
1895 |
+
|
1896 |
+
minimatch@^2.0.1:
|
1897 |
+
version "2.0.10"
|
1898 |
+
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7"
|
1899 |
+
integrity sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=
|
1900 |
+
dependencies:
|
1901 |
+
brace-expansion "^1.0.0"
|
1902 |
|
1903 |
minimatch@^3.0.2, minimatch@^3.0.4:
|
1904 |
version "3.0.4"
|
1905 |
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
1906 |
+
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
1907 |
dependencies:
|
1908 |
brace-expansion "^1.1.7"
|
1909 |
|
1910 |
+
minimatch@~0.2.11:
|
1911 |
+
version "0.2.14"
|
1912 |
+
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a"
|
1913 |
+
integrity sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=
|
1914 |
+
dependencies:
|
1915 |
+
lru-cache "2"
|
1916 |
+
sigmund "~1.0.0"
|
1917 |
+
|
1918 |
minimist@0.0.8:
|
1919 |
version "0.0.8"
|
1920 |
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
|
1921 |
+
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
|
1922 |
|
1923 |
+
minimist@^1.1.0, minimist@^1.2.0:
|
1924 |
version "1.2.0"
|
1925 |
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
1926 |
+
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
|
1927 |
+
|
1928 |
+
mixin-deep@^1.2.0:
|
1929 |
+
version "1.3.1"
|
1930 |
+
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
|
1931 |
+
integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
|
1932 |
+
dependencies:
|
1933 |
+
for-in "^1.0.2"
|
1934 |
+
is-extendable "^1.0.1"
|
1935 |
|
1936 |
+
mkdirp@^0.5.0, mkdirp@^0.5.1:
|
1937 |
version "0.5.1"
|
1938 |
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
|
1939 |
+
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
|
1940 |
dependencies:
|
1941 |
minimist "0.0.8"
|
1942 |
|
1943 |
ms@2.0.0:
|
1944 |
version "2.0.0"
|
1945 |
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
1946 |
+
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
|
1947 |
+
|
1948 |
+
ms@^2.1.1:
|
1949 |
+
version "2.1.1"
|
1950 |
+
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
1951 |
+
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
|
1952 |
+
|
1953 |
+
multipipe@^0.1.2:
|
1954 |
+
version "0.1.2"
|
1955 |
+
resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
|
1956 |
+
integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=
|
1957 |
+
dependencies:
|
1958 |
+
duplexer2 "0.0.2"
|
1959 |
+
|
1960 |
+
mute-stdout@^1.0.0:
|
1961 |
+
version "1.0.1"
|
1962 |
+
resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331"
|
1963 |
+
integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==
|
1964 |
|
1965 |
mute-stream@0.0.7:
|
1966 |
version "0.0.7"
|
1967 |
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
|
1968 |
+
integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
|
1969 |
+
|
1970 |
+
nanomatch@^1.2.9:
|
1971 |
+
version "1.2.13"
|
1972 |
+
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
|
1973 |
+
integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
|
1974 |
+
dependencies:
|
1975 |
+
arr-diff "^4.0.0"
|
1976 |
+
array-unique "^0.3.2"
|
1977 |
+
define-property "^2.0.2"
|
1978 |
+
extend-shallow "^3.0.2"
|
1979 |
+
fragment-cache "^0.2.1"
|
1980 |
+
is-windows "^1.0.2"
|
1981 |
+
kind-of "^6.0.2"
|
1982 |
+
object.pick "^1.3.0"
|
1983 |
+
regex-not "^1.0.0"
|
1984 |
+
snapdragon "^0.8.1"
|
1985 |
+
to-regex "^3.0.1"
|
1986 |
+
|
1987 |
+
natives@^1.1.0:
|
1988 |
+
version "1.1.6"
|
1989 |
+
resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb"
|
1990 |
+
integrity sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==
|
1991 |
|
1992 |
natural-compare@^1.4.0:
|
1993 |
version "1.4.0"
|
1994 |
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
1995 |
+
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
|
1996 |
+
|
1997 |
+
next-tick@1:
|
1998 |
+
version "1.0.0"
|
1999 |
+
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
|
2000 |
+
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
|
2001 |
|
2002 |
nopt@~3.0.6:
|
2003 |
version "3.0.6"
|
2004 |
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
|
2005 |
+
integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
|
2006 |
dependencies:
|
2007 |
abbrev "1"
|
2008 |
|
2009 |
+
normalize-package-data@^2.3.2:
|
2010 |
+
version "2.4.0"
|
2011 |
+
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
|
2012 |
+
integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==
|
2013 |
+
dependencies:
|
2014 |
+
hosted-git-info "^2.1.4"
|
2015 |
+
is-builtin-module "^1.0.0"
|
2016 |
+
semver "2 || 3 || 4 || 5"
|
2017 |
+
validate-npm-package-license "^3.0.1"
|
2018 |
+
|
2019 |
npm-run-path@^2.0.0:
|
2020 |
version "2.0.2"
|
2021 |
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
|
2022 |
+
integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
|
2023 |
dependencies:
|
2024 |
path-key "^2.0.0"
|
2025 |
|
2026 |
number-is-nan@^1.0.0:
|
2027 |
version "1.0.1"
|
2028 |
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
2029 |
+
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
|
2030 |
+
|
2031 |
+
object-assign@^3.0.0:
|
2032 |
+
version "3.0.0"
|
2033 |
+
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
|
2034 |
+
integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=
|
2035 |
|
2036 |
object-assign@^4.0.1:
|
2037 |
version "4.1.1"
|
2038 |
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
2039 |
+
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
|
2040 |
+
|
2041 |
+
object-copy@^0.1.0:
|
2042 |
+
version "0.1.0"
|
2043 |
+
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
|
2044 |
+
integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
|
2045 |
+
dependencies:
|
2046 |
+
copy-descriptor "^0.1.0"
|
2047 |
+
define-property "^0.2.5"
|
2048 |
+
kind-of "^3.0.3"
|
2049 |
+
|
2050 |
+
object-visit@^1.0.0:
|
2051 |
+
version "1.0.1"
|
2052 |
+
resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
|
2053 |
+
integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
|
2054 |
+
dependencies:
|
2055 |
+
isobject "^3.0.0"
|
2056 |
+
|
2057 |
+
object.defaults@^1.1.0:
|
2058 |
+
version "1.1.0"
|
2059 |
+
resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf"
|
2060 |
+
integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=
|
2061 |
+
dependencies:
|
2062 |
+
array-each "^1.0.1"
|
2063 |
+
array-slice "^1.0.0"
|
2064 |
+
for-own "^1.0.0"
|
2065 |
+
isobject "^3.0.0"
|
2066 |
+
|
2067 |
+
object.map@^1.0.0:
|
2068 |
+
version "1.0.1"
|
2069 |
+
resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37"
|
2070 |
+
integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=
|
2071 |
+
dependencies:
|
2072 |
+
for-own "^1.0.0"
|
2073 |
+
make-iterator "^1.0.0"
|
2074 |
+
|
2075 |
+
object.pick@^1.2.0, object.pick@^1.3.0:
|
2076 |
+
version "1.3.0"
|
2077 |
+
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
|
2078 |
+
integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
|
2079 |
+
dependencies:
|
2080 |
+
isobject "^3.0.1"
|
2081 |
|
2082 |
once@^1.3.0:
|
2083 |
version "1.4.0"
|
2084 |
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
2085 |
+
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
|
2086 |
+
dependencies:
|
2087 |
+
wrappy "1"
|
2088 |
+
|
2089 |
+
once@~1.3.0:
|
2090 |
+
version "1.3.3"
|
2091 |
+
resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
|
2092 |
+
integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
|
2093 |
dependencies:
|
2094 |
wrappy "1"
|
2095 |
|
2096 |
onetime@^2.0.0:
|
2097 |
version "2.0.1"
|
2098 |
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
|
2099 |
+
integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
|
2100 |
dependencies:
|
2101 |
mimic-fn "^1.0.0"
|
2102 |
|
2103 |
optionator@^0.8.2:
|
2104 |
version "0.8.2"
|
2105 |
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
|
2106 |
+
integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
|
2107 |
dependencies:
|
2108 |
deep-is "~0.1.3"
|
2109 |
fast-levenshtein "~2.0.4"
|
2112 |
type-check "~0.3.2"
|
2113 |
wordwrap "~1.0.0"
|
2114 |
|
2115 |
+
orchestrator@^0.3.0:
|
2116 |
+
version "0.3.8"
|
2117 |
+
resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e"
|
2118 |
+
integrity sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=
|
2119 |
+
dependencies:
|
2120 |
+
end-of-stream "~0.1.5"
|
2121 |
+
sequencify "~0.0.7"
|
2122 |
+
stream-consume "~0.1.0"
|
2123 |
+
|
2124 |
+
ordered-read-streams@^0.1.0:
|
2125 |
+
version "0.1.0"
|
2126 |
+
resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126"
|
2127 |
+
integrity sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=
|
2128 |
+
|
2129 |
+
os-homedir@^1.0.0:
|
2130 |
+
version "1.0.2"
|
2131 |
+
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
|
2132 |
+
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
|
2133 |
+
|
2134 |
+
os-locale@^1.4.0:
|
2135 |
+
version "1.4.0"
|
2136 |
+
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
|
2137 |
+
integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
|
2138 |
+
dependencies:
|
2139 |
+
lcid "^1.0.0"
|
2140 |
+
|
2141 |
os-locale@^2.0.0:
|
2142 |
version "2.1.0"
|
2143 |
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
|
2144 |
+
integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==
|
2145 |
dependencies:
|
2146 |
execa "^0.7.0"
|
2147 |
lcid "^1.0.0"
|
2150 |
os-tmpdir@~1.0.2:
|
2151 |
version "1.0.2"
|
2152 |
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
|
2153 |
+
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
|
2154 |
|
2155 |
p-finally@^1.0.0:
|
2156 |
version "1.0.0"
|
2157 |
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
|
2158 |
+
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
|
2159 |
|
2160 |
p-limit@^1.1.0:
|
2161 |
+
version "1.3.0"
|
2162 |
+
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
|
2163 |
+
integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
|
2164 |
dependencies:
|
2165 |
p-try "^1.0.0"
|
2166 |
|
2167 |
p-locate@^2.0.0:
|
2168 |
version "2.0.0"
|
2169 |
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
|
2170 |
+
integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
|
2171 |
dependencies:
|
2172 |
p-limit "^1.1.0"
|
2173 |
|
2174 |
p-try@^1.0.0:
|
2175 |
version "1.0.0"
|
2176 |
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
|
2177 |
+
integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
|
2178 |
+
|
2179 |
+
parse-filepath@^1.0.1:
|
2180 |
+
version "1.0.2"
|
2181 |
+
resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891"
|
2182 |
+
integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=
|
2183 |
+
dependencies:
|
2184 |
+
is-absolute "^1.0.0"
|
2185 |
+
map-cache "^0.2.0"
|
2186 |
+
path-root "^0.1.1"
|
2187 |
+
|
2188 |
+
parse-json@^2.2.0:
|
2189 |
+
version "2.2.0"
|
2190 |
+
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
|
2191 |
+
integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
|
2192 |
+
dependencies:
|
2193 |
+
error-ex "^1.2.0"
|
2194 |
+
|
2195 |
+
parse-passwd@^1.0.0:
|
2196 |
+
version "1.0.0"
|
2197 |
+
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
|
2198 |
+
integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
|
2199 |
+
|
2200 |
+
pascalcase@^0.1.1:
|
2201 |
+
version "0.1.1"
|
2202 |
+
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
|
2203 |
+
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
|
2204 |
+
|
2205 |
+
path-exists@^2.0.0:
|
2206 |
+
version "2.1.0"
|
2207 |
+
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
|
2208 |
+
integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
|
2209 |
+
dependencies:
|
2210 |
+
pinkie-promise "^2.0.0"
|
2211 |
|
2212 |
path-exists@^3.0.0:
|
2213 |
version "3.0.0"
|
2214 |
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
|
2215 |
+
integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
|
2216 |
|
2217 |
path-is-absolute@^1.0.0:
|
2218 |
version "1.0.1"
|
2219 |
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
2220 |
+
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
2221 |
|
2222 |
+
path-is-inside@^1.0.2:
|
2223 |
version "1.0.2"
|
2224 |
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
|
2225 |
+
integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=
|
2226 |
|
2227 |
path-key@^2.0.0:
|
2228 |
version "2.0.1"
|
2229 |
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
|
2230 |
+
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
|
2231 |
+
|
2232 |
+
path-parse@^1.0.5:
|
2233 |
+
version "1.0.6"
|
2234 |
+
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
|
2235 |
+
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
|
2236 |
+
|
2237 |
+
path-root-regex@^0.1.0:
|
2238 |
+
version "0.1.2"
|
2239 |
+
resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d"
|
2240 |
+
integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=
|
2241 |
+
|
2242 |
+
path-root@^0.1.1:
|
2243 |
+
version "0.1.1"
|
2244 |
+
resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7"
|
2245 |
+
integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=
|
2246 |
+
dependencies:
|
2247 |
+
path-root-regex "^0.1.0"
|
2248 |
+
|
2249 |
+
path-type@^1.0.0:
|
2250 |
+
version "1.1.0"
|
2251 |
+
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
|
2252 |
+
integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
|
2253 |
+
dependencies:
|
2254 |
+
graceful-fs "^4.1.2"
|
2255 |
+
pify "^2.0.0"
|
2256 |
+
pinkie-promise "^2.0.0"
|
2257 |
|
2258 |
pify@^2.0.0:
|
2259 |
version "2.3.0"
|
2260 |
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
2261 |
+
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
|
2262 |
|
2263 |
pinkie-promise@^2.0.0:
|
2264 |
version "2.0.1"
|
2265 |
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
|
2266 |
+
integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
|
2267 |
dependencies:
|
2268 |
pinkie "^2.0.0"
|
2269 |
|
2270 |
pinkie@^2.0.0:
|
2271 |
version "2.0.4"
|
2272 |
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
|
2273 |
+
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
|
2274 |
|
2275 |
pluralize@^7.0.0:
|
2276 |
version "7.0.0"
|
2277 |
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
|
2278 |
+
integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==
|
2279 |
+
|
2280 |
+
posix-character-classes@^0.1.0:
|
2281 |
+
version "0.1.1"
|
2282 |
+
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
|
2283 |
+
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
|
2284 |
|
2285 |
prelude-ls@~1.1.2:
|
2286 |
version "1.1.2"
|
2287 |
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
|
2288 |
+
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
|
2289 |
|
2290 |
prettier-eslint-cli@^4.7.1:
|
2291 |
version "4.7.1"
|
2292 |
resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-4.7.1.tgz#3d103c494baa4e80b99ad53e2b9db7620101859f"
|
2293 |
+
integrity sha512-hQbsGaEVz97oBBcKdsJ46khv0kOGkMyWrXzcFOXW6X8UuetZ/j0yDJkNJgUTVc6PVFbbzBXk+qgd5vos9qzXPQ==
|
2294 |
dependencies:
|
2295 |
arrify "^1.0.1"
|
2296 |
babel-runtime "^6.23.0"
|
2312 |
yargs "10.0.3"
|
2313 |
|
2314 |
prettier-eslint@^8.5.0, prettier-eslint@^8.8.1:
|
2315 |
+
version "8.8.2"
|
2316 |
+
resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.8.2.tgz#fcb29a48ab4524e234680797fe70e9d136ccaf0b"
|
2317 |
+
integrity sha512-2UzApPuxi2yRoyMlXMazgR6UcH9DKJhNgCviIwY3ixZ9THWSSrUww5vkiZ3C48WvpFl1M1y/oU63deSy1puWEA==
|
2318 |
dependencies:
|
2319 |
babel-runtime "^6.26.0"
|
2320 |
common-tags "^1.4.0"
|
2324 |
lodash.merge "^4.6.0"
|
2325 |
loglevel-colored-level-prefix "^1.0.0"
|
2326 |
prettier "^1.7.0"
|
2327 |
+
pretty-format "^23.0.1"
|
2328 |
require-relative "^0.8.7"
|
2329 |
typescript "^2.5.1"
|
2330 |
+
typescript-eslint-parser "^16.0.0"
|
2331 |
+
vue-eslint-parser "^2.0.2"
|
2332 |
|
2333 |
prettier@^1.7.0:
|
2334 |
+
version "1.15.2"
|
2335 |
+
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.2.tgz#d31abe22afa4351efa14c7f8b94b58bb7452205e"
|
2336 |
+
integrity sha512-YgPLFFA0CdKL4Eg2IHtUSjzj/BWgszDHiNQAe0VAIBse34148whfdzLagRL+QiKS+YfK5ftB6X4v/MBw8yCoug==
|
2337 |
|
2338 |
+
pretty-format@^23.0.1:
|
2339 |
+
version "23.6.0"
|
2340 |
+
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760"
|
2341 |
+
integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==
|
2342 |
dependencies:
|
2343 |
ansi-regex "^3.0.0"
|
2344 |
ansi-styles "^3.2.0"
|
2345 |
|
2346 |
+
pretty-hrtime@^1.0.0:
|
2347 |
+
version "1.0.3"
|
2348 |
+
resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
|
2349 |
+
integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=
|
2350 |
+
|
2351 |
process-nextick-args@~2.0.0:
|
2352 |
version "2.0.0"
|
2353 |
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
|
2354 |
+
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
|
2355 |
|
2356 |
progress@^2.0.0:
|
2357 |
+
version "2.0.1"
|
2358 |
+
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.1.tgz#c9242169342b1c29d275889c95734621b1952e31"
|
2359 |
+
integrity sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==
|
2360 |
|
2361 |
pseudomap@^1.0.2:
|
2362 |
version "1.0.2"
|
2363 |
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
|
2364 |
+
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
|
2365 |
|
2366 |
quick-lru@^1.0.0:
|
2367 |
version "1.1.0"
|
2368 |
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
|
2369 |
+
integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=
|
2370 |
+
|
2371 |
+
read-pkg-up@^1.0.1:
|
2372 |
+
version "1.0.1"
|
2373 |
+
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
2374 |
+
integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
|
2375 |
+
dependencies:
|
2376 |
+
find-up "^1.0.0"
|
2377 |
+
read-pkg "^1.0.0"
|
2378 |
|
2379 |
+
read-pkg@^1.0.0:
|
2380 |
+
version "1.1.0"
|
2381 |
+
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
|
2382 |
+
integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
|
2383 |
+
dependencies:
|
2384 |
+
load-json-file "^1.0.0"
|
2385 |
+
normalize-package-data "^2.3.2"
|
2386 |
+
path-type "^1.0.0"
|
2387 |
+
|
2388 |
+
"readable-stream@>=1.0.33-1 <1.1.0-0":
|
2389 |
+
version "1.0.34"
|
2390 |
+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
|
2391 |
+
integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
|
2392 |
+
dependencies:
|
2393 |
+
core-util-is "~1.0.0"
|
2394 |
+
inherits "~2.0.1"
|
2395 |
+
isarray "0.0.1"
|
2396 |
+
string_decoder "~0.10.x"
|
2397 |
+
|
2398 |
+
readable-stream@^2.2.2, readable-stream@~2.3.6:
|
2399 |
+
version "2.3.6"
|
2400 |
+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
|
2401 |
+
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
|
2402 |
dependencies:
|
2403 |
core-util-is "~1.0.0"
|
2404 |
inherits "~2.0.3"
|
2405 |
isarray "~1.0.0"
|
2406 |
process-nextick-args "~2.0.0"
|
2407 |
safe-buffer "~5.1.1"
|
2408 |
+
string_decoder "~1.1.1"
|
2409 |
util-deprecate "~1.0.1"
|
2410 |
|
2411 |
+
readable-stream@^3.0.6:
|
2412 |
+
version "3.0.6"
|
2413 |
+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.0.6.tgz#351302e4c68b5abd6a2ed55376a7f9a25be3057a"
|
2414 |
+
integrity sha512-9E1oLoOWfhSXHGv6QlwXJim7uNzd9EVlWK+21tCU9Ju/kR0/p2AZYPz4qSchgO8PlLIH4FpZYfzwS+rEksZjIg==
|
2415 |
+
dependencies:
|
2416 |
+
inherits "^2.0.3"
|
2417 |
+
string_decoder "^1.1.1"
|
2418 |
+
util-deprecate "^1.0.1"
|
2419 |
+
|
2420 |
+
readable-stream@~1.1.9:
|
2421 |
+
version "1.1.14"
|
2422 |
+
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
|
2423 |
+
integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
|
2424 |
+
dependencies:
|
2425 |
+
core-util-is "~1.0.0"
|
2426 |
+
inherits "~2.0.1"
|
2427 |
+
isarray "0.0.1"
|
2428 |
+
string_decoder "~0.10.x"
|
2429 |
+
|
2430 |
+
rechoir@^0.6.2:
|
2431 |
+
version "0.6.2"
|
2432 |
+
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
|
2433 |
+
integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=
|
2434 |
+
dependencies:
|
2435 |
+
resolve "^1.1.6"
|
2436 |
+
|
2437 |
regenerator-runtime@^0.11.0:
|
2438 |
version "0.11.1"
|
2439 |
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
|
2440 |
+
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
|
2441 |
+
|
2442 |
+
regex-not@^1.0.0, regex-not@^1.0.2:
|
2443 |
+
version "1.0.2"
|
2444 |
+
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
|
2445 |
+
integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
|
2446 |
+
dependencies:
|
2447 |
+
extend-shallow "^3.0.2"
|
2448 |
+
safe-regex "^1.1.0"
|
2449 |
|
2450 |
regexpp@^1.0.1:
|
2451 |
version "1.1.0"
|
2452 |
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab"
|
2453 |
+
integrity sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==
|
2454 |
+
|
2455 |
+
remove-trailing-separator@^1.1.0:
|
2456 |
+
version "1.1.0"
|
2457 |
+
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
|
2458 |
+
integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
|
2459 |
+
|
2460 |
+
repeat-element@^1.1.2:
|
2461 |
+
version "1.1.3"
|
2462 |
+
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
|
2463 |
+
integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
|
2464 |
+
|
2465 |
+
repeat-string@^1.6.1:
|
2466 |
+
version "1.6.1"
|
2467 |
+
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
|
2468 |
+
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
|
2469 |
+
|
2470 |
+
replace-ext@0.0.1:
|
2471 |
+
version "0.0.1"
|
2472 |
+
resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
|
2473 |
+
integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=
|
2474 |
+
|
2475 |
+
replace-homedir@^1.0.0:
|
2476 |
+
version "1.0.0"
|
2477 |
+
resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c"
|
2478 |
+
integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=
|
2479 |
+
dependencies:
|
2480 |
+
homedir-polyfill "^1.0.1"
|
2481 |
+
is-absolute "^1.0.0"
|
2482 |
+
remove-trailing-separator "^1.1.0"
|
2483 |
|
2484 |
require-directory@^2.1.1:
|
2485 |
version "2.1.1"
|
2486 |
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
|
2487 |
+
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
|
2488 |
|
2489 |
require-main-filename@^1.0.1:
|
2490 |
version "1.0.1"
|
2491 |
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
|
2492 |
+
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
|
2493 |
|
2494 |
require-relative@^0.8.7:
|
2495 |
version "0.8.7"
|
2496 |
resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
|
2497 |
+
integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=
|
2498 |
|
2499 |
require-uncached@^1.0.3:
|
2500 |
version "1.0.3"
|
2501 |
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
|
2502 |
+
integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=
|
2503 |
dependencies:
|
2504 |
caller-path "^0.1.0"
|
2505 |
resolve-from "^1.0.0"
|
2507 |
reserved-words@^0.1.2:
|
2508 |
version "0.1.2"
|
2509 |
resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1"
|
2510 |
+
integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=
|
2511 |
+
|
2512 |
+
resolve-dir@^1.0.0, resolve-dir@^1.0.1:
|
2513 |
+
version "1.0.1"
|
2514 |
+
resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
|
2515 |
+
integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
|
2516 |
+
dependencies:
|
2517 |
+
expand-tilde "^2.0.0"
|
2518 |
+
global-modules "^1.0.0"
|
2519 |
|
2520 |
resolve-from@^1.0.0:
|
2521 |
version "1.0.1"
|
2522 |
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
|
2523 |
+
integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=
|
2524 |
+
|
2525 |
+
resolve-url@^0.2.1:
|
2526 |
+
version "0.2.1"
|
2527 |
+
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
|
2528 |
+
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
|
2529 |
+
|
2530 |
+
resolve@^1.1.6, resolve@^1.1.7, resolve@^1.4.0:
|
2531 |
+
version "1.8.1"
|
2532 |
+
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
|
2533 |
+
integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==
|
2534 |
+
dependencies:
|
2535 |
+
path-parse "^1.0.5"
|
2536 |
|
2537 |
restore-cursor@^2.0.0:
|
2538 |
version "2.0.0"
|
2539 |
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
|
2540 |
+
integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
|
2541 |
dependencies:
|
2542 |
onetime "^2.0.0"
|
2543 |
signal-exit "^3.0.2"
|
2544 |
|
2545 |
+
ret@~0.1.10:
|
2546 |
+
version "0.1.15"
|
2547 |
+
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
|
2548 |
+
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
|
2549 |
+
|
2550 |
+
rimraf@~2.6.2:
|
2551 |
version "2.6.2"
|
2552 |
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
|
2553 |
+
integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
|
2554 |
dependencies:
|
2555 |
glob "^7.0.5"
|
2556 |
|
2557 |
run-async@^2.2.0:
|
2558 |
version "2.3.0"
|
2559 |
resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
|
2560 |
+
integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA=
|
2561 |
dependencies:
|
2562 |
is-promise "^2.1.0"
|
2563 |
|
2564 |
rx-lite-aggregates@^4.0.8:
|
2565 |
version "4.0.8"
|
2566 |
resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
|
2567 |
+
integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=
|
2568 |
dependencies:
|
2569 |
rx-lite "*"
|
2570 |
|
2571 |
rx-lite@*, rx-lite@^4.0.8:
|
2572 |
version "4.0.8"
|
2573 |
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
|
2574 |
+
integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=
|
2575 |
|
2576 |
rxjs@^5.3.0:
|
2577 |
+
version "5.5.12"
|
2578 |
+
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc"
|
2579 |
+
integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==
|
2580 |
dependencies:
|
2581 |
symbol-observable "1.0.1"
|
2582 |
|
2583 |
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
2584 |
+
version "5.1.2"
|
2585 |
+
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
2586 |
+
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
2587 |
+
|
2588 |
+
safe-regex@^1.1.0:
|
2589 |
+
version "1.1.0"
|
2590 |
+
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
|
2591 |
+
integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
|
2592 |
+
dependencies:
|
2593 |
+
ret "~0.1.10"
|
2594 |
|
2595 |
+
"safer-buffer@>= 2.1.2 < 3":
|
2596 |
+
version "2.1.2"
|
2597 |
+
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
2598 |
+
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
2599 |
+
|
2600 |
+
semver-greatest-satisfied-range@^1.1.0:
|
2601 |
+
version "1.1.0"
|
2602 |
+
resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b"
|
2603 |
+
integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els=
|
2604 |
+
dependencies:
|
2605 |
+
sver-compat "^1.5.0"
|
2606 |
|
2607 |
+
"semver@2 || 3 || 4 || 5", semver@^5.3.0:
|
2608 |
+
version "5.6.0"
|
2609 |
+
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
|
2610 |
+
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
|
2611 |
+
|
2612 |
+
semver@5.5.0:
|
2613 |
version "5.5.0"
|
2614 |
resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab"
|
2615 |
+
integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==
|
2616 |
+
|
2617 |
+
semver@^4.1.0:
|
2618 |
+
version "4.3.6"
|
2619 |
+
resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
|
2620 |
+
integrity sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=
|
2621 |
+
|
2622 |
+
sequencify@~0.0.7:
|
2623 |
+
version "0.0.7"
|
2624 |
+
resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c"
|
2625 |
+
integrity sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=
|
2626 |
|
2627 |
set-blocking@^2.0.0:
|
2628 |
version "2.0.0"
|
2629 |
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
2630 |
+
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
2631 |
+
|
2632 |
+
set-value@^0.4.3:
|
2633 |
+
version "0.4.3"
|
2634 |
+
resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
|
2635 |
+
integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
|
2636 |
+
dependencies:
|
2637 |
+
extend-shallow "^2.0.1"
|
2638 |
+
is-extendable "^0.1.1"
|
2639 |
+
is-plain-object "^2.0.1"
|
2640 |
+
to-object-path "^0.3.0"
|
2641 |
+
|
2642 |
+
set-value@^2.0.0:
|
2643 |
+
version "2.0.0"
|
2644 |
+
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
|
2645 |
+
integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
|
2646 |
+
dependencies:
|
2647 |
+
extend-shallow "^2.0.1"
|
2648 |
+
is-extendable "^0.1.1"
|
2649 |
+
is-plain-object "^2.0.3"
|
2650 |
+
split-string "^3.0.1"
|
2651 |
|
2652 |
shebang-command@^1.2.0:
|
2653 |
version "1.2.0"
|
2654 |
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
|
2655 |
+
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
|
2656 |
dependencies:
|
2657 |
shebang-regex "^1.0.0"
|
2658 |
|
2659 |
shebang-regex@^1.0.0:
|
2660 |
version "1.0.0"
|
2661 |
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
|
2662 |
+
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
|
2663 |
+
|
2664 |
+
sigmund@~1.0.0:
|
2665 |
+
version "1.0.1"
|
2666 |
+
resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
|
2667 |
+
integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
|
2668 |
|
2669 |
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
2670 |
version "3.0.2"
|
2671 |
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
2672 |
+
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
|
2673 |
|
2674 |
slice-ansi@1.0.0:
|
2675 |
version "1.0.0"
|
2676 |
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
|
2677 |
+
integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==
|
2678 |
dependencies:
|
2679 |
is-fullwidth-code-point "^2.0.0"
|
2680 |
|
2681 |
+
snapdragon-node@^2.0.1:
|
2682 |
+
version "2.1.1"
|
2683 |
+
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
2684 |
+
integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
|
2685 |
+
dependencies:
|
2686 |
+
define-property "^1.0.0"
|
2687 |
+
isobject "^3.0.0"
|
2688 |
+
snapdragon-util "^3.0.1"
|
2689 |
+
|
2690 |
+
snapdragon-util@^3.0.1:
|
2691 |
+
version "3.0.1"
|
2692 |
+
resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
|
2693 |
+
integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
|
2694 |
+
dependencies:
|
2695 |
+
kind-of "^3.2.0"
|
2696 |
+
|
2697 |
+
snapdragon@^0.8.1:
|
2698 |
+
version "0.8.2"
|
2699 |
+
resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
|
2700 |
+
integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
|
2701 |
+
dependencies:
|
2702 |
+
base "^0.11.1"
|
2703 |
+
debug "^2.2.0"
|
2704 |
+
define-property "^0.2.5"
|
2705 |
+
extend-shallow "^2.0.1"
|
2706 |
+
map-cache "^0.2.2"
|
2707 |
+
source-map "^0.5.6"
|
2708 |
+
source-map-resolve "^0.5.0"
|
2709 |
+
use "^3.1.0"
|
2710 |
+
|
2711 |
+
source-map-resolve@^0.5.0:
|
2712 |
+
version "0.5.2"
|
2713 |
+
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
|
2714 |
+
integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
|
2715 |
+
dependencies:
|
2716 |
+
atob "^2.1.1"
|
2717 |
+
decode-uri-component "^0.2.0"
|
2718 |
+
resolve-url "^0.2.1"
|
2719 |
+
source-map-url "^0.4.0"
|
2720 |
+
urix "^0.1.0"
|
2721 |
+
|
2722 |
+
source-map-url@^0.4.0:
|
2723 |
+
version "0.4.0"
|
2724 |
+
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
|
2725 |
+
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
|
2726 |
+
|
2727 |
+
source-map@^0.5.6:
|
2728 |
+
version "0.5.7"
|
2729 |
+
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
2730 |
+
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
|
2731 |
+
|
2732 |
+
sparkles@^1.0.0:
|
2733 |
+
version "1.0.1"
|
2734 |
+
resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c"
|
2735 |
+
integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==
|
2736 |
+
|
2737 |
+
spdx-correct@^3.0.0:
|
2738 |
+
version "3.0.2"
|
2739 |
+
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e"
|
2740 |
+
integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==
|
2741 |
+
dependencies:
|
2742 |
+
spdx-expression-parse "^3.0.0"
|
2743 |
+
spdx-license-ids "^3.0.0"
|
2744 |
+
|
2745 |
+
spdx-exceptions@^2.1.0:
|
2746 |
+
version "2.2.0"
|
2747 |
+
resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
|
2748 |
+
integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
|
2749 |
+
|
2750 |
+
spdx-expression-parse@^3.0.0:
|
2751 |
+
version "3.0.0"
|
2752 |
+
resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
|
2753 |
+
integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
|
2754 |
+
dependencies:
|
2755 |
+
spdx-exceptions "^2.1.0"
|
2756 |
+
spdx-license-ids "^3.0.0"
|
2757 |
+
|
2758 |
+
spdx-license-ids@^3.0.0:
|
2759 |
+
version "3.0.2"
|
2760 |
+
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz#a59efc09784c2a5bada13cfeaf5c75dd214044d2"
|
2761 |
+
integrity sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==
|
2762 |
+
|
2763 |
+
split-string@^3.0.1, split-string@^3.0.2:
|
2764 |
+
version "3.1.0"
|
2765 |
+
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
|
2766 |
+
integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
|
2767 |
+
dependencies:
|
2768 |
+
extend-shallow "^3.0.0"
|
2769 |
+
|
2770 |
sprintf-js@~1.0.2:
|
2771 |
version "1.0.3"
|
2772 |
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
2773 |
+
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
|
2774 |
+
|
2775 |
+
stack-trace@0.0.10:
|
2776 |
+
version "0.0.10"
|
2777 |
+
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
|
2778 |
+
integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=
|
2779 |
+
|
2780 |
+
static-extend@^0.1.1:
|
2781 |
+
version "0.1.2"
|
2782 |
+
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
|
2783 |
+
integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
|
2784 |
+
dependencies:
|
2785 |
+
define-property "^0.2.5"
|
2786 |
+
object-copy "^0.1.0"
|
2787 |
+
|
2788 |
+
stream-consume@~0.1.0:
|
2789 |
+
version "0.1.1"
|
2790 |
+
resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.1.tgz#d3bdb598c2bd0ae82b8cac7ac50b1107a7996c48"
|
2791 |
+
integrity sha512-tNa3hzgkjEP7XbCkbRXe1jpg+ievoa0O4SCFlMOYEscGSS4JJsckGL8swUyAa/ApGU3Ae4t6Honor4HhL+tRyg==
|
2792 |
|
2793 |
+
string-width@^1.0.1, string-width@^1.0.2:
|
2794 |
version "1.0.2"
|
2795 |
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
2796 |
+
integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
|
2797 |
dependencies:
|
2798 |
code-point-at "^1.0.0"
|
2799 |
is-fullwidth-code-point "^1.0.0"
|
2802 |
string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
|
2803 |
version "2.1.1"
|
2804 |
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
|
2805 |
+
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
|
2806 |
dependencies:
|
2807 |
is-fullwidth-code-point "^2.0.0"
|
2808 |
strip-ansi "^4.0.0"
|
2809 |
|
2810 |
+
string_decoder@^1.1.1, string_decoder@~1.1.1:
|
2811 |
+
version "1.1.1"
|
2812 |
+
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
|
2813 |
+
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
|
2814 |
dependencies:
|
2815 |
safe-buffer "~5.1.0"
|
2816 |
|
2817 |
+
string_decoder@~0.10.x:
|
2818 |
+
version "0.10.31"
|
2819 |
+
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
|
2820 |
+
integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
|
2821 |
+
|
2822 |
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
|
2823 |
version "3.0.1"
|
2824 |
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
|
2825 |
+
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
|
2826 |
dependencies:
|
2827 |
ansi-regex "^2.0.0"
|
2828 |
|
2829 |
strip-ansi@^4.0.0:
|
2830 |
version "4.0.0"
|
2831 |
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
|
2832 |
+
integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
|
2833 |
dependencies:
|
2834 |
ansi-regex "^3.0.0"
|
2835 |
|
2836 |
+
strip-bom@^1.0.0:
|
2837 |
+
version "1.0.0"
|
2838 |
+
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794"
|
2839 |
+
integrity sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=
|
2840 |
+
dependencies:
|
2841 |
+
first-chunk-stream "^1.0.0"
|
2842 |
+
is-utf8 "^0.2.0"
|
2843 |
+
|
2844 |
+
strip-bom@^2.0.0:
|
2845 |
+
version "2.0.0"
|
2846 |
+
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
|
2847 |
+
integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
|
2848 |
+
dependencies:
|
2849 |
+
is-utf8 "^0.2.0"
|
2850 |
+
|
2851 |
strip-eof@^1.0.0:
|
2852 |
version "1.0.0"
|
2853 |
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
|
2854 |
+
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
|
2855 |
|
2856 |
strip-json-comments@~2.0.1:
|
2857 |
version "2.0.1"
|
2858 |
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
2859 |
+
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
2860 |
|
2861 |
supports-color@^2.0.0:
|
2862 |
version "2.0.0"
|
2863 |
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
2864 |
+
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
|
2865 |
|
2866 |
supports-color@^4.0.0:
|
2867 |
version "4.5.0"
|
2868 |
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
|
2869 |
+
integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=
|
2870 |
dependencies:
|
2871 |
has-flag "^2.0.0"
|
2872 |
|
2873 |
supports-color@^5.3.0:
|
2874 |
+
version "5.5.0"
|
2875 |
+
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
|
2876 |
+
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
|
2877 |
dependencies:
|
2878 |
has-flag "^3.0.0"
|
2879 |
|
2880 |
+
sver-compat@^1.5.0:
|
2881 |
+
version "1.5.0"
|
2882 |
+
resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8"
|
2883 |
+
integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=
|
2884 |
+
dependencies:
|
2885 |
+
es6-iterator "^2.0.1"
|
2886 |
+
es6-symbol "^3.1.1"
|
2887 |
+
|
2888 |
symbol-observable@1.0.1:
|
2889 |
version "1.0.1"
|
2890 |
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
|
2891 |
+
integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=
|
2892 |
|
2893 |
table@4.0.2:
|
2894 |
version "4.0.2"
|
2895 |
resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36"
|
2896 |
+
integrity sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==
|
2897 |
dependencies:
|
2898 |
ajv "^5.2.3"
|
2899 |
ajv-keywords "^2.1.0"
|
2905 |
text-table@~0.2.0:
|
2906 |
version "0.2.0"
|
2907 |
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
2908 |
+
integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
|
2909 |
+
|
2910 |
+
through2@^0.6.1:
|
2911 |
+
version "0.6.5"
|
2912 |
+
resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48"
|
2913 |
+
integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=
|
2914 |
+
dependencies:
|
2915 |
+
readable-stream ">=1.0.33-1 <1.1.0-0"
|
2916 |
+
xtend ">=4.0.0 <4.1.0-0"
|
2917 |
+
|
2918 |
+
through2@^2.0.0:
|
2919 |
+
version "2.0.5"
|
2920 |
+
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
|
2921 |
+
integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
|
2922 |
+
dependencies:
|
2923 |
+
readable-stream "~2.3.6"
|
2924 |
+
xtend "~4.0.1"
|
2925 |
|
2926 |
through@^2.3.6:
|
2927 |
version "2.3.8"
|
2928 |
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
2929 |
+
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
|
2930 |
+
|
2931 |
+
tildify@^1.0.0:
|
2932 |
+
version "1.2.0"
|
2933 |
+
resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a"
|
2934 |
+
integrity sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=
|
2935 |
+
dependencies:
|
2936 |
+
os-homedir "^1.0.0"
|
2937 |
+
|
2938 |
+
time-stamp@^1.0.0:
|
2939 |
+
version "1.1.0"
|
2940 |
+
resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3"
|
2941 |
+
integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=
|
2942 |
|
2943 |
tmp@^0.0.33:
|
2944 |
version "0.0.33"
|
2945 |
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
|
2946 |
+
integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
|
2947 |
dependencies:
|
2948 |
os-tmpdir "~1.0.2"
|
2949 |
|
2950 |
+
to-object-path@^0.3.0:
|
2951 |
+
version "0.3.0"
|
2952 |
+
resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
|
2953 |
+
integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
|
2954 |
+
dependencies:
|
2955 |
+
kind-of "^3.0.2"
|
2956 |
+
|
2957 |
+
to-regex-range@^2.1.0:
|
2958 |
+
version "2.1.1"
|
2959 |
+
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
|
2960 |
+
integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
|
2961 |
+
dependencies:
|
2962 |
+
is-number "^3.0.0"
|
2963 |
+
repeat-string "^1.6.1"
|
2964 |
+
|
2965 |
+
to-regex@^3.0.1, to-regex@^3.0.2:
|
2966 |
+
version "3.0.2"
|
2967 |
+
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
|
2968 |
+
integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
|
2969 |
+
dependencies:
|
2970 |
+
define-property "^2.0.2"
|
2971 |
+
extend-shallow "^3.0.2"
|
2972 |
+
regex-not "^1.0.2"
|
2973 |
+
safe-regex "^1.1.0"
|
2974 |
+
|
2975 |
type-check@~0.3.2:
|
2976 |
version "0.3.2"
|
2977 |
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
|
2978 |
+
integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
|
2979 |
dependencies:
|
2980 |
prelude-ls "~1.1.2"
|
2981 |
|
2982 |
typedarray@^0.0.6:
|
2983 |
version "0.0.6"
|
2984 |
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
2985 |
+
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
2986 |
|
2987 |
+
typescript-eslint-parser@^16.0.0:
|
2988 |
+
version "16.0.1"
|
2989 |
+
resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-16.0.1.tgz#b40681c7043b222b9772748b700a000b241c031b"
|
2990 |
+
integrity sha512-IKawLTu4A2xN3aN/cPLxvZ0bhxZHILGDKTZWvWNJ3sLNhJ3PjfMEDQmR2VMpdRPrmWOadgWXRwjLBzSA8AGsaQ==
|
2991 |
dependencies:
|
2992 |
lodash.unescape "4.0.1"
|
2993 |
+
semver "5.5.0"
|
2994 |
|
2995 |
typescript@^2.5.1:
|
2996 |
+
version "2.9.2"
|
2997 |
+
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c"
|
2998 |
+
integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==
|
2999 |
|
3000 |
+
unc-path-regex@^0.1.2:
|
3001 |
+
version "0.1.2"
|
3002 |
+
resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
|
3003 |
+
integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo=
|
3004 |
+
|
3005 |
+
union-value@^1.0.0:
|
3006 |
+
version "1.0.0"
|
3007 |
+
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
|
3008 |
+
integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
|
3009 |
+
dependencies:
|
3010 |
+
arr-union "^3.1.0"
|
3011 |
+
get-value "^2.0.6"
|
3012 |
+
is-extendable "^0.1.1"
|
3013 |
+
set-value "^0.4.3"
|
3014 |
+
|
3015 |
+
unique-stream@^1.0.0:
|
3016 |
+
version "1.0.0"
|
3017 |
+
resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b"
|
3018 |
+
integrity sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=
|
3019 |
+
|
3020 |
+
unset-value@^1.0.0:
|
3021 |
+
version "1.0.0"
|
3022 |
+
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
|
3023 |
+
integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
|
3024 |
+
dependencies:
|
3025 |
+
has-value "^0.3.1"
|
3026 |
+
isobject "^3.0.0"
|
3027 |
+
|
3028 |
+
urix@^0.1.0:
|
3029 |
+
version "0.1.0"
|
3030 |
+
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
|
3031 |
+
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
|
3032 |
+
|
3033 |
+
use@^3.1.0:
|
3034 |
+
version "3.1.1"
|
3035 |
+
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
|
3036 |
+
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
|
3037 |
+
|
3038 |
+
user-home@^1.1.1:
|
3039 |
+
version "1.1.1"
|
3040 |
+
resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
|
3041 |
+
integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA=
|
3042 |
+
|
3043 |
+
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
|
3044 |
version "1.0.2"
|
3045 |
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
3046 |
+
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
|
3047 |
+
|
3048 |
+
v8flags@^2.0.2:
|
3049 |
+
version "2.1.1"
|
3050 |
+
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4"
|
3051 |
+
integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=
|
3052 |
+
dependencies:
|
3053 |
+
user-home "^1.1.1"
|
3054 |
+
|
3055 |
+
v8flags@^3.0.1:
|
3056 |
+
version "3.1.1"
|
3057 |
+
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.1.tgz#42259a1461c08397e37fe1d4f1cfb59cad85a053"
|
3058 |
+
integrity sha512-iw/1ViSEaff8NJ3HLyEjawk/8hjJib3E7pvG4pddVXfUg1983s3VGsiClDjhK64MQVDGqc1Q8r18S4VKQZS9EQ==
|
3059 |
+
dependencies:
|
3060 |
+
homedir-polyfill "^1.0.1"
|
3061 |
+
|
3062 |
+
validate-npm-package-license@^3.0.1:
|
3063 |
+
version "3.0.4"
|
3064 |
+
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
|
3065 |
+
integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
|
3066 |
+
dependencies:
|
3067 |
+
spdx-correct "^3.0.0"
|
3068 |
+
spdx-expression-parse "^3.0.0"
|
3069 |
+
|
3070 |
+
vinyl-fs@^0.3.0:
|
3071 |
+
version "0.3.14"
|
3072 |
+
resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6"
|
3073 |
+
integrity sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=
|
3074 |
+
dependencies:
|
3075 |
+
defaults "^1.0.0"
|
3076 |
+
glob-stream "^3.1.5"
|
3077 |
+
glob-watcher "^0.0.6"
|
3078 |
+
graceful-fs "^3.0.0"
|
3079 |
+
mkdirp "^0.5.0"
|
3080 |
+
strip-bom "^1.0.0"
|
3081 |
+
through2 "^0.6.1"
|
3082 |
+
vinyl "^0.4.0"
|
3083 |
+
|
3084 |
+
vinyl@^0.4.0:
|
3085 |
+
version "0.4.6"
|
3086 |
+
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847"
|
3087 |
+
integrity sha1-LzVsh6VQolVGHza76ypbqL94SEc=
|
3088 |
+
dependencies:
|
3089 |
+
clone "^0.2.0"
|
3090 |
+
clone-stats "^0.0.1"
|
3091 |
+
|
3092 |
+
vinyl@^0.5.0:
|
3093 |
+
version "0.5.3"
|
3094 |
+
resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde"
|
3095 |
+
integrity sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=
|
3096 |
+
dependencies:
|
3097 |
+
clone "^1.0.0"
|
3098 |
+
clone-stats "^0.0.1"
|
3099 |
+
replace-ext "0.0.1"
|
3100 |
+
|
3101 |
+
vue-eslint-parser@^2.0.2:
|
3102 |
+
version "2.0.3"
|
3103 |
+
resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1"
|
3104 |
+
integrity sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==
|
3105 |
+
dependencies:
|
3106 |
+
debug "^3.1.0"
|
3107 |
+
eslint-scope "^3.7.1"
|
3108 |
+
eslint-visitor-keys "^1.0.0"
|
3109 |
+
espree "^3.5.2"
|
3110 |
+
esquery "^1.0.0"
|
3111 |
+
lodash "^4.17.4"
|
3112 |
+
|
3113 |
+
which-module@^1.0.0:
|
3114 |
+
version "1.0.0"
|
3115 |
+
resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
|
3116 |
+
integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
|
3117 |
|
3118 |
which-module@^2.0.0:
|
3119 |
version "2.0.0"
|
3120 |
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
|
3121 |
+
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
|
3122 |
|
3123 |
+
which@^1.2.14, which@^1.2.9:
|
3124 |
+
version "1.3.1"
|
3125 |
+
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
|
3126 |
+
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
|
3127 |
dependencies:
|
3128 |
isexe "^2.0.0"
|
3129 |
|
3130 |
wordwrap@~1.0.0:
|
3131 |
version "1.0.0"
|
3132 |
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
3133 |
+
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
|
3134 |
|
3135 |
wrap-ansi@^2.0.0:
|
3136 |
version "2.1.0"
|
3137 |
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
|
3138 |
+
integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
|
3139 |
dependencies:
|
3140 |
string-width "^1.0.1"
|
3141 |
strip-ansi "^3.0.1"
|
3143 |
wrappy@1:
|
3144 |
version "1.0.2"
|
3145 |
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
3146 |
+
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
|
3147 |
|
3148 |
write@^0.2.1:
|
3149 |
version "0.2.1"
|
3150 |
resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
|
3151 |
+
integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=
|
3152 |
dependencies:
|
3153 |
mkdirp "^0.5.1"
|
3154 |
|
3155 |
+
"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.1:
|
3156 |
+
version "4.0.1"
|
3157 |
+
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
|
3158 |
+
integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
|
3159 |
+
|
3160 |
y18n@^3.2.1:
|
3161 |
version "3.2.1"
|
3162 |
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
|
3163 |
+
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
|
3164 |
|
3165 |
+
yallist@^3.0.2:
|
3166 |
+
version "3.0.2"
|
3167 |
+
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
|
3168 |
+
integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=
|
3169 |
+
|
3170 |
+
yargs-parser@^5.0.0:
|
3171 |
+
version "5.0.0"
|
3172 |
+
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
|
3173 |
+
integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=
|
3174 |
+
dependencies:
|
3175 |
+
camelcase "^3.0.0"
|
3176 |
|
3177 |
yargs-parser@^8.0.0:
|
3178 |
version "8.1.0"
|
3179 |
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950"
|
3180 |
+
integrity sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==
|
3181 |
dependencies:
|
3182 |
camelcase "^4.1.0"
|
3183 |
|
3184 |
yargs@10.0.3:
|
3185 |
version "10.0.3"
|
3186 |
resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.0.3.tgz#6542debd9080ad517ec5048fb454efe9e4d4aaae"
|
3187 |
+
integrity sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==
|
3188 |
dependencies:
|
3189 |
cliui "^3.2.0"
|
3190 |
decamelize "^1.1.1"
|
3198 |
which-module "^2.0.0"
|
3199 |
y18n "^3.2.1"
|
3200 |
yargs-parser "^8.0.0"
|
3201 |
+
|
3202 |
+
yargs@^7.1.0:
|
3203 |
+
version "7.1.0"
|
3204 |
+
resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
|
3205 |
+
integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=
|
3206 |
+
dependencies:
|
3207 |
+
camelcase "^3.0.0"
|
3208 |
+
cliui "^3.2.0"
|
3209 |
+
decamelize "^1.1.1"
|
3210 |
+
get-caller-file "^1.0.1"
|
3211 |
+
os-locale "^1.4.0"
|
3212 |
+
read-pkg-up "^1.0.1"
|
3213 |
+
require-directory "^2.1.1"
|
3214 |
+
require-main-filename "^1.0.1"
|
3215 |
+
set-blocking "^2.0.0"
|
3216 |
+
string-width "^1.0.2"
|
3217 |
+
which-module "^1.0.0"
|
3218 |
+
y18n "^3.2.1"
|
3219 |
+
yargs-parser "^5.0.0"
|
vendor/cbschuld/browser.php
CHANGED
@@ -1 +1 @@
|
|
1 |
-
Subproject commit
|
1 |
+
Subproject commit f8655aedba32168ed34a6b89c7cceeb502fee3e4
|
vendor/composer/ClassLoader.php
CHANGED
@@ -279,7 +279,7 @@ class ClassLoader
|
|
279 |
*/
|
280 |
public function setApcuPrefix($apcuPrefix)
|
281 |
{
|
282 |
-
$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
|
283 |
}
|
284 |
|
285 |
/**
|
279 |
*/
|
280 |
public function setApcuPrefix($apcuPrefix)
|
281 |
{
|
282 |
+
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
|
283 |
}
|
284 |
|
285 |
/**
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -6,4 +6,48 @@ $vendorDir = dirname(dirname(__FILE__));
|
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
);
|
6 |
$baseDir = dirname($vendorDir);
|
7 |
|
8 |
return array(
|
9 |
+
'Boldgrid\\Library\\Util\\Load' => $vendorDir . '/boldgrid/library/src/Util/Load.php',
|
10 |
+
'Boldgrid\\Library\\Util\\Option' => $vendorDir . '/boldgrid/library/src/Util/Option.php',
|
11 |
+
'Boldgrid\\Library\\Util\\Plugin' => $vendorDir . '/boldgrid/library/src/Util/Plugin.php',
|
12 |
+
'Boldgrid\\Library\\Util\\Registration' => $vendorDir . '/boldgrid/library/src/Util/Registration.php',
|
13 |
+
'Boldgrid\\Library\\Util\\Registration\\Plugin' => $vendorDir . '/boldgrid/library/src/Util/Registration/Plugin.php',
|
14 |
+
'Boldgrid\\Library\\Util\\Registration\\RegistrationInterface' => $vendorDir . '/boldgrid/library/src/Util/Registration/RegistrationInterface.php',
|
15 |
+
'Boldgrid\\Library\\Util\\Registration\\Theme' => $vendorDir . '/boldgrid/library/src/Util/Registration/Theme.php',
|
16 |
+
'Boldgrid\\Library\\Util\\Version' => $vendorDir . '/boldgrid/library/src/Util/Version.php',
|
17 |
+
'Ifsnop\\Mysqldump\\CompressBzip2' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
18 |
+
'Ifsnop\\Mysqldump\\CompressGzip' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
19 |
+
'Ifsnop\\Mysqldump\\CompressManagerFactory' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
20 |
+
'Ifsnop\\Mysqldump\\CompressMethod' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
21 |
+
'Ifsnop\\Mysqldump\\CompressNone' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
22 |
+
'Ifsnop\\Mysqldump\\Mysqldump' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
23 |
+
'Ifsnop\\Mysqldump\\TypeAdapter' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
24 |
+
'Ifsnop\\Mysqldump\\TypeAdapterDblib' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
25 |
+
'Ifsnop\\Mysqldump\\TypeAdapterFactory' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
26 |
+
'Ifsnop\\Mysqldump\\TypeAdapterMysql' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
27 |
+
'Ifsnop\\Mysqldump\\TypeAdapterPgsql' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
28 |
+
'Ifsnop\\Mysqldump\\TypeAdapterSqlite' => $vendorDir . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
29 |
+
'phpseclib\\Crypt\\AES' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/AES.php',
|
30 |
+
'phpseclib\\Crypt\\Base' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Base.php',
|
31 |
+
'phpseclib\\Crypt\\Blowfish' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Blowfish.php',
|
32 |
+
'phpseclib\\Crypt\\DES' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/DES.php',
|
33 |
+
'phpseclib\\Crypt\\Hash' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Hash.php',
|
34 |
+
'phpseclib\\Crypt\\RC2' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/RC2.php',
|
35 |
+
'phpseclib\\Crypt\\RC4' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/RC4.php',
|
36 |
+
'phpseclib\\Crypt\\RSA' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/RSA.php',
|
37 |
+
'phpseclib\\Crypt\\Random' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Random.php',
|
38 |
+
'phpseclib\\Crypt\\Rijndael' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Rijndael.php',
|
39 |
+
'phpseclib\\Crypt\\TripleDES' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/TripleDES.php',
|
40 |
+
'phpseclib\\Crypt\\Twofish' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Crypt/Twofish.php',
|
41 |
+
'phpseclib\\File\\ANSI' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/ANSI.php',
|
42 |
+
'phpseclib\\File\\ASN1' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/ASN1.php',
|
43 |
+
'phpseclib\\File\\ASN1\\Element' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/ASN1/Element.php',
|
44 |
+
'phpseclib\\File\\X509' => $vendorDir . '/phpseclib/phpseclib/phpseclib/File/X509.php',
|
45 |
+
'phpseclib\\Math\\BigInteger' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Math/BigInteger.php',
|
46 |
+
'phpseclib\\Net\\SCP' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Net/SCP.php',
|
47 |
+
'phpseclib\\Net\\SFTP' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Net/SFTP.php',
|
48 |
+
'phpseclib\\Net\\SFTP\\Stream' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php',
|
49 |
+
'phpseclib\\Net\\SSH1' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Net/SSH1.php',
|
50 |
+
'phpseclib\\Net\\SSH2' => $vendorDir . '/phpseclib/phpseclib/phpseclib/Net/SSH2.php',
|
51 |
+
'phpseclib\\System\\SSH\\Agent' => $vendorDir . '/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php',
|
52 |
+
'phpseclib\\System\\SSH\\Agent\\Identity' => $vendorDir . '/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php',
|
53 |
);
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit776c9eeda65acd21bdfcc1a2e8fa114e
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
-
call_user_func(\Composer\Autoload\
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
@@ -48,19 +48,19 @@ class ComposerAutoloaderInit776c9eeda65acd21bdfcc1a2e8fa114e
|
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
-
$includeFiles = Composer\Autoload\
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
-
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
-
function
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit26ac8f21c7de312bcc7b8f89cd106a20
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit26ac8f21c7de312bcc7b8f89cd106a20', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit26ac8f21c7de312bcc7b8f89cd106a20', 'loadClassLoader'));
|
25 |
|
26 |
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
27 |
if ($useStaticLoader) {
|
28 |
require_once __DIR__ . '/autoload_static.php';
|
29 |
|
30 |
+
call_user_func(\Composer\Autoload\ComposerStaticInit26ac8f21c7de312bcc7b8f89cd106a20::getInitializer($loader));
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
48 |
$loader->register(true);
|
49 |
|
50 |
if ($useStaticLoader) {
|
51 |
+
$includeFiles = Composer\Autoload\ComposerStaticInit26ac8f21c7de312bcc7b8f89cd106a20::$files;
|
52 |
} else {
|
53 |
$includeFiles = require __DIR__ . '/autoload_files.php';
|
54 |
}
|
55 |
foreach ($includeFiles as $fileIdentifier => $file) {
|
56 |
+
composerRequire26ac8f21c7de312bcc7b8f89cd106a20($fileIdentifier, $file);
|
57 |
}
|
58 |
|
59 |
return $loader;
|
60 |
}
|
61 |
}
|
62 |
|
63 |
+
function composerRequire26ac8f21c7de312bcc7b8f89cd106a20($fileIdentifier, $file)
|
64 |
{
|
65 |
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
66 |
require $file;
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'f15d016d70663d5e96ccd2b863511eb8' => __DIR__ . '/..' . '/cbschuld/browser.php/lib/Browser.php',
|
@@ -41,11 +41,59 @@ class ComposerStaticInit776c9eeda65acd21bdfcc1a2e8fa114e
|
|
41 |
),
|
42 |
);
|
43 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
public static function getInitializer(ClassLoader $loader)
|
45 |
{
|
46 |
return \Closure::bind(function () use ($loader) {
|
47 |
-
$loader->prefixLengthsPsr4 =
|
48 |
-
$loader->prefixDirsPsr4 =
|
|
|
49 |
|
50 |
}, null, ClassLoader::class);
|
51 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit26ac8f21c7de312bcc7b8f89cd106a20
|
8 |
{
|
9 |
public static $files = array (
|
10 |
'f15d016d70663d5e96ccd2b863511eb8' => __DIR__ . '/..' . '/cbschuld/browser.php/lib/Browser.php',
|
41 |
),
|
42 |
);
|
43 |
|
44 |
+
public static $classMap = array (
|
45 |
+
'Boldgrid\\Library\\Util\\Load' => __DIR__ . '/..' . '/boldgrid/library/src/Util/Load.php',
|
46 |
+
'Boldgrid\\Library\\Util\\Option' => __DIR__ . '/..' . '/boldgrid/library/src/Util/Option.php',
|
47 |
+
'Boldgrid\\Library\\Util\\Plugin' => __DIR__ . '/..' . '/boldgrid/library/src/Util/Plugin.php',
|
48 |
+
'Boldgrid\\Library\\Util\\Registration' => __DIR__ . '/..' . '/boldgrid/library/src/Util/Registration.php',
|
49 |
+
'Boldgrid\\Library\\Util\\Registration\\Plugin' => __DIR__ . '/..' . '/boldgrid/library/src/Util/Registration/Plugin.php',
|
50 |
+
'Boldgrid\\Library\\Util\\Registration\\RegistrationInterface' => __DIR__ . '/..' . '/boldgrid/library/src/Util/Registration/RegistrationInterface.php',
|
51 |
+
'Boldgrid\\Library\\Util\\Registration\\Theme' => __DIR__ . '/..' . '/boldgrid/library/src/Util/Registration/Theme.php',
|
52 |
+
'Boldgrid\\Library\\Util\\Version' => __DIR__ . '/..' . '/boldgrid/library/src/Util/Version.php',
|
53 |
+
'Ifsnop\\Mysqldump\\CompressBzip2' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
54 |
+
'Ifsnop\\Mysqldump\\CompressGzip' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
55 |
+
'Ifsnop\\Mysqldump\\CompressManagerFactory' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
56 |
+
'Ifsnop\\Mysqldump\\CompressMethod' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
57 |
+
'Ifsnop\\Mysqldump\\CompressNone' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
58 |
+
'Ifsnop\\Mysqldump\\Mysqldump' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
59 |
+
'Ifsnop\\Mysqldump\\TypeAdapter' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
60 |
+
'Ifsnop\\Mysqldump\\TypeAdapterDblib' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
61 |
+
'Ifsnop\\Mysqldump\\TypeAdapterFactory' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
62 |
+
'Ifsnop\\Mysqldump\\TypeAdapterMysql' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
63 |
+
'Ifsnop\\Mysqldump\\TypeAdapterPgsql' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
64 |
+
'Ifsnop\\Mysqldump\\TypeAdapterSqlite' => __DIR__ . '/..' . '/ifsnop/mysqldump-php/src/Ifsnop/Mysqldump/Mysqldump.php',
|
65 |
+
'phpseclib\\Crypt\\AES' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/AES.php',
|
66 |
+
'phpseclib\\Crypt\\Base' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Base.php',
|
67 |
+
'phpseclib\\Crypt\\Blowfish' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Blowfish.php',
|
68 |
+
'phpseclib\\Crypt\\DES' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/DES.php',
|
69 |
+
'phpseclib\\Crypt\\Hash' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Hash.php',
|
70 |
+
'phpseclib\\Crypt\\RC2' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/RC2.php',
|
71 |
+
'phpseclib\\Crypt\\RC4' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/RC4.php',
|
72 |
+
'phpseclib\\Crypt\\RSA' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/RSA.php',
|
73 |
+
'phpseclib\\Crypt\\Random' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Random.php',
|
74 |
+
'phpseclib\\Crypt\\Rijndael' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Rijndael.php',
|
75 |
+
'phpseclib\\Crypt\\TripleDES' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/TripleDES.php',
|
76 |
+
'phpseclib\\Crypt\\Twofish' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Crypt/Twofish.php',
|
77 |
+
'phpseclib\\File\\ANSI' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/ANSI.php',
|
78 |
+
'phpseclib\\File\\ASN1' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/ASN1.php',
|
79 |
+
'phpseclib\\File\\ASN1\\Element' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/ASN1/Element.php',
|
80 |
+
'phpseclib\\File\\X509' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/File/X509.php',
|
81 |
+
'phpseclib\\Math\\BigInteger' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Math/BigInteger.php',
|
82 |
+
'phpseclib\\Net\\SCP' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Net/SCP.php',
|
83 |
+
'phpseclib\\Net\\SFTP' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Net/SFTP.php',
|
84 |
+
'phpseclib\\Net\\SFTP\\Stream' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Net/SFTP/Stream.php',
|
85 |
+
'phpseclib\\Net\\SSH1' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Net/SSH1.php',
|
86 |
+
'phpseclib\\Net\\SSH2' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/Net/SSH2.php',
|
87 |
+
'phpseclib\\System\\SSH\\Agent' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php',
|
88 |
+
'phpseclib\\System\\SSH\\Agent\\Identity' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php',
|
89 |
+
);
|
90 |
+
|
91 |
public static function getInitializer(ClassLoader $loader)
|
92 |
{
|
93 |
return \Closure::bind(function () use ($loader) {
|
94 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit26ac8f21c7de312bcc7b8f89cd106a20::$prefixLengthsPsr4;
|
95 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit26ac8f21c7de312bcc7b8f89cd106a20::$prefixDirsPsr4;
|
96 |
+
$loader->classMap = ComposerStaticInit26ac8f21c7de312bcc7b8f89cd106a20::$classMap;
|
97 |
|
98 |
}, null, ClassLoader::class);
|
99 |
}
|
vendor/composer/installed.json
CHANGED
@@ -1,20 +1,20 @@
|
|
1 |
[
|
2 |
{
|
3 |
"name": "boldgrid/library",
|
4 |
-
"version": "2.4
|
5 |
-
"version_normalized": "2.4.
|
6 |
"source": {
|
7 |
"type": "git",
|
8 |
"url": "https://github.com/BoldGrid/library.git",
|
9 |
-
"reference": "
|
10 |
},
|
11 |
"dist": {
|
12 |
"type": "zip",
|
13 |
-
"url": "https://api.github.com/repos/BoldGrid/library/zipball/
|
14 |
-
"reference": "
|
15 |
"shasum": ""
|
16 |
},
|
17 |
-
"time": "2018-
|
18 |
"type": "library",
|
19 |
"installation-source": "dist",
|
20 |
"autoload": {
|
@@ -57,15 +57,15 @@
|
|
57 |
"source": {
|
58 |
"type": "git",
|
59 |
"url": "https://github.com/cbschuld/Browser.php.git",
|
60 |
-
"reference": "
|
61 |
},
|
62 |
"dist": {
|
63 |
"type": "zip",
|
64 |
-
"url": "https://api.github.com/repos/cbschuld/Browser.php/zipball/
|
65 |
-
"reference": "
|
66 |
"shasum": ""
|
67 |
},
|
68 |
-
"time": "
|
69 |
"type": "library",
|
70 |
"extra": {
|
71 |
"branch-alias": {
|
@@ -153,17 +153,17 @@
|
|
153 |
},
|
154 |
{
|
155 |
"name": "phpseclib/phpseclib",
|
156 |
-
"version": "2.0.
|
157 |
-
"version_normalized": "2.0.
|
158 |
"source": {
|
159 |
"type": "git",
|
160 |
"url": "https://github.com/phpseclib/phpseclib.git",
|
161 |
-
"reference": "
|
162 |
},
|
163 |
"dist": {
|
164 |
"type": "zip",
|
165 |
-
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/
|
166 |
-
"reference": "
|
167 |
"shasum": ""
|
168 |
},
|
169 |
"require": {
|
@@ -181,7 +181,7 @@
|
|
181 |
"ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
|
182 |
"ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
|
183 |
},
|
184 |
-
"time": "2018-
|
185 |
"type": "library",
|
186 |
"installation-source": "dist",
|
187 |
"autoload": {
|
1 |
[
|
2 |
{
|
3 |
"name": "boldgrid/library",
|
4 |
+
"version": "2.7.4",
|
5 |
+
"version_normalized": "2.7.4.0",
|
6 |
"source": {
|
7 |
"type": "git",
|
8 |
"url": "https://github.com/BoldGrid/library.git",
|
9 |
+
"reference": "59aa87fcf2cab210e605b922e0e12c7d897d01d5"
|
10 |
},
|
11 |
"dist": {
|
12 |
"type": "zip",
|
13 |
+
"url": "https://api.github.com/repos/BoldGrid/library/zipball/59aa87fcf2cab210e605b922e0e12c7d897d01d5",
|
14 |
+
"reference": "59aa87fcf2cab210e605b922e0e12c7d897d01d5",
|
15 |
"shasum": ""
|
16 |
},
|
17 |
+
"time": "2018-12-04T19:41:29+00:00",
|
18 |
"type": "library",
|
19 |
"installation-source": "dist",
|
20 |
"autoload": {
|
57 |
"source": {
|
58 |
"type": "git",
|
59 |
"url": "https://github.com/cbschuld/Browser.php.git",
|
60 |
+
"reference": "f8655aedba32168ed34a6b89c7cceeb502fee3e4"
|
61 |
},
|
62 |
"dist": {
|
63 |
"type": "zip",
|
64 |
+
"url": "https://api.github.com/repos/cbschuld/Browser.php/zipball/f8655aedba32168ed34a6b89c7cceeb502fee3e4",
|
65 |
+
"reference": "f8655aedba32168ed34a6b89c7cceeb502fee3e4",
|
66 |
"shasum": ""
|
67 |
},
|
68 |
+
"time": "2018-11-05T16:46:30+00:00",
|
69 |
"type": "library",
|
70 |
"extra": {
|
71 |
"branch-alias": {
|
153 |
},
|
154 |
{
|
155 |
"name": "phpseclib/phpseclib",
|
156 |
+
"version": "2.0.12",
|
157 |
+
"version_normalized": "2.0.12.0",
|
158 |
"source": {
|
159 |
"type": "git",
|
160 |
"url": "https://github.com/phpseclib/phpseclib.git",
|
161 |
+
"reference": "8814dc7841db159daed0b32c2b08fb7e03c6afe7"
|
162 |
},
|
163 |
"dist": {
|
164 |
"type": "zip",
|
165 |
+
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/8814dc7841db159daed0b32c2b08fb7e03c6afe7",
|
166 |
+
"reference": "8814dc7841db159daed0b32c2b08fb7e03c6afe7",
|
167 |
"shasum": ""
|
168 |
},
|
169 |
"require": {
|
181 |
"ext-mcrypt": "Install the Mcrypt extension in order to speed up a few other cryptographic operations.",
|
182 |
"ext-openssl": "Install the OpenSSL extension in order to speed up a wide variety of cryptographic operations."
|
183 |
},
|
184 |
+
"time": "2018-11-04T05:45:48+00:00",
|
185 |
"type": "library",
|
186 |
"installation-source": "dist",
|
187 |
"autoload": {
|
vendor/phpseclib/phpseclib/README.md
CHANGED
@@ -36,7 +36,7 @@ AES, Blowfish, Twofish, SSH-1, SSH-2, SFTP, and X.509
|
|
36 |
* Composer compatible (PSR-0 autoloading)
|
37 |
* Install using Composer: `composer require phpseclib/phpseclib ~1.0`
|
38 |
* Install using PEAR: See [phpseclib PEAR Channel Documentation](http://phpseclib.sourceforge.net/pear.htm)
|
39 |
-
* [Download 1.0.
|
40 |
|
41 |
## Support
|
42 |
|
36 |
* Composer compatible (PSR-0 autoloading)
|
37 |
* Install using Composer: `composer require phpseclib/phpseclib ~1.0`
|
38 |
* Install using PEAR: See [phpseclib PEAR Channel Documentation](http://phpseclib.sourceforge.net/pear.htm)
|
39 |
+
* [Download 1.0.12 as ZIP](http://sourceforge.net/projects/phpseclib/files/phpseclib1.0.12.zip/download)
|
40 |
|
41 |
## Support
|
42 |
|
vendor/phpseclib/phpseclib/appveyor.yml
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
build: false
|
2 |
+
shallow_clone: false
|
3 |
+
platform:
|
4 |
+
- x86
|
5 |
+
- x64
|
6 |
+
clone_folder: C:\projects\phpseclib
|
7 |
+
|
8 |
+
install:
|
9 |
+
- cinst -y OpenSSL.Light
|
10 |
+
- SET PATH=C:\Program Files\OpenSSL;%PATH%
|
11 |
+
- sc config wuauserv start= auto
|
12 |
+
- net start wuauserv
|
13 |
+
- cinst -y php --version 5.6.30
|
14 |
+
- cd c:\tools\php56
|
15 |
+
- copy php.ini-production php.ini
|
16 |
+
- echo date.timezone="UTC" >> php.ini
|
17 |
+
- echo extension_dir=ext >> php.ini
|
18 |
+
- echo extension=php_openssl.dll >> php.ini
|
19 |
+
- echo extension=php_gmp.dll >> php.ini
|
20 |
+
- cd C:\projects\phpseclib
|
21 |
+
- SET PATH=C:\tools\php56;%PATH%
|
22 |
+
- php.exe -r "readfile('http://getcomposer.org/installer');" | php.exe
|
23 |
+
- php.exe composer.phar install --prefer-source --no-interaction
|
24 |
+
|
25 |
+
test_script:
|
26 |
+
- cd C:\projects\phpseclib
|
27 |
+
- vendor\bin\phpunit.bat tests/Windows32Test.php
|
vendor/phpseclib/phpseclib/phpseclib/Crypt/Base.php
CHANGED
@@ -649,10 +649,10 @@ abstract class Base
|
|
649 |
case !function_exists('hash_algos'):
|
650 |
case !in_array($hash, hash_algos()):
|
651 |
$i = 1;
|
|
|
|
|
|
|
652 |
while (strlen($key) < $dkLen) {
|
653 |
-
$hmac = new Hash();
|
654 |
-
$hmac->setHash($hash);
|
655 |
-
$hmac->setKey($password);
|
656 |
$f = $u = $hmac->hash($salt . pack('N', $i++));
|
657 |
for ($j = 2; $j <= $count; ++$j) {
|
658 |
$u = $hmac->hash($u);
|
649 |
case !function_exists('hash_algos'):
|
650 |
case !in_array($hash, hash_algos()):
|
651 |
$i = 1;
|
652 |
+
$hmac = new Hash();
|
653 |
+
$hmac->setHash($hash);
|
654 |
+
$hmac->setKey($password);
|
655 |
while (strlen($key) < $dkLen) {
|
|
|
|
|
|
|
656 |
$f = $u = $hmac->hash($salt . pack('N', $i++));
|
657 |
for ($j = 2; $j <= $count; ++$j) {
|
658 |
$u = $hmac->hash($u);
|
vendor/phpseclib/phpseclib/phpseclib/Crypt/Hash.php
CHANGED
@@ -112,6 +112,15 @@ class Hash
|
|
112 |
*/
|
113 |
var $key = false;
|
114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
/**
|
116 |
* Outer XOR (Internal HMAC)
|
117 |
*
|
@@ -166,6 +175,43 @@ class Hash
|
|
166 |
function setKey($key = false)
|
167 |
{
|
168 |
$this->key = $key;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
169 |
}
|
170 |
|
171 |
/**
|
@@ -215,6 +261,25 @@ class Hash
|
|
215 |
$this->l = 64;
|
216 |
}
|
217 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
218 |
switch ($hash) {
|
219 |
case 'md2':
|
220 |
$mode = CRYPT_HASH_MODE == self::MODE_HASH && in_array('md2', hash_algos()) ?
|
@@ -241,6 +306,7 @@ class Hash
|
|
241 |
default:
|
242 |
$this->hash = MHASH_SHA1;
|
243 |
}
|
|
|
244 |
return;
|
245 |
case self::MODE_HASH:
|
246 |
switch ($hash) {
|
@@ -257,35 +323,33 @@ class Hash
|
|
257 |
default:
|
258 |
$this->hash = 'sha1';
|
259 |
}
|
|
|
260 |
return;
|
261 |
}
|
262 |
|
263 |
switch ($hash) {
|
264 |
case 'md2':
|
265 |
-
$this->b = 16;
|
266 |
$this->hash = array($this, '_md2');
|
267 |
break;
|
268 |
case 'md5':
|
269 |
-
$this->b = 64;
|
270 |
$this->hash = array($this, '_md5');
|
271 |
break;
|
272 |
case 'sha256':
|
273 |
-
$this->b = 64;
|
274 |
$this->hash = array($this, '_sha256');
|
275 |
break;
|
276 |
case 'sha384':
|
277 |
case 'sha512':
|
278 |
-
$this->b = 128;
|
279 |
$this->hash = array($this, '_sha512');
|
280 |
break;
|
281 |
case 'sha1':
|
282 |
default:
|
283 |
-
$this->b = 64;
|
284 |
$this->hash = array($this, '_sha1');
|
285 |
}
|
286 |
|
287 |
$this->ipad = str_repeat(chr(0x36), $this->b);
|
288 |
$this->opad = str_repeat(chr(0x5C), $this->b);
|
|
|
|
|
289 |
}
|
290 |
|
291 |
/**
|
@@ -302,25 +366,19 @@ class Hash
|
|
302 |
if (!empty($this->key) || is_string($this->key)) {
|
303 |
switch ($mode) {
|
304 |
case self::MODE_MHASH:
|
305 |
-
$output = mhash($this->hash, $text, $this->
|
306 |
break;
|
307 |
case self::MODE_HASH:
|
308 |
-
$output = hash_hmac($this->hash, $text, $this->
|
309 |
break;
|
310 |
case self::MODE_INTERNAL:
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
$
|
316 |
-
|
317 |
-
$
|
318 |
-
$temp = $this->ipad ^ $key; // step 2
|
319 |
-
$temp .= $text; // step 3
|
320 |
-
$temp = call_user_func($this->hash, $temp); // step 4
|
321 |
-
$output = $this->opad ^ $key; // step 5
|
322 |
-
$output.= $temp; // step 6
|
323 |
-
$output = call_user_func($this->hash, $output); // step 7
|
324 |
}
|
325 |
} else {
|
326 |
switch ($mode) {
|
112 |
*/
|
113 |
var $key = false;
|
114 |
|
115 |
+
/**
|
116 |
+
* Computed Key
|
117 |
+
*
|
118 |
+
* @see self::_computeKey()
|
119 |
+
* @var string
|
120 |
+
* @access private
|
121 |
+
*/
|
122 |
+
var $computedKey = false;
|
123 |
+
|
124 |
/**
|
125 |
* Outer XOR (Internal HMAC)
|
126 |
*
|
175 |
function setKey($key = false)
|
176 |
{
|
177 |
$this->key = $key;
|
178 |
+
$this->_computeKey();
|
179 |
+
}
|
180 |
+
|
181 |
+
/**
|
182 |
+
* Pre-compute the key used by the HMAC
|
183 |
+
*
|
184 |
+
* Quoting http://tools.ietf.org/html/rfc2104#section-2, "Applications that use keys longer than B bytes
|
185 |
+
* will first hash the key using H and then use the resultant L byte string as the actual key to HMAC."
|
186 |
+
*
|
187 |
+
* As documented in https://www.reddit.com/r/PHP/comments/9nct2l/symfonypolyfill_hash_pbkdf2_correct_fix_for/
|
188 |
+
* when doing an HMAC multiple times it's faster to compute the hash once instead of computing it during
|
189 |
+
* every call
|
190 |
+
*
|
191 |
+
* @access private
|
192 |
+
*/
|
193 |
+
function _computeKey()
|
194 |
+
{
|
195 |
+
if ($this->key === false) {
|
196 |
+
$this->computedKey = false;
|
197 |
+
return;
|
198 |
+
}
|
199 |
+
|
200 |
+
if (strlen($this->key) <= $this->b) {
|
201 |
+
$this->computedKey = $this->key;
|
202 |
+
return;
|
203 |
+
}
|
204 |
+
|
205 |
+
switch ($mode) {
|
206 |
+
case CRYPT_HASH_MODE_MHASH:
|
207 |
+
$this->computedKey = mhash($this->hash, $this->key);
|
208 |
+
break;
|
209 |
+
case CRYPT_HASH_MODE_HASH:
|
210 |
+
$this->computedKey = hash($this->hash, $this->key, true);
|
211 |
+
break;
|
212 |
+
case CRYPT_HASH_MODE_INTERNAL:
|
213 |
+
$this->computedKey = call_user_func($this->hash, $this->key);
|
214 |
+
}
|
215 |
}
|
216 |
|
217 |
/**
|
261 |
$this->l = 64;
|
262 |
}
|
263 |
|
264 |
+
switch ($hash) {
|
265 |
+
case 'md2-96':
|
266 |
+
case 'md2':
|
267 |
+
$this->b = 16;
|
268 |
+
case 'md5-96':
|
269 |
+
case 'sha1-96':
|
270 |
+
case 'sha224-96':
|
271 |
+
case 'sha256-96':
|
272 |
+
case 'md2':
|
273 |
+
case 'md5':
|
274 |
+
case 'sha1':
|
275 |
+
case 'sha224':
|
276 |
+
case 'sha256':
|
277 |
+
$this->b = 64;
|
278 |
+
break;
|
279 |
+
default:
|
280 |
+
$this->b = 128;
|
281 |
+
}
|
282 |
+
|
283 |
switch ($hash) {
|
284 |
case 'md2':
|
285 |
$mode = CRYPT_HASH_MODE == self::MODE_HASH && in_array('md2', hash_algos()) ?
|
306 |
default:
|
307 |
$this->hash = MHASH_SHA1;
|
308 |
}
|
309 |
+
$this->_computeKey();
|
310 |
return;
|
311 |
case self::MODE_HASH:
|
312 |
switch ($hash) {
|
323 |
default:
|
324 |
$this->hash = 'sha1';
|
325 |
}
|
326 |
+
$this->_computeKey();
|
327 |
return;
|
328 |
}
|
329 |
|
330 |
switch ($hash) {
|
331 |
case 'md2':
|
|
|
332 |
$this->hash = array($this, '_md2');
|
333 |
break;
|
334 |
case 'md5':
|
|
|
335 |
$this->hash = array($this, '_md5');
|
336 |
break;
|
337 |
case 'sha256':
|
|
|
338 |
$this->hash = array($this, '_sha256');
|
339 |
break;
|
340 |
case 'sha384':
|
341 |
case 'sha512':
|
|
|
342 |
$this->hash = array($this, '_sha512');
|
343 |
break;
|
344 |
case 'sha1':
|
345 |
default:
|
|
|
346 |
$this->hash = array($this, '_sha1');
|
347 |
}
|
348 |
|
349 |
$this->ipad = str_repeat(chr(0x36), $this->b);
|
350 |
$this->opad = str_repeat(chr(0x5C), $this->b);
|
351 |
+
|
352 |
+
$this->_computeKey();
|
353 |
}
|
354 |
|
355 |
/**
|
366 |
if (!empty($this->key) || is_string($this->key)) {
|
367 |
switch ($mode) {
|
368 |
case self::MODE_MHASH:
|
369 |
+
$output = mhash($this->hash, $text, $this->computedKey);
|
370 |
break;
|
371 |
case self::MODE_HASH:
|
372 |
+
$output = hash_hmac($this->hash, $text, $this->computedKey, true);
|
373 |
break;
|
374 |
case self::MODE_INTERNAL:
|
375 |
+
$key = str_pad($this->computedKey, $this->b, chr(0)); // step 1
|
376 |
+
$temp = $this->ipad ^ $key; // step 2
|
377 |
+
$temp .= $text; // step 3
|
378 |
+
$temp = call_user_func($this->hash, $temp); // step 4
|
379 |
+
$output = $this->opad ^ $key; // step 5
|
380 |
+
$output.= $temp; // step 6
|
381 |
+
$output = call_user_func($this->hash, $output); // step 7
|
|
|
|
|
|
|
|
|
|
|
|
|
382 |
}
|
383 |
} else {
|
384 |
switch ($mode) {
|
vendor/phpseclib/phpseclib/phpseclib/Crypt/RSA.php
CHANGED
@@ -1020,9 +1020,9 @@ class RSA
|
|
1020 |
* @access private
|
1021 |
* @see self::_convertPublicKey()
|
1022 |
* @see self::_convertPrivateKey()
|
1023 |
-
* @param string $key
|
1024 |
* @param int $type
|
1025 |
-
* @return array
|
1026 |
*/
|
1027 |
function _parseKey($key, $type)
|
1028 |
{
|
@@ -1505,8 +1505,9 @@ class RSA
|
|
1505 |
* Returns true on success and false on failure (ie. an incorrect password was provided or the key was malformed)
|
1506 |
*
|
1507 |
* @access public
|
1508 |
-
* @param string $key
|
1509 |
-
* @param
|
|
|
1510 |
*/
|
1511 |
function loadKey($key, $type = false)
|
1512 |
{
|
1020 |
* @access private
|
1021 |
* @see self::_convertPublicKey()
|
1022 |
* @see self::_convertPrivateKey()
|
1023 |
+
* @param string|array $key
|
1024 |
* @param int $type
|
1025 |
+
* @return array|bool
|
1026 |
*/
|
1027 |
function _parseKey($key, $type)
|
1028 |
{
|
1505 |
* Returns true on success and false on failure (ie. an incorrect password was provided or the key was malformed)
|
1506 |
*
|
1507 |
* @access public
|
1508 |
+
* @param string|RSA|array $key
|
1509 |
+
* @param bool $type optional
|
1510 |
+
* @return bool
|
1511 |
*/
|
1512 |
function loadKey($key, $type = false)
|
1513 |
{
|
vendor/phpseclib/phpseclib/phpseclib/File/ASN1.php
CHANGED
@@ -308,6 +308,9 @@ class ASN1
|
|
308 |
$remainingLength = $length;
|
309 |
while ($remainingLength > 0) {
|
310 |
$temp = $this->_decode_ber($content, $start, $content_pos);
|
|
|
|
|
|
|
311 |
$length = $temp['length'];
|
312 |
// end-of-content octets - see paragraph 8.1.5
|
313 |
if (substr($content, $content_pos + $length, 2) == "\0\0") {
|
@@ -359,6 +362,9 @@ class ASN1
|
|
359 |
$current['content'] = substr($content, $content_pos);
|
360 |
} else {
|
361 |
$temp = $this->_decode_ber($content, $start, $content_pos);
|
|
|
|
|
|
|
362 |
$length-= (strlen($content) - $content_pos);
|
363 |
$last = count($temp) - 1;
|
364 |
for ($i = 0; $i < $last; $i++) {
|
@@ -383,6 +389,9 @@ class ASN1
|
|
383 |
$length = 0;
|
384 |
while (substr($content, $content_pos, 2) != "\0\0") {
|
385 |
$temp = $this->_decode_ber($content, $length + $start, $content_pos);
|
|
|
|
|
|
|
386 |
$content_pos += $temp['length'];
|
387 |
// all subtags should be octet strings
|
388 |
//if ($temp['type'] != self::TYPE_OCTET_STRING) {
|
@@ -415,6 +424,9 @@ class ASN1
|
|
415 |
break 2;
|
416 |
}
|
417 |
$temp = $this->_decode_ber($content, $start + $offset, $content_pos);
|
|
|
|
|
|
|
418 |
$content_pos += $temp['length'];
|
419 |
$current['content'][] = $temp;
|
420 |
$offset+= $temp['length'];
|
308 |
$remainingLength = $length;
|
309 |
while ($remainingLength > 0) {
|
310 |
$temp = $this->_decode_ber($content, $start, $content_pos);
|
311 |
+
if ($temp === false) {
|
312 |
+
break;
|
313 |
+
}
|
314 |
$length = $temp['length'];
|
315 |
// end-of-content octets - see paragraph 8.1.5
|
316 |
if (substr($content, $content_pos + $length, 2) == "\0\0") {
|
362 |
$current['content'] = substr($content, $content_pos);
|
363 |
} else {
|
364 |
$temp = $this->_decode_ber($content, $start, $content_pos);
|
365 |
+
if ($temp === false) {
|
366 |
+
return false;
|
367 |
+
}
|
368 |
$length-= (strlen($content) - $content_pos);
|
369 |
$last = count($temp) - 1;
|
370 |
for ($i = 0; $i < $last; $i++) {
|
389 |
$length = 0;
|
390 |
while (substr($content, $content_pos, 2) != "\0\0") {
|
391 |
$temp = $this->_decode_ber($content, $length + $start, $content_pos);
|
392 |
+
if ($temp === false) {
|
393 |
+
return false;
|
394 |
+
}
|
395 |
$content_pos += $temp['length'];
|
396 |
// all subtags should be octet strings
|
397 |
//if ($temp['type'] != self::TYPE_OCTET_STRING) {
|
424 |
break 2;
|
425 |
}
|
426 |
$temp = $this->_decode_ber($content, $start + $offset, $content_pos);
|
427 |
+
if ($temp === false) {
|
428 |
+
return false;
|
429 |
+
}
|
430 |
$content_pos += $temp['length'];
|
431 |
$current['content'][] = $temp;
|
432 |
$offset+= $temp['length'];
|
vendor/phpseclib/phpseclib/phpseclib/File/X509.php
CHANGED
@@ -2092,7 +2092,7 @@ class X509
|
|
2092 |
*
|
2093 |
* If $date isn't defined it is assumed to be the current date.
|
2094 |
*
|
2095 |
-
* @param
|
2096 |
* @access public
|
2097 |
*/
|
2098 |
function validateDate($date = null)
|
@@ -2102,7 +2102,7 @@ class X509
|
|
2102 |
}
|
2103 |
|
2104 |
if (!isset($date)) {
|
2105 |
-
$date = new DateTime(
|
2106 |
}
|
2107 |
|
2108 |
$notBefore = $this->currentCert['tbsCertificate']['validity']['notBefore'];
|
@@ -2111,6 +2111,14 @@ class X509
|
|
2111 |
$notAfter = $this->currentCert['tbsCertificate']['validity']['notAfter'];
|
2112 |
$notAfter = isset($notAfter['generalTime']) ? $notAfter['generalTime'] : $notAfter['utcTime'];
|
2113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2114 |
switch (true) {
|
2115 |
case $date < new DateTime($notBefore, new DateTimeZone(@date_default_timezone_get())):
|
2116 |
case $date > new DateTime($notAfter, new DateTimeZone(@date_default_timezone_get())):
|
2092 |
*
|
2093 |
* If $date isn't defined it is assumed to be the current date.
|
2094 |
*
|
2095 |
+
* @param \DateTime|string $date optional
|
2096 |
* @access public
|
2097 |
*/
|
2098 |
function validateDate($date = null)
|
2102 |
}
|
2103 |
|
2104 |
if (!isset($date)) {
|
2105 |
+
$date = new DateTime(null, new DateTimeZone(@date_default_timezone_get()));
|
2106 |
}
|
2107 |
|
2108 |
$notBefore = $this->currentCert['tbsCertificate']['validity']['notBefore'];
|
2111 |
$notAfter = $this->currentCert['tbsCertificate']['validity']['notAfter'];
|
2112 |
$notAfter = isset($notAfter['generalTime']) ? $notAfter['generalTime'] : $notAfter['utcTime'];
|
2113 |
|
2114 |
+
switch (true) {
|
2115 |
+
case is_string($date):
|
2116 |
+
$date = new DateTime($date, new DateTimeZone(@date_default_timezone_get()));
|
2117 |
+
default:
|
2118 |
+
$notBefore = new DateTime($notBefore, new DateTimeZone(@date_default_timezone_get()));
|
2119 |
+
$notAfter = new DateTime($notAfter, new DateTimeZone(@date_default_timezone_get()));
|
2120 |
+
}
|
2121 |
+
|
2122 |
switch (true) {
|
2123 |
case $date < new DateTime($notBefore, new DateTimeZone(@date_default_timezone_get())):
|
2124 |
case $date > new DateTime($notAfter, new DateTimeZone(@date_default_timezone_get())):
|
vendor/phpseclib/phpseclib/phpseclib/Math/BigInteger.php
CHANGED
@@ -45,7 +45,6 @@
|
|
45 |
* @author Jim Wigginton <terrafrost@php.net>
|
46 |
* @copyright 2006 Jim Wigginton
|
47 |
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
48 |
-
* @link http://pear.php.net/package/Math_BigInteger
|
49 |
*/
|
50 |
|
51 |
namespace phpseclib\Math;
|
45 |
* @author Jim Wigginton <terrafrost@php.net>
|
46 |
* @copyright 2006 Jim Wigginton
|
47 |
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
|
|
48 |
*/
|
49 |
|
50 |
namespace phpseclib\Math;
|
vendor/phpseclib/phpseclib/phpseclib/Net/SFTP.php
CHANGED
@@ -864,7 +864,17 @@ class SFTP extends SSH2
|
|
864 |
unset($files[$key]);
|
865 |
continue;
|
866 |
}
|
867 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
868 |
$depth++;
|
869 |
$files[$key] = $this->rawlist($dir . '/' . $key, true);
|
870 |
$depth--;
|
864 |
unset($files[$key]);
|
865 |
continue;
|
866 |
}
|
867 |
+
$is_directory = false;
|
868 |
+
if ($key != '.' && $key != '..') {
|
869 |
+
if ($this->use_stat_cache) {
|
870 |
+
$is_directory = is_array($this->_query_stat_cache($this->_realpath($dir . '/' . $key)));
|
871 |
+
} else {
|
872 |
+
$stat = $this->lstat($dir . '/' . $key);
|
873 |
+
$is_directory = $stat && $stat['type'] === NET_SFTP_TYPE_DIRECTORY;
|
874 |
+
}
|
875 |
+
}
|
876 |
+
|
877 |
+
if ($is_directory) {
|
878 |
$depth++;
|
879 |
$files[$key] = $this->rawlist($dir . '/' . $key, true);
|
880 |
$depth--;
|
vendor/phpseclib/phpseclib/phpseclib/Net/SSH2.php
CHANGED
@@ -918,6 +918,22 @@ class SSH2
|
|
918 |
*/
|
919 |
var $binary_packet_buffer = false;
|
920 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
921 |
/**
|
922 |
* Default Constructor.
|
923 |
*
|
@@ -1124,11 +1140,12 @@ class SSH2
|
|
1124 |
}
|
1125 |
$elapsed = microtime(true) - $start;
|
1126 |
|
1127 |
-
$this->curTimeout
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
|
|
1132 |
}
|
1133 |
}
|
1134 |
|
@@ -1193,6 +1210,7 @@ class SSH2
|
|
1193 |
}
|
1194 |
|
1195 |
if (feof($this->fsock)) {
|
|
|
1196 |
user_error('Connection closed by server');
|
1197 |
return false;
|
1198 |
}
|
@@ -1206,7 +1224,7 @@ class SSH2
|
|
1206 |
|
1207 |
$this->server_identifier = trim($temp, "\r\n");
|
1208 |
if (strlen($extra)) {
|
1209 |
-
$this->errors[] =
|
1210 |
}
|
1211 |
|
1212 |
if (version_compare($matches[3], '1.99', '<')) {
|
@@ -1221,6 +1239,7 @@ class SSH2
|
|
1221 |
if (!$this->send_kex_first) {
|
1222 |
$response = $this->_get_binary_packet();
|
1223 |
if ($response === false) {
|
|
|
1224 |
user_error('Connection closed by server');
|
1225 |
return false;
|
1226 |
}
|
@@ -1309,6 +1328,8 @@ class SSH2
|
|
1309 |
}
|
1310 |
|
1311 |
$server_host_key_algorithms = array(
|
|
|
|
|
1312 |
'ssh-rsa', // RECOMMENDED sign Raw RSA Key
|
1313 |
'ssh-dss' // REQUIRED sign Raw DSS Key
|
1314 |
);
|
@@ -1459,6 +1480,7 @@ class SSH2
|
|
1459 |
|
1460 |
$kexinit_payload_server = $this->_get_binary_packet();
|
1461 |
if ($kexinit_payload_server === false) {
|
|
|
1462 |
user_error('Connection closed by server');
|
1463 |
return false;
|
1464 |
}
|
@@ -1595,6 +1617,7 @@ class SSH2
|
|
1595 |
|
1596 |
$response = $this->_get_binary_packet();
|
1597 |
if ($response === false) {
|
|
|
1598 |
user_error('Connection closed by server');
|
1599 |
return false;
|
1600 |
}
|
@@ -1687,12 +1710,14 @@ class SSH2
|
|
1687 |
$data = pack('CNa*', $clientKexInitMessage, strlen($eBytes), $eBytes);
|
1688 |
|
1689 |
if (!$this->_send_binary_packet($data)) {
|
|
|
1690 |
user_error('Connection closed by server');
|
1691 |
return false;
|
1692 |
}
|
1693 |
|
1694 |
$response = $this->_get_binary_packet();
|
1695 |
if ($response === false) {
|
|
|
1696 |
user_error('Connection closed by server');
|
1697 |
return false;
|
1698 |
}
|
@@ -1782,7 +1807,18 @@ class SSH2
|
|
1782 |
return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
|
1783 |
}
|
1784 |
|
1785 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1786 |
user_error('Server Host Key Algorithm Mismatch');
|
1787 |
return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
|
1788 |
}
|
@@ -1799,6 +1835,7 @@ class SSH2
|
|
1799 |
$response = $this->_get_binary_packet();
|
1800 |
|
1801 |
if ($response === false) {
|
|
|
1802 |
user_error('Connection closed by server');
|
1803 |
return false;
|
1804 |
}
|
@@ -1820,7 +1857,7 @@ class SSH2
|
|
1820 |
$this->encrypt = $this->_encryption_algorithm_to_crypt_instance($encrypt);
|
1821 |
if ($this->encrypt) {
|
1822 |
if ($this->crypto_engine) {
|
1823 |
-
$this->encrypt->
|
1824 |
}
|
1825 |
if ($this->encrypt->block_size) {
|
1826 |
$this->encrypt_block_size = $this->encrypt->block_size;
|
@@ -1844,7 +1881,7 @@ class SSH2
|
|
1844 |
$this->decrypt = $this->_encryption_algorithm_to_crypt_instance($decrypt);
|
1845 |
if ($this->decrypt) {
|
1846 |
if ($this->crypto_engine) {
|
1847 |
-
$this->decrypt->
|
1848 |
}
|
1849 |
if ($this->decrypt->block_size) {
|
1850 |
$this->decrypt_block_size = $this->decrypt->block_size;
|
@@ -2095,6 +2132,7 @@ class SSH2
|
|
2095 |
function login($username)
|
2096 |
{
|
2097 |
$args = func_get_args();
|
|
|
2098 |
return call_user_func_array(array(&$this, '_login'), $args);
|
2099 |
}
|
2100 |
|
@@ -2166,6 +2204,7 @@ class SSH2
|
|
2166 |
}
|
2167 |
return $this->_login_helper($username, $password);
|
2168 |
}
|
|
|
2169 |
user_error('Connection closed by server');
|
2170 |
return false;
|
2171 |
}
|
@@ -2218,6 +2257,7 @@ class SSH2
|
|
2218 |
|
2219 |
$response = $this->_get_binary_packet();
|
2220 |
if ($response === false) {
|
|
|
2221 |
user_error('Connection closed by server');
|
2222 |
return false;
|
2223 |
}
|
@@ -2276,6 +2316,7 @@ class SSH2
|
|
2276 |
|
2277 |
$response = $this->_get_binary_packet();
|
2278 |
if ($response === false) {
|
|
|
2279 |
user_error('Connection closed by server');
|
2280 |
return false;
|
2281 |
}
|
@@ -2294,7 +2335,7 @@ class SSH2
|
|
2294 |
return false;
|
2295 |
}
|
2296 |
extract(unpack('Nlength', $this->_string_shift($response, 4)));
|
2297 |
-
$this->errors[] = 'SSH_MSG_USERAUTH_PASSWD_CHANGEREQ: ' .
|
2298 |
return $this->_disconnect(NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER);
|
2299 |
case NET_SSH2_MSG_USERAUTH_FAILURE:
|
2300 |
// can we use keyboard-interactive authentication? if not then either the login is bad or the server employees
|
@@ -2376,6 +2417,7 @@ class SSH2
|
|
2376 |
} else {
|
2377 |
$orig = $response = $this->_get_binary_packet();
|
2378 |
if ($response === false) {
|
|
|
2379 |
user_error('Connection closed by server');
|
2380 |
return false;
|
2381 |
}
|
@@ -2564,6 +2606,7 @@ class SSH2
|
|
2564 |
|
2565 |
$response = $this->_get_binary_packet();
|
2566 |
if ($response === false) {
|
|
|
2567 |
user_error('Connection closed by server');
|
2568 |
return false;
|
2569 |
}
|
@@ -2595,8 +2638,23 @@ class SSH2
|
|
2595 |
|
2596 |
$packet = $part1 . chr(1) . $part2;
|
2597 |
$privatekey->setSignatureMode(RSA::SIGNATURE_PKCS1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2598 |
$signature = $privatekey->sign(pack('Na*a*', strlen($this->session_id), $this->session_id, $packet));
|
2599 |
-
$signature = pack('Na*Na*', strlen(
|
2600 |
$packet.= pack('Na*', strlen($signature), $signature);
|
2601 |
|
2602 |
if (!$this->_send_binary_packet($packet)) {
|
@@ -2605,6 +2663,7 @@ class SSH2
|
|
2605 |
|
2606 |
$response = $this->_get_binary_packet();
|
2607 |
if ($response === false) {
|
|
|
2608 |
user_error('Connection closed by server');
|
2609 |
return false;
|
2610 |
}
|
@@ -2731,6 +2790,7 @@ class SSH2
|
|
2731 |
|
2732 |
$response = $this->_get_binary_packet();
|
2733 |
if ($response === false) {
|
|
|
2734 |
user_error('Connection closed by server');
|
2735 |
return false;
|
2736 |
}
|
@@ -2870,6 +2930,7 @@ class SSH2
|
|
2870 |
|
2871 |
$response = $this->_get_binary_packet();
|
2872 |
if ($response === false) {
|
|
|
2873 |
user_error('Connection closed by server');
|
2874 |
return false;
|
2875 |
}
|
@@ -3184,6 +3245,66 @@ class SSH2
|
|
3184 |
return (bool) ($this->bitmap & self::MASK_LOGIN);
|
3185 |
}
|
3186 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3187 |
/**
|
3188 |
* Resets a connection for re-use
|
3189 |
*
|
@@ -3322,7 +3443,7 @@ class SSH2
|
|
3322 |
return false;
|
3323 |
}
|
3324 |
extract(unpack('Nreason_code/Nlength', $this->_string_shift($payload, 8)));
|
3325 |
-
$this->errors[] = 'SSH_MSG_DISCONNECT: ' . $this->disconnect_reasons[$reason_code] . "\r\n" .
|
3326 |
$this->bitmap = 0;
|
3327 |
return false;
|
3328 |
case NET_SSH2_MSG_IGNORE:
|
@@ -3334,7 +3455,7 @@ class SSH2
|
|
3334 |
return false;
|
3335 |
}
|
3336 |
extract(unpack('Nlength', $this->_string_shift($payload, 4)));
|
3337 |
-
$this->errors[] = 'SSH_MSG_DEBUG: ' .
|
3338 |
$payload = $this->_get_binary_packet($skip_channel_filter);
|
3339 |
break;
|
3340 |
case NET_SSH2_MSG_UNIMPLEMENTED:
|
@@ -3357,7 +3478,7 @@ class SSH2
|
|
3357 |
return false;
|
3358 |
}
|
3359 |
extract(unpack('Nlength', $this->_string_shift($payload, 4)));
|
3360 |
-
$this->banner_message =
|
3361 |
$payload = $this->_get_binary_packet();
|
3362 |
}
|
3363 |
|
@@ -3584,6 +3705,7 @@ class SSH2
|
|
3584 |
|
3585 |
$response = $this->_get_binary_packet(true);
|
3586 |
if ($response === false) {
|
|
|
3587 |
user_error('Connection closed by server');
|
3588 |
return false;
|
3589 |
}
|
@@ -3592,10 +3714,6 @@ class SSH2
|
|
3592 |
if ($client_channel == -1 && $response === true) {
|
3593 |
return true;
|
3594 |
}
|
3595 |
-
if (!strlen($response)) {
|
3596 |
-
return '';
|
3597 |
-
}
|
3598 |
-
|
3599 |
if (!strlen($response)) {
|
3600 |
return false;
|
3601 |
}
|
@@ -4480,6 +4598,8 @@ class SSH2
|
|
4480 |
|
4481 |
break;
|
4482 |
case 'ssh-rsa':
|
|
|
|
|
4483 |
if (strlen($server_public_host_key) < 4) {
|
4484 |
return false;
|
4485 |
}
|
@@ -4502,8 +4622,21 @@ class SSH2
|
|
4502 |
$signature = $this->_string_shift($signature, $temp['length']);
|
4503 |
|
4504 |
$rsa = new RSA();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4505 |
$rsa->setSignatureMode(RSA::SIGNATURE_PKCS1);
|
4506 |
$rsa->loadKey(array('e' => $e, 'n' => $n), RSA::PUBLIC_FORMAT_RAW);
|
|
|
4507 |
if (!$rsa->verify($this->exchange_hash, $signature)) {
|
4508 |
user_error('Bad server signature');
|
4509 |
return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE);
|
@@ -4530,7 +4663,30 @@ class SSH2
|
|
4530 |
$s = $s->modPow($e, $n);
|
4531 |
$s = $s->toBytes();
|
4532 |
|
4533 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4534 |
$h = chr(0x01) . str_repeat(chr(0xFF), $nLength - 2 - strlen($h)) . $h;
|
4535 |
|
4536 |
if ($s != $h) {
|
918 |
*/
|
919 |
var $binary_packet_buffer = false;
|
920 |
|
921 |
+
/**
|
922 |
+
* Preferred Signature Format
|
923 |
+
*
|
924 |
+
* @var string|false
|
925 |
+
* @access private
|
926 |
+
*/
|
927 |
+
var $preferred_signature_format = false;
|
928 |
+
|
929 |
+
/**
|
930 |
+
* Authentication Credentials
|
931 |
+
*
|
932 |
+
* @var array
|
933 |
+
* @access private
|
934 |
+
*/
|
935 |
+
var $auth = array();
|
936 |
+
|
937 |
/**
|
938 |
* Default Constructor.
|
939 |
*
|
1140 |
}
|
1141 |
$elapsed = microtime(true) - $start;
|
1142 |
|
1143 |
+
if ($this->curTimeout) {
|
1144 |
+
$this->curTimeout-= $elapsed;
|
1145 |
+
if ($this->curTimeout < 0) {
|
1146 |
+
$this->is_timeout = true;
|
1147 |
+
return false;
|
1148 |
+
}
|
1149 |
}
|
1150 |
}
|
1151 |
|
1210 |
}
|
1211 |
|
1212 |
if (feof($this->fsock)) {
|
1213 |
+
$this->bitmap = 0;
|
1214 |
user_error('Connection closed by server');
|
1215 |
return false;
|
1216 |
}
|
1224 |
|
1225 |
$this->server_identifier = trim($temp, "\r\n");
|
1226 |
if (strlen($extra)) {
|
1227 |
+
$this->errors[] = $data;
|
1228 |
}
|
1229 |
|
1230 |
if (version_compare($matches[3], '1.99', '<')) {
|
1239 |
if (!$this->send_kex_first) {
|
1240 |
$response = $this->_get_binary_packet();
|
1241 |
if ($response === false) {
|
1242 |
+
$this->bitmap = 0;
|
1243 |
user_error('Connection closed by server');
|
1244 |
return false;
|
1245 |
}
|
1328 |
}
|
1329 |
|
1330 |
$server_host_key_algorithms = array(
|
1331 |
+
'rsa-sha2-256', // RFC 8332
|
1332 |
+
'rsa-sha2-512', // RFC 8332
|
1333 |
'ssh-rsa', // RECOMMENDED sign Raw RSA Key
|
1334 |
'ssh-dss' // REQUIRED sign Raw DSS Key
|
1335 |
);
|
1480 |
|
1481 |
$kexinit_payload_server = $this->_get_binary_packet();
|
1482 |
if ($kexinit_payload_server === false) {
|
1483 |
+
$this->bitmap = 0;
|
1484 |
user_error('Connection closed by server');
|
1485 |
return false;
|
1486 |
}
|
1617 |
|
1618 |
$response = $this->_get_binary_packet();
|
1619 |
if ($response === false) {
|
1620 |
+
$this->bitmap = 0;
|
1621 |
user_error('Connection closed by server');
|
1622 |
return false;
|
1623 |
}
|
1710 |
$data = pack('CNa*', $clientKexInitMessage, strlen($eBytes), $eBytes);
|
1711 |
|
1712 |
if (!$this->_send_binary_packet($data)) {
|
1713 |
+
$this->bitmap = 0;
|
1714 |
user_error('Connection closed by server');
|
1715 |
return false;
|
1716 |
}
|
1717 |
|
1718 |
$response = $this->_get_binary_packet();
|
1719 |
if ($response === false) {
|
1720 |
+
$this->bitmap = 0;
|
1721 |
user_error('Connection closed by server');
|
1722 |
return false;
|
1723 |
}
|
1807 |
return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
|
1808 |
}
|
1809 |
|
1810 |
+
switch ($server_host_key_algorithm) {
|
1811 |
+
case 'ssh-dss':
|
1812 |
+
$expected_key_format = 'ssh-dss';
|
1813 |
+
break;
|
1814 |
+
//case 'rsa-sha2-256':
|
1815 |
+
//case 'rsa-sha2-512':
|
1816 |
+
//case 'ssh-rsa':
|
1817 |
+
default:
|
1818 |
+
$expected_key_format = 'ssh-rsa';
|
1819 |
+
}
|
1820 |
+
|
1821 |
+
if ($public_key_format != $expected_key_format || $this->signature_format != $server_host_key_algorithm) {
|
1822 |
user_error('Server Host Key Algorithm Mismatch');
|
1823 |
return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
|
1824 |
}
|
1835 |
$response = $this->_get_binary_packet();
|
1836 |
|
1837 |
if ($response === false) {
|
1838 |
+
$this->bitmap = 0;
|
1839 |
user_error('Connection closed by server');
|
1840 |
return false;
|
1841 |
}
|
1857 |
$this->encrypt = $this->_encryption_algorithm_to_crypt_instance($encrypt);
|
1858 |
if ($this->encrypt) {
|
1859 |
if ($this->crypto_engine) {
|
1860 |
+
$this->encrypt->setPreferredEngine($this->crypto_engine);
|
1861 |
}
|
1862 |
if ($this->encrypt->block_size) {
|
1863 |
$this->encrypt_block_size = $this->encrypt->block_size;
|
1881 |
$this->decrypt = $this->_encryption_algorithm_to_crypt_instance($decrypt);
|
1882 |
if ($this->decrypt) {
|
1883 |
if ($this->crypto_engine) {
|
1884 |
+
$this->decrypt->setPreferredEngine($this->crypto_engine);
|
1885 |
}
|
1886 |
if ($this->decrypt->block_size) {
|
1887 |
$this->decrypt_block_size = $this->decrypt->block_size;
|
2132 |
function login($username)
|
2133 |
{
|
2134 |
$args = func_get_args();
|
2135 |
+
$this->auth[] = $args;
|
2136 |
return call_user_func_array(array(&$this, '_login'), $args);
|
2137 |
}
|
2138 |
|
2204 |
}
|
2205 |
return $this->_login_helper($username, $password);
|
2206 |
}
|
2207 |
+
$this->bitmap = 0;
|
2208 |
user_error('Connection closed by server');
|
2209 |
return false;
|
2210 |
}
|
2257 |
|
2258 |
$response = $this->_get_binary_packet();
|
2259 |
if ($response === false) {
|
2260 |
+
$this->bitmap = 0;
|
2261 |
user_error('Connection closed by server');
|
2262 |
return false;
|
2263 |
}
|
2316 |
|
2317 |
$response = $this->_get_binary_packet();
|
2318 |
if ($response === false) {
|
2319 |
+
$this->bitmap = 0;
|
2320 |
user_error('Connection closed by server');
|
2321 |
return false;
|
2322 |
}
|
2335 |
return false;
|
2336 |
}
|
2337 |
extract(unpack('Nlength', $this->_string_shift($response, 4)));
|
2338 |
+
$this->errors[] = 'SSH_MSG_USERAUTH_PASSWD_CHANGEREQ: ' . $this->_string_shift($response, $length);
|
2339 |
return $this->_disconnect(NET_SSH2_DISCONNECT_AUTH_CANCELLED_BY_USER);
|
2340 |
case NET_SSH2_MSG_USERAUTH_FAILURE:
|
2341 |
// can we use keyboard-interactive authentication? if not then either the login is bad or the server employees
|
2417 |
} else {
|
2418 |
$orig = $response = $this->_get_binary_packet();
|
2419 |
if ($response === false) {
|
2420 |
+
$this->bitmap = 0;
|
2421 |
user_error('Connection closed by server');
|
2422 |
return false;
|
2423 |
}
|
2606 |
|
2607 |
$response = $this->_get_binary_packet();
|
2608 |
if ($response === false) {
|
2609 |
+
$this->bitmap = 0;
|
2610 |
user_error('Connection closed by server');
|
2611 |
return false;
|
2612 |
}
|
2638 |
|
2639 |
$packet = $part1 . chr(1) . $part2;
|
2640 |
$privatekey->setSignatureMode(RSA::SIGNATURE_PKCS1);
|
2641 |
+
switch ($this->signature_format) {
|
2642 |
+
case 'rsa-sha2-512':
|
2643 |
+
$hash = 'sha512';
|
2644 |
+
$type = 'rsa-sha2-512';
|
2645 |
+
break;
|
2646 |
+
case 'rsa-sha2-256':
|
2647 |
+
$hash = 'sha256';
|
2648 |
+
$type = 'rsa-sha2-256';
|
2649 |
+
break;
|
2650 |
+
//case 'ssh-rsa':
|
2651 |
+
default:
|
2652 |
+
$hash = 'sha1';
|
2653 |
+
$type = 'ssh-rsa';
|
2654 |
+
}
|
2655 |
+
$privatekey->setHash($hash);
|
2656 |
$signature = $privatekey->sign(pack('Na*a*', strlen($this->session_id), $this->session_id, $packet));
|
2657 |
+
$signature = pack('Na*Na*', strlen($type), $type, strlen($signature), $signature);
|
2658 |
$packet.= pack('Na*', strlen($signature), $signature);
|
2659 |
|
2660 |
if (!$this->_send_binary_packet($packet)) {
|
2663 |
|
2664 |
$response = $this->_get_binary_packet();
|
2665 |
if ($response === false) {
|
2666 |
+
$this->bitmap = 0;
|
2667 |
user_error('Connection closed by server');
|
2668 |
return false;
|
2669 |
}
|
2790 |
|
2791 |
$response = $this->_get_binary_packet();
|
2792 |
if ($response === false) {
|
2793 |
+
$this->bitmap = 0;
|
2794 |
user_error('Connection closed by server');
|
2795 |
return false;
|
2796 |
}
|
2930 |
|
2931 |
$response = $this->_get_binary_packet();
|
2932 |
if ($response === false) {
|
2933 |
+
$this->bitmap = 0;
|
2934 |
user_error('Connection closed by server');
|
2935 |
return false;
|
2936 |
}
|
3245 |
return (bool) ($this->bitmap & self::MASK_LOGIN);
|
3246 |
}
|
3247 |
|
3248 |
+
/**
|
3249 |
+
* Pings a server connection, or tries to reconnect if the connection has gone down
|
3250 |
+
*
|
3251 |
+
* Inspired by http://php.net/manual/en/mysqli.ping.php
|
3252 |
+
*
|
3253 |
+
* @return bool
|
3254 |
+
* @access public
|
3255 |
+
*/
|
3256 |
+
function ping()
|
3257 |
+
{
|
3258 |
+
if (!$this->isAuthenticated()) {
|
3259 |
+
return false;
|
3260 |
+
}
|
3261 |
+
|
3262 |
+
$this->window_size_server_to_client[NET_SSH2_CHANNEL_KEEP_ALIVE] = $this->window_size;
|
3263 |
+
$packet_size = 0x4000;
|
3264 |
+
$packet = pack(
|
3265 |
+
'CNa*N3',
|
3266 |
+
NET_SSH2_MSG_CHANNEL_OPEN,
|
3267 |
+
strlen('session'),
|
3268 |
+
'session',
|
3269 |
+
NET_SSH2_CHANNEL_KEEP_ALIVE,
|
3270 |
+
$this->window_size_server_to_client[NET_SSH2_CHANNEL_KEEP_ALIVE],
|
3271 |
+
$packet_size
|
3272 |
+
);
|
3273 |
+
|
3274 |
+
if (!@$this->_send_binary_packet($packet)) {
|
3275 |
+
return $this->_reconnect();
|
3276 |
+
}
|
3277 |
+
|
3278 |
+
$this->channel_status[NET_SSH2_CHANNEL_KEEP_ALIVE] = NET_SSH2_MSG_CHANNEL_OPEN;
|
3279 |
+
|
3280 |
+
$response = @$this->_get_channel_packet(NET_SSH2_CHANNEL_KEEP_ALIVE);
|
3281 |
+
if ($response !== false) {
|
3282 |
+
$this->_close_channel(NET_SSH2_CHANNEL_KEEP_ALIVE);
|
3283 |
+
return true;
|
3284 |
+
}
|
3285 |
+
|
3286 |
+
return $this->_reconnect();
|
3287 |
+
}
|
3288 |
+
|
3289 |
+
/**
|
3290 |
+
* In situ reconnect method
|
3291 |
+
*
|
3292 |
+
* @return boolean
|
3293 |
+
* @access private
|
3294 |
+
*/
|
3295 |
+
function _reconnect()
|
3296 |
+
{
|
3297 |
+
$this->_reset_connection(NET_SSH2_DISCONNECT_CONNECTION_LOST);
|
3298 |
+
$this->retry_connect = true;
|
3299 |
+
if (!$this->_connect()) {
|
3300 |
+
return false;
|
3301 |
+
}
|
3302 |
+
foreach ($this->auth as $auth) {
|
3303 |
+
$result = call_user_func_array(array(&$this, 'parent::login'), $auth);
|
3304 |
+
}
|
3305 |
+
return $result;
|
3306 |
+
}
|
3307 |
+
|
3308 |
/**
|
3309 |
* Resets a connection for re-use
|
3310 |
*
|
3443 |
return false;
|
3444 |
}
|
3445 |
extract(unpack('Nreason_code/Nlength', $this->_string_shift($payload, 8)));
|
3446 |
+
$this->errors[] = 'SSH_MSG_DISCONNECT: ' . $this->disconnect_reasons[$reason_code] . "\r\n" . $this->_string_shift($payload, $length);
|
3447 |
$this->bitmap = 0;
|
3448 |
return false;
|
3449 |
case NET_SSH2_MSG_IGNORE:
|
3455 |
return false;
|
3456 |
}
|
3457 |
extract(unpack('Nlength', $this->_string_shift($payload, 4)));
|
3458 |
+
$this->errors[] = 'SSH_MSG_DEBUG: ' . $this->_string_shift($payload, $length);
|
3459 |
$payload = $this->_get_binary_packet($skip_channel_filter);
|
3460 |
break;
|
3461 |
case NET_SSH2_MSG_UNIMPLEMENTED:
|
3478 |
return false;
|
3479 |
}
|
3480 |
extract(unpack('Nlength', $this->_string_shift($payload, 4)));
|
3481 |
+
$this->banner_message = $this->_string_shift($payload, $length);
|
3482 |
$payload = $this->_get_binary_packet();
|
3483 |
}
|
3484 |
|
3705 |
|
3706 |
$response = $this->_get_binary_packet(true);
|
3707 |
if ($response === false) {
|
3708 |
+
$this->bitmap = 0;
|
3709 |
user_error('Connection closed by server');
|
3710 |
return false;
|
3711 |
}
|
3714 |
if ($client_channel == -1 && $response === true) {
|
3715 |
return true;
|
3716 |
}
|
|
|
|
|
|
|
|
|
3717 |
if (!strlen($response)) {
|
3718 |
return false;
|
3719 |
}
|
4598 |
|
4599 |
break;
|
4600 |
case 'ssh-rsa':
|
4601 |
+
case 'rsa-sha2-256':
|
4602 |
+
case 'rsa-sha2-512':
|
4603 |
if (strlen($server_public_host_key) < 4) {
|
4604 |
return false;
|
4605 |
}
|
4622 |
$signature = $this->_string_shift($signature, $temp['length']);
|
4623 |
|
4624 |
$rsa = new RSA();
|
4625 |
+
switch ($this->signature_format) {
|
4626 |
+
case 'rsa-sha2-512':
|
4627 |
+
$hash = 'sha512';
|
4628 |
+
break;
|
4629 |
+
case 'rsa-sha2-256':
|
4630 |
+
$hash = 'sha256';
|
4631 |
+
break;
|
4632 |
+
//case 'ssh-rsa':
|
4633 |
+
default:
|
4634 |
+
$hash = 'sha1';
|
4635 |
+
}
|
4636 |
+
$rsa->setHash($hash);
|
4637 |
$rsa->setSignatureMode(RSA::SIGNATURE_PKCS1);
|
4638 |
$rsa->loadKey(array('e' => $e, 'n' => $n), RSA::PUBLIC_FORMAT_RAW);
|
4639 |
+
|
4640 |
if (!$rsa->verify($this->exchange_hash, $signature)) {
|
4641 |
user_error('Bad server signature');
|
4642 |
return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE);
|
4663 |
$s = $s->modPow($e, $n);
|
4664 |
$s = $s->toBytes();
|
4665 |
|
4666 |
+
switch ($this->signature_format) {
|
4667 |
+
case 'rsa-sha2-512':
|
4668 |
+
$hash = 'sha512';
|
4669 |
+
break;
|
4670 |
+
case 'rsa-sha2-256':
|
4671 |
+
$hash = 'sha256';
|
4672 |
+
break;
|
4673 |
+
//case 'ssh-rsa':
|
4674 |
+
default:
|
4675 |
+
$hash = 'sha1';
|
4676 |
+
}
|
4677 |
+
$hashObj = new Hash($hash);
|
4678 |
+
switch ($this->signature_format) {
|
4679 |
+
case 'rsa-sha2-512':
|
4680 |
+
$h = pack('N5a*', 0x00305130, 0x0D060960, 0x86480165, 0x03040203, 0x05000440, $hashObj->hash($this->exchange_hash));
|
4681 |
+
break;
|
4682 |
+
case 'rsa-sha2-256':
|
4683 |
+
$h = pack('N5a*', 0x00303130, 0x0D060960, 0x86480165, 0x03040201, 0x05000420, $hashObj->hash($this->exchange_hash));
|
4684 |
+
break;
|
4685 |
+
//case 'ssh-rsa':
|
4686 |
+
default:
|
4687 |
+
$hash = 'sha1';
|
4688 |
+
$h = pack('N4a*', 0x00302130, 0x0906052B, 0x0E03021A, 0x05000414, $hashObj->hash($this->exchange_hash));
|
4689 |
+
}
|
4690 |
$h = chr(0x01) . str_repeat(chr(0xFF), $nLength - 2 - strlen($h)) . $h;
|
4691 |
|
4692 |
if ($s != $h) {
|
vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent.php
CHANGED
@@ -155,12 +155,14 @@ class Agent
|
|
155 |
$packet = pack('NC', 1, self::SSH_AGENTC_REQUEST_IDENTITIES);
|
156 |
if (strlen($packet) != fputs($this->fsock, $packet)) {
|
157 |
user_error('Connection closed while requesting identities');
|
|
|
158 |
}
|
159 |
|
160 |
$length = current(unpack('N', fread($this->fsock, 4)));
|
161 |
$type = ord(fread($this->fsock, 1));
|
162 |
if ($type != self::SSH_AGENT_IDENTITIES_ANSWER) {
|
163 |
user_error('Unable to request identities');
|
|
|
164 |
}
|
165 |
|
166 |
$identities = array();
|
155 |
$packet = pack('NC', 1, self::SSH_AGENTC_REQUEST_IDENTITIES);
|
156 |
if (strlen($packet) != fputs($this->fsock, $packet)) {
|
157 |
user_error('Connection closed while requesting identities');
|
158 |
+
return array();
|
159 |
}
|
160 |
|
161 |
$length = current(unpack('N', fread($this->fsock, 4)));
|
162 |
$type = ord(fread($this->fsock, 1));
|
163 |
if ($type != self::SSH_AGENT_IDENTITIES_ANSWER) {
|
164 |
user_error('Unable to request identities');
|
165 |
+
return array();
|
166 |
}
|
167 |
|
168 |
$identities = array();
|
vendor/phpseclib/phpseclib/phpseclib/System/SSH/Agent/Identity.php
CHANGED
@@ -126,6 +126,18 @@ class Identity
|
|
126 |
{
|
127 |
}
|
128 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
/**
|
130 |
* Create a signature
|
131 |
*
|
126 |
{
|
127 |
}
|
128 |
|
129 |
+
/**
|
130 |
+
* Set Hash
|
131 |
+
*
|
132 |
+
* ssh-agent doesn't support using hashes for RSA other than SHA1
|
133 |
+
*
|
134 |
+
* @param string $hash
|
135 |
+
* @access public
|
136 |
+
*/
|
137 |
+
function setHash($hash)
|
138 |
+
{
|
139 |
+
}
|
140 |
+
|
141 |
/**
|
142 |
* Create a signature
|
143 |
*
|