diff --git a/includes/class.admin_section.php b/includes/class.admin_section.php
index 096a9a0..4ea8d3c 100644
--- a/includes/class.admin_section.php
+++ b/includes/class.admin_section.php
@@ -9,12 +9,12 @@
*/
class SLB_Admin_Section extends SLB_Admin_View {
/* Properties */
-
+
protected $parent_required = true;
protected $parent_custom = false;
-
+
/* Init */
-
+
public function __construct($id, $parent, $labels, $callback = null, $capability = null) {
// Default
parent::__construct($id, $labels, $callback, $capability);
@@ -22,9 +22,9 @@ public function __construct($id, $parent, $labels, $callback = null, $capability
$this->set_parent($parent);
return $this;
}
-
+
/* Getters/Setters */
-
+
/**
* Retrieve URI
* @uses Admin_View::get_uri()
diff --git a/includes/class.admin_view.php b/includes/class.admin_view.php
index cc0d402..31ceb19 100644
--- a/includes/class.admin_view.php
+++ b/includes/class.admin_view.php
@@ -2,62 +2,62 @@
/**
* Admin View Base
- * Core functionality Admin UI components
+ * Core functionality Admin UI components
* @package Simple Lightbox
* @subpackage Admin
* @author Archetyped
*/
class SLB_Admin_View extends SLB_Base_Object {
/* Properties */
-
+
/**
* Labels
* @var array (Associative)
*/
protected $labels = array();
-
+
/**
* Function to handle building UI
* @var callback
*/
protected $callback = null;
-
+
/**
* Capability for access control
- * @var string
+ * @var string
*/
protected $capability = 'manage_options';
-
+
/**
* Icon to use
* @var string
*/
protected $icon = null;
-
+
/**
* View parent ID/Slug
* @var string
*/
protected $parent = null;
-
+
/**
* Whether parent is a custom view or a default WP one
* @var bool
*/
protected $parent_custom = true;
-
+
/**
* If view requires a parent
* @var bool
*/
protected $parent_required = false;
-
+
/**
* WP-Generated hook name for view
* @var string
*/
protected $hookname = null;
-
+
/**
* Raw content parameters
* Stores pre-rendered content parameters
@@ -65,20 +65,20 @@ class SLB_Admin_View extends SLB_Base_Object {
* @var array
*/
protected $content_raw = array();
-
+
/**
* Parsed content parameters
* @var array
*/
protected $content = array();
-
+
/**
* Messages to be displayed
* Indexed Array
* @var array
*/
protected $messages = array();
-
+
/**
* Required properties
* Associative array
@@ -87,7 +87,7 @@ class SLB_Admin_View extends SLB_Base_Object {
* @var array
*/
private $required = array();
-
+
/**
* Default required properties
* Merged into $required array with this->init_required()
@@ -95,9 +95,9 @@ class SLB_Admin_View extends SLB_Base_Object {
* @var array
*/
private $_required = array ( 'id' => 'string', 'labels' => 'array' );
-
+
/* Init */
-
+
/**
* Constructor
* @return obj Current instance
@@ -113,14 +113,14 @@ public function __construct($id, $labels, $callback = null, $capability = null,
$this->init_required();
return $this;
}
-
+
protected function init_required() {
$this->required = array_merge($this->_required, $this->required);
// Check for parent requirement
if ( $this->parent_required )
$this->required['parent'] = 'string';
}
-
+
/**
* Set required feature
* @param string $feature Required feature
@@ -131,7 +131,7 @@ protected function _require($feature) {
}
return $this;
}
-
+
/**
* Check if feature is required
* @param string $feature Feature to check for
@@ -140,9 +140,9 @@ protected function _require($feature) {
protected function _is_required($feature) {
return ( isset($this->_required[$feature]) ) ? true : false;
}
-
+
/* Property Methods */
-
+
/**
* Retrieve ID (Formatted by default)
* @param bool $formatted (optional) Whether ID should be formatted for external use or not
@@ -154,7 +154,7 @@ public function get_id($formatted = true) {
$this->add_prefix_ref($id);
return $id;
}
-
+
/**
* Retrieve raw ID
* @return string Raw ID
@@ -162,7 +162,7 @@ public function get_id($formatted = true) {
public function get_id_raw() {
return $this->get_id(false);
}
-
+
/**
* Retrieve label
* Uses first label (or default if defined) if specified type does not exist
@@ -179,10 +179,10 @@ public function get_label($type, $default = null) {
reset($this->labels);
$default = current($this->labels);
}
-
+
return ( empty($default) ) ? '' : $default;
}
-
+
/**
* Set text labels
* @param array|string $labels
@@ -194,8 +194,8 @@ public function set_labels($labels) {
// Single string
if ( is_string($labels) ) {
$labels = array ( $labels );
- }
-
+ }
+
// Array
if ( is_array($labels) ) {
// Merge with existing labels
@@ -206,7 +206,7 @@ public function set_labels($labels) {
}
return $this;
}
-
+
/**
* Set single text label
* @uses this->set_labels()
@@ -221,7 +221,7 @@ public function set_label($type, $value) {
}
return $this;
}
-
+
/**
* Checks if specified label is set on view
* @param string $type Label type
@@ -230,9 +230,9 @@ public function set_label($type, $value) {
public function has_label($type) {
return ( isset($this->labels[$type]) );
}
-
+
/* Content */
-
+
/**
* Add content block to view
* Child classes define method functionality
@@ -248,7 +248,7 @@ public function add_content($id, $args) {
// Return instance reference
return $this;
}
-
+
/**
* Retrieve content
*/
@@ -266,7 +266,7 @@ protected function get_content($parsed = true) {
}
return $content;
}
-
+
/**
* Parse content
* Child classes define functionality
@@ -275,7 +275,7 @@ protected function get_content($parsed = true) {
protected function parse_content() {
return $this->get_content(false);
}
-
+
/**
* Check if content has been added to view
* @return bool TRUE if content added
@@ -284,12 +284,12 @@ protected function has_content() {
$raw = $this->get_content(false);
return !empty($raw);
}
-
+
/**
* Render content
*/
protected function render_content($context = 'default') {}
-
+
/**
* Retrieve view messages
* @return array Messages
@@ -299,7 +299,7 @@ protected function &get_messages() {
$this->messages = array();
return $this->messages;
}
-
+
/**
* Save message
* @param string $text Message text
@@ -313,7 +313,7 @@ public function set_message($text) {
$msgs[] = $text;
return $this;
}
-
+
/**
* Add messages to array
* Called by internal `admin_messages` filter hook
@@ -326,7 +326,7 @@ public function do_messages($msgs = array()) {
$msgs = array_merge($msgs, $m);
return $msgs;
}
-
+
/**
* Retrieve view callback
* @return callback Callback (Default: standard handler method)
@@ -334,7 +334,7 @@ public function do_messages($msgs = array()) {
public function get_callback() {
return ( $this->has_callback() ) ? $this->callback : $this->m('handle');
}
-
+
/**
* Set callback function for building item
* @param callback $callback Callback function to use
@@ -344,7 +344,7 @@ public function set_callback($callback) {
$this->callback = ( is_callable($callback) ) ? $callback : null;
return $this;
}
-
+
/**
* Check if callback set
* @return bool TRUE if callback is set
@@ -352,14 +352,14 @@ public function set_callback($callback) {
protected function has_callback() {
return ( !empty($this->callback) ) ? true : false;
}
-
+
/**
* Run callback
*/
public function do_callback() {
call_user_func($this->get_callback());
}
-
+
/**
* Retrieve capability
* @return string Capability
@@ -367,7 +367,7 @@ public function do_callback() {
public function get_capability() {
return $this->capability;
}
-
+
/**
* Set capability for access control
* @param string $capability Capability
@@ -378,7 +378,7 @@ public function set_capability($capability) {
$this->capability = $capability;
return $this;
}
-
+
/**
* Set icon
* @param string $icon Icon URI
@@ -389,11 +389,11 @@ public function set_icon($icon) {
$this->icon = $icon;
return $this;
}
-
+
protected function get_hookname() {
return ( empty($this->hookname) ) ? '' : $this->hookname;
}
-
+
/**
* Set hookname
* @param string $hookname Hookname value
@@ -404,7 +404,7 @@ public function set_hookname($hookname) {
$this->hookname = $hookname;
return $this;
}
-
+
/**
* Retrieve parent
* Formats parent ID for custom parents
@@ -415,7 +415,7 @@ public function get_parent() {
$parent = parent::get_parent();
return ( $this->is_parent_custom() ) ? $this->add_prefix($parent) : $parent;
}
-
+
/**
* Set parent for view
* @param string $parent Parent ID
@@ -430,7 +430,7 @@ public function set_parent($parent) {
}
return $this;
}
-
+
/**
* Specify whether parent is a custom view or a WP view
* @param bool $custom (optional) TRUE if custom, FALSE if WP
@@ -442,7 +442,7 @@ protected function set_parent_custom($custom = true) {
}
return $this;
}
-
+
/**
* Set parent as WP view
* @uses this->set_parent_custom()
@@ -452,18 +452,18 @@ public function set_parent_wp() {
$this->set_parent_custom(false);
return $this;
}
-
+
/**
* Get view URI
* URI Structures:
* > Top Level Menus: admin.php?page={menu_id}
* > Pages: [parent_page_file.php|admin.php]?page={page_id}
* > Section: [parent_menu_uri]#{section_id}
- *
+ *
* @uses $admin_page_hooks to determine if page is child of default WP page
* @param string $file (optional) Base file name
* @param string $format (optional) Format string for URI
- * @return string Object URI
+ * @return string Object URI
*/
public function get_uri($file = null, $format = null) {
static $page_hooks = null;
@@ -478,7 +478,7 @@ public function get_uri($file = null, $format = null) {
if ( isset($page_hooks[$parent]) )
$file = $page_hooks[$parent];
}
-
+
if ( empty($format) ) {
$delim = ( strpos($file, '?') === false ) ? '?' : '&';
$format = '%1$s' . $delim . 'page=%2$s';
@@ -487,20 +487,20 @@ public function get_uri($file = null, $format = null) {
return $uri;
}
-
+
/* Handlers */
-
+
/**
* Default View handler
* Used as callback when none set
*/
public function handle() {}
-
+
/* Validation */
-
+
/**
* Check if instance is valid based on required properties/data types
- * @return bool TRUE if valid, FALSE if not valid
+ * @return bool TRUE if valid, FALSE if not valid
*/
public function is_valid() {
$valid = true;
@@ -513,17 +513,17 @@ public function is_valid() {
}
return $valid;
}
-
+
protected function is_child() {
return $this->parent_required;
}
-
+
protected function is_parent_custom() {
return ( $this->is_child() && $this->parent_custom ) ? true : false;
}
-
+
public function is_parent_wp() {
return ( $this->is_child() && !$this->parent_custom ) ? true : false;
}
-
+
}
\ No newline at end of file
diff --git a/includes/class.base.php b/includes/class.base.php
index 4f02a86..bf04043 100644
--- a/includes/class.base.php
+++ b/includes/class.base.php
@@ -8,7 +8,7 @@
*/
class SLB_Base {
/* Configuration */
-
+
/**
* Class type
* Controls initialization, etc.
@@ -18,53 +18,53 @@ class SLB_Base {
* @var string
*/
protected $mode = 'full';
-
+
/**
* Indicates that instance is model (main controller)
* @var bool
*/
protected $model = false;
-
+
/* Properties */
-
+
/**
* Variable name of base object in global scope
* @var string
*/
protected $base = 'slb';
-
+
/**
* Prefix for plugin-related data (attributes, DB tables, etc.)
* @var string
*/
public $prefix = 'slb';
-
+
/**
* Prefix to be added when creating internal hook (action/filter) tags
* Used by Utilities
* @var string
*/
public $hook_prefix = '';
-
+
/**
* Global data
* Facilitates sharing between decoupled objects
* @var array
*/
private static $globals = array();
-
+
protected $shared = array('options', 'admin');
-
+
/**
* Capabilities
* @var array
*/
protected $caps = null;
-
+
protected $_init = false;
-
+
private static $_init_passed = false;
-
+
/* Client */
/**
@@ -80,36 +80,36 @@ class SLB_Base {
* > Context in which the script should be included
* > in_footer (bool) optional [Default: FALSE]
* > If TRUE, file will be included in footer of page, otherwise it will be included in the header
- *
+ *
* Array is processed and converted to an object on init
*/
private $client_files = array (
'scripts' => array(),
'styles' => array()
);
-
+
/*-** Instances **-*/
-
+
/**
* Utilities
* @var SLB_Utilities
*/
var $util = null;
-
+
/**
* Options
* @var SLB_Options
*/
protected $options = null;
-
+
/**
* Admin
* @var SLB_Admin
*/
var $admin = null;
-
+
/*-** Initialization **-*/
-
+
/**
* Constructor
*/
@@ -124,7 +124,7 @@ function __construct() {
}
}
}
-
+
/**
* Default initialization method
* @uses _init_passed
@@ -145,7 +145,7 @@ public function _init() {
if ( $this->can('control') ) {
// Options
$this->_options();
-
+
// Admin
if ( is_admin() )
$this->_admin();
@@ -153,11 +153,11 @@ public function _init() {
// Hooks
$this->_hooks();
-
+
// Client files
$this->_client_files();
}
-
+
/**
* Initialize environment (Localization, etc.)
*/
@@ -172,17 +172,17 @@ private function _env() {
if ( is_dir($lpath_abs) ) {
load_plugin_textdomain('simple-lightbox', false, $lpath);
}
-
+
// Context
add_action( ( is_admin() ) ? 'admin_print_footer_scripts' : 'wp_footer', $this->util->m('set_client_context'), $this->util->priority('client_footer_output') );
}
-
+
/**
* Initialize options
* To be implemented in child classes
*/
protected function _options() {}
-
+
/**
* Initialize options
* To be called by child class
@@ -206,7 +206,7 @@ protected function _set_options($options_config = null) {
// Set instance property
$this->options = $opts;
}
-
+
/**
* Initialize admin
* To be called by child class
@@ -229,7 +229,7 @@ private function _admin() {
// Set instance property
$this->admin = $adm;
}
-
+
/**
* Register default hooks
*/
@@ -239,13 +239,13 @@ protected function _hooks() {
$func_activate = '_activate';
if ( method_exists($this, $func_activate) )
register_activation_hook($base, $this->m($func_activate));
-
+
// Deactivation
$func_deactivate = '_deactivate';
if ( method_exists($this, $func_deactivate) )
register_deactivation_hook($base, $this->m($func_deactivate));
}
-
+
/**
* Initialize client files
*/
@@ -253,7 +253,7 @@ protected function _client_files($files = null) {
// Validation
if ( !is_array($files) || empty($files) ) {
return false;
- }
+ }
foreach ( $this->client_files as $key => $val ) {
if ( isset($files[$key]) && is_array($files[$key]) || !empty($files[$key]) ) {
$this->client_files[$key] = $this->util->parse_client_files($files[$key], $key);
@@ -263,16 +263,16 @@ protected function _client_files($files = null) {
unset($this->client_files[$key]);
}
}
-
-
+
+
// Stop if no files are set for registration
if ( empty($this->client_files) ) {
return false;
}
-
+
// Register
add_action('init', $this->m('register_client_files'));
-
+
// Enqueue
$hk_prfx = ( ( is_admin() ) ? 'admin' : 'wp' );
$hk_enqueue = $hk_prfx . '_enqueue_scripts' ;
@@ -280,7 +280,7 @@ protected function _client_files($files = null) {
add_action($hk_enqueue, $this->m('enqueue_client_files'), 10, 0);
add_action($hk_enqueue_ft, $this->m('enqueue_client_files_footer'), 1);
}
-
+
/**
* Register client files
* @see enqueue_client_files() for actual loading of files based on context
@@ -311,7 +311,7 @@ public function register_client_files() {
}
}
}
-
+
/**
* Enqueues files for client output (scripts/styles) based on context
* @uses `admin_enqueue_scripts` Action hook depending on context
@@ -384,7 +384,7 @@ function enqueue_client_files($footer = false) {
public function enqueue_client_files_footer() {
$this->enqueue_client_files(true);
}
-
+
/**
* Build function name for handling client operations
*/
@@ -394,9 +394,9 @@ function get_client_files_handler($type, $action) {
$func = false;
return $func;
}
-
+
/*-** Reflection **-*/
-
+
/**
* Retrieve base object
* @return object|bool Base object (FALSE if object does not exist)
@@ -404,12 +404,12 @@ function get_client_files_handler($type, $action) {
function &get_base() {
$base = false;
if ( isset($GLOBALS[$this->base]) )
- $base =& $GLOBALS[$this->base];
+ $base =& $GLOBALS[$this->base];
return $base;
}
-
+
/*-** Method/Function calling **-*/
-
+
/**
* Returns callback to instance method
* @param string $method Method name
@@ -418,9 +418,9 @@ function &get_base() {
function m($method) {
return $this->util->m($this, $method);
}
-
+
/*-** Prefix **-*/
-
+
/**
* Retrieve class prefix (with separator if set)
* @param bool|string $sep Separator to append to class prefix (Default: no separator)
@@ -430,7 +430,7 @@ function get_prefix($sep = null) {
$args = func_get_args();
return call_user_func_array($this->util->m($this->util, 'get_prefix'), $args);
}
-
+
/**
* Check if a string is prefixed
* @param string $text Text to check for prefix
@@ -440,7 +440,7 @@ function has_prefix($text, $sep = null) {
$args = func_get_args();
return call_user_func_array($this->util->m($this->util, 'has_prefix'), $args);
}
-
+
/**
* Prepend plugin prefix to some text
* @param string $text Text to add to prefix
@@ -452,7 +452,7 @@ function add_prefix($text, $sep = null, $once = true) {
$args = func_get_args();
return call_user_func_array($this->util->m($this->util, 'add_prefix'), $args);
}
-
+
/**
* Prepend uppercased plugin prefix to some text
* @param string $text Text to add to prefix
@@ -464,7 +464,7 @@ function add_prefix_uc($text, $sep = null, $once = true) {
$args = func_get_args();
return call_user_func_array($this->util->m($this->util, 'add_prefix_uc'), $args);
}
-
+
/**
* Add prefix to variable reference
* Updates actual variable rather than return value
@@ -479,7 +479,7 @@ function add_prefix_ref(&$var, $sep = null, $once = true) {
$args[0] =& $var;
call_user_func_array($this->util->m($this->util, 'add_prefix_ref'), $args);
}
-
+
/**
* Remove prefix from specified string
* @param string $text String to remove prefix from
@@ -489,9 +489,9 @@ function remove_prefix($text, $sep = null) {
$args = func_get_args();
return call_user_func_array($this->util->m($this->util, 'remove_prefix'), $args);
}
-
+
/*-** Capabilities **-*/
-
+
protected function can($cap) {
if ( is_null($this->caps) ) {
// Build capabilities based on instance properties
@@ -503,9 +503,9 @@ protected function can($cap) {
}
return ( isset($this->caps[$cap]) ) ? $this->caps[$cap] : false;
}
-
+
/*-** Globals **-*/
-
+
/**
* Get/Set (internal) global variables
* @uses $globals to get/set global variables
@@ -531,13 +531,13 @@ private function gvar($name = null, $val = null) {
}
return $ret;
}
-
+
private function shares($name) {
return ( !empty($this->shared) && in_array($name, $this->shared) ) ? true : false;
}
-
+
/*-** Options **-*/
-
+
/**
* Checks if options are valid
* @param array $data Data to be used on options
diff --git a/includes/class.base_collection.php b/includes/class.base_collection.php
index 1f83d10..356ab93 100644
--- a/includes/class.base_collection.php
+++ b/includes/class.base_collection.php
@@ -8,7 +8,7 @@
*/
class SLB_Base_Collection extends SLB_Base {
/* Configuration */
-
+
/**
* Set object mode
* @var string
@@ -20,28 +20,28 @@ class SLB_Base_Collection extends SLB_Base {
* @var string
*/
protected $item_type = null;
-
+
/**
* Property to use for item key
* Example: A property or method of the item
* @var string
*/
protected $key_prop = null;
-
+
/**
* Should $key_prop be called or retrieved?
* Default: Retrieved (FALSE)
* @var bool
*/
protected $key_call = false;
-
+
/**
* Items in collection unique?
* Default: FALSE
* @var bool
*/
protected $unique = false;
-
+
/* Properties */
/**
@@ -49,16 +49,16 @@ class SLB_Base_Collection extends SLB_Base {
* @var array
*/
protected $items = null;
-
+
/**
* Item metadata
* Indexed by item key
* @var array
*/
protected $items_meta = array();
-
+
/* Item Management */
-
+
/**
* Initialize collections
* Calls `init` action if collection has a hook prefix
@@ -72,7 +72,7 @@ private function init() {
}
}
}
-
+
/**
* Normalize/Validate item(s)
* TODO: If no items are specified, then collection is normalized
@@ -98,12 +98,12 @@ protected function normalize($items) {
}
return $items;
}
-
+
protected function item_valid($item) {
- // Validate item type
+ // Validate item type
return ( empty($this->item_type) || ( $item instanceof $this->item_type ) ) ? true : false;
}
-
+
/**
* Validate item key
* Checks collection for existence of key as well
@@ -114,7 +114,7 @@ protected function key_valid($key) {
$this->init();
return ( ( ( is_string($key) && !empty($key) ) || is_int($key) ) && isset($this->items[$key]) ) ? true : false;
}
-
+
/**
* Generate key for item (for storing in collection, etc.)
* @param mixed $item Item to generate key for
@@ -141,7 +141,7 @@ protected function get_key($item, $check_existing = false) {
}
return $ret;
}
-
+
/**
* Add item to collection
* @param mixed $item Item to add to collection
@@ -167,11 +167,11 @@ public function add($item, $meta = null) {
}
return $this;
}
-
+
/**
* Remove item from collection
* @param int|string $item Key of item to remove
- * @return Current instance
+ * @return Current instance
*/
public function remove($item) {
if ( $this->key_valid($item) ) {
@@ -179,7 +179,7 @@ public function remove($item) {
}
return $this;
}
-
+
/**
* Clear collection
* @return Current instance
@@ -188,7 +188,7 @@ public function clear() {
$this->items = array();
return $this;
}
-
+
/**
* Checks if item exists in the collection
* @param mixed $item Item(s) to check for
@@ -198,7 +198,7 @@ public function has($items) {
// Attempt to locate item
return false;
}
-
+
/**
* Retrieve item(s) from collection
* If no items specified, entire collection returned
@@ -215,9 +215,9 @@ public function get($args = null) {
'exclude' => array(),
);
$r = wp_parse_args($args, $args_default);
-
+
$items = $this->items;
-
+
/* Sort */
if ( !is_null($r['orderby']) ) {
// Validate
@@ -260,9 +260,9 @@ public function get($args = null) {
}
return $items;
}
-
+
/* Metadata */
-
+
/**
* Add metadata for item
* @param string|int $item Item key
@@ -291,7 +291,7 @@ protected function add_meta($item, $meta_key, $meta_value = null, $reset = false
}
return $this;
}
-
+
/**
* Remove item metadata
* @param string $item Item key
@@ -309,7 +309,7 @@ protected function remove_meta($item, $meta_key = null) {
}
return $this;
}
-
+
/**
* Retrieve metadata
* @param string $item Item key
@@ -327,9 +327,9 @@ protected function get_meta($item, $meta_key = null) {
}
return $ret;
}
-
+
/* Collection */
-
+
/**
* Build entire collection of items
* Prints output
@@ -345,7 +345,7 @@ function build($build_vars = array()) {
// Post-build output
$this->util->do_action_ref_array('build_post', array($this));
}
-
+
/**
* Parses build variables prior to use
* @uses this->reset_build_vars() to reset build variables for each request
@@ -353,9 +353,9 @@ function build($build_vars = array()) {
*/
function parse_build_vars($build_vars = array()) {
$this->reset_build_vars();
- $this->build_vars = $this->util->apply_filters('parse_build_vars', wp_parse_args($build_vars, $this->build_vars), $this);
+ $this->build_vars = $this->util->apply_filters('parse_build_vars', wp_parse_args($build_vars, $this->build_vars), $this);
}
-
+
/**
* Reset build variables to defaults
* Default Variables
diff --git a/includes/class.base_object.php b/includes/class.base_object.php
index 7b456dd..7a99b3d 100644
--- a/includes/class.base_object.php
+++ b/includes/class.base_object.php
@@ -8,27 +8,27 @@
*/
class SLB_Base_Object extends SLB_Base {
/* Configuration */
-
+
/**
* @var string
* @see Base::$mode
*/
protected $mode = 'object';
-
+
/*-** Properties **-*/
-
+
/**
* Unique ID
* @var string
*/
protected $id = '';
-
+
/**
* Parent object
* @var Base_Object
*/
protected $parent = null;
-
+
/**
* Attached files
* @var array
@@ -39,15 +39,15 @@ class SLB_Base_Object extends SLB_Base {
'scripts' => array(),
'styles' => array()
);
-
+
/**
* Properties that can be inherited from parent
* @var array
*/
protected $parent_props = array();
-
+
/*-** Methods **-*/
-
+
/**
* Constructor
* @param string $id Unique ID for content type
@@ -59,7 +59,7 @@ public function __construct($id, $props = null) {
->set_id($id)
->set_props($props);
}
-
+
/**
* Checks if object is valid
* To be overriden by child classes
@@ -67,9 +67,9 @@ public function __construct($id, $props = null) {
public function is_valid() {
return true;
}
-
+
/*-** Getters/Setters **-*/
-
+
/**
* Get ID
* @return string ID
@@ -77,7 +77,7 @@ public function is_valid() {
public function get_id() {
return $this->id;
}
-
+
/**
* Set ID
* @param string $id ID
@@ -90,7 +90,7 @@ public function set_id($id) {
}
return $this;
}
-
+
/**
* Set type properties
* @param array $props Type properties to set
@@ -107,7 +107,7 @@ protected function set_props($props) {
}
return $this;
}
-
+
/**
* Get parent
* @return object|null Parent
@@ -115,7 +115,7 @@ protected function set_props($props) {
public function get_parent() {
return $this->parent;
}
-
+
/**
* Set parent
* @param object $parent Parent object
@@ -133,7 +133,7 @@ public function set_parent($parent) {
public function has_parent() {
return ( is_null($this->parent) ) ? false : true;
}
-
+
/**
* Retrieve all ancestors
* @return array Ancestors
@@ -149,9 +149,9 @@ public function get_ancestors() {
}
return $ret;
}
-
+
/* Files */
-
+
/**
* Add file
* @param string $type Group to add file to
@@ -170,11 +170,11 @@ protected function add_file($type, $handle, $src, $deps = array()) {
$this->files[$type] = array();
}
// Add file to group
- $this->files[$type][$handle] = array('handle' => $handle, 'uri' => $src, 'deps' => $deps);
+ $this->files[$type][$handle] = array('handle' => $handle, 'uri' => $src, 'deps' => $deps);
}
return $this;
}
-
+
/**
* Add multiple files
* @param string $type Group to add files to
@@ -195,7 +195,7 @@ protected function add_files($type, $files) {
}
return $this;
}
-
+
/**
* Retrieve files
* All files or a specific group of files can be retrieved
@@ -212,7 +212,7 @@ protected function get_files($type = null) {
}
return $ret;
}
-
+
/**
* Retrieve file
* @param string $type Group to retrieve file from
@@ -258,7 +258,7 @@ protected function get_file($type, $handle, $format = null) {
}
return $ret;
}
-
+
/**
* Add stylesheet
* @param string $handle Name of the stylesheet
@@ -268,7 +268,7 @@ protected function get_file($type, $handle, $format = null) {
public function add_style($handle, $src, $deps = array()) {
return $this->add_file('styles', $handle, $src, $deps);
}
-
+
/**
* Retrieve stylesheet files
* @return array Stylesheet files
@@ -295,7 +295,7 @@ public function get_styles($opts = null) {
}
return $files;
}
-
+
/**
* Retrieve stylesheet file
* @param string $handle Name of stylesheet
@@ -305,7 +305,7 @@ public function get_styles($opts = null) {
public function get_style($handle, $format = null) {
return $this->get_file('styles', $handle, $format);
}
-
+
/**
* Add script
* @param string $handle Name of the script
@@ -315,7 +315,7 @@ public function get_style($handle, $format = null) {
public function add_script($handle, $src, $deps = array()) {
return $this->add_file('scripts', $handle, $src, $deps);
}
-
+
/**
* Retrieve script files
* @return array Script files
@@ -323,7 +323,7 @@ public function add_script($handle, $src, $deps = array()) {
public function get_scripts() {
return $this->get_files('scripts');
}
-
+
/**
* Retrieve script file
* @param string $handle Name of script
@@ -333,5 +333,5 @@ public function get_scripts() {
public function get_script($handle, $format = null) {
return $this->get_file('scripts', $handle, $format);
}
-
+
}
\ No newline at end of file
diff --git a/includes/class.collection_controller.php b/includes/class.collection_controller.php
index f284cb8..210cc33 100644
--- a/includes/class.collection_controller.php
+++ b/includes/class.collection_controller.php
@@ -8,26 +8,26 @@
*/
class SLB_Collection_Controller extends SLB_Base_Collection {
/* Configuration */
-
+
protected $mode = 'full';
-
+
protected $unique = true;
-
+
/* Properties */
-
+
protected $parent = null;
-
+
/* Methods */
public function __construct($parent = null) {
$this->set_parent($parent);
parent::__construct();
}
-
+
/* Initialization */
-
+
/* Parent */
-
+
/**
* Set parent instance
* @param SLB_Base $parent (optional) Parent instance
@@ -37,7 +37,7 @@ protected function set_parent($parent = null) {
$this->parent = ( $parent instanceof SLB_Base ) ? $parent : null;
return $this;
}
-
+
/**
* Check if parent set
* @return bool TRUE if parent set
@@ -45,7 +45,7 @@ protected function set_parent($parent = null) {
protected function has_parent() {
return ( is_object($this->get_parent()) ) ? true : false;
}
-
+
/**
* Retrieve parent
* @uses $parent
diff --git a/includes/class.component.php b/includes/class.component.php
index 5b2d887..cc07f60 100644
--- a/includes/class.component.php
+++ b/includes/class.component.php
@@ -8,19 +8,19 @@
*/
class SLB_Component extends SLB_Base_Object {
/* Properties */
-
+
/**
* Pretty name
* @var string
*/
protected $name = '';
-
+
protected $props_required = array();
-
+
private $props_required_base = array('id');
-
+
/* Get/Set */
-
+
/**
* Set name
* @param string $name Name
@@ -35,21 +35,21 @@ public function set_name($name) {
}
return $this;
}
-
+
public function get_name() {
return $this->name;
}
-
+
public function set_scripts($scripts) {
$this->add_files('scripts', $scripts);
}
-
+
public function set_styles($styles) {
$this->add_files('styles', $styles);
}
-
+
/* Assets */
-
+
/**
* Get formatted handle for file
* @param string $base_handle Base handle to format
@@ -58,7 +58,7 @@ public function set_styles($styles) {
public function get_handle($base_handle) {
return $this->add_prefix( array('asset', $this->get_id(), $base_handle), '-');
}
-
+
/**
* Enqueue files in client
* @param string $type (optional) Type of file to load (singular) (Default: All client file types)
@@ -82,7 +82,7 @@ public function enqueue_client_files($type = null) {
$f = (object) $f;
// Format handle
$handle = $this->get_handle($f->handle);
-
+
// Format dependencies
$deps = array();
foreach ( $f->deps as $dep ) {
@@ -96,7 +96,7 @@ public function enqueue_client_files($type = null) {
unset($files, $f, $param_final, $handle, $deps, $dep);
}
}
-
+
/**
* Enqueue scripts
*/
@@ -110,9 +110,9 @@ public function enqueue_scripts() {
public function enqueue_styles() {
$this->enqueue_client_files('style');
}
-
+
/* Helpers */
-
+
/**
* Validate instance
* @see `Base_Object::is_valid()`
diff --git a/includes/class.content_handler.php b/includes/class.content_handler.php
index f9a7b72..d4edcbe 100644
--- a/includes/class.content_handler.php
+++ b/includes/class.content_handler.php
@@ -8,21 +8,21 @@
*/
class SLB_Content_Handler extends SLB_Component {
/* Properties */
-
+
/**
* Match handler
* @var callback
*/
protected $match;
-
+
/**
* Custom attributes
* @var callback
*/
protected $attributes;
-
+
/* Matching */
-
+
/**
* Set matching handler
* @param callback $callback Handler callback
@@ -32,7 +32,7 @@ public function set_match($callback) {
$this->match = ( is_callable($callback) ) ? $callback : null;
return $this;
}
-
+
/**
* Retrieve match handler
* @return callback|null Match handler
@@ -40,14 +40,14 @@ public function set_match($callback) {
protected function get_match() {
return $this->match;
}
-
+
/**
* Check if valid match set
*/
protected function has_match() {
return ( is_null($this->match) ) ? false : true;
}
-
+
/**
* Match handler against URI
* @param string $uri URI to check for match
@@ -60,14 +60,14 @@ public function match($uri, $uri_raw = null) {
}
return $ret;
}
-
+
/* Attributes */
-
+
public function set_attributes($callback) {
$this->attributes = ( is_callable($callback) ) ? $callback : null;
return $this;
}
-
+
public function get_attributes() {
$ret = array();
// Callback
diff --git a/includes/class.content_handlers.php b/includes/class.content_handlers.php
index 4e0ec10..486cd30 100644
--- a/includes/class.content_handlers.php
+++ b/includes/class.content_handlers.php
@@ -8,36 +8,36 @@
*/
class SLB_Content_Handlers extends SLB_Collection_Controller {
/* Configuration */
-
+
protected $item_type = 'SLB_Content_Handler';
-
+
public $hook_prefix = 'content_handlers';
-
+
protected $key_prop = 'get_id';
-
+
protected $key_call = true;
-
+
/* Properties */
-
+
protected $request_matches = array();
-
+
/**
* Cache properties (key, group)
* @var object
*/
protected $cache_props = null;
-
+
/* Initialization */
-
+
protected function _hooks() {
parent::_hooks();
$this->util->add_action('init', $this->m('init_defaults'), 5);
$this->util->add_action('footer', $this->m('client_output'), 1, 0, false);
$this->util->add_filter('footer_script', $this->m('client_output_script'), $this->util->priority('client_footer_output'), 1, false);
}
-
+
/* Collection Management */
-
+
/**
* Add content type handler
* Accepts properties to create new handler OR previously-initialized handler instance
@@ -65,7 +65,7 @@ public function add($id, $props = array(), $priority = 10) {
// Add to collection
return parent::add($handler, array('priority' => $priority));
}
-
+
/**
* Remove item
* @uses clear_cache()
@@ -76,7 +76,7 @@ public function remove($item) {
$this->clear_cache();
return parent::remove($item);
}
-
+
/**
* Clear collection
* @uses clear_cache()
@@ -87,7 +87,7 @@ public function clear() {
$this->clear_cache();
return parent::clear();
}
-
+
/**
* Retrieves handlers sorted by priority
* @see parent::get()
@@ -104,7 +104,7 @@ public function get($args = null) {
}
return $items;
}
-
+
/**
* Get matching handler for URI
* @param string $uri URI to find match for
@@ -133,9 +133,9 @@ public function match($uri) {
}
return $ret;
}
-
+
/* Cache */
-
+
/**
* Retrieve cached items
* @uses get_cache_props()
@@ -147,7 +147,7 @@ protected function get_cache() {
$items = wp_cache_get($cprops->key, $cprops->group);
return ( is_array($items) ) ? $items : array();
}
-
+
/**
* Update cached items
* Cache is cleared if no items specified
@@ -159,7 +159,7 @@ protected function update_cache($data = null) {
$props = $this->get_cache_props();
wp_cache_set($props->key, $data, $props->group);
}
-
+
/**
* Clear cache
* @uses update_cache()
@@ -167,7 +167,7 @@ protected function update_cache($data = null) {
protected function clear_cache() {
$this->update_cache();
}
-
+
/**
* Retrieve cache properites (key, group)
* @return object Cache properties
@@ -179,11 +179,11 @@ protected function get_cache_props() {
'group' => $this->get_prefix(),
);
}
- return $this->cache_props;
+ return $this->cache_props;
}
-
+
/* Handlers */
-
+
/**
* Initialize default handlers
* @param SLB_Content_Handlers $handlers Handlers controller
@@ -204,7 +204,7 @@ public function init_defaults($handlers) {
$handlers->add($id, $props);
}
}
-
+
/**
* Matches image URIs
* @param string $uri URI to match
@@ -213,22 +213,22 @@ public function init_defaults($handlers) {
public function match_image($uri, $handlers) {
// Basic matching
$match = ( $this->util->has_file_extension($uri, array('jpg', 'jpeg', 'jpe', 'jfif', 'jif', 'gif', 'png')) ) ? true : false;
-
+
// Filter result
$extra = new stdClass();
$match = $this->util->apply_filters('image_match', $match, $uri, $extra);
-
+
// Handle extra data passed from filters
// Currently only `uri` supported
if ( $match && isset($extra->uri) && is_string($extra->uri) ) {
$match = array('uri' => $extra->uri);
}
-
+
return $match;
}
-
+
/* Output */
-
+
/**
* Build client output
* Load handler files in client
@@ -239,7 +239,7 @@ public function client_output() {
$handler->enqueue_scripts();
}
}
-
+
/**
* Client output script
* @param array $commands Client script commands
@@ -248,7 +248,7 @@ public function client_output() {
public function client_output_script($commands) {
$out = array('/* CHDL */');
$code = array();
-
+
foreach ( $this->request_matches as $handler ) {
// Attributes
$attrs = $handler->get_attributes();
diff --git a/includes/class.field_base.php b/includes/class.field_base.php
index 854a856..0f4fa2d 100644
--- a/includes/class.field_base.php
+++ b/includes/class.field_base.php
@@ -11,42 +11,28 @@ class SLB_Field_Base extends SLB_Base {
/*-** Config **-*/
protected $mode = 'object';
protected $shared = false;
-
+
/*-** Properties **-*/
-
+
/**
* @var string Unique name
*/
var $id = '';
-
+
/**
- * ID formatting options
- * Merged with defaults during initialization
- * @see $id_formats_default
- * @var array
+ * ID formatting options.
+ *
+ * @var array $id_formats
*/
- var $id_formats = null;
-
+ private $id_formats = [];
+
/**
- * Default ID Formatting options
- * Structure:
- * > Key (string): Format name
- * > Val (array): Options
- * @var array
+ * Flag for ID format initialization status.
+ *
+ * @var bool $id_formats_init
*/
- var $id_formats_default = array(
- 'attr_id' => array(
- 'wrap' => array('open' => '_', 'segment_open' => '_'),
- 'prefix' => array('get_container', 'get_id', 'add_prefix'),
- 'recursive' => true
- ),
- 'attr_name' => array(
- 'wrap' => array('open' => '[', 'close' => ']', 'segment_open' => '[', 'segment_close' => ']'),
- 'recursive' => true,
- 'prefix' => array('get_container', 'get_id', 'add_prefix')
- )
- );
-
+ private $id_formats_init = false;
+
/**
* Special characters/phrases
* Used for preserving special characters during formatting
@@ -57,7 +43,7 @@ class SLB_Field_Base extends SLB_Base {
* @var array
*/
var $special_chars = null;
-
+
var $special_chars_default = array(
'{' => '%SQB_L%',
'}' => '%SQB_R%',
@@ -84,13 +70,13 @@ class SLB_Field_Base extends SLB_Base {
* @var array Object Properties
*/
var $properties = array();
-
+
/**
* Initialization properties
* @var array
*/
protected $properties_init = null;
-
+
/**
* Structure: Property names stored as keys in group
* Root
@@ -100,33 +86,33 @@ class SLB_Field_Base extends SLB_Base {
* @var array Groupings of Properties
*/
var $property_groups = array();
-
+
/**
* Keys to filter out of properties array before setting properties
* @var array
*/
var $property_filter = array('group');
-
+
/**
* Define order of properties
* Useful when processing order is important (e.g. one property depends on another)
* @var array
*/
var $property_priority = array();
-
+
/**
* Data for object
* May also contain data for nested objects
* @var mixed
*/
var $data = null;
-
+
/**
* Whether data has been fetched or not
* @var bool
*/
- var $data_loaded = false;
-
+ protected $data_loaded = false;
+
/**
* @var array Script resources to include for object
*/
@@ -142,7 +128,7 @@ class SLB_Field_Base extends SLB_Base {
* @var array
*/
var $hooks = array();
-
+
/**
* Mapping of child properties to parent members
* Allows more flexibility when creating new instances of child objects using property arrays
@@ -152,7 +138,7 @@ class SLB_Field_Base extends SLB_Base {
* @var array
*/
var $map = null;
-
+
/**
* Options used when building collection (callbacks, etc.)
* Associative array
@@ -161,9 +147,9 @@ class SLB_Field_Base extends SLB_Base {
* @var array
*/
var $build_vars = array();
-
+
var $build_vars_default = array();
-
+
/**
* Constructor
*/
@@ -180,7 +166,7 @@ function __construct($id = '', $properties = null) {
}
/* Getters/Setters */
-
+
/**
* Checks if the specified path exists in the object
* @param array $path Path to check for
@@ -203,7 +189,7 @@ function path_isset($path = '') {
return false;
}
}
- return true;
+ return true;
}
/**
@@ -303,7 +289,7 @@ function &get_member_value($member, $name = '', $default = '', $dir = 'parent')
if ( 'parent' == $dir )
$ex_val = $this->get_parent_value($member, $name, $default);
elseif ( method_exists($this, 'get_container_value') )
- $ex_val = $this->get_container_value($member, $name, $default);
+ $ex_val = $this->get_container_value($member, $name, $default);
// Handle inheritance
if ( is_array($val) ) {
// Combine Arrays
@@ -336,7 +322,7 @@ function get_object_value(&$object, $member, $name = '', $default = '', $dir = '
$ret = $object->get_member_value($member, $name, $default, $dir);
return $ret;
}
-
+
/**
* Set item ID
* @param string $id Unique item ID
@@ -346,7 +332,7 @@ function set_id($id) {
return false;
$this->id = trim($id);
}
-
+
/**
* Retrieves field ID
* @param array|string $options (optional) Options or ID of format to use
@@ -355,10 +341,9 @@ function set_id($id) {
function get_id($options = array()) {
$item_id = trim($this->id);
$formats = $this->get_id_formats();
-
// Setup options
$wrap_default = array('open' => '', 'close' => '', 'segment_open' => '', 'segment_close' => '');
-
+
$options_default = array(
'format' => null,
'wrap' => array(),
@@ -366,7 +351,7 @@ function get_id($options = array()) {
'prefix' => '',
'recursive' => false
);
-
+
// Load options based on format
if ( !is_array($options) )
$options = array('format' => $options);
@@ -380,15 +365,15 @@ function get_id($options = array()) {
// Validate options
$wrap = wp_parse_args($wrap, $wrap_default);
-
+
if ( !is_array($segments_pre) )
$segments_pre = array($segments_pre);
$segments_pre = array_reverse($segments_pre);
-
+
// Format ID based on options
$item_id = array($item_id);
- // Add parent objects to ID
+ // Add parent objects to ID
if ( !!$recursive ) {
// Create array of ID components
$m = 'get_caller';
@@ -403,7 +388,7 @@ function get_id($options = array()) {
}
unset($c);
}
-
+
// Additional segments (Pre)
foreach ( $segments_pre as $seg ) {
if ( is_null($seg) )
@@ -415,7 +400,7 @@ function get_id($options = array()) {
elseif ( '' != strval($seg) )
$item_id[] = strval($seg);
}
-
+
// Prefix
if ( is_array($prefix) ) {
// Array is sequence of instance methods to call on object
@@ -430,7 +415,7 @@ function get_id($options = array()) {
continue;
// Build callback
$m = $this->util->m($p, $m);
- // Call callback
+ // Call callback
$val = call_user_func_array($m, $args);
// Returned value may be an instance object
if ( is_object($val) )
@@ -444,27 +429,81 @@ function get_id($options = array()) {
if ( is_numeric($prefix) )
$prefix = strval($prefix);
if ( empty($prefix) || !is_string($prefix) )
- $prefix = '';
+ $prefix = '';
// Convert array to string
$item_id = $prefix . $wrap['open'] . implode($wrap['segment_close'] . $wrap['segment_open'], array_reverse($item_id)) . $wrap['close'];
return $item_id;
}
-
+
/**
- * Retrieve ID formatting options for class
- * Format options arrays are merged together and saved to $id_formats
- * @uses $id_formats
- * @uses $id_formats_default
- * @return array ID Formatting options
+ * Retrieves ID formats.
+ *
+ * @return array ID formats.
*/
- function &get_id_formats() {
- if ( is_null($this->id_formats) ) {
- $this->id_formats = wp_parse_args($this->id_formats, $this->id_formats_default);
- }
+ private function &get_id_formats() {
+ $this->init_id_formats();
return $this->id_formats;
}
+ /**
+ * Initializes default ID formats.
+ *
+ * @since 2.8.0
+ *
+ * @return void
+ */
+ private function init_id_formats() {
+ if ( ! $this->id_formats_init ) {
+ $this->id_formats_init = true;
+ // Initilize default formats.
+ $this->add_id_format(
+ 'attr_id',
+ [
+ 'wrap' => [ 'open' => '_', 'segment_open' => '_' ],
+ 'prefix' => [ 'get_container', 'get_id', 'add_prefix' ],
+ 'recursive' => true,
+ ],
+ true
+ );
+ $this->add_id_format(
+ 'attr_name',
+ [
+ 'wrap' => [ 'open' => '[', 'close' => ']', 'segment_open' => '[', 'segment_close' => ']' ],
+ 'prefix' => [ 'get_container', 'get_id', 'add_prefix' ],
+ 'recursive' => true,
+ ],
+ true
+ );
+
+ }
+ }
+
+ /**
+ * Adds custom ID format.
+ *
+ * @since 2.8.0
+ *
+ * @param string $name Format name.
+ * @param array $wrap
+ * @param array $prefix
+ * @param bool $recursive Optional.
+ * @param bool $overwrite Optional. Overwrite existing format. Default false.
+ * @return void
+ */
+ protected function add_id_format( string $name, array $options, bool $overwrite = false ) {
+ // Init ID formats before adding new ones.
+ $this->init_id_formats();
+ // Do not add format if name matches existing format (when overwriting not allowed).
+ if ( ! $overwrite && in_array( $name, array_keys( $this->id_formats ) ) ) {
+ return;
+ }
+ // Normlize options.
+ $options = wp_parse_args( $options, [ 'wrap' => [], 'prefix' => [], 'recursive' => false ] );
+ // Add format.
+ $this->id_formats[ $name ] = $options;
+ }
+
/**
* Retrieve value from data member
* @param string $context Context to format data for
@@ -480,7 +519,7 @@ function get_data($context = '', $top = true) {
$args = wp_parse_args($args[0], $opt_d);
extract($args);
}
-
+
if ( is_string($top) ) {
if ( 'false' == $top )
$top = false;
@@ -511,7 +550,7 @@ function get_data($context = '', $top = true) {
$new->load_data();
}
}
-
+
$obj =& $new;
unset($new);
// Stop iteration
@@ -557,7 +596,7 @@ function set_data($value, $name = '') {
$ref =& $this->get_path_value('data', $name);
$ref = $value;
}
-
+
/**
* Sets parent object of current instance
* Parent objects must be the same object type as current instance
@@ -573,11 +612,11 @@ function set_parent($parent = null) {
// Parent passed as object reference wrapped in array
if ( is_array($parent) && isset($parent[0]) && is_object($parent[0]) )
$parent = $parent[0];
-
+
// No parent set but parent ID (previously) set in object
if ( empty($parent) && is_string($this->parent) )
$parent = $this->parent;
-
+
// Retrieve reference object if ID was supplied
if ( is_string($parent) ) {
$parent = trim($parent);
@@ -590,7 +629,7 @@ function set_parent($parent = null) {
$parent = $b->fields->get($parent);
}
}
-
+
// Set parent value on object
if ( is_string($parent) || is_object($parent) )
$this->parent = $parent;
@@ -638,7 +677,7 @@ function get_description() {
return $this->get_member_value('description', '','', $dir);
return $desc;
}
-
+
/**
* Sets multiple properties on field type at once
* @param array $properties Properties. Each element is an array containing the arguments to set a new property
@@ -659,7 +698,7 @@ function set_properties($properties) {
unset($properties[$prop]);
}
}
-
+
// Filter properties
$properties = $this->filter_properties($properties);
// Set additional instance properties
@@ -667,7 +706,7 @@ function set_properties($properties) {
$this->set_property($name, $val);
}
}
-
+
/**
* Remap properties based on $map
* @uses $map For determine how child properties should map to parent properties
@@ -679,7 +718,7 @@ function remap_properties($properties) {
// Return remapped properties
return $this->util->array_remap($properties, $this->map);
}
-
+
/**
* Sort properties based on priority
* @uses this::property_priority
@@ -702,7 +741,7 @@ function sort_properties($properties) {
$props = array_merge($props, $properties);
return $props;
}
-
+
/**
* Build properties array
* @param array $props Instance properties
@@ -724,15 +763,15 @@ function make_properties($props, $signature = array()) {
}
return $props;
}
-
+
function validate_id($id) {
return ( is_scalar($id) && !empty($id) ) ? true : false;
}
-
+
function integrate_id($id) {
return ( $this->validate_id($id) ) ? array('id' => $id) : array();
}
-
+
/**
* Filter property members
* @uses $property_filter to remove define members to remove from $properties
@@ -742,7 +781,7 @@ function integrate_id($id) {
function filter_properties($props = array()) {
return $this->util->array_filter_keys($props, $this->property_filter);
}
-
+
/**
* Add/Set a property on the field definition
* @param string $name Name of property
@@ -775,7 +814,7 @@ function get_property($name) {
$val = $this->get_member_value('properties', $name);
return $val;
}
-
+
/**
* Removes a property from item
* @param string $name Property ID
@@ -824,7 +863,7 @@ function set_group_property($group, $property) {
function get_group($group) {
return $this->get_member_value('property_groups', $group, array());
}
-
+
/**
* Save field data
* Child classes will define their own
@@ -834,9 +873,9 @@ function get_group($group) {
function save() {
return true;
}
-
+
/*-** Hooks **-*/
-
+
/**
* Retrieve hooks added to object
* @return array Hooks
@@ -844,7 +883,7 @@ function save() {
function get_hooks() {
return $this->get_member_value('hooks', '', array());
}
-
+
/**
* Add hook for object
* @see add_filter() for parameter defaults
@@ -863,11 +902,11 @@ function add_hook($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
elseif ( is_array($function_to_add) && !empty($function_to_add) )
$id = strval($function_to_add[count($function_to_add) - 1]);
else
- $id = 'function_' . ( count($this->hooks[$tag]) + 1 );
+ $id = 'function_' . ( count($this->hooks[$tag]) + 1 );
// Add hook
$this->hooks[$tag][$id] = func_get_args();
}
-
+
/**
* Convenience method for adding an action for object
* @see add_filter() for parameter defaults
@@ -879,7 +918,7 @@ function add_hook($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
$this->add_hook($tag, $function_to_add, $priority, $accepted_args);
}
-
+
/**
* Convenience method for adding a filter for object
* @see add_filter() for parameter defaults
@@ -891,9 +930,9 @@ function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1)
function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1) {
$this->add_hook($tag, $function_to_add, $priority, $accepted_args);
}
-
+
/*-** Dependencies **-*/
-
+
/**
* Adds dependency to object
* @param string $type Type of dependency to add (script, style)
@@ -915,14 +954,14 @@ function add_dependency($type, $context, $handle, $src = false, $deps = array(),
// Wrap single contexts in an array
if ( is_string($context) )
$context = array($context);
- else
+ else
$context = array();
}
// Add file to instance property
if ( isset($this->{$type}) && is_array($this->{$type}) )
$this->{$type}[$handle] = array('context' => $context, 'params' => $args);
}
-
+
/**
* Add script to object to be added in specified contexts
* @param array|string $context Array of contexts to add script to page
@@ -947,7 +986,7 @@ function add_script( $context, $handle, $src = false, $deps = array(), $ver = fa
function get_scripts() {
return $this->get_member_value('scripts', '', array());
}
-
+
/**
* Add style to object to be added in specified contexts
* @param array|string $context Array of contexts to add style to page
@@ -971,9 +1010,9 @@ function add_style( $handle, $src = false, $deps = array(), $ver = false, $media
function get_styles() {
return $this->get_member_value('styles', '', array());
}
-
+
/* Helpers */
-
+
/**
* Format value based on specified context
* @param mixed $value Value to format
@@ -992,18 +1031,42 @@ function format($value, $context = '') {
// Return formatted value
return $value;
}
-
+
/**
- * Format value for output in form field
- * @param mixed $value Value to format
- * @return mixed Formatted value
+ * Format value for output as an attribute.
+ *
+ * Only strings are formatted.
+ *
+ * @since 2.8.0
+ *
+ * @param mixed $value Value to format.
+ * @return mixed Formatted value.
+ */
+ function format_attr( $value ) {
+ if ( is_string( $value ) ) {
+ $value = esc_attr( $value );
+ }
+ return $value;
+ }
+
+ /**
+ * Formats value for output as plain text.
+ *
+ * Escapes HTML, etc.
+ * Only strings are formatted.
+ *
+ * @since 2.8.0
+ *
+ * @param mixed $value Value to format.
+ * @return mixed Formatted value.
*/
- function format_form($value) {
- if ( is_string($value) )
- $value = htmlspecialchars($value);
+ function format_text( $value ) {
+ if ( is_string( $value ) ) {
+ $value = esc_html( $value );
+ }
return $value;
}
-
+
/**
* Final formatting before output
* Restores special characters, etc.
@@ -1016,25 +1079,25 @@ function format_form($value) {
function format_final($value, $context = '') {
if ( !is_string($value) )
return $value;
-
+
// Restore special chars
return $this->restore_special_chars($value, $context);
}
-
+
function preserve_special_chars($value, $context = '') {
if ( !is_string($value) )
return $value;
$specials = $this->get_special_chars();
return str_replace(array_keys($specials), $specials, $value);
}
-
+
function restore_special_chars($value, $context = '') {
if ( !is_string($value) )
return $value;
$specials = $this->get_special_chars();
return str_replace($specials, array_keys($specials), $value);
}
-
+
/**
* Retrieve special characters/placeholders
* Merges defaults with class-specific characters
diff --git a/includes/class.field_collection.php b/includes/class.field_collection.php
index 5d7ae6c..83837f7 100644
--- a/includes/class.field_collection.php
+++ b/includes/class.field_collection.php
@@ -8,39 +8,31 @@
class SLB_Field_Collection extends SLB_Field_Base {
/* Configuration */
-
+
protected $mode = 'sub';
-
+
/* Properties */
-
+
/**
* Item type
* @var string
*/
var $item_type = 'SLB_Field';
-
+
/**
* Indexed array of items in collection
* @var array
*/
var $items = array();
-
- var $id_formats = array (
- 'formatted' => array(
- 'wrap' => array ( 'open' => '_' ),
- 'recursive' => false,
- 'prefix' => array('get_prefix')
- )
- );
-
- var $build_vars_default = array (
+
+ var $build_vars_default = array (
'groups' => array(),
'context' => '',
'layout' => 'form',
'build' => true,
'build_groups' => true,
);
-
+
/**
* Associative array of groups in collection
* Key: Group ID
@@ -52,9 +44,9 @@ class SLB_Field_Collection extends SLB_Field_Base {
* @var array
*/
var $groups = array();
-
+
protected $properties_init = null;
-
+
/* Constructors */
/**
@@ -72,20 +64,32 @@ public function __construct($id, $properties = null) {
$properties = $this->make_properties($args);
// Parent constructor
parent::__construct($properties);
-
+
// Save initial properties
$this->properties_init = $properties;
}
-
+
public function _init() {
parent::_init();
+
+ // Load properties.
$this->load($this->properties_init, false);
+
+ // Add custom ID format(s).
+ $this->add_id_format(
+ 'formatted',
+ [
+ 'wrap' => [ 'open' => '_' ],
+ 'prefix' => [ 'get_prefix' ],
+ 'recursive' => false,
+ ]
+ );
}
-
+
/*-** Getters/Setters **-*/
-
+
/* Setup */
-
+
/**
* Load collection with specified properties
* Updates existing properties
@@ -108,9 +112,9 @@ public function load($properties, $update = true) {
}
return $this;
}
-
+
/* Data */
-
+
/**
* Retrieve external data for items in collection
* Retrieved data is saved to the collection's $data property
@@ -124,7 +128,7 @@ public function load($properties, $update = true) {
function load_data() {
$this->data_loaded = true;
}
-
+
/**
* Set data for an item
* @param mixed $item Field to set data for
@@ -155,7 +159,7 @@ function set_data($item, $value = '', $save = true, $force_set = false) {
}
/* Item */
-
+
/**
* Adds item to collection
* @param string|obj $id Unique name for item or item instance
@@ -176,7 +180,7 @@ function add($id, $properties = array(), $update = false) {
if ( !is_array($properties) ) {
$properties = array();
}
-
+
// Handle item instance
if ( $id instanceof $this->item_type ) {
$item = $id;
@@ -200,21 +204,21 @@ function add($id, $properties = array(), $update = false) {
$item = new $type($properties);
}
}
-
+
if ( empty($item) || 0 == strlen($item->get_id()) ) {
return false;
}
-
+
// Set container
$item->set_container($this);
// Add item to collection
$this->items[$item->get_id()] = $item;
-
+
if ( isset($properties['group']) ) {
$this->add_to_group($properties['group'], $item->get_id());
}
-
+
return $item;
}
@@ -235,11 +239,11 @@ function remove($item, $save = true) {
}
// Remove item data from collection
$this->remove_data($item, false);
-
+
if ( !!$save )
$this->save();
}
-
+
/**
* Remove item data from collection
* @param string|object $item Object or item ID to remove
@@ -251,7 +255,7 @@ function remove_data($item, $save = true) {
$item = $this->get($item);
$item = $item->get_id();
}
-
+
// Remove data from data member
if ( is_string($item) && is_array($this->data) ) {
unset($this->data[$item]);
@@ -268,7 +272,7 @@ function remove_data($item, $save = true) {
function has($item) {
return ( !is_string($item) || empty($item) || is_null($this->get_member_value('items', $item, null)) ) ? false : true;
}
-
+
/**
* Retrieve specified item in collection
* @param string|object $item Item object or ID to retrieve
@@ -288,7 +292,7 @@ function get($item, $safe_mode = false) {
} else {
$item = false;
}
-
+
if ( !!$safe_mode && !is_object($item) ) {
// Fallback: Return empty item if no item exists
$type = $this->item_type;
@@ -296,7 +300,7 @@ function get($item, $safe_mode = false) {
}
return $item;
}
-
+
/**
* Retrieve item data
* @param $item Item to get data for
@@ -313,14 +317,14 @@ function get_data($item = null, $context = '', $top = true) {
} else {
$ret = parent::get_data($context, $top);
}
-
+
if ( is_string($item) && is_array($ret) && isset($ret[$item]) )
$ret = $ret[$item];
return $ret;
}
/* Items (Collection) */
-
+
/**
* Add multiple items to collection
* @param array $items Items to add to collection
@@ -339,7 +343,7 @@ function add_items($items = array(), $update = false) {
$this->add($id, $props, $update);
}
}
-
+
/**
* Retrieve reference to items in collection
* @return array Collection items (reference)
@@ -370,7 +374,7 @@ function &get_items($group = null, $sort = 'priority') {
}
return $items;
}
-
+
/**
* Build output for items in specified group
* If no group specified, all items in collection are built
@@ -382,16 +386,16 @@ function build_items($group = null) {
if ( empty($items) ) {
return false;
}
-
+
$this->util->do_action_ref_array('build_items_pre', array($this));
foreach ( $items as $item ) {
$item->build();
}
$this->util->do_action_ref_array('build_items_post', array($this));
}
-
+
/* Group */
-
+
/**
* Add groups to collection
* @param array $groups Associative array of group properties
@@ -409,10 +413,10 @@ function add_groups($groups = array(), $update = false) {
$this->add_group($id, $props, null, $update);
}
}
-
+
/**
* Adds group to collection
- * Groups are used to display related items in the UI
+ * Groups are used to display related items in the UI
* @param string $id Unique name for group
* @param string $title Group title
* @param string $description Short description of group's purpose
@@ -484,7 +488,7 @@ function &create_group($id = '', $title = '', $description = '', $priority = 10)
$group->items = array();
return $group;
}
-
+
/**
* Checks if group exists in collection
* @param string $id Group name
@@ -501,7 +505,7 @@ function group_exists($group) {
}
return $ret;
}
-
+
/**
* Adds item to a group in the collection
* Group is created if it does not already exist
@@ -513,7 +517,7 @@ function add_to_group($group, $items, $priority = 10) {
if ( empty($items) || empty($group) || ( !is_string($group) && !is_array($group) ) ) {
return false;
}
-
+
// Get group ID
if ( is_string($group) ) {
$group = array($group, $priority);
@@ -527,7 +531,7 @@ function add_to_group($group, $items, $priority = 10) {
if ( !is_int($priority) ) {
$priority = 10;
}
-
+
// Prepare group
if ( !$this->group_exists($gid) ) {
// TODO Follow
@@ -610,7 +614,7 @@ function &get_group($group) {
}
return $this->get_member_value('groups', $group);
}
-
+
/**
* Retrieve a group's items
* @uses SLB_Field_Collection::get_group() to retrieve group object
@@ -647,14 +651,14 @@ function &get_groups($opts = array()) {
}
return $groups;
}
-
+
/**
* Output groups
* @uses self::build_vars to determine groups to build
*/
function build_groups() {
$this->util->do_action_ref_array('build_groups_pre', array($this));
-
+
// Get groups to build
$groups = ( !empty($this->build_vars['groups']) ) ? $this->build_vars['groups'] : array_keys($this->get_groups(array('sort' => 'priority')));
// Check options
@@ -667,7 +671,7 @@ function build_groups() {
$this->build_group($group);
}
}
-
+
$this->util->do_action_ref_array('build_groups_post', array($this));
}
@@ -683,19 +687,19 @@ function build_group($group) {
if ( !count($this->get_items($group)) ) {
return false;
}
-
+
// Pre action
$this->util->do_action_ref_array('build_group_pre', array($this, $group));
-
+
// Build items
$this->build_items($group);
-
+
// Post action
$this->util->do_action_ref_array('build_group_post', array($this, $group));
}
/* Collection */
-
+
/**
* Build entire collection of items
* Prints output
@@ -711,16 +715,16 @@ function build($build_vars = array()) {
// Post-build output
$this->util->do_action_ref_array('build_post', array($this));
}
-
+
/**
* Set build variable
* @param string $key Variable name
- * @param mixed $val Variable value
+ * @param mixed $val Variable value
*/
function set_build_var($key, $val) {
$this->build_vars[$key] = $val;
}
-
+
/**
* Retrieve build variable
* @param string $key Variable name
@@ -730,7 +734,7 @@ function set_build_var($key, $val) {
function get_build_var($key, $default = null) {
return ( array_key_exists($key, $this->build_vars) ) ? $this->build_vars[$key] : $default;
}
-
+
/**
* Delete build variable
* @param string $key Variable name to delete
@@ -740,7 +744,7 @@ function delete_build_var($key) {
unset($this->build_vars[$key]);
}
}
-
+
/**
* Parses build variables prior to use
* @uses this->reset_build_vars() to reset build variables for each request
@@ -748,9 +752,9 @@ function delete_build_var($key) {
*/
function parse_build_vars($build_vars = array()) {
$this->reset_build_vars();
- $this->build_vars = $this->util->apply_filters('parse_build_vars', wp_parse_args($build_vars, $this->build_vars), $this);
+ $this->build_vars = $this->util->apply_filters('parse_build_vars', wp_parse_args($build_vars, $this->build_vars), $this);
}
-
+
/**
* Reset build variables to defaults
* Default Variables
diff --git a/includes/class.field_type.php b/includes/class.field_type.php
index 39701f4..410a6a4 100644
--- a/includes/class.field_type.php
+++ b/includes/class.field_type.php
@@ -42,7 +42,7 @@ function __construct($id = '', $parent = null) {
$defaults = $this->integrate_id($id);
if ( !is_array($parent) )
$defaults['parent'] = $parent;
-
+
$props = $this->make_properties($args, $defaults);
parent::__construct($props);
}
@@ -150,8 +150,6 @@ function has_caller() {
return !empty($this->caller);
}
-
-
/**
* Sets an element for the field type
* @param string $name Name of element
@@ -262,75 +260,93 @@ function is_valid_layout($layout_content) {
* 'attributes' => (array) attributes
*/
function parse_layout($layout, $search) {
- $ph_xml = '';
$parse_match = '';
+ $result = [];
+
+ // Find all nested layouts in layout.
+ $match_value = preg_match_all( $search, $layout, $parse_match, PREG_PATTERN_ORDER );
+
+ // Stop if no matches found.
+ if ( ! $match_value ) {
+ return $result;
+ }
+
+ /* Process matches */
+
+ $ph_xml = '';
$ph_root_tag = 'ph_root_element';
$ph_start_xml = '<';
$ph_end_xml = ' />';
$ph_wrap_start = '<' . $ph_root_tag . '>';
$ph_wrap_end = '' . $ph_root_tag . '>';
- $parse_result = false;
+ $parse_result = [];
- // Find all nested layouts in layout
- $match_value = preg_match_all($search, $layout, $parse_match, PREG_PATTERN_ORDER);
+ // Get all matched elements.
+ $parse_match = $parse_match[1];
- if ($match_value !== false && $match_value > 0) {
- $parse_result = array();
- // Get all matched elements
- $parse_match = $parse_match[1];
+ // Build XML string from placeholders.
+ foreach ( $parse_match as $ph ) {
+ $ph_xml .= $ph_start_xml . $ph . $ph_end_xml . ' ';
+ }
+ $ph_xml = $ph_wrap_start . $ph_xml . $ph_wrap_end;
+ // Parse XML data.
+ $ph_prs = xml_parser_create();
+ xml_parser_set_option($ph_prs, XML_OPTION_SKIP_WHITE, 1);
+ xml_parser_set_option($ph_prs, XML_OPTION_CASE_FOLDING, 0);
+ $ph_parsed = xml_parse_into_struct($ph_prs, $ph_xml, $parse_result['values'], $parse_result['index']);
+ xml_parser_free($ph_prs);
+
+ // Stop if placeholder parsing failed.
+ if ( ! $ph_parsed ) {
+ return $result;
+ }
- // Build XML string from placeholders
- foreach ($parse_match as $ph) {
- $ph_xml .= $ph_start_xml . $ph . $ph_end_xml . ' ';
- }
- $ph_xml = $ph_wrap_start . $ph_xml . $ph_wrap_end;
- // Parse XML data
- $ph_prs = xml_parser_create();
- xml_parser_set_option($ph_prs, XML_OPTION_SKIP_WHITE, 1);
- xml_parser_set_option($ph_prs, XML_OPTION_CASE_FOLDING, 0);
- $ret = xml_parse_into_struct($ph_prs, $ph_xml, $parse_result['values'], $parse_result['index']);
- xml_parser_free($ph_prs);
-
- // Build structured array with all parsed data
-
- unset($parse_result['index'][$ph_root_tag]);
-
- // Build structured array
- $result = array();
- foreach ($parse_result['index'] as $tag => $instances) {
- $result[$tag] = array();
- // Instances
- foreach ($instances as $instance) {
- // Skip instance if it doesn't exist in parse results
- if (!isset($parse_result['values'][$instance]))
- continue;
-
- // Stop processing instance if a previously-saved instance with the same options already exists
- foreach ($result[$tag] as $tag_match) {
- if ($tag_match['match'] == $parse_match[$instance - 1])
- continue 2;
+ unset( $parse_result['index'][$ph_root_tag] );
+
+ // Build structured array with all parsed data.
+ $ph_default = [
+ 'tag' => '',
+ 'match' => '',
+ 'attributes' => [],
+ ];
+
+ // Build structured array.
+ foreach ( $parse_result['index'] as $tag => $instances ) {
+ // Create container for instances of current placeholder.
+ $result[ $tag ] = [];
+ // Process placeholder instances.
+ foreach ( $instances as $instance ) {
+ // Skip instance if it doesn't exist in parse results.
+ if ( !isset( $parse_result['values'][ $instance ] ) ) {
+ continue;
+ }
+ // Stop processing instance if a previously-saved instance with the same options already exists.
+ foreach ( $result[ $tag ] as $tag_match ) {
+ if ( $tag_match['match'] == $parse_match[ $instance - 1 ] ) {
+ continue 2;
}
+ }
+ $instance_parsed = $parse_result['values'][ $instance ];
+ // Init instance data array.
+ $instance_data = $ph_default;
- // Init instance data array
- $inst_data = array();
-
- // Add Tag to array
- $inst_data['tag'] = $parse_result['values'][$instance]['tag'];
+ // Set tag.
+ $instance_data['tag'] = $instance_parsed['tag'];
- // Add instance data to array
- $inst_data['attributes'] = (isset($parse_result['values'][$instance]['attributes'])) ? $inst_data['attributes'] = $parse_result['values'][$instance]['attributes'] : '';
+ // Set attributes.
+ if ( isset( $instance_parsed['attributes'] ) && is_array( $instance_parsed['attributes'] ) ) {
+ $instance_data['attributes'] = $instance_parsed['attributes'];
+ }
- // Add match to array
- $inst_data['match'] = $parse_match[$instance - 1];
+ // Add match to array.
+ $instance_data['match'] = $parse_match[ $instance - 1 ];
- // Add to result array
- $result[$tag][] = $inst_data;
- }
+ // Add to result array.
+ $result[ $tag ][] = $instance_data;
}
- $parse_result = $result;
}
- return $parse_result;
+ return $result;
}
/**
@@ -346,7 +362,7 @@ function get_placeholder_defaults() {
$ph->pattern_layout = '/' . $ph->start . '([a-zA-Z0-9].*?\s+' . $ph->reserved['ref'] . '="layout.*?".*?)' . $ph->end . '/i';
return $ph;
}
-
+
/**
* Build item output
* @param string $layout (optional) Layout to build
@@ -357,7 +373,7 @@ function build($layout = null, $data = null) {
echo $this->build_layout($layout, $data);
$this->util->do_action_ref_array('build_post', array($this));
}
-
+
/**
* Builds HTML for a field based on its properties
* @param string $layout (optional) Name of layout to build
@@ -369,32 +385,7 @@ function build_layout($layout = 'form', $data = null) {
$out = $this->get_layout($layout);
// Only parse valid layouts
if ( $this->is_valid_layout($out) ) {
- // Parse Layout
- $ph = $this->get_placeholder_defaults();
-
- // Search layout for placeholders
- while ( $ph->match = $this->parse_layout($out, $ph->pattern_general) ) {
- // Iterate through placeholders (tag, id, etc.)
- foreach ( $ph->match as $tag => $instances ) {
- // Iterate through instances of current placeholder
- foreach ( $instances as $instance ) {
- // Process value based on placeholder name
- $target_property = $this->util->apply_filters(array('process_placeholder_' . $tag, false), '', $this, $instance, $layout, $data);
- // Process value using default processors (if necessary)
- if ( '' == $target_property ) {
- $target_property = $this->util->apply_filters(array('process_placeholder', false), $target_property, $this, $instance, $layout, $data);
- }
-
- // Clear value if value not a string
- if ( !is_scalar($target_property) ) {
- $target_property = '';
- }
-
- // Replace layout placeholder with retrieved item data
- $out = str_replace($ph->start . $instance['match'] . $ph->end, $target_property, $out);
- }
- }
- }
+ $out = $this->process_placeholders( $out, $layout, $data );
} else {
$out = $out_default;
}
@@ -402,4 +393,53 @@ function build_layout($layout = 'form', $data = null) {
$out = $this->format_final($out);
return $out;
}
+
+ /**
+ * Processes placeholders in a string.
+ *
+ * Finds and replaces placeholders in a string to their full values.
+ *
+ * @since 2.8.0
+ *
+ * @param string $str String with placeholders to replace.
+ * @param string $layout Optional. Name of layout being built.
+ * @param array $data Optional. Additional data for current item.
+ * @return string Original text with placeholders converted to full values.
+ */
+ public function process_placeholders( $str, $layout = 'form', $data = null ) {
+ // Parse Layout.
+ $ph = $this->get_placeholder_defaults();
+
+ // Search layout for placeholders.
+ while ( $ph->match = $this->parse_layout( $str, $ph->pattern_general ) ) {
+ // Iterate through placeholders (tag, id, etc.)
+ foreach ( $ph->match as $tag => $instances ) {
+ // Iterate through instances of current placeholder
+ foreach ( $instances as $instance ) {
+ // Process value based on placeholder name.
+ $target_property = $this->util->apply_filters_ref_array( "process_placeholder_${tag}", [ '', $this, &$instance, $layout, $data ], false );
+ // Process value using default processors (if necessary).
+ if ( '' === $target_property ) {
+ $target_property = $this->util->apply_filters_ref_array( 'process_placeholder', [ $target_property, $this, &$instance, $layout, $data ], false );
+ }
+ // Format output.
+ if ( ! is_null( $target_property ) ) {
+ $context = ( isset( $instance['attributes']['context'] ) ) ? $instance['attributes']['context'] : '';
+ // Handle special characters.
+ $target_property = $this->preserve_special_chars( $target_property, $context );
+ // Context-specific formatting.
+ $target_property = $this->format( $target_property, $context );
+ }
+
+ // Clear value if value not a string
+ if ( !is_scalar( $target_property ) ) {
+ $target_property = '';
+ }
+ // Replace layout placeholder with retrieved item data
+ $str = str_replace( $ph->start . $instance['match'] . $ph->end, $target_property, $str );
+ }
+ }
+ }
+ return $str;
+ }
}
\ No newline at end of file
diff --git a/includes/class.fields.php b/includes/class.fields.php
index d21537c..816a08d 100644
--- a/includes/class.fields.php
+++ b/includes/class.fields.php
@@ -7,21 +7,21 @@
*
*/
class SLB_Fields extends SLB_Field_Collection {
-
+
var $item_type = 'SLB_Field_Type';
-
+
/**
* Placeholder handlers
* @var array
*/
var $placholders = null;
-
+
/* Constructor */
-
+
function __construct() {
parent::__construct('fields');
}
-
+
protected function _hooks() {
parent::_hooks();
// Init fields
@@ -29,9 +29,9 @@ protected function _hooks() {
// Init placeholders
add_action('init', $this->m('register_placeholders'));
}
-
+
/* Field Types */
-
+
/**
* Initialize fields
*/
@@ -73,7 +73,7 @@ function register_types() {
$text->set_property('label');
$text->set_layout('form', '{label ref_base="layout"} {inherit}');
$this->add($text);
-
+
// Checkbox
$cb = new SLB_Field_Type('checkbox', 'input');
$cb->set_property('type', 'checkbox');
@@ -88,7 +88,7 @@ function register_types() {
$ta->set_property('cols', 40, 'attr');
$ta->set_property('rows', 3, 'attr');
$this->add($ta);
-
+
// Rich Text
$rt = new SLB_Field_Type('richtext', 'textarea');
$rt->set_property('class', 'theEditor {inherit}');
@@ -111,26 +111,26 @@ function register_types() {
$select->set_property('options', array());
$select->set_layout('form', '{label ref_base="layout"} {form_start ref_base="layout"}{option_loop ref_base="layout"}{form_end ref_base="layout"}');
$select->set_layout('option_loop', '{loop data="properties.options" layout="option" layout_data="option_data"}');
- $select->set_layout('option', '<{tag_option} value="{data_ext id="option_value"}">{data_ext id="option_text"}{tag_option}>');
- $select->set_layout('option_data', '<{tag_option} value="{data_ext id="option_value"}" selected="selected">{data_ext id="option_text"}{tag_option}>');
+ $select->set_layout('option', '<{tag_option} value="{data_ext id="option_value" context="attr"}">{data_ext id="option_text" context="text"}{tag_option}>');
+ $select->set_layout('option_data', '<{tag_option} value="{data_ext id="option_value" context="attr"}" selected="selected">{data_ext id="option_text" context="text"}{tag_option}>');
$this->add($select);
-
+
// Span
$span = new SLB_Field_Type('span', 'base_closed');
$span->set_description(__('Inline wrapper', 'simple-lightbox'));
$span->set_property('tag', 'span');
$span->set_property('value', 'Hello there!');
$this->add($span);
-
+
// Enable plugins to modify (add, remove, etc.) field types
$this->util->do_action_ref_array('register_fields', array($this), false);
-
+
// Signal completion of field registration
$this->util->do_action_ref_array('fields_registered', array($this), false);
}
-
+
/* Placeholder handlers */
-
+
function register_placeholders() {
// Default placeholder handlers
$this->register_placeholder('all', $this->m('process_placeholder_default'), 11);
@@ -141,14 +141,14 @@ function register_placeholders() {
$this->register_placeholder('loop', $this->m('process_placeholder_loop'));
$this->register_placeholder('label', $this->m('process_placeholder_label'));
$this->register_placeholder('checked', $this->m('process_placeholder_checked'));
-
+
// Allow other code to register placeholders
$this->util->do_action_ref_array('register_field_placeholders', array($this), false);
-
+
// Signal completion of field placeholder registration
$this->util->do_action_ref_array('field_placeholders_registered', array($this), false);
}
-
+
/**
* Register a function to handle a placeholder
* Multiple handlers may be registered for a single placeholder
@@ -168,7 +168,7 @@ function register_placeholder($placeholder, $callback, $priority = 10) {
$hook = $this->add_prefix('process_placeholder' . $placeholder);
add_filter($hook, $callback, $priority, 5);
}
-
+
/**
* Default placeholder processing
* To be executed when current placeholder has not been handled by another handler
@@ -201,11 +201,15 @@ function process_placeholder_default($output, $item, $placeholder, $layout, $dat
if ( 'properties' == $placeholder['tag'] && ($prop_group = $item->get_group($placeholder['attributes']['group'])) && !empty($prop_group) ) {
/* Process group */
$group_out = array();
- // Iterate through properties in group and build string
- foreach ( array_keys($prop_group) as $prop_key ) {
- $prop_val = $item->get_property($prop_key);
- if ( !is_null($prop_val) )
- $group_out[] = $prop_key . '="' . $prop_val . '"';
+ // Iterate through properties in group and build string.
+ foreach ( array_keys( $prop_group ) as $prop_key ) {
+ $prop_val = $item->get_property( $prop_key );
+ if ( !is_null( $prop_val ) ) {
+ // Process placeholders.
+ $prop_val = $item->process_placeholders( $prop_val, $layout, $data );
+ // Add property to attribute string output.
+ $group_out[] = esc_attr( $prop_key ) . '="' . esc_attr( $prop_val ) . '"';
+ }
}
$output = implode(' ', $group_out);
}
@@ -222,28 +226,55 @@ function process_placeholder_default($output, $item, $placeholder, $layout, $dat
}
/**
- * Build Field ID attribute
- * @see SLB_Field_Type::process_placeholder_default for parameter descriptions
- * @return string Placeholder output
+ * Renders field ID formatted for a form field's `id` attribute.
+ *
+ * ID is formatted to be unique identifier for form field.
+ * Example: `options_field_id`.
+ * Registered as handler for `{field_id}` placeholder.
+ *
+ * @param string $output Placeholder's rendered value.
+ * @param SLB_Field $item Field containing placeholder.
+ * @param array &$placeholder Placeholder being processed.
+ * @param string $layout Name of layout being built.
+ * @param array $data Additional data for current field.
+ * @return string Field's ID (formatted for a form field's `id` attribute).
*/
- function process_placeholder_id($output, $item, $placeholder, $layout, $data) {
+ function process_placeholder_id( $output, $item, &$placeholder, $layout, $data ) {
// Get attributes
- $args = wp_parse_args($placeholder['attributes'], array('format' => 'attr_id'));
- return $item->get_id($args);
+ $args = wp_parse_args($placeholder['attributes'], array('format' => 'attr_id'));
+ $output = $item->get_id($args);
+ // Set default placeholder context.
+ if ( ! isset( $placeholder['attributes']['context'] ) ) {
+ $placeholder['attributes']['context'] = 'attr';
+ }
+ return $output;
}
-
+
/**
- * Build Field name attribute
- * Name is formatted as an associative array for processing by PHP after submission
- * @see SLB_Field_Type::process_placeholder_default for parameter descriptions
- * @return string Placeholder output
+ * Renders field ID formatted for a form field's `name` attribute.
+ *
+ * ID is formatted to be part of an associative array for processing form submission.
+ * Example: `options[field_id]`.
+ * Registered as handler for `{field_name}` placeholder.
+ *
+ * @param string $output Placeholder's rendered value.
+ * @param SLB_Field $item Field containing placeholder.
+ * @param array &$placeholder Placeholder being processed.
+ * @param string $layout Name of layout being built.
+ * @param array $data Additional data for current field.
+ * @return string Field's ID (formatted for a form field's `name` attribute).
*/
- function process_placeholder_name($output, $item, $placeholder, $layout, $data) {
+ function process_placeholder_name($output, $item, &$placeholder, $layout, $data) {
// Get attributes
- $args = wp_parse_args($placeholder['attributes'], array('format' => 'attr_name'));
- return $item->get_id($args);
+ $args = wp_parse_args($placeholder['attributes'], array('format' => 'attr_name'));
+ $output = $item->get_id($args);
+ // Set default placeholder context.
+ if ( ! isset( $placeholder['attributes']['context'] ) ) {
+ $placeholder['attributes']['context'] = 'attr';
+ }
+ return $output;
}
-
+
/**
* Build item label
* @see SLB_Fields::process_placeholder_default for parameter descriptions
@@ -257,35 +288,30 @@ function process_placeholder_label($output, $item, $placeholder, $layout, $data)
$out = $item->get_title();
return $out;
}
-
+
/**
* Retrieve data for item
* @see SLB_Field_Type::process_placeholder_default for parameter descriptions
* @return string Placeholder output
*/
function process_placeholder_data($output, $item, $placeholder, $layout) {
- $attr_default = array (
- 'context' => '',
- );
- $opts = wp_parse_args($placeholder['attributes'], $attr_default);
- // Save context to separate variable
- $context = $opts['context'];
- unset($opts['context']);
+ $opts = $placeholder['attributes'];
+ // Strip context from data retrieval options (Formatting handled upstream).
+ if ( is_array( $opts ) ) {
+ unset( $opts['context'] );
+ }
// Get data
$out = $item->get_data($opts);
- if ( !is_null($out) ) {
+ if ( ! is_null($out) ) {
// Get specific member in value (e.g. value from a specific item element)
if ( isset($opts['element']) && is_array($out) && ( $el = $opts['element'] ) && isset($out[$el]) )
$out = $out[$el];
}
-
- // Format data based on context
- $out = $item->preserve_special_chars($out, $context);
- $out = $item->format($out, $context);
+
// Return data
return $out;
}
-
+
/**
* Set checked attribute on item
* Evaluates item's data to see if item should be checked or not
@@ -325,11 +351,11 @@ function process_placeholder_loop($output, $item, $placeholder, $layout, $data)
// Get data for loop
$path = explode('.', $attr['data']);
$loop_data = $item->get_member_value($path);
-
+
// Check if data is callback
if ( is_callable($loop_data) )
$loop_data = call_user_func($loop_data);
-
+
// Get item data
$data = $item->get_data();
@@ -351,22 +377,30 @@ function process_placeholder_loop($output, $item, $placeholder, $layout, $data)
// Return output
return implode($out);
}
-
+
/**
- * Returns specified value from extended data array for item
- * @see SLB_Field_Type::process_placeholder_default for parameter descriptions
- * @return string Placeholder output
+ * Returns specified value from extended data array for item.
+ *
+ * @param string $output Value to be used in place of placeholder.
+ * @param SLB_Field $item Field containing placeholder.
+ * @param array $placeholder Current placeholder.
+ * @see SLB_Field::parse_layout for structure of `$placeholder` array.
+ * @param string $layout Name of layout being built.
+ * @param array $data Extended data for item.
+ *
+ * @return string Processed value.
*/
- function process_placeholder_data_ext($output, $item, $placeholder, $layout, $data) {
- if ( isset($placeholder['attributes']['id']) && ($key = $placeholder['attributes']['id']) && isset($data[$key]) ) {
- $output = strval($data[$key]);
+ function process_placeholder_data_ext( string $output, SLB_Field $item, array $placeholder, string $layout, array $data ) {
+ $key = ( isset( $placeholder['attributes']['id'] ) ) ? $placeholder['attributes']['id'] : false;
+ if ( !! $key && isset( $data[ $key ] ) && is_scalar( $data[ $key ] ) ) {
+ $output = strval( $data[ $key ] );
}
-
+
return $output;
}
-
+
/* Build */
-
+
/**
* Output items in a group
* @param string $group ID of Group to output
diff --git a/includes/class.option.php b/includes/class.option.php
index 886280e..7aa8cad 100644
--- a/includes/class.option.php
+++ b/includes/class.option.php
@@ -6,17 +6,17 @@
* @author Archetyped
*/
class SLB_Option extends SLB_Field {
-
+
/* Properties */
-
+
public $hook_prefix = 'option';
-
+
/**
* Determines whether option will be sent to client
* @var bool
*/
var $in_client = false;
-
+
/**
* Child mapping
* @see SLB_Field_Base::map
@@ -26,11 +26,11 @@ class SLB_Option extends SLB_Field {
'default' => 'data',
'attr' => 'properties'
);
-
+
var $property_priority = array ('id', 'data', 'parent');
-
+
/* Init */
-
+
/**
* @see SLB_Field::__construct()
* @uses parent::__construct() to initialize instance
@@ -51,17 +51,17 @@ function __construct($id, $title = '', $default = '') {
// Send to parent constructor
parent::__construct($props);
}
-
+
/* Getters/Setters */
-
+
/**
* Retrieve default value for option
* @return mixed Default option value
*/
function get_default($context = '') {
- return $this->get_data($context, false);
+ return $this->get_data($context, false);
}
-
+
/**
* Sets parent based on default value
*/
@@ -78,7 +78,7 @@ function set_parent($parent = null) {
}
parent::set_parent($parent);
}
-
+
/**
* Set in_client property
* @uses this::in_client
@@ -88,7 +88,7 @@ function set_parent($parent = null) {
function set_in_client($in_client = false) {
$this->in_client = !!$in_client;
}
-
+
/**
* Determines whether option should be included in client output
* @uses this::in_client
@@ -97,9 +97,9 @@ function set_in_client($in_client = false) {
function get_in_client() {
return $this->in_client;
}
-
+
/* Formatting */
-
+
/**
* Format data as string for browser output
* @see SLB_Field_Base::format()
@@ -121,13 +121,13 @@ function format_display($value, $context = '') {
}
return htmlentities($value);
}
-
+
/**
* Format data using same format as default value
* @see SLB_Field_Base::format()
* @param mixed $value Data to format
* @param string $context (optional) Current context
- * @return mixed Formatted option value
+ * @return mixed Formatted option value
*/
function format_default($value, $context = '') {
// Get default value
@@ -140,7 +140,7 @@ function format_default($value, $context = '') {
$value = $this->format_string($value);
return $value;
}
-
+
/**
* Format data as boolean (true/false)
* @see SLB_Field_Base::format()
@@ -153,7 +153,7 @@ function format_bool($value, $context = '') {
$value = !!$value;
return $value;
}
-
+
/**
* Format data as string
* @see SLB_Field_Base::format()
@@ -164,13 +164,13 @@ function format_bool($value, $context = '') {
function format_string($value, $context = '') {
if ( is_bool($value) ) {
$value = ( $value ) ? 'true' : 'false';
- }
+ }
elseif ( is_object($value) ) {
$value = get_class($value);
}
elseif ( is_array($value) ) {
$value = implode(' ', $value);
- }
+ }
else {
$value = strval($value);
}
diff --git a/includes/class.options.php b/includes/class.options.php
index 8723a91..f9c09f2 100644
--- a/includes/class.options.php
+++ b/includes/class.options.php
@@ -7,9 +7,9 @@
* @uses SLB_Field_Collection
*/
class SLB_Options extends SLB_Field_Collection {
-
+
/* Properties */
-
+
public $hook_prefix = 'options';
var $item_type = 'SLB_Option';
@@ -19,24 +19,24 @@ class SLB_Options extends SLB_Field_Collection {
* @var string
*/
private $version_key = 'version';
-
+
/**
* Whether version has been checked
* @var bool
*/
var $version_checked = false;
-
+
var $items_migrated = false;
-
+
var $build_vars = array (
'validate_pre' => false,
'validate_post' => false,
'save_pre' => false,
'save_post' => false
);
-
+
/* Init */
-
+
function __construct($id = '', $props = array()) {
// Validate arguments
$args = func_get_args();
@@ -49,7 +49,7 @@ function __construct($id = '', $props = array()) {
parent::__construct($props);
$this->add_prefix_ref($this->version_key);
}
-
+
protected function _hooks() {
parent::_hooks();
// Register fields
@@ -62,9 +62,9 @@ protected function _hooks() {
$this->util->add_action('admin_page_render_content', $this->m('admin_page_render_content'), 10, 3, false);
$this->util->add_filter('admin_action_reset', $this->m('admin_action_reset'), 10, 3, false);
}
-
+
/* Legacy/Migration */
-
+
/**
* Checks whether new version has been installed and migrates necessary settings
* @uses $version_key as option name
@@ -93,10 +93,10 @@ function check_update() {
// Migrate
$this->migrate($version_changed);
}
-
+
return $this->version_checked;
}
-
+
/**
* Save plugin version to DB
* If no version supplied, will fetch plugin data to determine version
@@ -110,7 +110,7 @@ function set_version($ver = null) {
}
return update_option($this->version_key, $ver);
}
-
+
/**
* Retrieve saved version data
* @return string Saved version
@@ -118,7 +118,7 @@ function set_version($ver = null) {
function get_version() {
return get_option($this->version_key, '');
}
-
+
/**
* Migrate options from old versions to current version
* @uses self::items_migrated to determine if simple migration has been performed in current request or not
@@ -128,13 +128,13 @@ function get_version() {
function migrate($full = false) {
if ( !$full && $this->items_migrated )
return false;
-
+
// Legacy options
$d = null;
$this->load_data();
-
+
$items = $this->get_items();
-
+
// Migrate separate options to unified option
if ( $full ) {
foreach ( $items as $opt => $props ) {
@@ -148,7 +148,7 @@ function migrate($full = false) {
}
}
}
-
+
// Migrate legacy items
if ( is_array($this->properties_init) && isset($this->properties_init['legacy']) && is_array($this->properties_init['legacy']) ) {
$l =& $this->properties_init['legacy'];
@@ -161,7 +161,7 @@ function migrate($full = false) {
unset($l[$opt]);
}
}
-
+
/* Separate options */
if ( $full ) {
foreach ( $l as $opt => $dest ) {
@@ -178,9 +178,9 @@ function migrate($full = false) {
delete_option($oid);
}
}
-
+
/* Simple Migration (Internal options only) */
-
+
// Get existing items that are also legacy items
$opts = array_intersect_key($this->get_data(), $l);
foreach ( $opts as $opt => $val ) {
@@ -200,9 +200,9 @@ function migrate($full = false) {
// Set flag
$this->items_migrated = true;
}
-
+
/* Option setup */
-
+
/**
* Get elements for creating fields
* @return obj
@@ -225,7 +225,7 @@ function get_field_elements() {
}
return $o;
}
-
+
/**
* Register option-specific fields
* @param SLB_Fields $fields Reference to global fields object
@@ -235,7 +235,7 @@ function register_fields($fields) {
// Layouts
$o = $this->get_field_elements();
$l =& $o->layout;
-
+
$form = implode('', array (
$l->opt_pre,
$l->label_ref,
@@ -244,22 +244,23 @@ function register_fields($fields) {
$l->field_post,
$l->opt_post
));
-
+
// Text input
$otxt = new SLB_Field_Type('option_text', 'text');
$otxt->set_property('class', '{inherit} code');
$otxt->set_property('size', null);
- $otxt->set_property('value', '{data context="form"}');
+ $otxt->set_property('value', '{data}');
$otxt->set_layout('label', $l->label);
$otxt->set_layout('form', $form);
$fields->add($otxt);
-
+
// Checkbox
$ocb = new SLB_Field_Type('option_checkbox', 'checkbox');
$ocb->set_layout('label', $l->label);
- $ocb->set_layout('form', $form);
+ $ocb->set_layout('field_reference', sprintf( '
', "{$this->get_id('formatted')}_items[]" ) );
+ $ocb->set_layout('form', '{field_reference ref_base="layout"}' . $form);
$fields->add($ocb);
-
+
// Select
$othm = new SLB_Field_Type('option_select', 'select');
$othm->set_layout('label', $l->label);
@@ -268,7 +269,7 @@ function register_fields($fields) {
$othm->set_layout('form', $l->opt_pre . '{inherit}' . $l->opt_post);
$fields->add($othm);
}
-
+
/**
* Set parent field types for options
* Parent only set for Admin pages
@@ -290,66 +291,117 @@ function set_parents($fields) {
$p = 'o:' . $p->id;
}
}
-
+
/* Processing */
-
+
/**
- * Validate option values
- * Used for validating options (e.g. admin form submission) prior to saving options to DB
- * Reformats values based on options' default values (i.e. bool, int, string, etc.)
- * Adds option items not included in original submission
- * @param array $values (optional) Option values
- * @return array Full options data
+ * Validates option data.
+ *
+ * Validates option values (e.g. prior to saving to DB, after form submission, etc.).
+ * Values are formatted and sanitized according to corresponding option's data type
+ * (e.g. boolean, string, number, etc.).
+ *
+ * @since 1.5.5
+ *
+ * @param array
$values Optional. Option data to validate.
+ * Indexed by option ID.
+ * Default form-submission data used.
+ * @return array Validated data. Indexed by option ID.
*/
- function validate($values = null) {
- $qvar = $this->get_id('formatted');
- if ( empty($values) && isset($_REQUEST[$qvar]) ) {
- $values = $_REQUEST[$qvar];
+ function validate( $values = null ) {
+ /** @var array $values_valid Validated option data. Indexed by option ID. */
+ $values_valid = [];
+ // Enforce values data type.
+ if ( ! is_array( $values ) ) {
+ /** @var array $values */
+ $values = [];
}
- if ( is_array($values) ) {
- // Format data based on option type (bool, string, etc.)
- foreach ( $values as $id => $val ) {
- // Get default
- $d = $this->get_default($id);
- if ( is_bool($d) && !empty($val) )
- $values[$id] = true;
+ /**
+ * Generates query variable using common base.
+ *
+ * @since 2.8.0
+ *
+ * @param string $text Optional. Text to append to base.
+ *
+ * @return string Query variable name. Format: "{base}_{text}". Default "{base}".
+ */
+ $qv = function ( $text = '' ) {
+ static $base;
+ // Get base.
+ if ( empty( $base ) ) {
+ $base = $this->get_id( 'formatted' );
}
-
- // Merge in additional options that are not in post data
- // Missing options (e.g. disabled checkboxes, empty fields, etc.)
-
- // Get groups that were output in request
- $qvar_groups = $qvar . '_groups';
- if ( isset($_REQUEST[$qvar_groups]) ) {
- $groups = explode( ',', implode(',', $_REQUEST[$qvar_groups]) );
-
- // Get group items
- $items = array();
- $items_temp = null;
- foreach ( $groups as $gid ) {
- $items_temp = $this->get_group_items($gid);
- $items = array_merge($items, $items_temp);
- }
- unset($items_temp);
- $items = call_user_func_array('array_merge', $items);
- foreach ( $items as $id => $opt ) {
- // Add options that were not included in form submission
- if ( !array_key_exists($id, $values) ) {
- if ( is_bool($opt->get_default()) )
- $values[$id] = false;
- else
- $values[$id] = $opt->get_default();
+ $out = $base;
+ // Append text to base.
+ if ( is_string( $text ) && ! empty( $text ) ) {
+ $out .= "_{$text}";
+ }
+ return $out;
+ };
+ // Get options form field group ID.
+ $qvar = $qv();
+ // Use form submission data when no values provided.
+ if ( empty( $values ) && isset( $_POST[ $qvar ] ) && check_admin_referer( $qvar, $qv( 'nonce' ) ) ) {
+ /** @var array $values */
+ $values = $_POST[ $qvar ];
+ // Append non-submitted, but rendered fields (e.g. unchecked checkboxes)
+ $qvar_items = $qv( 'items' );
+ /** @var string[] $items_bool Boolean options rendered in submitted form. */
+ $items_bool = ( isset( $_POST[ $qvar_items ] ) ) ? $_POST[ $qvar_items ] : null;
+ if ( ! empty( $items_bool ) && is_array( $items_bool) ) {
+ foreach ( $items_bool as $item_id ) {
+ // Add missing boolean options (false == unchecked).
+ if ( ! array_key_exists( $item_id, $values ) && $this->has( $item_id ) && is_bool( $this->get_default( $item_id ) ) ) {
+ $values_valid[ $item_id ] = false;
}
}
}
+ unset( $qvar, $qvar_items, $items_bool, $item_id );
}
-
- // Return value
- return $values;
+ // Process values.
+ /**
+ * @var string $id Option ID.
+ * @var mixed $val Option value (raw/unsanitized).
+ */
+ foreach ( $values as $id => $val ) {
+ // Do not process invalid option IDs or invalid (non-scalar) data.
+ if ( ! $this->has( $id ) || ! is_scalar( $val ) ) {
+ continue;
+ }
+ // Conform to option's data type and sanitize.
+ /** @var scalar $d Option's default data. */
+ $d = $this->get_default( $id );
+ // Boolean.
+ if ( is_bool( $d ) ) {
+ $val = !! $val;
+ }
+ // Numeric - do not process non-numeric values for int/float fields.
+ elseif ( ( is_int( $d ) || is_float( $d ) ) && ! is_numeric( $val ) ) {
+ continue;
+ }
+ // Integer.
+ elseif ( is_int( $d ) ) {
+ $val = (int) $val;
+ }
+ // Float.
+ elseif ( is_float( $d ) ) {
+ $val = (float) $val;
+ }
+ // Defaut: Handle as string.
+ else {
+ $val = sanitize_text_field( wp_unslash( $val ) );
+ }
+ // Add to validated data.
+ $values_valid[ $id ] = $val;
+ }
+ unset( $id, $val );
+
+ // Return validated values.
+ return $values_valid;
}
-
+
/* Data */
-
+
/**
* Retrieve options from database
* @uses get_option to retrieve option data
@@ -370,7 +422,7 @@ function fetch_data($sanitize = true) {
}
return $data;
}
-
+
/**
* Retrieves option data for collection
* @see SLB_Field_Collection::load_data()
@@ -379,12 +431,12 @@ function load_data() {
if ( !$this->data_loaded ) {
// Retrieve data
$this->data = $this->fetch_data();
- $this->data_loaded = true;
+ parent::load_data();
// Check update
$this->check_update();
}
}
-
+
/**
* Resets option values to their default values
* @param bool $hard Reset all options if TRUE (default), Reset only unset options if FALSE
@@ -398,7 +450,7 @@ function reset($hard = true) {
// Save
$this->save();
}
-
+
/**
* Save options data to database
*/
@@ -406,7 +458,7 @@ function save() {
$this->normalize_data();
update_option($this->get_key(), $this->data);
}
-
+
/**
* Normalize data
* Assures that data in collection match items
@@ -422,7 +474,7 @@ function normalize_data() {
}
/* Collection */
-
+
/**
* Build key for saving/retrieving data to options table
* @return string Key
@@ -430,7 +482,7 @@ function normalize_data() {
function get_key() {
return $this->add_prefix($this->get_id());
}
-
+
/**
* Add option to collection
* @uses SLB_Field_Collection::add() to add item
@@ -442,10 +494,10 @@ function get_key() {
function &add($id, $properties = array(), $update = false) {
// Create item
$args = func_get_args();
- $ret = call_user_func_array(array('parent', 'add'), $args);
+ $ret = call_user_func_array(array('parent', 'add'), $args);
return $ret;
}
-
+
/**
* Retrieve option value
* @uses get_data() to retrieve option data
@@ -456,7 +508,7 @@ function &add($id, $properties = array(), $update = false) {
function get_value($option, $context = '') {
return $this->get_data($option, $context);
}
-
+
/**
* Retrieve option value as boolean (true/false)
* @uses get_data() to retrieve option data
@@ -466,11 +518,11 @@ function get_value($option, $context = '') {
function get_bool($option) {
return $this->get_value($option, 'bool');
}
-
+
function get_string($option) {
return $this->get_value($option, 'string');
}
-
+
/**
* Retrieve option's default value
* @uses get_data() to retrieve option data
@@ -481,9 +533,9 @@ function get_string($option) {
function get_default($option, $context = '') {
return $this->get_data($option, $context, false);
}
-
+
/* Output */
-
+
function build_init() {
if ( $this->build_vars['validate_pre'] ) {
$values = $this->validate();
@@ -492,7 +544,7 @@ function build_init() {
}
}
}
-
+
/**
* Build array of option values for client output
* @return array Associative array of options
@@ -507,9 +559,9 @@ function build_client_output() {
}
return $out;
}
-
+
/* Admin */
-
+
/**
* Handles output building for options on admin pages
* @param obj|array $opts Options instance or Array of options instance and groups to build
@@ -534,7 +586,7 @@ public function admin_page_render_content($opts, $page, $state) {
'parse_build_vars' => array( $this->m('admin_parse_build_vars'), 10, 2 )
)
);
-
+
// Add hooks
foreach ( $hooks as $type => $hook ) {
$m = 'add_' . $type;
@@ -543,10 +595,10 @@ public function admin_page_render_content($opts, $page, $state) {
call_user_func_array($this->util->m($m), $args);
}
}
-
+
// Build output
$this->build(array('build_groups' => $this->m('admin_build_groups')));
-
+
// Remove hooks
foreach ( $hooks as $type => $hook ) {
$m = 'remove_' . $type;
@@ -567,10 +619,9 @@ public function admin_build_groups() {
$page = $this->get_build_var('admin_page');
$state = $this->get_build_var('admin_state');
$groups = $this->get_build_var('groups');
-
+
// Get all groups
$groups_all = $this->get_groups();
- $groups_built = array();
if ( empty($groups) ) {
$groups = array_keys($groups_all);
}
@@ -583,22 +634,9 @@ public function admin_build_groups() {
// Add meta box for each group
$g = $groups_all[$gid];
add_meta_box($g->id, $g->title, $this->m('admin_build_group'), $state->screen, $state->context, $state->priority, array('group' => $g->id, 'page' => $page));
- $groups_built[] = $gid;
- }
-
- // Define groups built
- if ( !empty($groups_built) ) {
- echo $this->util->build_html_element(array(
- 'tag' => 'input',
- 'attributes' => array (
- 'type' => 'hidden',
- 'value' => implode(',', $groups_built),
- 'name' => $this->get_id('formatted') . '_groups[]'
- ),
- ));
}
}
-
+
/**
* Group output handler for admin pages
* @param obj $obj Object passed by `do_meta_boxes()` call (Default: NULL)
@@ -609,14 +647,14 @@ public function admin_build_group($obj, $box) {
$group = $a['group'];
$this->build_group($group);
}
-
+
/**
* Parse build vars
* @uses `options_parse_build_vars` filter hook
*/
public function admin_parse_build_vars($vars, $opts) {
// Handle form submission
- if ( isset($_REQUEST[$opts->get_id('formatted')]) ) {
+ if ( isset($_POST[$opts->get_id('formatted')]) ) {
$vars['validate_pre'] = $vars['save_pre'] = true;
}
return $vars;
diff --git a/includes/class.template_tags.php b/includes/class.template_tags.php
index c5ada5e..d624512 100644
--- a/includes/class.template_tags.php
+++ b/includes/class.template_tags.php
@@ -8,36 +8,36 @@
*/
class SLB_Template_Tags extends SLB_Collection_Controller {
/* Configuration */
-
+
protected $item_type = 'SLB_Template_Tag';
-
+
public $hook_prefix = 'template_tags';
-
+
// Use tag ID as key
protected $key_prop = 'get_id';
-
+
// Call $key_prop is a method to be called
protected $key_call = true;
-
+
/* Properties */
-
+
/**
* Cache properties (key, group)
* @var object
*/
protected $cache_props = null;
-
+
/* Initialization */
-
+
protected function _hooks() {
parent::_hooks();
$this->util->add_action('init', $this->m('init_defaults'));
$this->util->add_action('footer', $this->m('client_output'), 1, 0, false);
$this->util->add_filter('footer_script', $this->m('client_output_script'), $this->util->priority('client_footer_output'), 1, false);
}
-
+
/* Collection Management */
-
+
/**
* Add template tag
* Accepts properties to create new template tag OR previously-initialized tag instance
@@ -51,9 +51,9 @@ public function add($id, $props = array()) {
// Add to collection
return parent::add($o);
}
-
+
/* Defaults */
-
+
/**
* Initialize default template tags
* @param SLB_Template_Tags $tags Tags controller
@@ -78,9 +78,9 @@ public function init_defaults($tags) {
$tags->add($id, $props);
}
}
-
+
/* Output */
-
+
/**
* Build client output
*/
@@ -90,7 +90,7 @@ public function client_output() {
$tag->enqueue_scripts();
}
}
-
+
/**
* Client output script
* @param array $commands Client script commands
@@ -99,7 +99,7 @@ public function client_output() {
public function client_output_script($commands) {
$out = array('/* TPLT */');
$code = array();
-
+
foreach ( $this->get() as $tag ) {
$styles = $tag->get_styles(array('uri_format'=>'full'));
if ( empty($styles) ) {
diff --git a/includes/class.theme.php b/includes/class.theme.php
index 3a40612..405162c 100644
--- a/includes/class.theme.php
+++ b/includes/class.theme.php
@@ -8,17 +8,17 @@
*/
class SLB_Theme extends SLB_Component {
/* Properties */
-
+
protected $props_required = array('name');
-
+
/**
* Public flag
* @var bool
*/
protected $public = true;
-
+
/* Get/Set */
-
+
/**
* Retrieve theme's ancestors
* @param bool $sort_topdown (optional) Ancestor sorting (Default: Nearest to Farthest)
@@ -45,7 +45,7 @@ public function get_ancestors($sort_topdown = false) {
}
return $ret;
}
-
+
/**
* Set public flag
* @param bool $public
@@ -53,7 +53,7 @@ public function get_ancestors($sort_topdown = false) {
public function set_public($public) {
$this->public = !!$public;
}
-
+
/**
* Get privacy state
* @return bool
@@ -61,9 +61,9 @@ public function set_public($public) {
public function get_public() {
return !!$this->public;
}
-
+
/* Templates */
-
+
/**
* Add template file
* @see `add_file()`
@@ -74,7 +74,7 @@ public function get_public() {
protected function add_template($handle, $src) {
return $this->add_file('template', $handle, $src);
}
-
+
/**
* Retrieve template file
* @see `get_file()`
@@ -85,9 +85,9 @@ protected function add_template($handle, $src) {
protected function get_template($handle, $format = null) {
return $this->get_file('template', $handle, $format);
}
-
+
/* Layout */
-
+
/**
* Set theme layout
* @uses `add_template()`
@@ -97,7 +97,7 @@ protected function get_template($handle, $format = null) {
public function set_layout($src) {
return $this->add_template('layout', $src);
}
-
+
/**
* Get layout
* @param string $format (optional) Layout data format
diff --git a/includes/class.themes.php b/includes/class.themes.php
index 689c34b..729adfb 100644
--- a/includes/class.themes.php
+++ b/includes/class.themes.php
@@ -8,31 +8,31 @@
*/
class SLB_Themes extends SLB_Collection_Controller {
/* Configuration */
-
+
protected $item_type = 'SLB_Theme';
-
+
public $hook_prefix = 'themes';
-
+
protected $key_prop = 'get_id';
-
+
protected $key_call = true;
-
+
/* Properties */
-
+
protected $id_default = null;
-
+
/* Initialization */
-
+
protected function _hooks() {
parent::_hooks();
// Register themes
$this->util->add_action('init', $this->m('init_defaults'), 1);
-
+
// Client output
$this->util->add_action('footer', $this->m('client_output'), 1, 0, false);
$this->util->add_filter('footer_script', $this->m('client_output_script'), $this->util->priority('client_footer_output'), 1, false);
}
-
+
protected function _options() {
$opts = array (
'items' => array (
@@ -46,10 +46,10 @@ protected function _options() {
),
)
);
-
+
parent::_set_options($opts);
}
-
+
/**
* Add default themes
* @param SLB_Themes $themes Themes controller
@@ -90,14 +90,14 @@ function init_defaults($themes) {
)
),
);
-
+
foreach ( $defaults as $id => $props ) {
$themes->add($id, $props);
}
}
/* Collection management */
-
+
/**
* Add theme
* Accepts properties to create new theme or previously-created theme instance
@@ -119,7 +119,7 @@ public function add($id, $props = array()) {
// Add to collection
return parent::add($o);
}
-
+
/**
* Get themes
* @param array $args (optional) Arguments
@@ -134,12 +134,12 @@ public function get($args = null) {
$r = wp_parse_args($args, $args_default);
$r['include_public'] = !!$r['include_public'];
$r['include_private'] = !!$r['include_private'];
-
+
$items = parent::get($args);
-
+
if ( empty($items) )
return $items;
-
+
/* Process custom arguments */
// Filter
@@ -161,7 +161,7 @@ public function get($args = null) {
}
/* Helpers */
-
+
/**
* Retrieve default theme ID
* @uses `$id_default`
@@ -173,7 +173,7 @@ public function get_default_id() {
}
return $this->id_default;
}
-
+
/**
* Retrieve currently-selected theme
* @return SLB_Theme Selected theme
@@ -188,29 +188,29 @@ protected function get_selected() {
}
return $thms[$id];
}
-
+
/* Output */
-
+
/**
* Build client output
*/
public function client_output() {
// Process active theme
$thm = $this->get_selected();
-
+
// Get theme ancestors
$thms = $thm->get_ancestors(true);
$thms[] = $thm;
-
+
foreach ( $thms as $thm ) {
// Load files
$thm->enqueue_scripts();
}
}
-
+
/**
* Client output script
- *
+ *
* @param array $commands Client script commands
* @return array Modified script commands
*/
@@ -221,10 +221,10 @@ public function client_output_script($commands) {
// Process theme ancestors
$thms = $thm->get_ancestors(true);
$thms[] = $thm;
-
+
$out = array('/* THM */');
$code = array();
-
+
// Build output for each theme
foreach ( $thms as $thm ) {
// Setup client parameters
@@ -248,7 +248,7 @@ public function client_output_script($commands) {
}
// Add properties to parameters
$params[] = json_encode($thm_props);
-
+
// Add theme to client
$code[] = $this->util->call_client_method('View.extend_theme', $params, false);
}
@@ -259,9 +259,9 @@ public function client_output_script($commands) {
}
return $commands;
}
-
+
/* Options */
-
+
/**
* Retrieve themes for use in option field
* @uses self::theme_default
@@ -276,17 +276,17 @@ public function opt_get_field_values() {
$itm_d = $items[$d];
unset($items[$d]);
}
-
+
// Sort themes by name
uasort( $items, function( $a, $b ) {
return strcmp( $a->get_name(), $b->get_name() );
});
-
+
// Insert default theme at top of array
if ( isset($itm_d) ) {
$items = array( $d => $itm_d ) + $items;
}
-
+
// Build options
foreach ( $items as $item ) {
$items[$item->get_id()] = $item->get_name();
diff --git a/includes/class.utilities.php b/includes/class.utilities.php
index 012d414..e067d50 100644
--- a/includes/class.utilities.php
+++ b/includes/class.utilities.php
@@ -2,22 +2,22 @@
/**
* Utility methods
- *
+ *
* @package Simple Lightbox
* @subpackage Utilities
* @author Archetyped
*
*/
class SLB_Utilities {
-
+
/* Properties */
-
+
/**
* Instance parent
* @var object
*/
private $_parent = null;
-
+
/**
* Plugin Base
* @var string
@@ -38,13 +38,13 @@ class SLB_Utilities {
'AuthorURI' => 'Author URI',
)
);
-
+
/**
* Plugin base path
* @var string
*/
private $_path_base = null;
-
+
/**
* Standard hook priorities
* @var array
@@ -55,15 +55,15 @@ class SLB_Utilities {
'safe' => 15,
'client_footer_output' => 25,
);
-
+
/* Constructors */
-
+
function __construct($obj) {
if ( is_object($obj) ) {
$this->_parent = $obj;
}
}
-
+
/**
* Returns callback array to instance method
* @param object $obj Instance object
@@ -81,11 +81,11 @@ function m($obj, $method = '') {
$cb = array($obj, $method);
return $cb;
}
-
+
/* Helper Functions */
-
+
/*-** Prefix **-*/
-
+
/**
* Get valid separator
* @param string $sep (optional) Separator supplied
@@ -96,7 +96,7 @@ function get_sep($sep = false) {
$sep = '';
return ( is_string($sep) ) ? $sep : '_';
}
-
+
/**
* Retrieve class prefix (with separator if set)
* @param bool|string $sep Separator to append to class prefix (Default: no separator)
@@ -107,7 +107,7 @@ function get_prefix($sep = null) {
$prefix = ( !empty($this->_parent->prefix) ) ? $this->_parent->prefix . $sep : '';
return $prefix;
}
-
+
/**
* Check if a string is prefixed
* @param string|array $text Text to check for prefix
@@ -122,7 +122,7 @@ function has_prefix($text, $sep = null) {
$text = $text[0];
return ( !empty($text) && stripos($text, $this->get_prefix($sep)) === 0 );
}
-
+
/**
* Prepend plugin prefix to some text
* @param string|array $text Text to add to prefix
@@ -141,7 +141,7 @@ function add_prefix($text, $sep = '_', $once = true) {
array_unshift($text, $this->get_prefix());
return implode($sep, $text);
}
-
+
/**
* Prepend uppercased plugin prefix to some text
* @param string|array $text Text to add to prefix
@@ -155,7 +155,7 @@ function add_prefix_uc($text, $sep = '_', $once = true) {
$pre = $this->get_prefix();
return str_replace($pre . $sep, strtoupper($pre) . $sep, $var);
}
-
+
/**
* Add prefix to variable reference
* Updates actual variable rather than return value
@@ -169,7 +169,7 @@ function add_prefix_ref(&$var, $sep = null, $once = true) {
$args = func_get_args();
$var = call_user_func_array($this->m($this, 'add_prefix'), $args);
}
-
+
/**
* Remove prefix from specified string
* @param string $text String to remove prefix from
@@ -180,7 +180,7 @@ function remove_prefix($text, $sep = '_') {
$text = substr($text, strlen($this->get_prefix($sep)));
return $text;
}
-
+
/**
* Returns Database prefix for plugin-related DB Tables
* @return string Database prefix
@@ -189,9 +189,9 @@ function get_db_prefix() {
global $wpdb;
return $wpdb->prefix . $this->get_prefix('_');
}
-
+
/*-** Priority **-*/
-
+
/**
* Retrieve standard priority
* @var string $id Priority ID to retrieve
@@ -204,9 +204,9 @@ public function priority($id = null) {
}
return $pri;
}
-
+
/* Wrapped Values */
-
+
/**
* Create wrapper object
* Properties
@@ -221,13 +221,13 @@ function get_wrapper($start = null, $end = null) {
// Validate existing wrapper
if ( is_object($start) && isset($start->start) && isset($start->end) )
return $start;
-
+
// Initialize wrapper
$w = array (
'start' => '[',
'end' => ']',
);
-
+
if ( !empty($start) ) {
if ( is_string($start) ) {
$w['start'] = $start;
@@ -244,10 +244,10 @@ function get_wrapper($start = null, $end = null) {
if ( is_string($end) ) {
$w['end'] = $end;
}
-
+
return (object) $w;
}
-
+
/**
* Check if text is wrapped by specified character(s)
* @uses this->get_wrapper() to Validate wrapper text
@@ -260,11 +260,11 @@ function has_wrapper($text, $start = null, $end = null) {
return false;
// Validate wrapper
$w = $this->get_wrapper($start, $end);
-
+
// Check for wrapper
return ( substr($text, 0, strlen($w->start)) == $w->start && substr($text, -1, strlen($w->end)) == $w->end ) ? true : false;
}
-
+
/**
* Remove wrapper from specified text
* @uses this->has_wrapper() to check if text is wrapped
@@ -279,10 +279,10 @@ function remove_wrapper($text, $start = null, $end = null) {
$w = $this->get_wrapper($start, $end);
$text = substr($text, strlen($w->start), strlen($text) - strlen($w->start) - strlen($w->end) );
}
-
+
return $text;
}
-
+
/**
* Add wrapper to specified text
* @uses Utilities::get_wrapper() to retrieve wrapper object
@@ -298,9 +298,9 @@ function add_wrapper($text, $start = null, $end = null, $once = true) {
$text = $w->start . $text . $w->end;
return $text;
}
-
+
/*-** Client **-*/
-
+
/**
* Parses client files array
* > Adds ID property (prefixed file key)
@@ -311,11 +311,11 @@ function add_wrapper($text, $start = null, $end = null, $once = true) {
* > deps (array) [optional]: Dependencies
* > Values wrapped in square brackets (`[` & `]`) are internal files
* > callback (string|array) [optional]: Global callback to determine whether file should be loaded
- * > Values wrapped in square brackets (`[` & `]`) are internal methods (of parent object)
+ * > Values wrapped in square brackets (`[` & `]`) are internal methods (of parent object)
* > context (array) [optional]: Context(s) in which to load the file
* Acceptable values
* > string: Context name
- * > array: Context name + callback (both must return TRUE to load file)
+ * > array: Context name + callback (both must return TRUE to load file)
* > Callback follows same pattern as `callback` member
* @param array $files Files array
* @return object Client files
@@ -362,15 +362,15 @@ function parse_client_files($files, $type = 'scripts') {
else
unset($p[$m]);
}
-
+
// Normalize file properties
$p = array_merge($defaults, $p);
-
+
/* File name */
-
+
// Validate file
$file =& $p['file'];
-
+
// Determine if filename or callback
if ( !$this->is_file($file) )
$file = ( is_callable($file) ) ? $file : null;
@@ -379,9 +379,9 @@ function parse_client_files($files, $type = 'scripts') {
unset($files[$h]);
continue;
}
-
+
/* Dependencies */
-
+
// Format internal dependencies
foreach ( $p['deps'] as $idx => $dep ) {
if ( $this->has_wrapper($dep) ) {
@@ -389,9 +389,9 @@ function parse_client_files($files, $type = 'scripts') {
$p['deps'][$idx] = $this->add_prefix($dep);
}
}
-
+
/* Context */
-
+
// Validate callback
$cb =& $p['callback'];
if ( !is_null($cb) && !is_callable($cb) ) {
@@ -399,7 +399,7 @@ function parse_client_files($files, $type = 'scripts') {
unset($files[$h]);
continue;
}
-
+
// Validate contexts
$ctxs =& $p['context'];
$ctxs = array_unique($ctxs);
@@ -423,7 +423,7 @@ function parse_client_files($files, $type = 'scripts') {
$ctx = false;
break;
}
-
+
// Remove invalid contexts
if ( empty($ctx) ) {
unset($ctxs[$idx]);
@@ -437,9 +437,9 @@ function parse_client_files($files, $type = 'scripts') {
continue;
}
$ctxs = array_values($ctxs);
-
+
/* Finalize Properties */
-
+
// Convert properties to object
$files[$h] = (object) $p;
}
@@ -463,7 +463,7 @@ function get_client_object($path = null) {
}
return $obj;
}
-
+
/**
* Build jQuery JS expression to add data to specified client object
* @param string|obj $obj Name of client object (Set to root object if not a valid name)
@@ -508,7 +508,7 @@ function extend_client_object($obj, $data = null, $out = false) {
/**
* Validate client object $obj before running command $cmd
- *
+ *
* @param string $obj Full object name
* @param string $cmd (optional) Command to wrap in validation
* @return string Command wrapped in validation block
@@ -517,7 +517,7 @@ function extend_client_object($obj, $data = null, $out = false) {
public function validate_client_object($obj, $cmd = null) {
// Get base object
$base = $this->get_client_object();
-
+
// Build condition
$sep = '.';
$obj = trim($obj, $sep);
@@ -530,14 +530,14 @@ public function validate_client_object($obj, $cmd = null) {
$fmt .= ' && %1$s.has_child(\'%2$s\')';
}
$condition = sprintf($fmt, $base, $obj);
-
+
// Wrap command in validation
if ( !empty($cmd) && is_string($cmd) ) {
$condition = sprintf('if ( %1$s ) { %2$s }', $condition, $cmd);
}
return $condition;
}
-
+
/**
* Build client method call
* @uses get_client_object() to generate the body of the method call
@@ -554,17 +554,17 @@ function call_client_method($method, $params = null, $encode = true, $validate =
}
$encode = !!$encode;
$validate = !!$validate;
-
+
// Build parameters
if ( !is_null($params) ) {
if ( $encode ) {
- $params = json_encode($params);
+ $params = wp_json_encode($params);
} elseif ( is_array($params) ) {
- $params = implode(',', $params);
+ $params = implode(',', $params);
}
}
if ( !is_string($params) ) {
- $params = '';
+ $params = '';
}
$ret = sprintf('%s(%s);', $this->get_client_object($method), $params);
if ( $validate ) {
@@ -572,9 +572,9 @@ function call_client_method($method, $params = null, $encode = true, $validate =
}
return $ret;
}
-
+
/*-** WP **-*/
-
+
/**
* Checks if $post is a valid Post object
* If $post is not valid, assigns global post object to $post (if available)
@@ -598,8 +598,8 @@ function check_post(&$post) {
return false;
return true;
}
-
-
+
+
/**
* Retrieve parent object
* @return obj|bool Parent object (FALSE if no valid parent set)
@@ -609,9 +609,9 @@ function get_parent() {
return $this->_parent;
} else {
return false;
- }
+ }
}
-
+
/**
* Retrieve parent property value
* @uses self::get_parent()
@@ -621,11 +621,11 @@ function get_parent() {
*/
function get_parent_property($prop, $default = '') {
$p = $this->get_parent();
- return ( !!$p && property_exists($p, $prop) ) ? $p->{$prop} : $default;
+ return ( !!$p && property_exists($p, $prop) ) ? $p->{$prop} : $default;
}
-
+
/* Hooks */
-
+
/**
* Retrieve formatted name for internal hooks
* Prefixes with parent prefix and hook prefix
@@ -648,7 +648,7 @@ function get_hook($tag, $hook_prefix = true) {
// Prefix
return $this->add_prefix($hook . $tag);
}
-
+
/**
* Run internal action
* Namespaces $tag
@@ -667,7 +667,7 @@ function do_action($tag, $arg = '') {
$args[0] = $this->get_hook($tag, $hook_prefix);
return call_user_func_array('do_action', $args);
}
-
+
/**
* Run internal action passing arguments in array
* @uses do_action_ref_array()
@@ -676,7 +676,7 @@ function do_action($tag, $arg = '') {
function do_action_ref_array($tag, $args, $hook_prefix = true) {
return do_action_ref_array($this->get_hook($tag, $hook_prefix), $args);
}
-
+
/**
* Run internal filter
* Namespaces $tag
@@ -695,16 +695,16 @@ function apply_filters($tag, $value) {
$args[0] = $this->get_hook($tag, $hook_prefix);
return call_user_func_array('apply_filters', $args);
}
-
+
/**
* Run internal filter passing arguments in array
* @uses apply_filters_ref_array()
* @param bool|string $hook_prefix (optional) Secondary prefix to use for hook (Default: Use predefined hook name, FALSE: no secondary hook)
*/
function apply_filters_ref_array($tag, $args, $hook_prefix = true) {
- return apply_filters_ref_array($this->get_hook($tag, $hook_prefix), $args);
+ return apply_filters_ref_array($this->get_hook($tag, $hook_prefix), $args);
}
-
+
/**
* Add internal action
* Namespaces $tag
@@ -715,7 +715,7 @@ function apply_filters_ref_array($tag, $args, $hook_prefix = true) {
function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1, $hook_prefix = true) {
return add_action($this->get_hook($tag, $hook_prefix), $function_to_add, $priority, $accepted_args);
}
-
+
/**
* Add internal filter
* Namespaces $tag
@@ -726,7 +726,7 @@ function add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1,
function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1, $hook_prefix = true) {
return add_filter($this->get_hook($tag, $hook_prefix), $function_to_add, $priority, $accepted_args);
}
-
+
/**
* Remove internal action
* Namespaces $tag
@@ -735,9 +735,9 @@ function add_filter($tag, $function_to_add, $priority = 10, $accepted_args = 1,
* @param bool|string $hook_prefix (optional) Secondary prefix to use for hook (Default: Use predefined hook name, FALSE: no secondary hook)
*/
function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args = 1, $hook_prefix = true) {
- return remove_action($this->get_hook($tag, $hook_prefix), $function_to_remove, $priority, $accepted_args);
+ return remove_action($this->get_hook($tag, $hook_prefix), $function_to_remove, $priority, $accepted_args);
}
-
+
/**
* Remove internal filter
* Namespaces $tag
@@ -748,22 +748,22 @@ function remove_action($tag, $function_to_remove, $priority = 10, $accepted_args
function remove_filter($tag, $function_to_remove, $priority = 10, $accepted_args = 1, $hook_prefix = true) {
return remove_filter($this->get_hook($tag, $hook_prefix), $function_to_remove, $priority, $accepted_args);
}
-
+
/* Shortcode */
-
+
/**
* Process specific shortcode(s) in content
* Default: Process all existing shortcodes
* @uses $shortcode_tags - array tag => callback
* @uses do_shortcode()
- *
+ *
* @param string $content Content to process for shortcodes
* @param string|array $shortcode Single tag or array of tags to process
* > Associative array sets temporary callbacks for shortcodes (`tag => callback`)
*/
public function do_shortcode($content, $shortcode = null) {
global $shortcode_tags;
-
+
// Process custom shortcodes
if ( !is_null($shortcode) ) {
// Cast to array
@@ -782,19 +782,19 @@ public function do_shortcode($content, $shortcode = null) {
}
}
}
-
+
// Process shortcodes in content
$content = do_shortcode($content);
-
+
// Restore default shortcode handlers
if ( isset($tags_temp) ) {
$shortcode_tags = $tags_temp;
unset($tags_temp);
}
-
+
return $content;
}
-
+
/**
* Build shortcode tag
* @param string $tag Shortcode base
@@ -811,7 +811,7 @@ public function make_shortcode($tag, $attr = null, $content = null) {
}
/* Meta */
-
+
/**
* Retrieves post metadata for internal methods
* Metadata set internally is wrapped in an array so it is unwrapped before returned the retrieved value
@@ -827,7 +827,7 @@ function post_meta_get($post_id, $key, $single = false) {
$meta_value = $meta_value[0];
return $meta_value;
}
-
+
/**
* Wraps metadata in array for storage in database
* @param mixed $meta_value Value to be set as metadata
@@ -836,7 +836,7 @@ function post_meta_get($post_id, $key, $single = false) {
function post_meta_prepare_value($meta_value) {
return array($meta_value);
}
-
+
/**
* Adds Metadata for a post to database
* For internal methods
@@ -851,7 +851,7 @@ function post_meta_add($post_id, $meta_key, $meta_value, $unique = false) {
$meta_value = $this->post_meta_value_prepare($meta_value);
return add_post_meta($post_id, $meta_key, $meta_value, $unique);
}
-
+
/**
* Updates post metadata for internal data/methods
* @see update_post_meta()
@@ -865,10 +865,10 @@ function post_meta_update($post_id, $meta_key, $meta_value, $prev_value = '') {
$meta_value = $this->post_meta_prepare_value($meta_value);
return update_post_meta($post_id, $meta_key, $meta_value, $prev_value);
}
-
+
/**
* Builds postmeta key for custom data set by plugin
- * @param string $key Base key name
+ * @param string $key Base key name
* @return string Formatted postmeta key
*/
function post_meta_get_key($key) {
@@ -880,10 +880,10 @@ function post_meta_get_key($key) {
return $sep . implode($sep, $key);
}
}
-
+
return $key;
}
-
+
/**
* Creates a meta key for storing post meta data
* Prefixes standard prefixed text with underscore to hide meta data on post edit forms
@@ -893,9 +893,9 @@ function post_meta_get_key($key) {
function make_meta_key($text = '') {
return '_' . $this->add_prefix($text);
}
-
+
/* Class */
-
+
/**
* Retrieve name of internal class
* @param string $class Base name of class
@@ -903,10 +903,10 @@ function make_meta_key($text = '') {
*/
function get_class($class) {
return $this->add_prefix_uc($class);
- }
-
+ }
+
/* Context */
-
+
/**
* Retrieve context for current request
* @return array Context
@@ -952,18 +952,18 @@ function get_context() {
$u = wp_get_current_user();
$ctx[] = $this->build_context('user', ( $u->ID ) ? 'registered' : 'guest', false);
}
-
+
return $ctx;
}
-
+
/**
* Builds context from multiple components
* Usage:
* > $prefix can be omitted and context strings can be added as needed
* > Multiple context strings may be passed to be joined together
- *
+ *
* @param string (optional) $context Variable number of components to add to context
- * @param bool (optional) $prefix Whether or not to prefix context with request type (public or admin) [Default: TRUE]
+ * @param bool (optional) $prefix Whether or not to prefix context with request type (public or admin) [Default: TRUE]
* @return string Context
*/
function build_context($context = null, $prefix = true) {
@@ -972,8 +972,8 @@ function build_context($context = null, $prefix = true) {
if ( !empty($args) ) {
$prefix = ( is_bool($args[count($args) - 1]) ) ? array_pop($args) : true;
}
-
- // Validate
+
+ // Validate
$context = array_filter($args, 'is_string');
$sep = '_';
@@ -982,7 +982,7 @@ function build_context($context = null, $prefix = true) {
array_unshift($context, ( is_admin() ) ? 'admin' : 'public' );
return implode($sep, $context);
}
-
+
/**
* Check if context exists in current request
* @param string $context Context to check for
@@ -1011,9 +1011,9 @@ function set_client_context() {
$ctx->context = $this->get_context();
$this->extend_client_object($ctx, true);
}
-
+
/* Path */
-
+
/**
* Joins and normalizes the slashes in the paths passed to method
* All forward/back slashes are converted to forward slashes
@@ -1035,7 +1035,7 @@ function normalize_path($path, $trailing_slash = false) {
if ( is_bool($arg_last) ) {
$arg_last = array($arg_last);
}
-
+
if ( is_array($arg_last) && count($arg_last) > 0 && is_bool($arg_last[0]) ) {
// Remove slash paramter from args array
array_pop($parts);
@@ -1048,19 +1048,19 @@ function normalize_path($path, $trailing_slash = false) {
}
// Extract to slash options local variables
list($trailing_slash, $leading_slash) = $slashes;
-
+
// Clean path segments
foreach ( $parts as $key => $part ) {
// Trim slashes/spaces
$parts[$key] = trim($part, " " . $sl_f . $sl_b);
-
+
// Verify path segment still contains value
if ( empty($parts[$key]) ) {
unset($parts[$key]);
continue;
}
}
-
+
// Join path parts together
$parts = implode($sl_b, $parts);
$parts = str_replace($sl_b, $sl_f, $parts);
@@ -1074,7 +1074,7 @@ function normalize_path($path, $trailing_slash = false) {
}
return $parts;
}
-
+
/**
* Returns URL of file (assumes that it is in plugin directory)
* @param string $file name of file get URL
@@ -1087,7 +1087,7 @@ function get_file_url($file, $relative = null) {
}
return $file;
}
-
+
/**
* Returns path to plugin file
* @param string $file file name
@@ -1100,13 +1100,13 @@ function get_file_path($file, $relative = null) {
}
return $file;
}
-
+
function get_plugin_file_path($file, $trailing_slash = false) {
if ( is_string($file) && '' != trim($file) )
$file = $this->normalize_path($this->get_plugin_base(), $file, $trailing_slash);
return $file;
}
-
+
/**
* Checks if value is valid file name
* @param string $filename File name to check
@@ -1116,7 +1116,7 @@ function is_file($filename) {
$ext = $this->get_file_extension($filename);
return ( empty($ext) ) ? false : true;
}
-
+
/**
* Check if string is valid URI
* @param string $uri String to check
@@ -1125,7 +1125,7 @@ function is_file($filename) {
function is_uri($uri) {
return ( preg_match('|^(https?:)?//|', $uri) ) ? true : false;
}
-
+
/**
* Retrieves file extension
* @param string $file file name/path
@@ -1142,13 +1142,13 @@ function get_file_extension($file, $lowercase = true) {
if ( ( $qpos = strpos($file, '?') ) && $qpos !== false ) {
$file = substr($file, 0, $qpos);
}
- if ( ( $rpos = strrpos($file, $sep) ) > 0 )
+ if ( ( $rpos = strrpos($file, $sep) ) > 0 )
$ret = substr($file, $rpos + 1);
if ( !!$lowercase )
$ret = strtolower($ret);
return $ret;
}
-
+
/**
* Checks if file has specified extension
* @uses get_file_extension()
@@ -1163,10 +1163,10 @@ function has_file_extension($file, $extension, $case_sensitive = false) {
if ( !$case_sensitive ) {
// Normalize extensions
$extension = array_map('strtolower', $extension);
- }
+ }
return ( in_array($this->get_file_extension($file, !$case_sensitive), $extension) ) ? true : false;
}
-
+
/**
* Removes file extension from file name
* The extension is the text following the last period ('.') in the file name
@@ -1181,7 +1181,7 @@ function strip_file_extension($file) {
}
return $file;
}
-
+
/**
* Retrieve base URL for plugin-specific files
* @uses get_plugin_base()
@@ -1208,10 +1208,10 @@ function get_url_base($trailing_slash = false, $relative = null) {
$ret = $this->get_relative_path($ret, $relative);
}
}
-
+
return $ret;
}
-
+
/**
* Retrieve plugin's base path
* @uses WP_PLUGIN_DIR
@@ -1251,7 +1251,7 @@ function get_path_base($relative = null) {
}
return $ret;
}
-
+
/**
* Retrieve relative path for absolute paths
* @param string $path Path to modify
@@ -1273,7 +1273,7 @@ function get_relative_path($path, $relative = true) {
}
return $path;
}
-
+
/**
* Retrieve plugin's base directory
* @uses WP_PLUGIN_DIR
@@ -1288,7 +1288,7 @@ function get_plugin_base() {
}
return $ret;
}
-
+
/**
* Retrieve plugin's base file path
* @uses get_path_base()
@@ -1321,7 +1321,7 @@ function get_plugin_base_file() {
// Return
return $ret;
}
-
+
/**
* Retrieve plugin's internal name
* Internal name is used by WP core
@@ -1336,13 +1336,13 @@ function get_plugin_base_name() {
}
return $ret;
}
-
+
private function set_plugin_info($data) {
if ( is_array($data) ) {
$this->_plugin['data'] = $data;
}
}
-
+
/**
* Retrieve plugin info
* Parses info comment in main plugin file
@@ -1353,7 +1353,7 @@ function get_plugin_info($field = null) {
$ret = $this->_plugin['data'];
// Get plugin data
if ( empty($ret) ) {
- $this->get_plugin_base_file();
+ $this->get_plugin_base_file();
$ret = $this->_plugin['data'];
}
// Return specified field
@@ -1362,7 +1362,7 @@ function get_plugin_info($field = null) {
}
return $ret;
}
-
+
/**
* Retrieve plugin version
* @uses get_plugin_info()
@@ -1380,7 +1380,7 @@ function get_plugin_version($strip_desc = true) {
// Return
return $ret;
}
-
+
/**
* Retrieve current post type based on URL query variables
* @return string|null Current post type
@@ -1395,7 +1395,7 @@ public function get_post_type() {
}
return $pt;
}
-
+
/**
* Retrieve current action based on URL query variables
* @param mixed $default (optional) Default action if no action exists
@@ -1403,7 +1403,7 @@ public function get_post_type() {
*/
function get_action($default = null) {
$action = '';
-
+
// Check if action is set in URL
if ( isset($_GET['action']) )
$action = $_GET['action'];
@@ -1419,7 +1419,7 @@ function get_action($default = null) {
'edit' => array('edit', 'edit-pages')
);
$page = basename($_SERVER['SCRIPT_NAME'], '.php');
-
+
foreach ( $actions as $act => $pages ) {
if ( in_array($page, $pages) ) {
$action = $act;
@@ -1431,13 +1431,13 @@ function get_action($default = null) {
$action = $default;
return $action;
}
-
+
/*-** General **-*/
-
+
/**
* Checks if a property exists in a class or object
* Compatibility method for PHP 4
- * @param mixed $class Class or object to check
+ * @param mixed $class Class or object to check
* @param string $property Name of property to look for in $class
*/
function property_exists($class, $property) {
@@ -1449,7 +1449,7 @@ function property_exists($class, $property) {
return array_key_exists($property, $class);
}
}
-
+
/**
* Retrieve specified property from object or array
* @param object|array $obj Object or array to get property from
@@ -1471,7 +1471,7 @@ function &get_property(&$obj, $property) {
return $cvars[$property];
}
}
-
+
/**
* Remap array members based on a
* mapping of source/destination keys
@@ -1503,7 +1503,7 @@ function array_remap($arr, $map = array(), $overwrite = false) {
// Return remapped properties
return $arr;
}
-
+
function array_filter_keys($arr, $keys) {
if ( is_array($arr) && !empty($arr) && is_array($keys) && !empty($keys) ) {
foreach ( $keys as $rem ) {
@@ -1514,10 +1514,10 @@ function array_filter_keys($arr, $keys) {
return $arr;
}
-
+
/**
* Insert an item into an array at the specified position
- * @param mixed $item Item to insert into array
+ * @param mixed $item Item to insert into array
* @param int $pos Index position to insert item into array
* @return array Modified array
*/
@@ -1525,7 +1525,7 @@ function array_insert($array, $item, $pos = null) {
array_splice($array, $pos, 0, $item);
return $array;
}
-
+
/**
* Merges 1 or more arrays together
* Methodology
@@ -1575,10 +1575,10 @@ function array_merge_recursive_distinct($arr1) {
}
return $merged;
}
-
+
/**
* Replaces string value in one array with the value of the matching element in a another array
- *
+ *
* @param string $search Text to search for in array
* @param array $arr_replace Array to use for replacing values
* @param array $arr_subject Array to search for specified value
@@ -1596,10 +1596,10 @@ function array_replace_recursive($search, $arr_replace, $arr_subject) {
if (is_array($val) && is_array($arr_replace[$key]))
$arr_subject[$key] = $this->array_replace_recursive($search, $arr_replace[$key], $val);
}
-
+
return $arr_subject;
}
-
+
/**
* Checks if item at specified path in array is set
* @param array $arr Array to check for item
@@ -1610,7 +1610,7 @@ function array_item_isset(&$arr, &$path) {
$f_path = $this->get_array_path($path);
return eval('return isset($arr' . $f_path . ');');
}
-
+
/**
* Build formatted string based on array values
* Array values in formatted string will be ordered by index order
@@ -1653,7 +1653,7 @@ function get_array_path($attribute = '', $format = null) {
}
return $fmtd;
}
-
+
/**
* Builds array of path elements based on arguments
* Each item in path array represents a deeper level in structure path is for (object, array, filesystem, etc.)
@@ -1663,12 +1663,12 @@ function get_array_path($attribute = '', $format = null) {
function build_path() {
$path = array();
$args = func_get_args();
-
+
// Iterate through parameters and build path
foreach ( $args as $arg ) {
if ( empty($arg) )
continue;
-
+
if (is_array($arg)) {
// Recurse through array items to pull out any more arrays
foreach ($arg as $key => $val) {
@@ -1679,10 +1679,10 @@ function build_path() {
$path[] = $arg;
}
}
-
+
return $path;
}
-
+
/**
* Build generic element
* @param array $args
@@ -1703,23 +1703,23 @@ public function build_element($args = array()) {
);
$args = wp_parse_args($args, $args_default);
$args['format'] = wp_parse_args($args['format'], $format_default);
-
+
// Validate
if ( !is_string($args['tag']) || empty($args['tag']) ) {
return $ret;
}
-
+
$args = (object) $args;
-
+
$args->attributes = $this->build_attribute_string($args->attributes);
if ( strlen($args->attributes) > 0 ) {
$args->attributes = ' ' . $args->attributes;
}
-
+
// Build output
$args->format = (object) $args->format;
$ret = sprintf( $args->format->open, $args->tag . $args->attributes);
-
+
// Wrap content if necessary
if ( $args->wrap || ( is_string($args->content) && !empty($args->content) ) ) {
$ret .= $args->content . sprintf( $args->format->close, $args->tag);
@@ -1727,7 +1727,7 @@ public function build_element($args = array()) {
return $ret;
}
-
+
/**
* Parse string of attributes into array
* For XML/XHTML tag attributes
@@ -1755,7 +1755,7 @@ function parse_attribute_string($txt, $defaults = array()) {
return array_merge($defaults, $attr);
}
-
+
/**
* Builds attribute string for HTML element
* @param array $attr Attributes
@@ -1776,8 +1776,8 @@ function build_attribute_string($attr) {
}
return $ret;
}
-
- /* HTML */
+
+ /* HTML */
/**
* Generate HTML element based on values
@@ -1798,7 +1798,7 @@ public function build_html_element($args) {
// Build element
return $this->build_element($args);
}
-
+
/**
* Build HTML link element
* @uses build_html_element() to build link output
@@ -1811,7 +1811,7 @@ function build_html_link($uri, $content, $attributes = array()) {
$attributes = array_merge(array('href' => $uri, 'title' => $content), $attributes);
return $this->build_html_element(array('tag' => 'a', 'wrap' => true, 'content' => $content, 'attributes' => $attributes));
}
-
+
/**
* Generate external stylesheet element
* @param $url Stylesheet URL
@@ -1821,10 +1821,10 @@ function build_stylesheet_element($url) {
$attributes = array('href' => $url, 'type' => 'text/css', 'rel' => 'stylesheet');
return $this->build_html_element(array('tag' => 'link', 'wrap' => false, 'attributes' => $attributes));
}
-
+
/**
* Build client-side script element
- *
+ *
* @param string $content Script content
* @param string $id (optional) Element ID
* @param bool $wrap_jquery (optional) Wrap commands in jQuery? (Default: Yes)
@@ -1844,14 +1844,14 @@ function build_script_element($content = '', $id = '', $wrap_jquery = true, $wai
if ( $wrap_jquery ) {
$start[] = 'if ( !!window.jQuery ) {(function($){';
$end[] = '})(jQuery);}';
-
+
// Add event handler (if necessary)
if ( $wait_doc_ready ) {
$start[] = '$(document).ready(function(){';
$end[] = '})';
}
}
-
+
// Reverse order of end values
$end = array_reverse($end);
$content = implode('', array_merge($start, array($content), $end));
diff --git a/main.php b/main.php
index ca20a9d..bbb8108 100644
--- a/main.php
+++ b/main.php
@@ -1,22 +1,22 @@
- * @copyright 2018 Archetyped
- */
-
-/*
-Plugin Name: Simple Lightbox
-Plugin URI: http://archetyped.com/tools/simple-lightbox/
-Description: The highly customizable lightbox for WordPress
-Version: 2.7.1
-Text Domain: simple-lightbox
-Domain Path: /l10n
-Author: Archetyped
-Author URI: http://archetyped.com
-Support URI: https://github.com/archetyped/simple-lightbox/wiki/Feedback-&-Support
+ * @copyright 2019 Archetyped
+ *
+ * Plugin Name: Simple Lightbox
+ * Plugin URI: http://archetyped.com/tools/simple-lightbox/
+ * Description: The highly customizable lightbox for WordPress
+ * Version: 2.8.0
+ * Requires at least: 5.3
+ * Requires PHP: 7.2
+ * Text Domain: simple-lightbox
+ * Domain Path: /l10n
+ * Author: Archetyped
+ * Author URI: http://archetyped.com
+ * Support URI: https://github.com/archetyped/simple-lightbox/wiki/Feedback-&-Support
*/
require_once dirname( __FILE__ ) . '/includes/class-requirements-check.php';
diff --git a/package-lock.json b/package-lock.json
index c9d0645..36e6fdf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,15 +1,33 @@
{
"name": "simple-lightbox",
- "version": "2.7.1",
+ "version": "2.8.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@types/minimatch": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
+ "dev": true
+ },
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
+ "ajv": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
@@ -23,10 +41,13 @@
"dev": true
},
"ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
},
"aproba": {
"version": "1.2.0",
@@ -35,13 +56,13 @@
"dev": true
},
"are-we-there-yet": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
- "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"dev": true,
"requires": {
- "delegates": "1.0.0",
- "readable-stream": "2.3.6"
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
},
"dependencies": {
"isarray": {
@@ -56,22 +77,28 @@
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "2.0.0",
- "safe-buffer": "5.1.2",
- "string_decoder": "1.1.1",
- "util-deprecate": "1.0.2"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "~5.1.0"
}
}
}
@@ -82,13 +109,21 @@
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
- "sprintf-js": "1.0.3"
+ "sprintf-js": "~1.0.2"
+ },
+ "dependencies": {
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ }
}
},
"array-differ": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
- "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
+ "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
"dev": true
},
"array-find-index": {
@@ -98,36 +133,30 @@
"dev": true
},
"array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
- "dev": true,
- "requires": {
- "array-uniq": "1.0.3"
- }
- },
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
"dev": true
},
"arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
"dev": true
},
"asn1": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
- "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
- "dev": true
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
},
"assert-plus": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
- "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
"async": {
@@ -149,15 +178,15 @@
"dev": true
},
"aws-sign2": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
- "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
"dev": true
},
"aws4": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
- "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
"dev": true
},
"balanced-match": {
@@ -167,13 +196,12 @@
"dev": true
},
"bcrypt-pbkdf": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
- "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
- "optional": true,
"requires": {
- "tweetnacl": "0.14.5"
+ "tweetnacl": "^0.14.3"
}
},
"beeper": {
@@ -188,48 +216,19 @@
"integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
"dev": true,
"requires": {
- "inherits": "2.0.3"
- }
- },
- "body-parser": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz",
- "integrity": "sha1-EBXLH+LEQ4WCWVgdtTMy+NDPUPk=",
- "dev": true,
- "requires": {
- "bytes": "2.2.0",
- "content-type": "1.0.4",
- "debug": "2.2.0",
- "depd": "1.1.2",
- "http-errors": "1.3.1",
- "iconv-lite": "0.4.13",
- "on-finished": "2.3.0",
- "qs": "5.2.0",
- "raw-body": "2.1.7",
- "type-is": "1.6.16"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.4.13",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
- "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=",
- "dev": true
- },
- "qs": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz",
- "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=",
- "dev": true
- }
+ "inherits": "~2.0.0"
}
},
- "boom": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
- "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+ "body": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz",
+ "integrity": "sha1-5LoM5BCkaTYyM2dgnstOZVMSUGk=",
"dev": true,
"requires": {
- "hoek": "2.16.3"
+ "continuable-cache": "^0.3.1",
+ "error": "^7.0.0",
+ "raw-body": "~1.1.0",
+ "safe-json-parse": "~1.0.1"
}
},
"brace-expansion": {
@@ -238,35 +237,14 @@
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
- "balanced-match": "1.0.0",
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
- "browserify-zlib": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
- "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
- "dev": true,
- "requires": {
- "pako": "0.2.9"
- }
- },
- "buffer-from": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz",
- "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==",
- "dev": true
- },
- "builtin-modules": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
- "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
- "dev": true
- },
"bytes": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz",
- "integrity": "sha1-/TVGSkA/b5EXwt42Cez/nK4ABYg=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz",
+ "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=",
"dev": true
},
"cache-swap": {
@@ -275,21 +253,10 @@
"integrity": "sha1-HFQaoQilAQb2ML3Zj+HeyLoTP1E=",
"dev": true,
"requires": {
- "graceful-fs": "4.1.11",
- "mkdirp": "0.5.1",
- "object-assign": "4.1.1",
- "rimraf": "2.6.2"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
- "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
- "dev": true,
- "requires": {
- "glob": "7.0.6"
- }
- }
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.1",
+ "object-assign": "^4.0.1",
+ "rimraf": "^2.4.0"
}
},
"camelcase": {
@@ -304,27 +271,25 @@
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
"requires": {
- "camelcase": "2.1.1",
- "map-obj": "1.0.1"
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
}
},
"caseless": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
- "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
"chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
}
},
"cli": {
@@ -334,21 +299,21 @@
"dev": true,
"requires": {
"exit": "0.1.2",
- "glob": "7.1.2"
+ "glob": "^7.1.1"
},
"dependencies": {
"glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"dev": true,
"requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
}
}
@@ -359,9 +324,9 @@
"integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
"dev": true,
"requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wrap-ansi": "2.1.0"
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
}
},
"code-point-at": {
@@ -376,6 +341,21 @@
"integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=",
"dev": true
},
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
"colors": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
@@ -383,18 +363,18 @@
"dev": true
},
"combined-stream": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
- "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"requires": {
- "delayed-stream": "1.0.0"
+ "delayed-stream": "~1.0.0"
}
},
"commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
"dev": true
},
"concat-map": {
@@ -403,57 +383,13 @@
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "requires": {
- "buffer-from": "1.0.0",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "typedarray": "0.0.6"
- },
- "dependencies": {
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "dev": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "2.0.0",
- "safe-buffer": "5.1.2",
- "string_decoder": "1.1.1",
- "util-deprecate": "1.0.2"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "5.1.2"
- }
- }
- }
- },
"console-browserify": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
"integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
"dev": true,
"requires": {
- "date-now": "0.1.4"
+ "date-now": "^0.1.4"
}
},
"console-control-strings": {
@@ -462,10 +398,10 @@
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
"dev": true
},
- "content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+ "continuable-cache": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz",
+ "integrity": "sha1-vXJ6f67XfnH/OYWskzUakSczrQ8=",
"dev": true
},
"core-util-is": {
@@ -480,38 +416,29 @@
"integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
"dev": true,
"requires": {
- "lru-cache": "4.1.2",
- "which": "1.2.14"
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
},
"dependencies": {
"lru-cache": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.2.tgz",
- "integrity": "sha512-wgeVXhrDwAWnIF/yZARsFnMBtdFXOg1b8RIrhilp+0iDYN4mdQcNZElDZ0e4B64BhaxeQ5zN7PMyvu7we1kPeQ==",
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
"dev": true,
"requires": {
- "pseudomap": "1.0.2",
- "yallist": "2.1.2"
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
}
}
}
},
- "cryptiles": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
- "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
- "dev": true,
- "requires": {
- "boom": "2.10.1"
- }
- },
"currently-unhandled": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
"integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
"dev": true,
"requires": {
- "array-find-index": "1.0.2"
+ "array-find-index": "^1.0.1"
}
},
"dashdash": {
@@ -520,15 +447,7 @@
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"dev": true,
"requires": {
- "assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
+ "assert-plus": "^1.0.0"
}
},
"date-now": {
@@ -543,7 +462,7 @@
"integrity": "sha1-GIdtC9pMGf5w3Tv0sDTygbEqQLY=",
"dev": true,
"requires": {
- "time-zone": "0.1.0"
+ "time-zone": "^0.1.0"
}
},
"dateformat": {
@@ -552,17 +471,17 @@
"integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
"dev": true,
"requires": {
- "get-stdin": "4.0.1",
- "meow": "3.7.0"
+ "get-stdin": "^4.0.1",
+ "meow": "^3.3.0"
}
},
"debug": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
- "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
"dev": true,
"requires": {
- "ms": "0.7.1"
+ "ms": "^2.1.1"
}
},
"decamelize": {
@@ -583,40 +502,34 @@
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
"dev": true
},
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "dev": true
- },
"dom-serializer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
- "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz",
+ "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==",
"dev": true,
"requires": {
- "domelementtype": "1.1.3",
- "entities": "1.1.1"
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
},
"dependencies": {
"domelementtype": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
- "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
+ "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
"dev": true
},
"entities": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
- "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
+ "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
"dev": true
}
}
},
"domelementtype": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
- "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
"dev": true
},
"domhandler": {
@@ -625,7 +538,7 @@
"integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
"dev": true,
"requires": {
- "domelementtype": "1.3.0"
+ "domelementtype": "1"
}
},
"domutils": {
@@ -634,49 +547,49 @@
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
"dev": true,
"requires": {
- "dom-serializer": "0.1.0",
- "domelementtype": "1.3.0"
+ "dom-serializer": "0",
+ "domelementtype": "1"
}
},
- "each-async": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz",
- "integrity": "sha1-3uUim98KtrogEqOV4bhpq/iBNHM=",
- "dev": true,
- "requires": {
- "onetime": "1.1.0",
- "set-immediate-shim": "1.0.1"
- }
+ "duplexer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
+ "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=",
+ "dev": true
},
"ecc-jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
- "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
- "optional": true,
"requires": {
- "jsbn": "0.1.1"
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
}
},
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
- "dev": true
- },
"entities": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
"integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=",
"dev": true
},
+ "error": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/error/-/error-7.0.2.tgz",
+ "integrity": "sha1-pfdf/02ZJhJt2sDqXcOOaJFTywI=",
+ "dev": true,
+ "requires": {
+ "string-template": "~0.2.1",
+ "xtend": "~4.0.0"
+ }
+ },
"error-ex": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
- "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"requires": {
- "is-arrayish": "0.2.1"
+ "is-arrayish": "^0.2.1"
}
},
"escape-string-regexp": {
@@ -686,9 +599,9 @@
"dev": true
},
"esprima": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
- "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true
},
"eventemitter2": {
@@ -704,9 +617,9 @@
"dev": true
},
"extend": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
- "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"extsprintf": {
@@ -715,13 +628,25 @@
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
"dev": true
},
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
"faye-websocket": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
"integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
"dev": true,
"requires": {
- "websocket-driver": "0.7.0"
+ "websocket-driver": ">=0.5.1"
}
},
"figures": {
@@ -730,8 +655,8 @@
"integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
"dev": true,
"requires": {
- "escape-string-regexp": "1.0.5",
- "object-assign": "4.1.1"
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
}
},
"find-up": {
@@ -740,8 +665,8 @@
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
- "path-exists": "2.1.0",
- "pinkie-promise": "2.0.1"
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
}
},
"findup-sync": {
@@ -750,7 +675,7 @@
"integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
"dev": true,
"requires": {
- "glob": "5.0.15"
+ "glob": "~5.0.0"
},
"dependencies": {
"glob": {
@@ -759,11 +684,11 @@
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
"requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
}
}
@@ -775,14 +700,14 @@
"dev": true
},
"form-data": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
- "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
- "asynckit": "0.4.0",
- "combined-stream": "1.0.6",
- "mime-types": "2.1.18"
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
}
},
"fs.realpath": {
@@ -792,15 +717,15 @@
"dev": true
},
"fstream": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
- "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"dev": true,
"requires": {
- "graceful-fs": "4.1.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.2.8"
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
}
},
"gauge": {
@@ -809,44 +734,29 @@
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"dev": true,
"requires": {
- "aproba": "1.2.0",
- "console-control-strings": "1.1.0",
- "has-unicode": "2.0.1",
- "object-assign": "4.1.1",
- "signal-exit": "3.0.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wide-align": "1.1.2"
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
}
},
"gaze": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz",
- "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=",
- "dev": true,
- "requires": {
- "globule": "1.2.0"
- }
- },
- "generate-function": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
- "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
- "dev": true
- },
- "generate-object-property": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
- "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"dev": true,
"requires": {
- "is-property": "1.0.2"
+ "globule": "^1.0.0"
}
},
"get-caller-file": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
- "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
"dev": true
},
"get-stdin": {
@@ -867,15 +777,7 @@
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
- "assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
+ "assert-plus": "^1.0.0"
}
},
"glob": {
@@ -884,69 +786,70 @@
"integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
"dev": true,
"requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.2",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
},
"globule": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz",
- "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
+ "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
"dev": true,
"requires": {
- "glob": "7.1.2",
- "lodash": "4.17.10",
- "minimatch": "3.0.4"
+ "glob": "~7.1.1",
+ "lodash": "~4.17.10",
+ "minimatch": "~3.0.2"
},
"dependencies": {
"glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"dev": true,
"requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
}
}
},
"graceful-fs": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz",
+ "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==",
"dev": true
},
"grunt": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.2.tgz",
- "integrity": "sha1-TmpeaVtwRy/VME9fqeNCNoNqc7w=",
- "dev": true,
- "requires": {
- "coffeescript": "1.10.0",
- "dateformat": "1.0.12",
- "eventemitter2": "0.4.14",
- "exit": "0.1.2",
- "findup-sync": "0.3.0",
- "glob": "7.0.6",
- "grunt-cli": "1.2.0",
- "grunt-known-options": "1.1.0",
- "grunt-legacy-log": "1.0.2",
- "grunt-legacy-util": "1.0.0",
- "iconv-lite": "0.4.21",
- "js-yaml": "3.5.5",
- "minimatch": "3.0.4",
- "nopt": "3.0.6",
- "path-is-absolute": "1.0.1",
- "rimraf": "2.2.8"
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.4.tgz",
+ "integrity": "sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ==",
+ "dev": true,
+ "requires": {
+ "coffeescript": "~1.10.0",
+ "dateformat": "~1.0.12",
+ "eventemitter2": "~0.4.13",
+ "exit": "~0.1.1",
+ "findup-sync": "~0.3.0",
+ "glob": "~7.0.0",
+ "grunt-cli": "~1.2.0",
+ "grunt-known-options": "~1.1.0",
+ "grunt-legacy-log": "~2.0.0",
+ "grunt-legacy-util": "~1.1.1",
+ "iconv-lite": "~0.4.13",
+ "js-yaml": "~3.13.0",
+ "minimatch": "~3.0.2",
+ "mkdirp": "~0.5.1",
+ "nopt": "~3.0.6",
+ "path-is-absolute": "~1.0.0",
+ "rimraf": "~2.6.2"
},
"dependencies": {
"grunt-cli": {
@@ -955,106 +858,107 @@
"integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=",
"dev": true,
"requires": {
- "findup-sync": "0.3.0",
- "grunt-known-options": "1.1.0",
- "nopt": "3.0.6",
- "resolve": "1.1.7"
+ "findup-sync": "~0.3.0",
+ "grunt-known-options": "~1.1.0",
+ "nopt": "~3.0.6",
+ "resolve": "~1.1.0"
}
+ },
+ "resolve": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
+ "dev": true
}
}
},
"grunt-contrib-jshint": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-1.1.0.tgz",
- "integrity": "sha1-Np2QmyWTxA6L55lAshNAhQx5Oaw=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-2.1.0.tgz",
+ "integrity": "sha512-65S2/C/6RfjY/umTxfwXXn+wVvaYmykHkHSsW6Q6rhkbv3oudTEgqnFFZvWzWCoHUb+3GMZLbP3oSrNyvshmIQ==",
"dev": true,
"requires": {
- "chalk": "1.1.3",
- "hooker": "0.2.3",
- "jshint": "2.9.5"
+ "chalk": "^2.4.2",
+ "hooker": "^0.2.3",
+ "jshint": "~2.10.2"
}
},
"grunt-contrib-uglify": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-3.3.0.tgz",
- "integrity": "sha512-W9O7lJE3PlD8VCc5fyaf98QV7f5wEDiU4PBIh0+/6UBbk2LhgzEFS0/p+taH5UD3+PlEn7QPN0o06Z0To6SqXw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-4.0.1.tgz",
+ "integrity": "sha512-dwf8/+4uW1+7pH72WButOEnzErPGmtUvc8p08B0eQS/6ON0WdeQu0+WFeafaPTbbY1GqtS25lsHWaDeiTQNWPg==",
"dev": true,
"requires": {
- "chalk": "1.1.3",
- "maxmin": "1.1.0",
- "uglify-js": "3.3.22",
- "uri-path": "1.0.0"
+ "chalk": "^2.4.1",
+ "maxmin": "^2.1.0",
+ "uglify-js": "^3.5.0",
+ "uri-path": "^1.0.0"
}
},
"grunt-contrib-watch": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.1.tgz",
- "integrity": "sha512-8Zka/svGl6+ZwF7d6z/CfXwsb4cDODnajmZsY4nUAs9Ob0kJEcsLiDf5qm2HdDoEcm3NHjWCrFiWx+PZ2y4D7A==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.1.0.tgz",
+ "integrity": "sha512-yGweN+0DW5yM+oo58fRu/XIRrPcn3r4tQx+nL7eMRwjpvk+rQY6R8o94BPK0i2UhTg9FN21hS+m8vR8v9vXfeg==",
"dev": true,
"requires": {
- "async": "1.5.2",
- "gaze": "1.1.2",
- "lodash": "4.17.10",
- "tiny-lr": "0.2.1"
+ "async": "^2.6.0",
+ "gaze": "^1.1.0",
+ "lodash": "^4.17.10",
+ "tiny-lr": "^1.1.1"
+ },
+ "dependencies": {
+ "async": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+ "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ }
}
},
"grunt-known-options": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz",
- "integrity": "sha1-pCdO6zL6dl2lp6OxcSYXzjsUQUk=",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz",
+ "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==",
"dev": true
},
"grunt-legacy-log": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-1.0.2.tgz",
- "integrity": "sha512-WdedTJ/6zCXnI/coaouzqvkI19uwqbcPkdsXiDRKJyB5rOUlOxnCnTVbpeUdEckKVir2uHF3rDBYppj2p6N3+g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz",
+ "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==",
"dev": true,
"requires": {
- "colors": "1.1.2",
- "grunt-legacy-log-utils": "1.0.0",
- "hooker": "0.2.3",
- "lodash": "4.17.10"
+ "colors": "~1.1.2",
+ "grunt-legacy-log-utils": "~2.0.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.5"
}
},
"grunt-legacy-log-utils": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-1.0.0.tgz",
- "integrity": "sha1-p7ji0Ps1taUPSvmG/BEnSevJbz0=",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz",
+ "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==",
"dev": true,
"requires": {
- "chalk": "1.1.3",
- "lodash": "4.3.0"
- },
- "dependencies": {
- "lodash": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz",
- "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=",
- "dev": true
- }
+ "chalk": "~2.4.1",
+ "lodash": "~4.17.10"
}
},
"grunt-legacy-util": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.0.0.tgz",
- "integrity": "sha1-OGqnjcbtUJhsKxiVcmWxtIq7m4Y=",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz",
+ "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==",
"dev": true,
"requires": {
- "async": "1.5.2",
- "exit": "0.1.2",
- "getobject": "0.1.0",
- "hooker": "0.2.3",
- "lodash": "4.3.0",
- "underscore.string": "3.2.3",
- "which": "1.2.14"
- },
- "dependencies": {
- "lodash": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.3.0.tgz",
- "integrity": "sha1-79nEpuxT87BUEkKZFcPkgk5NJaQ=",
- "dev": true
- }
+ "async": "~1.5.2",
+ "exit": "~0.1.1",
+ "getobject": "~0.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~4.17.10",
+ "underscore.string": "~3.3.4",
+ "which": "~1.3.0"
}
},
"grunt-phplint": {
@@ -1063,8 +967,8 @@
"integrity": "sha1-bb4uauxTqiKc+sCtmnyZ4kGEhI0=",
"dev": true,
"requires": {
- "cache-swap": "0.3.0",
- "grunt": "0.4.5"
+ "cache-swap": "~0.3.0",
+ "grunt": "~0.4.1"
},
"dependencies": {
"argparse": {
@@ -1073,8 +977,8 @@
"integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=",
"dev": true,
"requires": {
- "underscore": "1.7.0",
- "underscore.string": "2.4.0"
+ "underscore": "~1.7.0",
+ "underscore.string": "~2.4.0"
},
"dependencies": {
"underscore.string": {
@@ -1121,8 +1025,8 @@
"integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=",
"dev": true,
"requires": {
- "glob": "3.2.11",
- "lodash": "2.4.2"
+ "glob": "~3.2.9",
+ "lodash": "~2.4.1"
},
"dependencies": {
"glob": {
@@ -1131,8 +1035,8 @@
"integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
"dev": true,
"requires": {
- "inherits": "2.0.3",
- "minimatch": "0.3.0"
+ "inherits": "2",
+ "minimatch": "0.3"
}
},
"lodash": {
@@ -1147,8 +1051,8 @@
"integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
"dev": true,
"requires": {
- "lru-cache": "2.7.3",
- "sigmund": "1.0.1"
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
}
}
}
@@ -1159,9 +1063,9 @@
"integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
"dev": true,
"requires": {
- "graceful-fs": "1.2.3",
- "inherits": "1.0.2",
- "minimatch": "0.2.14"
+ "graceful-fs": "~1.2.0",
+ "inherits": "1",
+ "minimatch": "~0.2.11"
},
"dependencies": {
"inherits": {
@@ -1184,26 +1088,26 @@
"integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=",
"dev": true,
"requires": {
- "async": "0.1.22",
- "coffee-script": "1.3.3",
- "colors": "0.6.2",
+ "async": "~0.1.22",
+ "coffee-script": "~1.3.3",
+ "colors": "~0.6.2",
"dateformat": "1.0.2-1.2.3",
- "eventemitter2": "0.4.14",
- "exit": "0.1.2",
- "findup-sync": "0.1.3",
- "getobject": "0.1.0",
- "glob": "3.1.21",
- "grunt-legacy-log": "0.1.3",
- "grunt-legacy-util": "0.2.0",
- "hooker": "0.2.3",
- "iconv-lite": "0.2.11",
- "js-yaml": "2.0.5",
- "lodash": "0.9.2",
- "minimatch": "0.2.14",
- "nopt": "1.0.10",
- "rimraf": "2.2.8",
- "underscore.string": "2.2.1",
- "which": "1.0.9"
+ "eventemitter2": "~0.4.13",
+ "exit": "~0.1.1",
+ "findup-sync": "~0.1.2",
+ "getobject": "~0.1.0",
+ "glob": "~3.1.21",
+ "grunt-legacy-log": "~0.1.0",
+ "grunt-legacy-util": "~0.2.0",
+ "hooker": "~0.2.3",
+ "iconv-lite": "~0.2.11",
+ "js-yaml": "~2.0.5",
+ "lodash": "~0.9.2",
+ "minimatch": "~0.2.12",
+ "nopt": "~1.0.10",
+ "rimraf": "~2.2.8",
+ "underscore.string": "~2.2.1",
+ "which": "~1.0.5"
}
},
"grunt-legacy-log": {
@@ -1212,11 +1116,11 @@
"integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=",
"dev": true,
"requires": {
- "colors": "0.6.2",
- "grunt-legacy-log-utils": "0.1.1",
- "hooker": "0.2.3",
- "lodash": "2.4.2",
- "underscore.string": "2.3.3"
+ "colors": "~0.6.2",
+ "grunt-legacy-log-utils": "~0.1.1",
+ "hooker": "~0.2.3",
+ "lodash": "~2.4.1",
+ "underscore.string": "~2.3.3"
},
"dependencies": {
"lodash": {
@@ -1239,9 +1143,9 @@
"integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=",
"dev": true,
"requires": {
- "colors": "0.6.2",
- "lodash": "2.4.2",
- "underscore.string": "2.3.3"
+ "colors": "~0.6.2",
+ "lodash": "~2.4.1",
+ "underscore.string": "~2.3.3"
},
"dependencies": {
"lodash": {
@@ -1264,13 +1168,13 @@
"integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=",
"dev": true,
"requires": {
- "async": "0.1.22",
- "exit": "0.1.2",
- "getobject": "0.1.0",
- "hooker": "0.2.3",
- "lodash": "0.9.2",
- "underscore.string": "2.2.1",
- "which": "1.0.9"
+ "async": "~0.1.22",
+ "exit": "~0.1.1",
+ "getobject": "~0.1.0",
+ "hooker": "~0.2.3",
+ "lodash": "~0.9.2",
+ "underscore.string": "~2.2.1",
+ "which": "~1.0.5"
}
},
"iconv-lite": {
@@ -1285,8 +1189,8 @@
"integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=",
"dev": true,
"requires": {
- "argparse": "0.1.16",
- "esprima": "1.0.4"
+ "argparse": "~ 0.1.11",
+ "esprima": "~ 1.0.2"
}
},
"lodash": {
@@ -1301,8 +1205,8 @@
"integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
"dev": true,
"requires": {
- "lru-cache": "2.7.3",
- "sigmund": "1.0.1"
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
}
},
"nopt": {
@@ -1311,9 +1215,15 @@
"integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
"dev": true,
"requires": {
- "abbrev": "1.1.1"
+ "abbrev": "1"
}
},
+ "rimraf": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+ "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
+ "dev": true
+ },
"underscore.string": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz",
@@ -1329,36 +1239,34 @@
}
},
"grunt-sass": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/grunt-sass/-/grunt-sass-2.1.0.tgz",
- "integrity": "sha512-XkexnQt/9rhReNd+Y7T0n/2g5FqYOQKfi2iSlpwDqvgs7EgEaGTxNhnWzHnbW5oNRvzL9AHopBG3AgRxL0d+DA==",
- "dev": true,
- "requires": {
- "each-async": "1.1.1",
- "node-sass": "4.9.0",
- "object-assign": "4.1.1"
- }
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/grunt-sass/-/grunt-sass-3.0.2.tgz",
+ "integrity": "sha512-Ogq4cWqBre71gZIkgxIxevgzZHSIIsrKu/5yvPDl4Mvib0A4TRTJEQUdpQ0YV1iai0DPjayz02vDJE6KUVHQ2w==",
+ "dev": true
},
"gzip-size": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-1.0.0.tgz",
- "integrity": "sha1-Zs+LEBBHInuVus5uodoMF37Vwi8=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz",
+ "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=",
"dev": true,
"requires": {
- "browserify-zlib": "0.1.4",
- "concat-stream": "1.6.2"
+ "duplexer": "^0.1.1"
}
},
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+ "dev": true
+ },
"har-validator": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
- "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+ "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
"dev": true,
"requires": {
- "chalk": "1.1.3",
- "commander": "2.15.1",
- "is-my-json-valid": "2.17.2",
- "pinkie-promise": "2.0.1"
+ "ajv": "^6.5.5",
+ "har-schema": "^2.0.0"
}
},
"has-ansi": {
@@ -1367,33 +1275,21 @@
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
}
},
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
"dev": true
},
- "hawk": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
- "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
- "dev": true,
- "requires": {
- "boom": "2.10.1",
- "cryptiles": "2.0.5",
- "hoek": "2.16.3",
- "sntp": "1.0.9"
- }
- },
- "hoek": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
- "dev": true
- },
"hooker": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
@@ -1401,9 +1297,9 @@
"dev": true
},
"hosted-git-info": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
- "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
+ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
"dev": true
},
"htmlparser2": {
@@ -1412,47 +1308,37 @@
"integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
"dev": true,
"requires": {
- "domelementtype": "1.3.0",
- "domhandler": "2.3.0",
- "domutils": "1.5.1",
- "entities": "1.0.0",
- "readable-stream": "1.1.14"
- }
- },
- "http-errors": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
- "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=",
- "dev": true,
- "requires": {
- "inherits": "2.0.3",
- "statuses": "1.5.0"
+ "domelementtype": "1",
+ "domhandler": "2.3",
+ "domutils": "1.5",
+ "entities": "1.0",
+ "readable-stream": "1.1"
}
},
"http-parser-js": {
- "version": "0.4.12",
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz",
- "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=",
+ "version": "0.4.10",
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz",
+ "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
"dev": true
},
"http-signature": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
- "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"requires": {
- "assert-plus": "0.2.0",
- "jsprim": "1.4.1",
- "sshpk": "1.14.1"
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
}
},
"iconv-lite": {
- "version": "0.4.21",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz",
- "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==",
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
"requires": {
- "safer-buffer": "2.1.2"
+ "safer-buffer": ">= 2.1.2 < 3"
}
},
"in-publish": {
@@ -1467,7 +1353,7 @@
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
"dev": true,
"requires": {
- "repeating": "2.0.1"
+ "repeating": "^2.0.0"
}
},
"inflight": {
@@ -1476,14 +1362,14 @@
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
"inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"invert-kv": {
@@ -1504,22 +1390,13 @@
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
- "is-builtin-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
- "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
- "dev": true,
- "requires": {
- "builtin-modules": "1.1.1"
- }
- },
"is-finite": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
"dev": true,
"requires": {
- "number-is-nan": "1.0.1"
+ "number-is-nan": "^1.0.0"
}
},
"is-fullwidth-code-point": {
@@ -1528,38 +1405,13 @@
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": {
- "number-is-nan": "1.0.1"
+ "number-is-nan": "^1.0.0"
}
},
- "is-my-ip-valid": {
+ "is-typedarray": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
- "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==",
- "dev": true
- },
- "is-my-json-valid": {
- "version": "2.17.2",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz",
- "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==",
- "dev": true,
- "requires": {
- "generate-function": "2.0.0",
- "generate-object-property": "1.2.0",
- "is-my-ip-valid": "1.0.0",
- "jsonpointer": "4.0.1",
- "xtend": "4.0.1"
- }
- },
- "is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
- "dev": true
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
"is-utf8": {
@@ -1587,50 +1439,41 @@
"dev": true
},
"js-base64": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz",
- "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
+ "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==",
"dev": true
},
"js-yaml": {
- "version": "3.5.5",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz",
- "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=",
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+ "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
"dev": true,
"requires": {
- "argparse": "1.0.10",
- "esprima": "2.7.3"
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
}
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "dev": true,
- "optional": true
+ "dev": true
},
"jshint": {
- "version": "2.9.5",
- "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz",
- "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=",
+ "version": "2.10.2",
+ "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.2.tgz",
+ "integrity": "sha512-e7KZgCSXMJxznE/4WULzybCMNXNAd/bf5TSrvVEq78Q/K8ZwFpmBqQeDtNiHc3l49nV4E/+YeHU/JZjSUIrLAA==",
"dev": true,
"requires": {
- "cli": "1.0.1",
- "console-browserify": "1.1.0",
- "exit": "0.1.2",
- "htmlparser2": "3.8.3",
- "lodash": "3.7.0",
- "minimatch": "3.0.4",
- "shelljs": "0.3.0",
- "strip-json-comments": "1.0.4"
- },
- "dependencies": {
- "lodash": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz",
- "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU=",
- "dev": true
- }
+ "cli": "~1.0.0",
+ "console-browserify": "1.1.x",
+ "exit": "0.1.x",
+ "htmlparser2": "3.8.x",
+ "lodash": "~4.17.11",
+ "minimatch": "~3.0.2",
+ "shelljs": "0.3.x",
+ "strip-json-comments": "1.0.x"
}
},
"jshint-stylish": {
@@ -1639,12 +1482,39 @@
"integrity": "sha1-JCCCosA1rgP9gQROBXDMQgjPbmE=",
"dev": true,
"requires": {
- "beeper": "1.1.1",
- "chalk": "1.1.3",
- "log-symbols": "1.0.2",
- "plur": "2.1.2",
- "string-length": "1.0.1",
- "text-table": "0.2.0"
+ "beeper": "^1.1.0",
+ "chalk": "^1.0.0",
+ "log-symbols": "^1.0.0",
+ "plur": "^2.1.0",
+ "string-length": "^1.0.0",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
}
},
"json-schema": {
@@ -1653,18 +1523,18 @@
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
"dev": true
},
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true
},
- "jsonpointer": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
- "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
- "dev": true
- },
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -1675,14 +1545,6 @@
"extsprintf": "1.3.0",
"json-schema": "0.2.3",
"verror": "1.10.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
}
},
"lcid": {
@@ -1691,25 +1553,25 @@
"integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
"dev": true,
"requires": {
- "invert-kv": "1.0.0"
+ "invert-kv": "^1.0.0"
}
},
"livereload-js": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz",
- "integrity": "sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz",
+ "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==",
"dev": true
},
"load-grunt-tasks": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.5.2.tgz",
- "integrity": "sha1-ByhWEYD9IP+KaSdQWFL8WKrqDIg=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-5.1.0.tgz",
+ "integrity": "sha512-oNj0Jlka1TsfDe+9He0kcA1cRln+TMoTsEByW7ij6kyktNLxBKJtslCFEvFrLC2Dj0S19IWJh3fOCIjLby2Xrg==",
"dev": true,
"requires": {
- "arrify": "1.0.1",
- "multimatch": "2.1.0",
- "pkg-up": "1.0.0",
- "resolve-pkg": "0.1.0"
+ "arrify": "^2.0.1",
+ "multimatch": "^4.0.0",
+ "pkg-up": "^3.1.0",
+ "resolve-pkg": "^2.0.0"
}
},
"load-json-file": {
@@ -1718,35 +1580,35 @@
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
- "graceful-fs": "4.1.11",
- "parse-json": "2.2.0",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1",
- "strip-bom": "2.0.0"
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
}
},
- "lodash": {
- "version": "4.17.10",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
- "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==",
- "dev": true
- },
- "lodash.assign": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
- "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
- "dev": true
- },
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
- "dev": true
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "dependencies": {
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ }
+ }
},
- "lodash.mergewith": {
- "version": "4.6.1",
- "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz",
- "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==",
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
"dev": true
},
"log-symbols": {
@@ -1755,7 +1617,34 @@
"integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
"dev": true,
"requires": {
- "chalk": "1.1.3"
+ "chalk": "^1.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
}
},
"loud-rejection": {
@@ -1764,8 +1653,8 @@
"integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
"dev": true,
"requires": {
- "currently-unhandled": "0.4.1",
- "signal-exit": "3.0.2"
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
}
},
"lru-cache": {
@@ -1781,54 +1670,75 @@
"dev": true
},
"maxmin": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-1.1.0.tgz",
- "integrity": "sha1-cTZehKmd2Piz99X94vANHn9zvmE=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz",
+ "integrity": "sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=",
"dev": true,
"requires": {
- "chalk": "1.1.3",
- "figures": "1.7.0",
- "gzip-size": "1.0.0",
- "pretty-bytes": "1.0.4"
+ "chalk": "^1.0.0",
+ "figures": "^1.0.1",
+ "gzip-size": "^3.0.0",
+ "pretty-bytes": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
}
},
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
- "dev": true
- },
"meow": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
"requires": {
- "camelcase-keys": "2.1.0",
- "decamelize": "1.2.0",
- "loud-rejection": "1.6.0",
- "map-obj": "1.0.1",
- "minimist": "1.2.0",
- "normalize-package-data": "2.4.0",
- "object-assign": "4.1.1",
- "read-pkg-up": "1.0.1",
- "redent": "1.0.0",
- "trim-newlines": "1.0.0"
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
}
},
"mime-db": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
+ "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
"dev": true
},
"mime-types": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "version": "2.1.24",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
+ "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
"dev": true,
"requires": {
- "mime-db": "1.33.0"
+ "mime-db": "1.40.0"
}
},
"minimatch": {
@@ -1837,7 +1747,7 @@
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
- "brace-expansion": "1.1.11"
+ "brace-expansion": "^1.1.7"
}
},
"minimist": {
@@ -1864,48 +1774,48 @@
}
},
"ms": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
- "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"multimatch": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz",
- "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz",
+ "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==",
"dev": true,
"requires": {
- "array-differ": "1.0.0",
- "array-union": "1.0.2",
- "arrify": "1.0.1",
- "minimatch": "3.0.4"
+ "@types/minimatch": "^3.0.3",
+ "array-differ": "^3.0.0",
+ "array-union": "^2.1.0",
+ "arrify": "^2.0.1",
+ "minimatch": "^3.0.4"
}
},
"nan": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
- "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
"dev": true
},
"node-gyp": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
- "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=",
- "dev": true,
- "requires": {
- "fstream": "1.0.11",
- "glob": "7.0.6",
- "graceful-fs": "4.1.11",
- "minimatch": "3.0.4",
- "mkdirp": "0.5.1",
- "nopt": "3.0.6",
- "npmlog": "4.1.2",
- "osenv": "0.1.5",
- "request": "2.79.0",
- "rimraf": "2.2.8",
- "semver": "5.3.0",
- "tar": "2.2.1",
- "which": "1.2.14"
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
+ "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
+ "dev": true,
+ "requires": {
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "^2.87.0",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
},
"dependencies": {
"semver": {
@@ -1917,30 +1827,55 @@
}
},
"node-sass": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.0.tgz",
- "integrity": "sha512-QFHfrZl6lqRU3csypwviz2XLgGNOoWQbo2GOvtsfQqOfL4cy1BtWnhx/XUeAO9LT3ahBzSRXcEO6DdvAH9DzSg==",
- "dev": true,
- "requires": {
- "async-foreach": "0.1.3",
- "chalk": "1.1.3",
- "cross-spawn": "3.0.1",
- "gaze": "1.1.2",
- "get-stdin": "4.0.1",
- "glob": "7.0.6",
- "in-publish": "2.0.0",
- "lodash.assign": "4.2.0",
- "lodash.clonedeep": "4.5.0",
- "lodash.mergewith": "4.6.1",
- "meow": "3.7.0",
- "mkdirp": "0.5.1",
- "nan": "2.10.0",
- "node-gyp": "3.6.2",
- "npmlog": "4.1.2",
- "request": "2.79.0",
- "sass-graph": "2.2.4",
- "stdout-stream": "1.4.0",
- "true-case-path": "1.0.2"
+ "version": "4.12.0",
+ "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz",
+ "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==",
+ "dev": true,
+ "requires": {
+ "async-foreach": "^0.1.3",
+ "chalk": "^1.1.1",
+ "cross-spawn": "^3.0.0",
+ "gaze": "^1.0.0",
+ "get-stdin": "^4.0.1",
+ "glob": "^7.0.3",
+ "in-publish": "^2.0.0",
+ "lodash": "^4.17.11",
+ "meow": "^3.7.0",
+ "mkdirp": "^0.5.1",
+ "nan": "^2.13.2",
+ "node-gyp": "^3.8.0",
+ "npmlog": "^4.0.0",
+ "request": "^2.88.0",
+ "sass-graph": "^2.2.4",
+ "stdout-stream": "^1.4.0",
+ "true-case-path": "^1.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
}
},
"nopt": {
@@ -1949,19 +1884,19 @@
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"dev": true,
"requires": {
- "abbrev": "1.1.1"
+ "abbrev": "1"
}
},
"normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
"dev": true,
"requires": {
- "hosted-git-info": "2.6.0",
- "is-builtin-module": "1.0.0",
- "semver": "5.5.0",
- "validate-npm-package-license": "3.0.3"
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
}
},
"npmlog": {
@@ -1970,10 +1905,10 @@
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"dev": true,
"requires": {
- "are-we-there-yet": "1.1.4",
- "console-control-strings": "1.1.0",
- "gauge": "2.7.4",
- "set-blocking": "2.0.0"
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
}
},
"number-is-nan": {
@@ -1983,9 +1918,9 @@
"dev": true
},
"oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"dev": true
},
"object-assign": {
@@ -1994,30 +1929,15 @@
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
"dev": true
},
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "dev": true,
- "requires": {
- "ee-first": "1.1.1"
- }
- },
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
- "wrappy": "1.0.2"
+ "wrappy": "1"
}
},
- "onetime": {
- "version": "1.1.0",
- "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
- "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=",
- "dev": true
- },
"os-homedir": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
@@ -2030,7 +1950,7 @@
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
"dev": true,
"requires": {
- "lcid": "1.0.0"
+ "lcid": "^1.0.0"
}
},
"os-tmpdir": {
@@ -2045,14 +1965,32 @@
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"dev": true,
"requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
}
},
- "pako": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
- "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=",
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
"parse-json": {
@@ -2061,7 +1999,7 @@
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
- "error-ex": "1.3.1"
+ "error-ex": "^1.2.0"
}
},
"parse-ms": {
@@ -2070,19 +2008,13 @@
"integrity": "sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=",
"dev": true
},
- "parseurl": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
- "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
- "dev": true
- },
"path-exists": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
- "pinkie-promise": "2.0.1"
+ "pinkie-promise": "^2.0.0"
}
},
"path-is-absolute": {
@@ -2091,17 +2023,29 @@
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
"path-type": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
- "graceful-fs": "4.1.11",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
}
},
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+ "dev": true
+ },
"pify": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
@@ -2120,16 +2064,27 @@
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
- "pinkie": "2.0.4"
+ "pinkie": "^2.0.0"
}
},
"pkg-up": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
- "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz",
+ "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==",
"dev": true,
"requires": {
- "find-up": "1.1.2"
+ "find-up": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ }
}
},
"plur": {
@@ -2138,17 +2093,16 @@
"integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=",
"dev": true,
"requires": {
- "irregular-plurals": "1.4.0"
+ "irregular-plurals": "^1.0.0"
}
},
"pretty-bytes": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
- "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz",
+ "integrity": "sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=",
"dev": true,
"requires": {
- "get-stdin": "4.0.1",
- "meow": "3.7.0"
+ "number-is-nan": "^1.0.0"
}
},
"pretty-ms": {
@@ -2157,9 +2111,9 @@
"integrity": "sha1-QlfCVt8/sLRR1q/6qwIYhBJpgdw=",
"dev": true,
"requires": {
- "is-finite": "1.0.2",
- "parse-ms": "1.0.1",
- "plur": "1.0.0"
+ "is-finite": "^1.0.1",
+ "parse-ms": "^1.0.0",
+ "plur": "^1.0.0"
},
"dependencies": {
"plur": {
@@ -2171,9 +2125,9 @@
}
},
"process-nextick-args": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true
},
"pseudomap": {
@@ -2182,41 +2136,32 @@
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
+ "psl": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz",
+ "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==",
+ "dev": true
+ },
"punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"qs": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz",
- "integrity": "sha1-TZMuXH6kEcynajEtOaYGIA/VDNk=",
+ "version": "6.7.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+ "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
"dev": true
},
"raw-body": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz",
- "integrity": "sha1-rf6s4uT7MJgFgBTQjActzFl1h3Q=",
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz",
+ "integrity": "sha1-HQJ8K/oRasxmI7yo8AAWVyqH1CU=",
"dev": true,
"requires": {
- "bytes": "2.4.0",
- "iconv-lite": "0.4.13",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "bytes": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz",
- "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=",
- "dev": true
- },
- "iconv-lite": {
- "version": "0.4.13",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz",
- "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=",
- "dev": true
- }
+ "bytes": "1",
+ "string_decoder": "0.10"
}
},
"read-pkg": {
@@ -2225,9 +2170,9 @@
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
- "load-json-file": "1.1.0",
- "normalize-package-data": "2.4.0",
- "path-type": "1.1.0"
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
}
},
"read-pkg-up": {
@@ -2236,8 +2181,8 @@
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
- "find-up": "1.1.2",
- "read-pkg": "1.1.0"
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
}
},
"readable-stream": {
@@ -2246,10 +2191,10 @@
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"dev": true,
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
"isarray": "0.0.1",
- "string_decoder": "0.10.31"
+ "string_decoder": "~0.10.x"
}
},
"redent": {
@@ -2258,8 +2203,8 @@
"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
"dev": true,
"requires": {
- "indent-string": "2.1.0",
- "strip-indent": "1.0.1"
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
}
},
"repeating": {
@@ -2268,41 +2213,41 @@
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
- "is-finite": "1.0.2"
+ "is-finite": "^1.0.0"
}
},
"request": {
- "version": "2.79.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
- "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
- "dev": true,
- "requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.7.0",
- "caseless": "0.11.0",
- "combined-stream": "1.0.6",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "2.1.4",
- "har-validator": "2.0.6",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.18",
- "oauth-sign": "0.8.2",
- "qs": "6.3.2",
- "stringstream": "0.0.5",
- "tough-cookie": "2.3.4",
- "tunnel-agent": "0.4.3",
- "uuid": "3.2.1"
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+ "dev": true,
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.0",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.4.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
},
"dependencies": {
"qs": {
- "version": "6.3.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
- "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
"dev": true
}
}
@@ -2320,36 +2265,64 @@
"dev": true
},
"resolve": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
- "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
- "dev": true
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
},
"resolve-from": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz",
- "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true
},
"resolve-pkg": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-0.1.0.tgz",
- "integrity": "sha1-AsyZNBDik2livZcWahsHfalyVTE=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg/-/resolve-pkg-2.0.0.tgz",
+ "integrity": "sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ==",
"dev": true,
"requires": {
- "resolve-from": "2.0.0"
+ "resolve-from": "^5.0.0"
}
},
"rimraf": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
- "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
- "dev": true
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
},
"safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
+ "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
+ "dev": true
+ },
+ "safe-json-parse": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz",
+ "integrity": "sha1-PnZyPjjf3aE8mx0poeB//uSzC1c=",
"dev": true
},
"safer-buffer": {
@@ -2364,10 +2337,10 @@
"integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
"dev": true,
"requires": {
- "glob": "7.0.6",
- "lodash": "4.17.10",
- "scss-tokenizer": "0.2.3",
- "yargs": "7.1.0"
+ "glob": "^7.0.0",
+ "lodash": "^4.0.0",
+ "scss-tokenizer": "^0.2.3",
+ "yargs": "^7.0.0"
}
},
"scss-tokenizer": {
@@ -2376,8 +2349,8 @@
"integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
"dev": true,
"requires": {
- "js-base64": "2.4.3",
- "source-map": "0.4.4"
+ "js-base64": "^2.1.8",
+ "source-map": "^0.4.2"
},
"dependencies": {
"source-map": {
@@ -2386,15 +2359,15 @@
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"dev": true,
"requires": {
- "amdefine": "1.0.1"
+ "amdefine": ">=0.0.4"
}
}
}
},
"semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"dev": true
},
"set-blocking": {
@@ -2403,12 +2376,6 @@
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
- "set-immediate-shim": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
- "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
- "dev": true
- },
"shelljs": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
@@ -2427,15 +2394,6 @@
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
- "sntp": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
- "dev": true,
- "requires": {
- "hoek": "2.16.3"
- }
- },
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -2443,19 +2401,19 @@
"dev": true
},
"spdx-correct": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
- "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
"dev": true,
"requires": {
- "spdx-expression-parse": "3.0.0",
- "spdx-license-ids": "3.0.0"
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
}
},
"spdx-exceptions": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
- "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
"dev": true
},
"spdx-expression-parse": {
@@ -2464,59 +2422,46 @@
"integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
"dev": true,
"requires": {
- "spdx-exceptions": "2.1.0",
- "spdx-license-ids": "3.0.0"
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
}
},
"spdx-license-ids": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
- "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
"dev": true
},
"sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
"dev": true
},
"sshpk": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
- "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
"dev": true,
"requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
}
},
- "statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
- "dev": true
- },
"stdout-stream": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz",
- "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=",
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+ "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
"dev": true,
"requires": {
- "readable-stream": "2.3.6"
+ "readable-stream": "^2.0.1"
},
"dependencies": {
"isarray": {
@@ -2531,22 +2476,28 @@
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "2.0.0",
- "safe-buffer": "5.1.2",
- "string_decoder": "1.1.1",
- "util-deprecate": "1.0.2"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"requires": {
- "safe-buffer": "5.1.2"
+ "safe-buffer": "~5.1.0"
}
}
}
@@ -2557,18 +2508,24 @@
"integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=",
"dev": true,
"requires": {
- "strip-ansi": "3.0.1"
+ "strip-ansi": "^3.0.0"
}
},
+ "string-template": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz",
+ "integrity": "sha1-QpMuWYo1LQH8IuwzZ9nYTuxsmt0=",
+ "dev": true
+ },
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
}
},
"string_decoder": {
@@ -2577,19 +2534,13 @@
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
"dev": true
},
- "stringstream": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
- "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=",
- "dev": true
- },
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
}
},
"strip-bom": {
@@ -2598,7 +2549,7 @@
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
- "is-utf8": "0.2.1"
+ "is-utf8": "^0.2.0"
}
},
"strip-indent": {
@@ -2607,7 +2558,7 @@
"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
"dev": true,
"requires": {
- "get-stdin": "4.0.1"
+ "get-stdin": "^4.0.1"
}
},
"strip-json-comments": {
@@ -2617,20 +2568,23 @@
"dev": true
},
"supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
},
"tar": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
- "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
+ "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
"dev": true,
"requires": {
- "block-stream": "0.0.9",
- "fstream": "1.0.11",
- "inherits": "2.0.3"
+ "block-stream": "*",
+ "fstream": "^1.0.12",
+ "inherits": "2"
}
},
"text-table": {
@@ -2640,18 +2594,45 @@
"dev": true
},
"time-grunt": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.4.0.tgz",
- "integrity": "sha1-BiIT5mDJB+hvRAVWwB6mWXtxJCA=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-2.0.0.tgz",
+ "integrity": "sha512-iQD2AeDYCAJrsPC/eUsfYZD9UT7TuBOmUIgFV5zeTQgRk6yLJKoc3aYR0gusJ0m+bG13B6qrDZ0SwPLe0/htHw==",
"dev": true,
"requires": {
- "chalk": "1.1.3",
- "date-time": "1.1.0",
- "figures": "1.7.0",
- "hooker": "0.2.3",
- "number-is-nan": "1.0.1",
- "pretty-ms": "2.1.0",
- "text-table": "0.2.0"
+ "chalk": "^1.0.0",
+ "date-time": "^1.1.0",
+ "figures": "^1.0.0",
+ "hooker": "^0.2.3",
+ "number-is-nan": "^1.0.0",
+ "pretty-ms": "^2.1.0",
+ "text-table": "^0.2.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
+ }
}
},
"time-zone": {
@@ -2661,26 +2642,35 @@
"dev": true
},
"tiny-lr": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz",
- "integrity": "sha1-s/26gC5dVqM8L28QeUsy5Hescp0=",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz",
+ "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==",
"dev": true,
"requires": {
- "body-parser": "1.14.2",
- "debug": "2.2.0",
- "faye-websocket": "0.10.0",
- "livereload-js": "2.3.0",
- "parseurl": "1.3.2",
- "qs": "5.1.0"
+ "body": "^5.1.0",
+ "debug": "^3.1.0",
+ "faye-websocket": "~0.10.0",
+ "livereload-js": "^2.3.0",
+ "object-assign": "^4.1.0",
+ "qs": "^6.4.0"
}
},
"tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
- "punycode": "1.4.1"
+ "psl": "^1.1.24",
+ "punycode": "^1.4.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ }
}
},
"trim-newlines": {
@@ -2690,66 +2680,53 @@
"dev": true
},
"true-case-path": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.2.tgz",
- "integrity": "sha1-fskRMJJHZsf1c74wIMNPj9/QDWI=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+ "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
"dev": true,
"requires": {
- "glob": "6.0.4"
+ "glob": "^7.1.2"
},
"dependencies": {
"glob": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
"dev": true,
"requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
}
}
},
"tunnel-agent": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
- "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
- "dev": true
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "dev": true,
- "optional": true
- },
- "type-is": {
- "version": "1.6.16",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
- "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
- "dev": true,
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "2.1.18"
- }
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
"uglify-js": {
- "version": "3.3.22",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.22.tgz",
- "integrity": "sha512-tqw96rL6/BG+7LM5VItdhDjTQmL5zG/I0b2RqWytlgeHe2eydZHuBHdA9vuGpCDhH/ZskNGcqDhivoR2xt8RIw==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
+ "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
"dev": true,
"requires": {
- "commander": "2.15.1",
- "source-map": "0.6.1"
+ "commander": "~2.20.0",
+ "source-map": "~0.6.1"
}
},
"underscore": {
@@ -2759,16 +2736,23 @@
"dev": true
},
"underscore.string": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.2.3.tgz",
- "integrity": "sha1-gGmSYzZl1eX8tNsfs6hi62jp5to=",
- "dev": true
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",
+ "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "^1.0.3",
+ "util-deprecate": "^1.0.2"
+ }
},
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "dev": true
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
},
"uri-path": {
"version": "1.0.0",
@@ -2783,19 +2767,19 @@
"dev": true
},
"uuid": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
- "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+ "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
"dev": true
},
"validate-npm-package-license": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
- "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
- "spdx-correct": "3.0.0",
- "spdx-expression-parse": "3.0.0"
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
}
},
"verror": {
@@ -2804,27 +2788,20 @@
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"dev": true,
"requires": {
- "assert-plus": "1.0.0",
+ "assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
- "extsprintf": "1.3.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "dev": true
- }
+ "extsprintf": "^1.2.0"
}
},
"websocket-driver": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz",
- "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
+ "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==",
"dev": true,
"requires": {
- "http-parser-js": "0.4.12",
- "websocket-extensions": "0.1.3"
+ "http-parser-js": ">=0.4.0 <0.4.11",
+ "safe-buffer": ">=5.1.0",
+ "websocket-extensions": ">=0.1.1"
}
},
"websocket-extensions": {
@@ -2834,12 +2811,12 @@
"dev": true
},
"which": {
- "version": "1.2.14",
- "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
- "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"requires": {
- "isexe": "2.0.0"
+ "isexe": "^2.0.0"
}
},
"which-module": {
@@ -2849,12 +2826,12 @@
"dev": true
},
"wide-align": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
- "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"dev": true,
"requires": {
- "string-width": "1.0.2"
+ "string-width": "^1.0.2 || 2"
}
},
"wrap-ansi": {
@@ -2863,8 +2840,8 @@
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1"
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
}
},
"wrappy": {
@@ -2874,9 +2851,9 @@
"dev": true
},
"xtend": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true
},
"y18n": {
@@ -2897,19 +2874,19 @@
"integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=",
"dev": true,
"requires": {
- "camelcase": "3.0.0",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "get-caller-file": "1.0.2",
- "os-locale": "1.4.0",
- "read-pkg-up": "1.0.1",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "1.0.2",
- "which-module": "1.0.0",
- "y18n": "3.2.1",
- "yargs-parser": "5.0.0"
+ "camelcase": "^3.0.0",
+ "cliui": "^3.2.0",
+ "decamelize": "^1.1.1",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^1.4.0",
+ "read-pkg-up": "^1.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^1.0.2",
+ "which-module": "^1.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^5.0.0"
},
"dependencies": {
"camelcase": {
@@ -2926,7 +2903,7 @@
"integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=",
"dev": true,
"requires": {
- "camelcase": "3.0.0"
+ "camelcase": "^3.0.0"
},
"dependencies": {
"camelcase": {
diff --git a/package.json b/package.json
index 34a1ed5..1072989 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "simple-lightbox",
- "version": "2.7.1",
+ "version": "2.8.0",
"title": "Simple Lightbox",
"description": "The highly-customizable lightbox for WordPress",
"author": "Archetyped ",
@@ -8,13 +8,14 @@
"private": true,
"devDependencies": {
"grunt": "^1.0.1",
- "grunt-contrib-jshint": "^1.0.0",
- "grunt-contrib-uglify": "^3.3.0",
+ "grunt-contrib-jshint": "^2.1.0",
+ "grunt-contrib-uglify": "^4.0.1",
"grunt-contrib-watch": "^1.0.0",
"grunt-phplint": "0.1.0",
- "grunt-sass": "^2.1.0",
+ "grunt-sass": "^3.0.2",
"jshint-stylish": "^2.2.1",
- "load-grunt-tasks": "^3.5.2",
- "time-grunt": "^1.4.0"
+ "load-grunt-tasks": "^5.1.0",
+ "node-sass": "^4.12.0",
+ "time-grunt": "^2.0.0"
}
}
diff --git a/readme.txt b/readme.txt
index da409d8..ccc87d8 100644
--- a/readme.txt
+++ b/readme.txt
@@ -3,9 +3,9 @@ Contributors: Archetyped
Donate link: http://gum.co/slb-donate
License: GPLv2
Tags: lightbox, gallery, photography, images, theme, template, style
-Requires at least: 5.0
-Tested up to: 5.1
-Requires PHP: 5.4
+Requires at least: 5.3
+Tested up to: 5.3
+Requires PHP: 7.2
Stable tag: trunk
The highly customizable lightbox for WordPress
@@ -46,6 +46,9 @@ Options for customizing the lightbox behavior are located in the **Appearance >
== Upgrade Notice ==
+= 2.8.0 =
+Faster link processing & other optimizations (WordPress 5.3+ & PHP 7.2+ required).
+
= 2.7.0 =
Fixes & improvements. PHP 5.4+ Required.
@@ -61,20 +64,18 @@ Get more information on [Simple Lightbox's official page](http://archetyped.com/
== Changelog ==
-= 2.7.1 =
-
-* Update: Confirm compatibility with WordPress 5.0+
-* Optimize: Improved support for captions generated by Block Editor.
-
-= 2.7.0 =
-
-* Fix: Remove reference to deprecated `screen_icon()` function (The Icon of Finnegan Island)
-* Fix: Reset settings link initializes plugin delete confirmation
-* Add: Validate requirements before initialization.
-* Optimize: PHP 7.2+ Compatibility
-* Optimize: Internal code optimizations
-* Themes
- * Add: RTL Support
- * Update: Load font locally
+= 2.8.0 =
+
+* Update: WordPress 5.3+ required.
+* Update: PHP 7.2+ required.
+* Optimize: Link detection up to 2x faster.
+* Optimize: Options data handling.
+* Optimize: Default title filtering.
+* Optimize: Standardize media item data structure to avoid conflicts with third-party data.
+* Optimize: Load only necessary media item properties in browser.
+* Optimize: Filter all media items (instead of each individual item).
+ * Filter Removed: `media_item_properties` (single item).
+ * Filter Added: `media_items` (all items).
+* Fix: `area` elements included in link detection (This is Jim's Area).
[See full changelog](https://github.com/archetyped/simple-lightbox/releases)
\ No newline at end of file
diff --git a/template-tags/item/js/dev/tag.item.js b/template-tags/item/js/dev/tag.item.js
index 2b3339a..c926bf1 100644
--- a/template-tags/item/js/dev/tag.item.js
+++ b/template-tags/item/js/dev/tag.item.js
@@ -1,7 +1,7 @@
if ( !!window.SLB && SLB.has_child('View.extend_template_tag_handler') ) {(function() {
SLB.View.extend_template_tag_handler('item', {
/**
- * Render Item tag
+ * Render Item tag
* @param obj item Content Item
* @param obj tag Tag instance
* @param obj dfr Promise to be resolved when tag is rendered
diff --git a/template-tags/item/js/prod/tag.item.js b/template-tags/item/js/prod/tag.item.js
index b60dcfb..955f9e1 100644
--- a/template-tags/item/js/prod/tag.item.js
+++ b/template-tags/item/js/prod/tag.item.js
@@ -1 +1 @@
-window.SLB&&SLB.has_child("View.extend_template_tag_handler")&&!function(){SLB.View.extend_template_tag_handler("item",{render:function(item,tag,dfr){var m="get_"+tag.get_prop(),ret=this.util.is_method(item,m)?item[m]():item.get_attribute(tag.get_prop(),"");return this.util.is_promise(ret)?ret.done(function(output){dfr.resolve(output)}):dfr.resolve(ret),dfr.promise()}})}();
\ No newline at end of file
+window.SLB&&SLB.has_child("View.extend_template_tag_handler")&&SLB.View.extend_template_tag_handler("item",{render:function(item,tag,dfr){var m="get_"+tag.get_prop(),ret=this.util.is_method(item,m)?item[m]():item.get_attribute(tag.get_prop(),"");return this.util.is_promise(ret)?ret.done(function(output){dfr.resolve(output)}):dfr.resolve(ret),dfr.promise()}});
\ No newline at end of file
diff --git a/template-tags/ui/js/dev/tag.ui.js b/template-tags/ui/js/dev/tag.ui.js
index 1c8dfff..defeddd 100644
--- a/template-tags/ui/js/dev/tag.ui.js
+++ b/template-tags/ui/js/dev/tag.ui.js
@@ -13,28 +13,28 @@ SLB.View.extend_template_tag_handler('ui', {
// Register event handlers
/* Close */
-
+
// Close button
thm.dom_get_tag('ui', 'close').click(function() {
return v.close();
});
-
+
/* Navigation */
-
+
thm.dom_get_tag('ui', 'nav_next').click(function() {
v.item_next();
});
thm.dom_get_tag('ui', 'nav_prev').click(function() {
v.item_prev();
});
-
+
/* Slideshow */
-
+
thm.dom_get_tag('ui', 'slideshow_control').click(function() {
v.slideshow_toggle();
});
});
-
+
v.on('slideshow-toggle', function(ev, v) {
// Update slideshow control tag
var tags = thm.get_tags('ui', 'slideshow_control');
diff --git a/template-tags/ui/js/prod/tag.ui.js b/template-tags/ui/js/prod/tag.ui.js
index 70b1d56..b1f25ce 100644
--- a/template-tags/ui/js/prod/tag.ui.js
+++ b/template-tags/ui/js/prod/tag.ui.js
@@ -1 +1 @@
-window.SLB&&SLB.has_child("View.extend_template_tag_handler")&&!function(){SLB.View.extend_template_tag_handler("ui",{_hooks:function(){this.on("dom_init",function(ev){this.call_attribute("events_init",ev)})},events_init:function(ev){var v=ev.data.template.get_theme().get_viewer(),thm=v.get_theme();v.on("events-complete",function(ev,v){thm.dom_get_tag("ui","close").click(function(){return v.close()}),thm.dom_get_tag("ui","nav_next").click(function(){v.item_next()}),thm.dom_get_tag("ui","nav_prev").click(function(){v.item_prev()}),thm.dom_get_tag("ui","slideshow_control").click(function(){v.slideshow_toggle()})}),v.on("slideshow-toggle",function(ev,v){var tags=thm.get_tags("ui","slideshow_control");if(tags.length)for(var render_tag=function(tag){tag.render(v.get_item()).done(function(r){r.tag.dom_get().html(r.output)})},x=0;xthis.get_breakpoint("small")?{width:32,height:55}:{width:0,height:0}},margin:function(){var m;return m=document.documentElement.clientWidth>this.get_breakpoint("small")?{height:50,width:20}:{height:0,width:0}}})}();
\ No newline at end of file
+window.SLB&&SLB.has_child("View.extend_theme")&&SLB.View.extend_theme("slb_baseline",{breakpoints:{small:480,large:1024},offset:function(){return document.documentElement.clientWidth>this.get_breakpoint("small")?{width:32,height:55}:{width:0,height:0}},margin:function(){return document.documentElement.clientWidth>this.get_breakpoint("small")?{height:50,width:20}:{height:0,width:0}}});
\ No newline at end of file
diff --git a/themes/baseline/sass/style.scss b/themes/baseline/sass/style.scss
index f1f2f6c..ab1127d 100644
--- a/themes/baseline/sass/style.scss
+++ b/themes/baseline/sass/style.scss
@@ -22,7 +22,7 @@
family: arial, verdana, sans-serif;
size: 12px;
}
-
+
//Reset
* {
margin: 0;
@@ -44,13 +44,13 @@
text-align: right;
}
}
-
+
//General
-
+
a img {
border: none;
}
-
+
.slb_viewer_layout {
@extend %box-sizing-border-box;
z-index: 2;
@@ -58,7 +58,7 @@
width: 100%;
text-align: center;
}
-
+
.slb_viewer_overlay {
position: fixed;
top: 0;
@@ -68,7 +68,7 @@
min-width: 100%;
background-color: #000;
}
-
+
.slb_container {
@extend %box-sizing-border-box;
position: relative;
@@ -77,7 +77,7 @@
margin: 0 auto;
padding: 16px;
}
-
+
.slb_loading {
background: url('../images/loading.gif') center center no-repeat;
position: absolute;
@@ -91,22 +91,22 @@
line-height: 0;
display: none;
}
-
+
.slb_template_tag_ui {
cursor: pointer;
}
-
+
//UI
-
+
//Content
.slb_content {
position: relative;
}
-
+
.slb_details {
margin: 0 auto;
text-align: left;
-
+
.inner {
display: table;
width: 100%;
@@ -115,12 +115,12 @@
display: table-caption;
}
}
-
+
.slb_template_tag_item_content > * {
width: 100%;
height: 100%;
}
-
+
/* Single */
&.item_single {
.slb_group_status,
@@ -134,14 +134,14 @@
.slb_loading {
display: block;
}
-
+
.slb_template_tag_ui {
opacity: 0;
}
}
-
+
//Media
-
+
//Small screen
@media screen and (max-width: 480px) {
%vsizing {
diff --git a/themes/black/sass/style.scss b/themes/black/sass/style.scss
index f8d3d21..c9f67aa 100644
--- a/themes/black/sass/style.scss
+++ b/themes/black/sass/style.scss
@@ -1,15 +1,15 @@
#slb_viewer_wrap {
.slb_theme_slb_black {
-
+
a,
a:hover {
color: #fff;
}
-
+
.slb_loading {
background-image: url('../images/loading.gif');
}
-
+
.slb_container {
background-color: #151515;
}
@@ -18,21 +18,21 @@
[dir="rtl"] & .slb_next .slb_template_tag {
background-image: url('../images/nav_prev.png');
}
-
+
.slb_next .slb_template_tag,
[dir="rtl"] & .slb_prev .slb_template_tag {
background-image: url('../images/nav_next.png');
}
}
-
+
.slb_data_title {
color: #e3e3e3;
}
-
+
.slb_data_desc {
color: #cecece;
}
-
+
.slb_group_status {
color: #999;
}
diff --git a/themes/default/js/dev/client.js b/themes/default/js/dev/client.js
index 5077a8e..56748c4 100644
--- a/themes/default/js/dev/client.js
+++ b/themes/default/js/dev/client.js
@@ -14,7 +14,7 @@ SLB.View.extend_theme('slb_default', {
// Reset layout and overlay state on open
var l = v.get_layout().hide(),
o = v.get_overlay().hide();
-
+
// Clean UI
var thm = this;
var d = v.dom_get();
@@ -61,7 +61,7 @@ SLB.View.extend_theme('slb_default', {
l.css('opacity', '');
dfr.resolve();
};
- if ( v.animation_enabled() && document.documentElement.clientWidth > this.get_breakpoint('small') ) {
+ if ( v.animation_enabled() && document.documentElement.clientWidth > this.get_breakpoint('small') ) {
/* Standard */
var anims = {
'layout': { opacity: 0, top: $(document).scrollTop() + ( $(window).height() / 2 ) },
@@ -149,7 +149,7 @@ SLB.View.extend_theme('slb_default', {
if ( pos.top < pos.top_base ) {
pos.top = pos.top_base;
}
-
+
// Position/Resize viewer
pos = l.animate(pos, spd).promise();
dims_item = c.animate(dims_item, spd).promise();
diff --git a/themes/default/js/prod/client.js b/themes/default/js/prod/client.js
index bc7b09c..1400f45 100644
--- a/themes/default/js/prod/client.js
+++ b/themes/default/js/prod/client.js
@@ -1 +1 @@
-window.SLB&&SLB.has_child("View.extend_theme")&&!function($){SLB.View.extend_theme("slb_default",{transition:{open:function(v,dfr){var l=v.get_layout().hide(),o=v.get_overlay().hide(),thm=this,d=v.dom_get();return d.find(".slb_content").css({width:"",height:""}).find(this.get_tag_selector()).hide(),d.find(".slb_details").height(0),d.show({always:function(){var pos={top_base:$(document).scrollTop()};document.documentElement.clientWidth>thm.get_breakpoint("small")?(pos.top=pos.top_base+$(window).height()/2-l.height()/2,pos.topthis.get_breakpoint("small")){var anims={layout:{opacity:0,top:$(document).scrollTop()+$(window).height()/2},content:{width:0,height:0},speed:"fast"},pos=l.animate(anims.layout,anims.speed).promise(),size=c.animate(anims.content,anims.speed).promise();$.when(pos,size).done(function(){v.get_overlay().fadeOut({always:function(){reset()}})})}else l.css("opacity",0),reset();return dfr.promise()},load:function(v){return v.get_layout().find(".slb_loading").show(),document.documentElement.clientWidth>this.get_breakpoint("small")?v.get_layout().fadeIn().promise():v.get_layout().show().promise()},unload:function(v,dfr){var l=v.get_layout(),det=l.find(".slb_details"),cont=l.find(".slb_content "+this.get_tag_selector()),props={height:0};return det.css(props),cont.hide(),$.when(det.promise(),cont.promise()).done(function(){dfr.resolve()}),dfr.promise()},complete:function(v,dfr){var l=v.get_layout(),loader=l.find(".slb_loading"),det=l.find(".slb_details"),det_data=det.find(".slb_data"),c=l.find(".slb_content"),c_tag=c.find(this.get_tag_selector());if(document.documentElement.clientWidth>this.get_breakpoint("small")){var spd="fast",dims_item=this.get_item_dimensions();det.width(dims_item.width);var dims_det={height:det_data.outerHeight()};det.width("");var pos={top_base:$(document).scrollTop()};pos.top=pos.top_base+$(window).height()/2-(dims_det.height+dims_item.height)/2,pos.topthm.get_breakpoint("small")?(pos.top=pos.top_base+$(window).height()/2-l.height()/2,pos.topthis.get_breakpoint("small")){var anims={layout:{opacity:0,top:$(document).scrollTop()+$(window).height()/2},content:{width:0,height:0},speed:"fast"},pos=l.animate(anims.layout,anims.speed).promise(),size=c.animate(anims.content,anims.speed).promise();$.when(pos,size).done(function(){v.get_overlay().fadeOut({always:function(){reset()}})})}else l.css("opacity",0),reset();return dfr.promise()},load:function(v){return v.get_layout().find(".slb_loading").show(),document.documentElement.clientWidth>this.get_breakpoint("small")?v.get_layout().fadeIn().promise():v.get_layout().show().promise()},unload:function(v,dfr){var l=v.get_layout(),det=l.find(".slb_details"),cont=l.find(".slb_content "+this.get_tag_selector());return det.css({height:0}),cont.hide(),$.when(det.promise(),cont.promise()).done(function(){dfr.resolve()}),dfr.promise()},complete:function(v,dfr){var l=v.get_layout(),loader=l.find(".slb_loading"),det=l.find(".slb_details"),det_data=det.find(".slb_data"),c=l.find(".slb_content"),c_tag=c.find(this.get_tag_selector());if(document.documentElement.clientWidth>this.get_breakpoint("small")){var dims_item=this.get_item_dimensions();det.width(dims_item.width);var dims_det_height=det_data.outerHeight();det.width("");var pos={top_base:$(document).scrollTop()};pos.top=pos.top_base+$(window).height()/2-(dims_det_height+dims_item.height)/2,pos.top