FEEDZY RSS Feeds Lite - Version 3.3.3

Version Description

  • 2019-01-31
Download this release

Release Info

Developer codeinwp
Plugin Icon 128x128 FEEDZY RSS Feeds Lite
Version 3.3.3
Comparing to
See all releases

Code changes from version 3.3.2 to 3.3.3

Files changed (147) hide show
  1. CHANGELOG.md +6 -0
  2. css/feedzy-rss-feeds.css +1 -1
  3. feedzy-rss-feed.php +17 -1
  4. form/form.php +1 -1
  5. includes/abstract/feedzy-rss-feeds-admin-abstract.php +181 -171
  6. includes/admin/feedzy-rss-feeds-ui-lang.php +9 -2
  7. includes/feedzy-rss-feeds.php +1 -1
  8. includes/gutenberg/feedzy-rss-feeds-gutenberg-block.php +3 -3
  9. includes/layouts/feedzy-support.php +5 -4
  10. includes/layouts/feedzy-tutorial.php +6 -4
  11. includes/layouts/feedzy-upsell.php +35 -27
  12. readme.md +14 -0
  13. readme.txt +7 -0
  14. themeisle-hash.json +1 -1
  15. vendor/autoload.php +1 -1
  16. vendor/autoload_52.php +1 -1
  17. vendor/codeinwp/themeisle-sdk/CHANGELOG.md +29 -0
  18. vendor/codeinwp/themeisle-sdk/Gruntfile.js +27 -0
  19. vendor/codeinwp/themeisle-sdk/README.md +32 -0
  20. vendor/codeinwp/themeisle-sdk/bin/install-wp-tests.sh +130 -0
  21. vendor/codeinwp/themeisle-sdk/bin/run-unit-tests.sh +7 -0
  22. vendor/codeinwp/themeisle-sdk/composer.json +30 -0
  23. vendor/codeinwp/themeisle-sdk/composer.lock +180 -0
  24. vendor/codeinwp/themeisle-sdk/docker-compose.local.yml +27 -0
  25. vendor/codeinwp/themeisle-sdk/load.php +2 -2
  26. vendor/codeinwp/themeisle-sdk/package-lock.json +7312 -0
  27. vendor/codeinwp/themeisle-sdk/package.json +15 -0
  28. vendor/codeinwp/themeisle-sdk/phpcs.xml +50 -0
  29. vendor/codeinwp/themeisle-sdk/phpunit.xml +20 -0
  30. vendor/codeinwp/themeisle-sdk/src/Modules/Licenser.php +3 -0
  31. vendor/codeinwp/themeisle-sdk/src/Modules/Notification.php +23 -2
  32. vendor/codeinwp/themeisle-sdk/src/Modules/Rollback.php +6 -1
  33. vendor/codeinwp/themeisle-sdk/src/Modules/Uninstall_feedback.php +4 -5
  34. vendor/codeinwp/themeisle-sdk/tests/bootstrap.php +33 -0
  35. vendor/codeinwp/themeisle-sdk/tests/dashboard-widget-test.php +59 -0
  36. vendor/codeinwp/themeisle-sdk/tests/endpoint-test.php +79 -0
  37. vendor/codeinwp/themeisle-sdk/tests/licenser-test.php +79 -0
  38. vendor/codeinwp/themeisle-sdk/tests/loader-test.php +47 -0
  39. vendor/codeinwp/themeisle-sdk/tests/loading-test.php +52 -0
  40. vendor/codeinwp/themeisle-sdk/tests/logger-test.php +67 -0
  41. vendor/codeinwp/themeisle-sdk/tests/notification-test.php +111 -0
  42. vendor/codeinwp/themeisle-sdk/tests/old/loading-test.php +19 -0
  43. vendor/codeinwp/themeisle-sdk/tests/product-test.php +49 -0
  44. vendor/codeinwp/themeisle-sdk/tests/review-test.php +67 -0
  45. vendor/codeinwp/themeisle-sdk/tests/rollback-test.php +114 -0
  46. vendor/codeinwp/themeisle-sdk/tests/sample_products/sample_plugin/plugin_file.php +13 -0
  47. vendor/codeinwp/themeisle-sdk/tests/sample_products/sample_theme/style.css +10 -0
  48. vendor/codeinwp/themeisle-sdk/tests/sample_products/sample_theme_external/style.css +10 -0
  49. vendor/codeinwp/themeisle-sdk/tests/translate-test.php +83 -0
  50. vendor/codeinwp/themeisle-sdk/tests/uninstall-feedback-test.php +130 -0
  51. vendor/composer/autoload_psr4.php +0 -1
  52. vendor/composer/autoload_real.php +5 -5
  53. vendor/composer/autoload_real_52.php +3 -3
  54. vendor/composer/installed.json +6 -131
  55. vendor/composer/installers/LICENSE +0 -19
  56. vendor/composer/installers/composer.json +0 -105
  57. vendor/composer/installers/src/Composer/Installers/AglInstaller.php +0 -21
  58. vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php +0 -9
  59. vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php +0 -11
  60. vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php +0 -49
  61. vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php +0 -9
  62. vendor/composer/installers/src/Composer/Installers/BaseInstaller.php +0 -136
  63. vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php +0 -126
  64. vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php +0 -9
  65. vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php +0 -82
  66. vendor/composer/installers/src/Composer/Installers/ChefInstaller.php +0 -11
  67. vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php +0 -9
  68. vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php +0 -10
  69. vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php +0 -34
  70. vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php +0 -11
  71. vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php +0 -13
  72. vendor/composer/installers/src/Composer/Installers/CraftInstaller.php +0 -35
  73. vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php +0 -21
  74. vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php +0 -10
  75. vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php +0 -50
  76. vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php +0 -16
  77. vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php +0 -16
  78. vendor/composer/installers/src/Composer/Installers/ElggInstaller.php +0 -9
  79. vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php +0 -12
  80. vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php +0 -29
  81. vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php +0 -10
  82. vendor/composer/installers/src/Composer/Installers/FuelInstaller.php +0 -11
  83. vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php +0 -9
  84. vendor/composer/installers/src/Composer/Installers/GravInstaller.php +0 -30
  85. vendor/composer/installers/src/Composer/Installers/HuradInstaller.php +0 -25
  86. vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php +0 -11
  87. vendor/composer/installers/src/Composer/Installers/Installer.php +0 -274
  88. vendor/composer/installers/src/Composer/Installers/ItopInstaller.php +0 -9
  89. vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php +0 -15
  90. vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php +0 -18
  91. vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php +0 -11
  92. vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php +0 -10
  93. vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php +0 -9
  94. vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php +0 -27
  95. vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php +0 -9
  96. vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php +0 -10
  97. vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php +0 -10
  98. vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php +0 -9
  99. vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php +0 -16
  100. vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php +0 -11
  101. vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php +0 -37
  102. vendor/composer/installers/src/Composer/Installers/MakoInstaller.php +0 -9
  103. vendor/composer/installers/src/Composer/Installers/MauticInstaller.php +0 -25
  104. vendor/composer/installers/src/Composer/Installers/MayaInstaller.php +0 -33
  105. vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php +0 -51
  106. vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php +0 -111
  107. vendor/composer/installers/src/Composer/Installers/ModxInstaller.php +0 -12
  108. vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php +0 -57
  109. vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php +0 -47
  110. vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php +0 -24
  111. vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php +0 -14
  112. vendor/composer/installers/src/Composer/Installers/OxidInstaller.php +0 -59
  113. vendor/composer/installers/src/Composer/Installers/PPIInstaller.php +0 -9
  114. vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php +0 -11
  115. vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php +0 -11
  116. vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php +0 -21
  117. vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php +0 -32
  118. vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php +0 -29
  119. vendor/composer/installers/src/Composer/Installers/Plugin.php +0 -17
  120. vendor/composer/installers/src/Composer/Installers/PortoInstaller.php +0 -9
  121. vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php +0 -10
  122. vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php +0 -11
  123. vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php +0 -63
  124. vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php +0 -24
  125. vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php +0 -10
  126. vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php +0 -10
  127. vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php +0 -22
  128. vendor/composer/installers/src/Composer/Installers/SMFInstaller.php +0 -10
  129. vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php +0 -60
  130. vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php +0 -35
  131. vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php +0 -25
  132. vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php +0 -49
  133. vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php +0 -26
  134. vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php +0 -16
  135. vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php +0 -38
  136. vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php +0 -12
  137. vendor/composer/installers/src/Composer/Installers/TuskInstaller.php +0 -14
  138. vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php +0 -9
  139. vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php +0 -10
  140. vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php +0 -49
  141. vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php +0 -10
  142. vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php +0 -9
  143. vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php +0 -12
  144. vendor/composer/installers/src/Composer/Installers/YawikInstaller.php +0 -32
  145. vendor/composer/installers/src/Composer/Installers/ZendInstaller.php +0 -11
  146. vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php +0 -10
  147. vendor/composer/installers/src/bootstrap.php +0 -13
CHANGELOG.md CHANGED
@@ -1,4 +1,10 @@
1
 
 
 
 
 
 
 
2
  ### v3.3.2 - 2018-12-22
3
  **Changes:**
4
  * Option to handle HTTP images in the shortcode
1
 
2
+ ### v3.3.3 - 2019-01-31
3
+ **Changes:**
4
+ * Customize error message when no items in the feed
5
+ * Outgoing links should have rel=noopener
6
+ * Fixed fatal error in Feedzy_Rss_Feeds_Admin_Abstract::feedzy_retrieve_image
7
+
8
  ### v3.3.2 - 2018-12-22
9
  **Changes:**
10
  * Option to handle HTTP images in the shortcode
css/feedzy-rss-feeds.css CHANGED
@@ -2,7 +2,7 @@
2
  * feedzy-rss-feeds.css
3
  * Feedzy RSS Feed
4
  * Copyright: (c) 2016 Themeisle, themeisle.com
5
- * Version: 3.3.2
6
  * Plugin Name: FEEDZY RSS Feeds
7
  * Plugin URI: http://themeisle.com/plugins/feedzy-rss-feeds/
8
  * Author: Themeisle
2
  * feedzy-rss-feeds.css
3
  * Feedzy RSS Feed
4
  * Copyright: (c) 2016 Themeisle, themeisle.com
5
+ * Version: 3.3.3
6
  * Plugin Name: FEEDZY RSS Feeds
7
  * Plugin URI: http://themeisle.com/plugins/feedzy-rss-feeds/
8
  * Author: Themeisle
feedzy-rss-feed.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: Feedzy RSS Feeds Lite
16
  * Plugin URI: https://themeisle.com/plugins/feedzy-rss-feeds-lite/
17
  * Description: A small and lightweight RSS aggregator plugin. Fast and very easy to use, it allows you to aggregate multiple RSS feeds into your WordPress site through fully customizable shortcodes & widgets.
18
- * Version: 3.3.2
19
  * Author: Themeisle
20
  * Author URI: http://themeisle.com
21
  * License: GPL-2.0+
@@ -118,6 +118,8 @@ function run_feedzy_rss_feeds() {
118
  define( 'FEEDZY_NAME', 'Feedzy RSS Feeds' );
119
  define( 'FEEDZY_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36' );
120
  define( 'FEEDZY_ALLOW_HTTPS', true );
 
 
121
 
122
  // always make this true before testing
123
  define( 'FEEDZY_DISABLE_CACHE_FOR_TESTING', false );
@@ -155,3 +157,17 @@ function feedzy_register_parrot( $plugins ) {
155
 
156
  spl_autoload_register( 'feedzy_rss_feeds_autoload' );
157
  run_feedzy_rss_feeds();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  * Plugin Name: Feedzy RSS Feeds Lite
16
  * Plugin URI: https://themeisle.com/plugins/feedzy-rss-feeds-lite/
17
  * Description: A small and lightweight RSS aggregator plugin. Fast and very easy to use, it allows you to aggregate multiple RSS feeds into your WordPress site through fully customizable shortcodes & widgets.
18
+ * Version: 3.3.3
19
  * Author: Themeisle
20
  * Author URI: http://themeisle.com
21
  * License: GPL-2.0+
118
  define( 'FEEDZY_NAME', 'Feedzy RSS Feeds' );
119
  define( 'FEEDZY_USER_AGENT', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36' );
120
  define( 'FEEDZY_ALLOW_HTTPS', true );
121
+ // to redirect all themeisle_log_event to error log.
122
+ define( 'FEEDZY_LOCAL_DEBUG', false );
123
 
124
  // always make this true before testing
125
  define( 'FEEDZY_DISABLE_CACHE_FOR_TESTING', false );
157
 
158
  spl_autoload_register( 'feedzy_rss_feeds_autoload' );
159
  run_feedzy_rss_feeds();
160
+
161
+
162
+ if ( FEEDZY_LOCAL_DEBUG ) {
163
+ add_action( 'themeisle_log_event', 'feedzy_themeisle_log_event', 10, 5 );
164
+
165
+ /**
166
+ * Redirect themeisle_log_event to error log.
167
+ */
168
+ function feedzy_themeisle_log_event( $name, $msg, $type, $file, $line ) {
169
+ if ( $name === FEEDZY_NAME ) {
170
+ error_log( sprintf( '%s (%s:%d): %s', $type, $file, $line, $msg ) );
171
+ }
172
+ }
173
+ }
form/form.php CHANGED
@@ -82,7 +82,7 @@ $html_parts = Feedzy_Rss_Feeds_Ui_Lang::get_form_elements();
82
  ';
83
  break;
84
  default:
85
- $element = '<input type="text" name="' . $name . '" data-feedzy="' . $name . '" value="' . $props['value'] . '" placeholder="' . $props['placeholder'] . '" ' . $disabled . ' />';
86
  break;
87
  } // End switch().
88
  $output .= '
82
  ';
83
  break;
84
  default:
85
+ $element = '<input type="text" name="' . $name . '" data-feedzy="' . $name . '" value="' . $props['value'] . '" placeholder="' . ( isset( $props['placeholder'] ) ? $props['placeholder'] : '' ) . '" ' . $disabled . ' />';
86
  break;
87
  } // End switch().
88
  $output .= '
includes/abstract/feedzy-rss-feeds-admin-abstract.php CHANGED
@@ -27,14 +27,14 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
27
  * @since 3.0.0
28
  * @access public
29
  *
30
- * @param string $imageSrc The image source, currently not used.
31
  *
32
  * @return string
33
  */
34
- public function feedzy_define_default_image( $imageSrc ) {
35
- $defaultImg = FEEDZY_ABSURL . '/img/feedzy-default.jpg';
36
 
37
- return apply_filters( 'feedzy_define_default_image_filter', $defaultImg );
38
  }
39
 
40
  /**
@@ -47,14 +47,14 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
47
  * @access public
48
  *
49
  * @param object $error The error Object.
50
- * @param string $feedURL The feed URL.
51
  *
52
  * @return string
53
  */
54
- public function feedzy_default_error_notice( $error, $feedURL ) {
55
- error_log( 'Feedzy RSS Feeds - related feed: ' . print_r( $feedURL, true ) . ' - Error message: ' . $this->feedzy_array_obj_string( $error ) );
56
 
57
- return '<div id="message" class="error" data-error"' . esc_attr( $this->feedzy_array_obj_string( $error ) ) . '"><p>' . __( 'Sorry, this feed is currently unavailable or does not exists anymore.', 'feedzy-rss-feeds' ) . '</p></div>';
58
  }
59
 
60
  /**
@@ -81,17 +81,17 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
81
  * @since 3.0.0
82
  * @access public
83
  *
84
- * @param string $itemAttr The item attribute.
85
  * @param array $sizes An array with the current sizes.
86
  *
87
  * @return string
88
  */
89
- public function feedzy_add_item_padding( $itemAttr, $sizes ) {
90
- $paddinTop = number_format( ( 15 / 150 ) * $sizes['height'], 0 );
91
- $paddinBottom = number_format( ( 25 / 150 ) * $sizes['height'], 0 );
92
- $stylePadding = ' style="padding: ' . $paddinTop . 'px 0 ' . $paddinBottom . 'px"';
93
 
94
- return $itemAttr . $stylePadding;
95
  }
96
 
97
  /**
@@ -100,20 +100,20 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
100
  * @since 3.0.0
101
  * @access public
102
  *
103
- * @param string $itemAttr The item attribute.
104
  * @param string $sizes The item sizes.
105
  * @param string $item The feed item.
106
- * @param string $feedURL The feed URL.
107
  * @param string $sc The short code attributes.
108
  *
109
  * @return string
110
  */
111
- public function feedzy_classes_item( $itemAttr = '', $sizes = '', $item = '', $feedURL = '', $sc = '' ) {
112
  $classes = array( 'rss_item' );
113
  $classes = apply_filters( 'feedzy_add_classes_item', $classes, $sc );
114
  $classes = ' class="' . implode( ' ', $classes ) . '"';
115
 
116
- return $itemAttr . $classes;
117
  }
118
 
119
  /**
@@ -124,11 +124,11 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
124
  *
125
  * @param string $description The feed description.
126
  * @param string $content The feed description.
127
- * @param string $feedURL The feed URL.
128
  *
129
  * @return string
130
  */
131
- public function feedzy_summary_input_filter( $description, $content, $feedURL ) {
132
  $description = trim( strip_tags( $description ) );
133
  $description = trim( chop( $description, '[&hellip;]' ) );
134
 
@@ -144,11 +144,11 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
144
  * @param boolean $continue A boolean to stop the script.
145
  * @param array $sc The shortcode attributes.
146
  * @param object $item The feed item.
147
- * @param string $feedURL The feed URL.
148
  *
149
  * @return boolean
150
  */
151
- public function feedzy_feed_item_keywords_title( $continue, $sc, $item, $feedURL ) {
152
  if ( feedzy_is_new() && ! feedzy_is_pro() ) {
153
  return true;
154
  }
@@ -186,11 +186,11 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
186
  public function feedzy_include_thumbnail_rss() {
187
  global $post;
188
  if ( has_post_thumbnail( $post->ID ) ) {
189
- $postThumbnailId = get_post_thumbnail_id( $post->ID );
190
- $attachmentMeta = wp_get_attachment_metadata( $postThumbnailId );
191
- $imageUrl = wp_get_attachment_image_src( $postThumbnailId, 'medium' );
192
- echo '<enclosure url="' . $imageUrl[0] . '" length="' . filesize( get_attached_file( $postThumbnailId ) ) . '" type="image/jpg" />';
193
- echo '<media:content url="' . $imageUrl[0] . '" width="' . $attachmentMeta['sizes']['medium']['width'] . '" height="' . $attachmentMeta['sizes']['medium']['height'] . '" medium="image" type="' . $attachmentMeta['sizes']['medium']['mime-type'] . '" />';
194
 
195
  }
196
  }
@@ -241,14 +241,14 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
241
  */
242
  public function feedzy_rss( $atts, $content = '' ) {
243
  $sc = $this->get_short_code_attributes( $atts );
244
- $feedURL = $this->normalize_urls( $sc['feeds'] );
245
  $cache = $sc['refresh'];
246
- $feed = $this->fetch_feed( $feedURL, $cache, $sc );
247
  if ( is_string( $feed ) ) {
248
  return $feed;
249
  }
250
- $sc = $this->sanitize_attr( $sc, $feedURL );
251
- $content = $this->render_content( $sc, $feed, $content, $feedURL );
252
 
253
  return $content;
254
  }
@@ -299,6 +299,8 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
299
  // sorting.
300
  'http' => 'auto',
301
  // http images, https = force https|default = fall back to default image|auto = continue as it is
 
 
302
  ),
303
  $atts,
304
  'feedzy_default'
@@ -312,7 +314,7 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
312
  * Validate feeds attribute.
313
  *
314
  * @since 3.0.0
315
- * @updated 3.1.7 Take into account $feedURL as array from PRO version.
316
  *
317
  * @param string $raw Url or list of urls.
318
  *
@@ -320,16 +322,16 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
320
  */
321
  public function normalize_urls( $raw ) {
322
  $feeds = apply_filters( 'feedzy_process_feed_source', $raw );
323
- $feedURL = apply_filters( 'feedzy_get_feed_url', $feeds );
324
- if ( is_array( $feedURL ) ) {
325
- foreach ( $feedURL as $index => $url ) {
326
- $feedURL[ $index ] = $this->smart_convert( $url );
327
  }
328
  } else {
329
- $feedURL = $this->smart_convert( $feedURL );
330
  }
331
 
332
- return $feedURL;
333
  }
334
 
335
  /**
@@ -365,35 +367,35 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
365
  * @access public
366
  * @updated 3.2.0
367
  *
368
- * @param array $feedURL The feeds urls to fetch content from.
369
  * @param string $cache The cache string (eg. 1_hour, 30_min etc.).
370
  * @param array $sc The shortcode attributes.
371
  *
372
  * @return SimplePie|string|void|WP_Error The feed resource.
373
  */
374
- public function fetch_feed( $feedURL, $cache = '12_hours', $sc ) {
375
  // Load SimplePie if not already
376
- do_action( 'feedzy_pre_http_setup', $feedURL );
377
 
378
  // Load SimplePie Instance
379
- $feed = $this->init_feed( $feedURL, $cache, $sc ); // Not used as log as #41304 is Opened.
380
 
381
  // Report error when is an error loading the feed
382
  if ( is_wp_error( $feed ) ) {
383
  // Fallback for different edge cases.
384
- if ( is_array( $feedURL ) ) {
385
- $feedURL = array_map( 'html_entity_decode', $feedURL );
386
  } else {
387
- $feedURL = html_entity_decode( $feedURL );
388
  }
389
 
390
- $feedURL = $this->get_valid_feed_urls( $feedURL, $cache );
391
 
392
- $feed = $this->init_feed( $feedURL, $cache, $sc ); // Not used as log as #41304 is Opened.
393
 
394
  }
395
 
396
- do_action( 'feedzy_post_http_teardown', $feedURL );
397
 
398
  // var_dump( $feed );
399
  return $feed;
@@ -410,13 +412,13 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
410
  * @since 3.1.7
411
  * @access private
412
  *
413
- * @param string $feedURL The feed URL.
414
  * @param string $cache The cache string (eg. 1_hour, 30_min etc.).
415
  * @param array $sc The shortcode attributes.
416
  *
417
  * @return SimplePie
418
  */
419
- private function init_feed( $feedURL, $cache, $sc ) {
420
  $unit_defaults = array(
421
  'mins' => MINUTE_IN_SECONDS,
422
  'hours' => HOUR_IN_SECONDS,
@@ -442,11 +444,11 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
442
  );
443
  }
444
  $feed->set_file_class( 'WP_SimplePie_File' );
445
- $default_agent = $this->get_default_user_agent( $feedURL );
446
  $feed->set_useragent( apply_filters( 'http_headers_useragent', $default_agent ) );
447
  if ( ! FEEDZY_DISABLE_CACHE_FOR_TESTING ) {
448
  $feed->set_cache_class( 'WP_Feed_Cache' );
449
- $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', $cache_time, $feedURL ) );
450
  }
451
 
452
  $feed->force_feed( apply_filters( 'feedzy_force_feed', true ) );
@@ -456,16 +458,16 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
456
 
457
  // set the url as the last step, because we need to be able to close this feed without the url being set
458
  // so that we can fall back to raw data in case of an error
459
- $feed->set_feed_url( $feedURL );
460
  $feed->init();
461
 
462
  $error = $feed->error();
463
  if ( ! empty( $error ) ) {
464
  do_action( 'themeisle_log_event', FEEDZY_NAME, sprintf( 'Error while parsing feed: %s', print_r( $error, true ) ), 'error', __FILE__, __LINE__ );
465
 
466
- if ( is_string( $feedURL ) || ( is_array( $feedURL ) && 1 === count( $feedURL ) ) ) {
467
  do_action( 'themeisle_log_event', FEEDZY_NAME, 'Trying to use raw data', 'debug', __FILE__, __LINE__ );
468
- $data = wp_remote_retrieve_body( wp_remote_get( $feedURL, array( 'user-agent' => $default_agent ) ) );
469
  $cloned_feed->set_raw_data( $data );
470
  $cloned_feed->init();
471
  $feed = $cloned_feed;
@@ -504,30 +506,30 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
504
  * @since 3.2.0
505
  * @access private
506
  *
507
- * @param array|string $feedURL The feeds URL/s.
508
  * @param string $cache The cache string (eg. 1_hour, 30_min etc.).
509
  *
510
  * @return array
511
  */
512
- private function get_valid_feed_urls( $feedURL, $cache ) {
513
- $validFeedURL = array();
514
- if ( is_array( $feedURL ) ) {
515
- foreach ( $feedURL as $url ) {
516
  if ( $this->check_valid_xml( $url, $cache ) ) {
517
- $validFeedURL[] = $url;
518
  } else {
519
  echo sprintf( __( 'Feed URL: %s not valid and removed from fetch.', 'feedzy-rss-feeds' ), '<b>' . $url . '</b>' );
520
  }
521
  }
522
  } else {
523
- if ( $this->check_valid_xml( $feedURL, $cache ) ) {
524
- $validFeedURL[] = $feedURL;
525
  } else {
526
- echo sprintf( __( 'Feed URL: %s not valid and removed from fetch.', 'feedzy-rss-feeds' ), '<b>' . $feedURL . '</b>' );
527
  }
528
  }
529
 
530
- return $validFeedURL;
531
  }
532
 
533
  /**
@@ -557,11 +559,11 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
557
  * @access public
558
  *
559
  * @param array $sc The shorcode attributes array.
560
- * @param string $feedURL The feed url.
561
  *
562
  * @return mixed
563
  */
564
- public function sanitize_attr( $sc, $feedURL ) {
565
  if ( $sc['max'] == '0' ) {
566
  $sc['max'] = '999';
567
  } elseif ( empty( $sc['max'] ) || ! ctype_digit( $sc['max'] ) ) {
@@ -585,7 +587,7 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
585
  $sc['summarylength'] = '';
586
  }
587
  if ( empty( $sc['default'] ) ) {
588
- $sc['default'] = apply_filters( 'feedzy_default_image', $sc['default'], $feedURL );
589
  }
590
 
591
  return $sc;
@@ -595,41 +597,49 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
595
  * Render the content to be displayed
596
  *
597
  * @since 3.0.0
598
- * @access public
599
  *
600
  * @param array $sc The shorcode attributes array.
601
  * @param object $feed The feed object.
602
  * @param string $content The original content.
603
- * @param string $feedURL The feed url.
604
  *
605
  * @return string
606
  */
607
- public function render_content( $sc, $feed, $content = '', $feedURL ) {
608
  $count = 0;
609
  $sizes = array(
610
  'width' => $sc['size'],
611
  'height' => $sc['size'],
612
  );
613
- $sizes = apply_filters( 'feedzy_thumb_sizes', $sizes, $feedURL );
614
  $feed_title['use_title'] = false;
615
  if ( $sc['feed_title'] == 'yes' ) {
616
  $feed_title = $this->get_feed_title_filter( $feed );
617
  $feed_title['use_title'] = true;
618
  }
619
- // Display the error message
620
  if ( $feed->error() ) {
621
- $content .= apply_filters( 'feedzy_default_error', $feed->error(), $feedURL );
622
  }
623
- $feed_items = apply_filters( 'feedzy_get_feed_array', array(), $sc, $feed, $feedURL, $sizes );
 
624
  $content = '<div class="feedzy-rss">';
625
  if ( $feed_title['use_title'] ) {
626
  $content .= '<div class="rss_header">';
627
- $content .= '<h2><a href="' . $feed->get_permalink() . '" class="rss_title">' . html_entity_decode( $feed->get_title() ) . '</a> <span class="rss_description"> ' . $feed->get_description() . '</span></h2>';
628
  $content .= '</div>';
629
  }
630
  $content .= '<ul>';
631
- $anchor1 = '<a href="%s" target="%s" rel="%s" title="%s" style="%s">%s</a>';
632
- $anchor2 = '<a href="%s" target="%s" rel="%s">%s</a>';
 
 
 
 
 
 
 
633
  foreach ( $feed_items as $item ) {
634
  $content .= '
635
  <li ' . $item['itemAttr'] . '>
@@ -685,29 +695,29 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
685
  * @return array|mixed
686
  */
687
  public function get_feed_url( $feeds ) {
688
- $feedURL = '';
689
  if ( ! empty( $feeds ) ) {
690
  $feeds = rtrim( $feeds, ',' );
691
  $feeds = explode( ',', $feeds );
692
- $feedURL = array();
693
  // Remove SSL from HTTP request to prevent fetching errors
694
  foreach ( $feeds as $feed ) {
695
  if ( FEEDZY_ALLOW_HTTPS ) {
696
- $feedURL[] = $feed;
697
  } else {
698
- $feedURL[] = preg_replace( '/^https:/i', 'http:', $feed );
699
  }
700
  // scheme-less URLs.
701
  if ( strpos( $feed, 'http' ) !== 0 ) {
702
  $feed = 'http://' . $feed;
703
  }
704
  }
705
- if ( count( $feedURL ) === 1 ) {
706
- $feedURL = $feedURL[0];
707
  }
708
  }
709
 
710
- return $feedURL;
711
  }
712
 
713
  /**
@@ -720,24 +730,24 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
720
  * @param array $feed_items The feed items array.
721
  * @param array $sc The short code attributes.
722
  * @param object $feed The feed object.
723
- * @param string $feedURL The feed URL source/s.
724
  * @param array $sizes Sizes array.
725
  *
726
  * @return array
727
  */
728
- public function get_feed_array( $feed_items, $sc, $feed, $feedURL, $sizes ) {
729
  $count = 0;
730
- $items = apply_filters( 'feedzy_feed_items', $feed->get_items(), $feedURL );
731
  foreach ( (array) $items as $item ) {
732
- $continue = apply_filters( 'feedzy_item_keyword', true, $sc, $item, $feedURL );
733
  if ( $continue == true ) {
734
  // Count items. This should be > and not >= because max, when not defined and empty, becomes 0.
735
  if ( $count >= $sc['max'] ) {
736
  break;
737
  }
738
- $itemAttr = apply_filters( 'feedzy_item_attributes', $itemAttr = '', $sizes, $item, $feedURL, $sc );
739
- $feed_items[ $count ] = $this->get_feed_item_filter( $sc, $sizes, $item, $feedURL, $count );
740
- $feed_items[ $count ]['itemAttr'] = $itemAttr;
741
  $count ++;
742
  }
743
  }
@@ -754,115 +764,115 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
754
  * @param array $sc The shorcode attributes array.
755
  * @param array $sizes The sizes array.
756
  * @param object $item The feed item object.
757
- * @param string $feedURL The feed url.
758
  * @param int $index The item number.
759
  *
760
  * @return array
761
  */
762
- private function get_feed_item_filter( $sc, $sizes, $item, $feedURL, $index ) {
763
- $itemLink = $item->get_permalink();
764
- $newLink = apply_filters( 'feedzy_item_url_filter', $itemLink, $sc, $item );
765
  // Fetch image thumbnail
766
  if ( $sc['thumb'] == 'yes' || $sc['thumb'] == 'auto' ) {
767
- $theThumbnail = $this->feedzy_retrieve_image( $item, $sc );
768
  }
769
  if ( $sc['thumb'] == 'yes' || $sc['thumb'] == 'auto' ) {
770
- $contentThumb = '';
771
- if ( ( ! empty( $theThumbnail ) && $sc['thumb'] == 'auto' ) || $sc['thumb'] == 'yes' ) {
772
- if ( ! empty( $theThumbnail ) ) {
773
- $theThumbnail = $this->feedzy_image_encode( $theThumbnail );
774
- $contentThumb .= '<span class="fetched" style="background-image: url(\'' . $theThumbnail . '\');" title="' . esc_html( $item->get_title() ) . '"></span>';
775
  }
776
  if ( $sc['thumb'] == 'yes' ) {
777
- $contentThumb .= '<span class="default" style="background-image:url(' . $sc['default'] . ');" title="' . esc_html( $item->get_title() ) . '"></span>';
778
  }
779
  }
780
- $contentThumb = apply_filters( 'feedzy_thumb_output', $contentThumb, $feedURL, $sizes, $item );
781
  } else {
782
- $contentThumb = '';
783
- $contentThumb .= '<span class="default" style="width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px; background-image:url(' . $sc['default'] . ');" title="' . $item->get_title() . '"></span>';
784
- $contentThumb = apply_filters( 'feedzy_thumb_output', $contentThumb, $feedURL, $sizes, $item );
785
  }
786
- $contentTitle = '';
787
  if ( is_numeric( $sc['title'] ) && strlen( $item->get_title() ) > $sc['title'] ) {
788
- $contentTitle .= preg_replace( '/\s+?(\S+)?$/', '', substr( $item->get_title(), 0, $sc['title'] ) ) . '...';
789
  } else {
790
- $contentTitle .= $item->get_title();
791
  }
792
- $contentTitle = apply_filters( 'feedzy_title_output', $contentTitle, $feedURL, $item );
793
  // Define Meta args
794
- $metaArgs = array(
795
  'author' => true,
796
  'date' => true,
797
  'date_format' => get_option( 'date_format' ),
798
  'time_format' => get_option( 'time_format' ),
799
  );
800
  // Filter: feedzy_meta_args
801
- $metaArgs = apply_filters( 'feedzy_meta_args', $metaArgs, $feedURL, $item );
802
- $contentMeta = '';
803
- if ( $sc['meta'] == 'yes' && ( $metaArgs['author'] || $metaArgs['date'] ) ) {
804
- $contentMeta = '';
805
- if ( $item->get_author() && $metaArgs['author'] ) {
806
  $author = $item->get_author();
807
- if ( ! $authorName = $author->get_name() ) {
808
- $authorName = $author->get_email();
809
  }
810
 
811
- $authorName = apply_filters( 'feedzy_author_name', $authorName, $feedURL, $item );
812
 
813
- if ( $authorName ) {
814
- $domain = parse_url( $newLink );
815
- $authorURL = '//' . $domain['host'];
816
- $authorURL = apply_filters( 'feedzy_author_url', $authorURL, $authorName, $feedURL, $item );
817
- $contentMeta .= __( 'by', 'feedzy-rss-feeds' ) . ' <a href="' . $authorURL . '" target="' . $sc['target'] . '" title="' . $domain['host'] . '" >' . $authorName . '</a> ';
818
  }
819
  }
820
- if ( $metaArgs['date'] ) {
821
  $date_time = $item->get_date( 'U' );
822
- $date_time = apply_filters( 'feedzy_feed_timestamp', $date_time, $feedURL, $item );
823
- if ( ! empty( $metaArgs['date_format'] ) ) {
824
- $contentMeta .= __( 'on', 'feedzy-rss-feeds' ) . ' ' . date_i18n( $metaArgs['date_format'], $date_time );
825
- $contentMeta .= ' ';
826
  }
827
- if ( ! empty( $metaArgs['time_format'] ) ) {
828
- $contentMeta .= __( 'at', 'feedzy-rss-feeds' ) . ' ' . date_i18n( $metaArgs['time_format'], $date_time );
829
  }
830
  }
831
  }
832
- $contentMeta = apply_filters( 'feedzy_meta_output', $contentMeta, $feedURL, $item );
833
- $contentSummary = '';
834
  if ( $sc['summary'] == 'yes' ) {
835
- $contentSummary = '';
836
  $description = $item->get_description();
837
- $description = apply_filters( 'feedzy_summary_input', $description, $item->get_content(), $feedURL, $item );
838
  if ( is_numeric( $sc['summarylength'] ) && strlen( $description ) > $sc['summarylength'] ) {
839
- $contentSummary .= preg_replace( '/\s+?(\S+)?$/', '', substr( $description, 0, $sc['summarylength'] ) ) . ' […]';
840
  } else {
841
- $contentSummary .= $description . ' […]';
842
  }
843
- $contentSummary = apply_filters( 'feedzy_summary_output', $contentSummary, $newLink, $feedURL, $item );
844
  }
845
- $itemArray = array(
846
  'item_img_class' => 'rss_image',
847
  'item_img_style' => 'width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px;',
848
- 'item_url' => $newLink,
849
  'item_url_target' => $sc['target'],
850
- 'item_url_follow' => 'no' === $sc['follow'] ? 'nofollow' : '',
851
  'item_url_title' => $item->get_title(),
852
- 'item_img' => $contentThumb,
853
  'item_img_path' => $this->feedzy_retrieve_image( $item, $sc ),
854
- 'item_title' => $contentTitle,
855
  'item_content_class' => 'rss_content',
856
  'item_content_style' => '',
857
- 'item_meta' => $contentMeta,
858
  'item_date' => $item->get_date( 'U' ),
859
  'item_author' => $item->get_author(),
860
- 'item_description' => $contentSummary,
861
  'item_content' => apply_filters( 'feedzy_content', $item->get_content( false ), $item ),
862
  );
863
- $itemArray = apply_filters( 'feedzy_item_filter', $itemArray, $item, $sc, $index );
864
 
865
- return $itemArray;
866
  }
867
 
868
  /**
@@ -876,72 +886,72 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
876
  *
877
  * @return string
878
  */
879
- public function feedzy_retrieve_image( $item, $sc ) {
880
- $theThumbnail = '';
881
  if ( $enclosures = $item->get_enclosures() ) {
882
  foreach ( (array) $enclosures as $enclosure ) {
883
  // Item thumbnail
884
  if ( $thumbnail = $enclosure->get_thumbnail() ) {
885
- $theThumbnail = $thumbnail;
886
  }
887
  if ( isset( $enclosure->thumbnails ) ) {
888
  foreach ( (array) $enclosure->thumbnails as $thumbnail ) {
889
- $theThumbnail = $thumbnail;
890
  }
891
  }
892
  if ( $thumbnail = $enclosure->embed() ) {
893
  $pattern = '/https?:\/\/.*\.(?:jpg|JPG|jpeg|JPEG|jpe|JPE|gif|GIF|png|PNG)/i';
894
  if ( preg_match( $pattern, $thumbnail, $matches ) ) {
895
- $theThumbnail = $matches[0];
896
  }
897
  }
898
  foreach ( (array) $enclosure->get_link() as $thumbnail ) {
899
  $pattern = '/https?:\/\/.*\.(?:jpg|JPG|jpeg|JPEG|jpe|JPE|gif|GIF|png|PNG)/i';
900
  $imgsrc = $thumbnail;
901
  if ( preg_match( $pattern, $imgsrc, $matches ) ) {
902
- $theThumbnail = $thumbnail;
903
  break;
904
  }
905
  }
906
  // Break loop if thumbnail is found
907
- if ( ! empty( $theThumbnail ) ) {
908
  break;
909
  }
910
  }
911
  }
912
  // xmlns:itunes podcast
913
- if ( empty( $theThumbnail ) ) {
914
  $data = $item->get_item_tags( 'http://www.itunes.com/dtds/podcast-1.0.dtd', 'image' );
915
  if ( isset( $data['0']['attribs']['']['href'] ) && ! empty( $data['0']['attribs']['']['href'] ) ) {
916
- $theThumbnail = $data['0']['attribs']['']['href'];
917
  }
918
  }
919
  // Content image
920
- if ( empty( $theThumbnail ) ) {
921
- $feedDescription = $item->get_content();
922
- $theThumbnail = $this->feedzy_return_image( $feedDescription );
923
  }
924
  // Description image
925
- if ( empty( $theThumbnail ) ) {
926
- $feedDescription = $item->get_description();
927
- $theThumbnail = $this->feedzy_return_image( $feedDescription );
928
  }
929
 
930
  // handle HTTP images.
931
- if ( 0 === strpos( $theThumbnail, 'http://' ) ) {
932
  switch ( $sc['http'] ) {
933
  case 'https':
934
- $theThumbnail = str_replace( 'http://', 'https://', $theThumbnail );
935
  break;
936
  case 'default':
937
- $theThumbnail = $sc['default'];
938
  break;
939
  }
940
  }
941
 
942
- $theThumbnail = apply_filters( 'feedzy_retrieve_image', $theThumbnail, $item );
943
 
944
- return $theThumbnail;
945
  }
946
 
947
  /**
@@ -1058,9 +1068,9 @@ abstract class Feedzy_Rss_Feeds_Admin_Abstract {
1058
  // Check if img url is set as an URL parameter
1059
  $url_tab = parse_url( $string );
1060
  if ( isset( $url_tab['query'] ) ) {
1061
- preg_match_all( '/(http|https):\/\/[^ ]+(\.gif|\.GIF|\.jpg|\.JPG|\.jpeg|\.JPEG|\.png|\.PNG)/', $url_tab['query'], $imgUrl );
1062
- if ( isset( $imgUrl[0][0] ) ) {
1063
- $string = $imgUrl[0][0];
1064
  }
1065
  }
1066
 
27
  * @since 3.0.0
28
  * @access public
29
  *
30
+ * @param string $image_src The image source, currently not used.
31
  *
32
  * @return string
33
  */
34
+ public function feedzy_define_default_image( $image_src ) {
35
+ $default_img = FEEDZY_ABSURL . '/img/feedzy-default.jpg';
36
 
37
+ return apply_filters( 'feedzy_define_default_image_filter', $default_img );
38
  }
39
 
40
  /**
47
  * @access public
48
  *
49
  * @param object $error The error Object.
50
+ * @param string $feed_url The feed URL.
51
  *
52
  * @return string
53
  */
54
+ public function feedzy_default_error_notice( $error, $feed_url ) {
55
+ error_log( 'Feedzy RSS Feeds - related feed: ' . print_r( $feed_url, true ) . ' - Error message: ' . $this->feedzy_array_obj_string( $error ) );
56
 
57
+ return '<div id="message" class="error" data-error"' . esc_attr( $this->feedzy_array_obj_string( $error ) ) . '"><p>' . __( 'Sorry, this feed is currently unavailable or does not exist anymore.', 'feedzy-rss-feeds' ) . '</p></div>';
58
  }
59
 
60
  /**
81
  * @since 3.0.0
82
  * @access public
83
  *
84
+ * @param string $item_attr The item attribute.
85
  * @param array $sizes An array with the current sizes.
86
  *
87
  * @return string
88
  */
89
+ public function feedzy_add_item_padding( $item_attr, $sizes ) {
90
+ $padding_top = number_format( ( 15 / 150 ) * $sizes['height'], 0 );
91
+ $padding_bottom = number_format( ( 25 / 150 ) * $sizes['height'], 0 );
92
+ $style_padding = ' style="padding: ' . $padding_top . 'px 0 ' . $padding_bottom . 'px"';
93
 
94
+ return $item_attr . $style_padding;
95
  }
96
 
97
  /**
100
  * @since 3.0.0
101
  * @access public
102
  *
103
+ * @param string $item_attr The item attribute.
104
  * @param string $sizes The item sizes.
105
  * @param string $item The feed item.
106
+ * @param string $feed_url The feed URL.
107
  * @param string $sc The short code attributes.
108
  *
109
  * @return string
110
  */
111
+ public function feedzy_classes_item( $item_attr = '', $sizes = '', $item = '', $feed_url = '', $sc = '' ) {
112
  $classes = array( 'rss_item' );
113
  $classes = apply_filters( 'feedzy_add_classes_item', $classes, $sc );
114
  $classes = ' class="' . implode( ' ', $classes ) . '"';
115
 
116
+ return $item_attr . $classes;
117
  }
118
 
119
  /**
124
  *
125
  * @param string $description The feed description.
126
  * @param string $content The feed description.
127
+ * @param string $feed_url The feed URL.
128
  *
129
  * @return string
130
  */
131
+ public function feedzy_summary_input_filter( $description, $content, $feed_url ) {
132
  $description = trim( strip_tags( $description ) );
133
  $description = trim( chop( $description, '[&hellip;]' ) );
134
 
144
  * @param boolean $continue A boolean to stop the script.
145
  * @param array $sc The shortcode attributes.
146
  * @param object $item The feed item.
147
+ * @param string $feed_url The feed URL.
148
  *
149
  * @return boolean
150
  */
151
+ public function feedzy_feed_item_keywords_title( $continue, $sc, $item, $feed_url ) {
152
  if ( feedzy_is_new() && ! feedzy_is_pro() ) {
153
  return true;
154
  }
186
  public function feedzy_include_thumbnail_rss() {
187
  global $post;
188
  if ( has_post_thumbnail( $post->ID ) ) {
189
+ $post_thumbnail_id = get_post_thumbnail_id( $post->ID );
190
+ $attachment_meta = wp_get_attachment_metadata( $post_thumbnail_id );
191
+ $image_url = wp_get_attachment_image_src( $post_thumbnail_id, 'medium' );
192
+ echo '<enclosure url="' . $image_url[0] . '" length="' . filesize( get_attached_file( $post_thumbnail_id ) ) . '" type="image/jpg" />';
193
+ echo '<media:content url="' . $image_url[0] . '" width="' . $attachment_meta['sizes']['medium']['width'] . '" height="' . $attachment_meta['sizes']['medium']['height'] . '" medium="image" type="' . $attachment_meta['sizes']['medium']['mime-type'] . '" />';
194
 
195
  }
196
  }
241
  */
242
  public function feedzy_rss( $atts, $content = '' ) {
243
  $sc = $this->get_short_code_attributes( $atts );
244
+ $feed_url = $this->normalize_urls( $sc['feeds'] );
245
  $cache = $sc['refresh'];
246
+ $feed = $this->fetch_feed( $feed_url, $cache, $sc );
247
  if ( is_string( $feed ) ) {
248
  return $feed;
249
  }
250
+ $sc = $this->sanitize_attr( $sc, $feed_url );
251
+ $content = $this->render_content( $sc, $feed, $content, $feed_url );
252
 
253
  return $content;
254
  }
299
  // sorting.
300
  'http' => 'auto',
301
  // http images, https = force https|default = fall back to default image|auto = continue as it is
302
+ 'error_empty' => 'Feed has no items.',
303
+ // message to show when feed is empty
304
  ),
305
  $atts,
306
  'feedzy_default'
314
  * Validate feeds attribute.
315
  *
316
  * @since 3.0.0
317
+ * @updated 3.1.7 Take into account $feed_url as array from PRO version.
318
  *
319
  * @param string $raw Url or list of urls.
320
  *
322
  */
323
  public function normalize_urls( $raw ) {
324
  $feeds = apply_filters( 'feedzy_process_feed_source', $raw );
325
+ $feed_url = apply_filters( 'feedzy_get_feed_url', $feeds );
326
+ if ( is_array( $feed_url ) ) {
327
+ foreach ( $feed_url as $index => $url ) {
328
+ $feed_url[ $index ] = $this->smart_convert( $url );
329
  }
330
  } else {
331
+ $feed_url = $this->smart_convert( $feed_url );
332
  }
333
 
334
+ return $feed_url;
335
  }
336
 
337
  /**
367
  * @access public
368
  * @updated 3.2.0
369
  *
370
+ * @param array $feed_url The feeds urls to fetch content from.
371
  * @param string $cache The cache string (eg. 1_hour, 30_min etc.).
372
  * @param array $sc The shortcode attributes.
373
  *
374
  * @return SimplePie|string|void|WP_Error The feed resource.
375
  */
376
+ public function fetch_feed( $feed_url, $cache = '12_hours', $sc ) {
377
  // Load SimplePie if not already
378
+ do_action( 'feedzy_pre_http_setup', $feed_url );
379
 
380
  // Load SimplePie Instance
381
+ $feed = $this->init_feed( $feed_url, $cache, $sc ); // Not used as log as #41304 is Opened.
382
 
383
  // Report error when is an error loading the feed
384
  if ( is_wp_error( $feed ) ) {
385
  // Fallback for different edge cases.
386
+ if ( is_array( $feed_url ) ) {
387
+ $feed_url = array_map( 'html_entity_decode', $feed_url );
388
  } else {
389
+ $feed_url = html_entity_decode( $feed_url );
390
  }
391
 
392
+ $feed_url = $this->get_valid_feed_urls( $feed_url, $cache );
393
 
394
+ $feed = $this->init_feed( $feed_url, $cache, $sc ); // Not used as log as #41304 is Opened.
395
 
396
  }
397
 
398
+ do_action( 'feedzy_post_http_teardown', $feed_url );
399
 
400
  // var_dump( $feed );
401
  return $feed;
412
  * @since 3.1.7
413
  * @access private
414
  *
415
+ * @param string $feed_url The feed URL.
416
  * @param string $cache The cache string (eg. 1_hour, 30_min etc.).
417
  * @param array $sc The shortcode attributes.
418
  *
419
  * @return SimplePie
420
  */
421
+ private function init_feed( $feed_url, $cache, $sc ) {
422
  $unit_defaults = array(
423
  'mins' => MINUTE_IN_SECONDS,
424
  'hours' => HOUR_IN_SECONDS,
444
  );
445
  }
446
  $feed->set_file_class( 'WP_SimplePie_File' );
447
+ $default_agent = $this->get_default_user_agent( $feed_url );
448
  $feed->set_useragent( apply_filters( 'http_headers_useragent', $default_agent ) );
449
  if ( ! FEEDZY_DISABLE_CACHE_FOR_TESTING ) {
450
  $feed->set_cache_class( 'WP_Feed_Cache' );
451
+ $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', $cache_time, $feed_url ) );
452
  }
453
 
454
  $feed->force_feed( apply_filters( 'feedzy_force_feed', true ) );
458
 
459
  // set the url as the last step, because we need to be able to close this feed without the url being set
460
  // so that we can fall back to raw data in case of an error
461
+ $feed->set_feed_url( $feed_url );
462
  $feed->init();
463
 
464
  $error = $feed->error();
465
  if ( ! empty( $error ) ) {
466
  do_action( 'themeisle_log_event', FEEDZY_NAME, sprintf( 'Error while parsing feed: %s', print_r( $error, true ) ), 'error', __FILE__, __LINE__ );
467
 
468
+ if ( is_string( $feed_url ) || ( is_array( $feed_url ) && 1 === count( $feed_url ) ) ) {
469
  do_action( 'themeisle_log_event', FEEDZY_NAME, 'Trying to use raw data', 'debug', __FILE__, __LINE__ );
470
+ $data = wp_remote_retrieve_body( wp_remote_get( $feed_url, array( 'user-agent' => $default_agent ) ) );
471
  $cloned_feed->set_raw_data( $data );
472
  $cloned_feed->init();
473
  $feed = $cloned_feed;
506
  * @since 3.2.0
507
  * @access private
508
  *
509
+ * @param array|string $feed_url The feeds URL/s.
510
  * @param string $cache The cache string (eg. 1_hour, 30_min etc.).
511
  *
512
  * @return array
513
  */
514
+ private function get_valid_feed_urls( $feed_url, $cache ) {
515
+ $valid_feed_url = array();
516
+ if ( is_array( $feed_url ) ) {
517
+ foreach ( $feed_url as $url ) {
518
  if ( $this->check_valid_xml( $url, $cache ) ) {
519
+ $valid_feed_url[] = $url;
520
  } else {
521
  echo sprintf( __( 'Feed URL: %s not valid and removed from fetch.', 'feedzy-rss-feeds' ), '<b>' . $url . '</b>' );
522
  }
523
  }
524
  } else {
525
+ if ( $this->check_valid_xml( $feed_url, $cache ) ) {
526
+ $valid_feed_url[] = $feed_url;
527
  } else {
528
+ echo sprintf( __( 'Feed URL: %s not valid and removed from fetch.', 'feedzy-rss-feeds' ), '<b>' . $feed_url . '</b>' );
529
  }
530
  }
531
 
532
+ return $valid_feed_url;
533
  }
534
 
535
  /**
559
  * @access public
560
  *
561
  * @param array $sc The shorcode attributes array.
562
+ * @param string $feed_url The feed url.
563
  *
564
  * @return mixed
565
  */
566
+ public function sanitize_attr( $sc, $feed_url ) {
567
  if ( $sc['max'] == '0' ) {
568
  $sc['max'] = '999';
569
  } elseif ( empty( $sc['max'] ) || ! ctype_digit( $sc['max'] ) ) {
587
  $sc['summarylength'] = '';
588
  }
589
  if ( empty( $sc['default'] ) ) {
590
+ $sc['default'] = apply_filters( 'feedzy_default_image', $sc['default'], $feed_url );
591
  }
592
 
593
  return $sc;
597
  * Render the content to be displayed
598
  *
599
  * @since 3.0.0
600
+ * @access private
601
  *
602
  * @param array $sc The shorcode attributes array.
603
  * @param object $feed The feed object.
604
  * @param string $content The original content.
605
+ * @param string $feed_url The feed url.
606
  *
607
  * @return string
608
  */
609
+ private function render_content( $sc, $feed, $content = '', $feed_url ) {
610
  $count = 0;
611
  $sizes = array(
612
  'width' => $sc['size'],
613
  'height' => $sc['size'],
614
  );
615
+ $sizes = apply_filters( 'feedzy_thumb_sizes', $sizes, $feed_url );
616
  $feed_title['use_title'] = false;
617
  if ( $sc['feed_title'] == 'yes' ) {
618
  $feed_title = $this->get_feed_title_filter( $feed );
619
  $feed_title['use_title'] = true;
620
  }
621
+ // Display the error message and quit (before showing the template for pro).
622
  if ( $feed->error() ) {
623
+ return apply_filters( 'feedzy_default_error', $feed->error(), $feed_url );
624
  }
625
+
626
+ $feed_items = apply_filters( 'feedzy_get_feed_array', array(), $sc, $feed, $feed_url, $sizes );
627
  $content = '<div class="feedzy-rss">';
628
  if ( $feed_title['use_title'] ) {
629
  $content .= '<div class="rss_header">';
630
+ $content .= '<h2><a href="' . $feed->get_permalink() . '" class="rss_title" rel="noopener">' . html_entity_decode( $feed->get_title() ) . '</a> <span class="rss_description"> ' . $feed->get_description() . '</span></h2>';
631
  $content .= '</div>';
632
  }
633
  $content .= '<ul>';
634
+
635
+ // Display the error message and quit (before showing the template for pro).
636
+ if ( empty( $feed_items ) ) {
637
+ $content .= $sc['error_empty'];
638
+ return $content;
639
+ }
640
+
641
+ $anchor1 = '<a href="%s" target="%s" rel="%s noopener" title="%s" style="%s">%s</a>';
642
+ $anchor2 = '<a href="%s" target="%s" rel="%s noopener">%s</a>';
643
  foreach ( $feed_items as $item ) {
644
  $content .= '
645
  <li ' . $item['itemAttr'] . '>
695
  * @return array|mixed
696
  */
697
  public function get_feed_url( $feeds ) {
698
+ $feed_url = '';
699
  if ( ! empty( $feeds ) ) {
700
  $feeds = rtrim( $feeds, ',' );
701
  $feeds = explode( ',', $feeds );
702
+ $feed_url = array();
703
  // Remove SSL from HTTP request to prevent fetching errors
704
  foreach ( $feeds as $feed ) {
705
  if ( FEEDZY_ALLOW_HTTPS ) {
706
+ $feed_url[] = $feed;
707
  } else {
708
+ $feed_url[] = preg_replace( '/^https:/i', 'http:', $feed );
709
  }
710
  // scheme-less URLs.
711
  if ( strpos( $feed, 'http' ) !== 0 ) {
712
  $feed = 'http://' . $feed;
713
  }
714
  }
715
+ if ( count( $feed_url ) === 1 ) {
716
+ $feed_url = $feed_url[0];
717
  }
718
  }
719
 
720
+ return $feed_url;
721
  }
722
 
723
  /**
730
  * @param array $feed_items The feed items array.
731
  * @param array $sc The short code attributes.
732
  * @param object $feed The feed object.
733
+ * @param string $feed_url The feed URL source/s.
734
  * @param array $sizes Sizes array.
735
  *
736
  * @return array
737
  */
738
+ public function get_feed_array( $feed_items, $sc, $feed, $feed_url, $sizes ) {
739
  $count = 0;
740
+ $items = apply_filters( 'feedzy_feed_items', $feed->get_items(), $feed_url );
741
  foreach ( (array) $items as $item ) {
742
+ $continue = apply_filters( 'feedzy_item_keyword', true, $sc, $item, $feed_url );
743
  if ( $continue == true ) {
744
  // Count items. This should be > and not >= because max, when not defined and empty, becomes 0.
745
  if ( $count >= $sc['max'] ) {
746
  break;
747
  }
748
+ $item_attr = apply_filters( 'feedzy_item_attributes', $item_attr = '', $sizes, $item, $feed_url, $sc );
749
+ $feed_items[ $count ] = $this->get_feed_item_filter( $sc, $sizes, $item, $feed_url, $count );
750
+ $feed_items[ $count ]['itemAttr'] = $item_attr;
751
  $count ++;
752
  }
753
  }
764
  * @param array $sc The shorcode attributes array.
765
  * @param array $sizes The sizes array.
766
  * @param object $item The feed item object.
767
+ * @param string $feed_url The feed url.
768
  * @param int $index The item number.
769
  *
770
  * @return array
771
  */
772
+ private function get_feed_item_filter( $sc, $sizes, $item, $feed_url, $index ) {
773
+ $item_link = $item->get_permalink();
774
+ $new_link = apply_filters( 'feedzy_item_url_filter', $item_link, $sc, $item );
775
  // Fetch image thumbnail
776
  if ( $sc['thumb'] == 'yes' || $sc['thumb'] == 'auto' ) {
777
+ $the_thumbnail = $this->feedzy_retrieve_image( $item, $sc );
778
  }
779
  if ( $sc['thumb'] == 'yes' || $sc['thumb'] == 'auto' ) {
780
+ $content_thumb = '';
781
+ if ( ( ! empty( $the_thumbnail ) && $sc['thumb'] == 'auto' ) || $sc['thumb'] == 'yes' ) {
782
+ if ( ! empty( $the_thumbnail ) ) {
783
+ $the_thumbnail = $this->feedzy_image_encode( $the_thumbnail );
784
+ $content_thumb .= '<span class="fetched" style="background-image: url(\'' . $the_thumbnail . '\');" title="' . esc_html( $item->get_title() ) . '"></span>';
785
  }
786
  if ( $sc['thumb'] == 'yes' ) {
787
+ $content_thumb .= '<span class="default" style="background-image:url(' . $sc['default'] . ');" title="' . esc_html( $item->get_title() ) . '"></span>';
788
  }
789
  }
790
+ $content_thumb = apply_filters( 'feedzy_thumb_output', $content_thumb, $feed_url, $sizes, $item );
791
  } else {
792
+ $content_thumb = '';
793
+ $content_thumb .= '<span class="default" style="width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px; background-image:url(' . $sc['default'] . ');" title="' . $item->get_title() . '"></span>';
794
+ $content_thumb = apply_filters( 'feedzy_thumb_output', $content_thumb, $feed_url, $sizes, $item );
795
  }
796
+ $content_title = '';
797
  if ( is_numeric( $sc['title'] ) && strlen( $item->get_title() ) > $sc['title'] ) {
798
+ $content_title .= preg_replace( '/\s+?(\S+)?$/', '', substr( $item->get_title(), 0, $sc['title'] ) ) . '...';
799
  } else {
800
+ $content_title .= $item->get_title();
801
  }
802
+ $content_title = apply_filters( 'feedzy_title_output', $content_title, $feed_url, $item );
803
  // Define Meta args
804
+ $meta_args = array(
805
  'author' => true,
806
  'date' => true,
807
  'date_format' => get_option( 'date_format' ),
808
  'time_format' => get_option( 'time_format' ),
809
  );
810
  // Filter: feedzy_meta_args
811
+ $meta_args = apply_filters( 'feedzy_meta_args', $meta_args, $feed_url, $item );
812
+ $content_meta = '';
813
+ if ( $sc['meta'] == 'yes' && ( $meta_args['author'] || $meta_args['date'] ) ) {
814
+ $content_meta = '';
815
+ if ( $item->get_author() && $meta_args['author'] ) {
816
  $author = $item->get_author();
817
+ if ( ! $author_name = $author->get_name() ) {
818
+ $author_name = $author->get_email();
819
  }
820
 
821
+ $author_name = apply_filters( 'feedzy_author_name', $author_name, $feed_url, $item );
822
 
823
+ if ( $author_name ) {
824
+ $domain = parse_url( $new_link );
825
+ $author_url = '//' . $domain['host'];
826
+ $author_url = apply_filters( 'feedzy_author_url', $author_url, $author_name, $feed_url, $item );
827
+ $content_meta .= __( 'by', 'feedzy-rss-feeds' ) . ' <a href="' . $author_url . '" target="' . $sc['target'] . '" title="' . $domain['host'] . '" >' . $author_name . '</a> ';
828
  }
829
  }
830
+ if ( $meta_args['date'] ) {
831
  $date_time = $item->get_date( 'U' );
832
+ $date_time = apply_filters( 'feedzy_feed_timestamp', $date_time, $feed_url, $item );
833
+ if ( ! empty( $meta_args['date_format'] ) ) {
834
+ $content_meta .= __( 'on', 'feedzy-rss-feeds' ) . ' ' . date_i18n( $meta_args['date_format'], $date_time );
835
+ $content_meta .= ' ';
836
  }
837
+ if ( ! empty( $meta_args['time_format'] ) ) {
838
+ $content_meta .= __( 'at', 'feedzy-rss-feeds' ) . ' ' . date_i18n( $meta_args['time_format'], $date_time );
839
  }
840
  }
841
  }
842
+ $content_meta = apply_filters( 'feedzy_meta_output', $content_meta, $feed_url, $item );
843
+ $content_summary = '';
844
  if ( $sc['summary'] == 'yes' ) {
845
+ $content_summary = '';
846
  $description = $item->get_description();
847
+ $description = apply_filters( 'feedzy_summary_input', $description, $item->get_content(), $feed_url, $item );
848
  if ( is_numeric( $sc['summarylength'] ) && strlen( $description ) > $sc['summarylength'] ) {
849
+ $content_summary .= preg_replace( '/\s+?(\S+)?$/', '', substr( $description, 0, $sc['summarylength'] ) ) . ' […]';
850
  } else {
851
+ $content_summary .= $description . ' […]';
852
  }
853
+ $content_summary = apply_filters( 'feedzy_summary_output', $content_summary, $new_link, $feed_url, $item );
854
  }
855
+ $item_array = array(
856
  'item_img_class' => 'rss_image',
857
  'item_img_style' => 'width:' . $sizes['width'] . 'px; height:' . $sizes['height'] . 'px;',
858
+ 'item_url' => $new_link,
859
  'item_url_target' => $sc['target'],
860
+ 'item_url_follow' => isset( $sc['follow'] ) && 'no' === $sc['follow'] ? 'nofollow' : '',
861
  'item_url_title' => $item->get_title(),
862
+ 'item_img' => $content_thumb,
863
  'item_img_path' => $this->feedzy_retrieve_image( $item, $sc ),
864
+ 'item_title' => $content_title,
865
  'item_content_class' => 'rss_content',
866
  'item_content_style' => '',
867
+ 'item_meta' => $content_meta,
868
  'item_date' => $item->get_date( 'U' ),
869
  'item_author' => $item->get_author(),
870
+ 'item_description' => $content_summary,
871
  'item_content' => apply_filters( 'feedzy_content', $item->get_content( false ), $item ),
872
  );
873
+ $item_array = apply_filters( 'feedzy_item_filter', $item_array, $item, $sc, $index );
874
 
875
+ return $item_array;
876
  }
877
 
878
  /**
886
  *
887
  * @return string
888
  */
889
+ public function feedzy_retrieve_image( $item, $sc = null ) {
890
+ $the_thumbnail = '';
891
  if ( $enclosures = $item->get_enclosures() ) {
892
  foreach ( (array) $enclosures as $enclosure ) {
893
  // Item thumbnail
894
  if ( $thumbnail = $enclosure->get_thumbnail() ) {
895
+ $the_thumbnail = $thumbnail;
896
  }
897
  if ( isset( $enclosure->thumbnails ) ) {
898
  foreach ( (array) $enclosure->thumbnails as $thumbnail ) {
899
+ $the_thumbnail = $thumbnail;
900
  }
901
  }
902
  if ( $thumbnail = $enclosure->embed() ) {
903
  $pattern = '/https?:\/\/.*\.(?:jpg|JPG|jpeg|JPEG|jpe|JPE|gif|GIF|png|PNG)/i';
904
  if ( preg_match( $pattern, $thumbnail, $matches ) ) {
905
+ $the_thumbnail = $matches[0];
906
  }
907
  }
908
  foreach ( (array) $enclosure->get_link() as $thumbnail ) {
909
  $pattern = '/https?:\/\/.*\.(?:jpg|JPG|jpeg|JPEG|jpe|JPE|gif|GIF|png|PNG)/i';
910
  $imgsrc = $thumbnail;
911
  if ( preg_match( $pattern, $imgsrc, $matches ) ) {
912
+ $the_thumbnail = $thumbnail;
913
  break;
914
  }
915
  }
916
  // Break loop if thumbnail is found
917
+ if ( ! empty( $the_thumbnail ) ) {
918
  break;
919
  }
920
  }
921
  }
922
  // xmlns:itunes podcast
923
+ if ( empty( $the_thumbnail ) ) {
924
  $data = $item->get_item_tags( 'http://www.itunes.com/dtds/podcast-1.0.dtd', 'image' );
925
  if ( isset( $data['0']['attribs']['']['href'] ) && ! empty( $data['0']['attribs']['']['href'] ) ) {
926
+ $the_thumbnail = $data['0']['attribs']['']['href'];
927
  }
928
  }
929
  // Content image
930
+ if ( empty( $the_thumbnail ) ) {
931
+ $feed_description = $item->get_content();
932
+ $the_thumbnail = $this->feedzy_return_image( $feed_description );
933
  }
934
  // Description image
935
+ if ( empty( $the_thumbnail ) ) {
936
+ $feed_description = $item->get_description();
937
+ $the_thumbnail = $this->feedzy_return_image( $feed_description );
938
  }
939
 
940
  // handle HTTP images.
941
+ if ( $sc && 0 === strpos( $the_thumbnail, 'http://' ) ) {
942
  switch ( $sc['http'] ) {
943
  case 'https':
944
+ $the_thumbnail = str_replace( 'http://', 'https://', $the_thumbnail );
945
  break;
946
  case 'default':
947
+ $the_thumbnail = $sc['default'];
948
  break;
949
  }
950
  }
951
 
952
+ $the_thumbnail = apply_filters( 'feedzy_retrieve_image', $the_thumbnail, $item );
953
 
954
+ return $the_thumbnail;
955
  }
956
 
957
  /**
1068
  // Check if img url is set as an URL parameter
1069
  $url_tab = parse_url( $string );
1070
  if ( isset( $url_tab['query'] ) ) {
1071
+ preg_match_all( '/(http|https):\/\/[^ ]+(\.gif|\.GIF|\.jpg|\.JPG|\.jpeg|\.JPEG|\.png|\.PNG)/', $url_tab['query'], $img_url );
1072
+ if ( isset( $img_url[0][0] ) ) {
1073
+ $string = $img_url[0][0];
1074
  }
1075
  }
1076
 
includes/admin/feedzy-rss-feeds-ui-lang.php CHANGED
@@ -174,6 +174,12 @@ class Feedzy_Rss_Feeds_Ui_Lang {
174
  ),
175
  ),
176
  ),
 
 
 
 
 
 
177
  ),
178
  ),
179
  'section_item' => array(
@@ -380,6 +386,7 @@ class Feedzy_Rss_Feeds_Ui_Lang {
380
  'type' => 'text',
381
  'disabled' => true,
382
  'value' => '',
 
383
  ),
384
  'template' => array(
385
  'label' => __( 'Template to use when displaying the feed.', 'feedzy-rss-feeds' ),
@@ -428,5 +435,5 @@ class Feedzy_Rss_Feeds_Ui_Lang {
428
 
429
  }
430
 
431
- $feedzyLangClass = new Feedzy_Rss_Feeds_Ui_Lang();
432
- $strings = $feedzyLangClass->feedzy_tinymce_translation();
174
  ),
175
  ),
176
  ),
177
+ 'error_empty' => array(
178
+ 'label' => __( 'Message to show when feed is empty', 'feedzy-rss-feeds' ),
179
+ 'placeholder' => __( 'Feed has no items.', 'feedzy-rss-feeds' ),
180
+ 'type' => 'text',
181
+ 'value' => '',
182
+ ),
183
  ),
184
  ),
185
  'section_item' => array(
386
  'type' => 'text',
387
  'disabled' => true,
388
  'value' => '',
389
+ 'placeholder' => '',
390
  ),
391
  'template' => array(
392
  'label' => __( 'Template to use when displaying the feed.', 'feedzy-rss-feeds' ),
435
 
436
  }
437
 
438
+ $feedzy_lang_class = new Feedzy_Rss_Feeds_Ui_Lang();
439
+ $strings = $feedzy_lang_class->feedzy_tinymce_translation();
includes/feedzy-rss-feeds.php CHANGED
@@ -104,7 +104,7 @@ class Feedzy_Rss_Feeds {
104
  */
105
  public function init() {
106
  self::$plugin_name = 'feedzy-rss-feeds';
107
- self::$version = '3.3.2';
108
  self::$instance->load_dependencies();
109
  self::$instance->set_locale();
110
  self::$instance->define_admin_hooks();
104
  */
105
  public function init() {
106
  self::$plugin_name = 'feedzy-rss-feeds';
107
+ self::$version = '3.3.3';
108
  self::$instance->load_dependencies();
109
  self::$instance->set_locale();
110
  self::$instance->define_admin_hooks();
includes/gutenberg/feedzy-rss-feeds-gutenberg-block.php CHANGED
@@ -195,7 +195,7 @@ class Feedzy_Rss_Feeds_Gutenberg_Block {
195
  $feed = $data['category'];
196
  }
197
 
198
- $metaArgs = array(
199
  'date_format' => get_option( 'date_format' ),
200
  'time_format' => get_option( 'time_format' ),
201
  );
@@ -238,8 +238,8 @@ class Feedzy_Rss_Feeds_Gutenberg_Block {
238
  'link' => ( ( $item->get_permalink() ) ? $item->get_permalink() : null ),
239
  'creator' => ( ( $item->get_author() ) ? $item->get_author()->get_name() : null ),
240
  'pubDate' => ( ( $item->get_date() ) ? $item->get_date( 'U' ) : null ),
241
- 'date' => ( ( $item->get_date() ) ? date_i18n( $metaArgs['date_format'], $item->get_date( 'U' ) ) : null ),
242
- 'time' => ( ( $item->get_date() ) ? date_i18n( $metaArgs['time_format'], $item->get_date( 'U' ) ) : null ),
243
  'description' => ( ( $item->get_description() ) ? $item->get_description() : null ),
244
  'thumbnail' => $admin->feedzy_retrieve_image( $item ),
245
  'price' => ( ( feedzy_is_pro() && $item_attrs['item_price'] ) ? $item_attrs['item_price'] : null ),
195
  $feed = $data['category'];
196
  }
197
 
198
+ $meta_args = array(
199
  'date_format' => get_option( 'date_format' ),
200
  'time_format' => get_option( 'time_format' ),
201
  );
238
  'link' => ( ( $item->get_permalink() ) ? $item->get_permalink() : null ),
239
  'creator' => ( ( $item->get_author() ) ? $item->get_author()->get_name() : null ),
240
  'pubDate' => ( ( $item->get_date() ) ? $item->get_date( 'U' ) : null ),
241
+ 'date' => ( ( $item->get_date() ) ? date_i18n( $meta_args['date_format'], $item->get_date( 'U' ) ) : null ),
242
+ 'time' => ( ( $item->get_date() ) ? date_i18n( $meta_args['time_format'], $item->get_date( 'U' ) ) : null ),
243
  'description' => ( ( $item->get_description() ) ? $item->get_description() : null ),
244
  'thumbnail' => $admin->feedzy_retrieve_image( $item ),
245
  'price' => ( ( feedzy_is_pro() && $item_attrs['item_price'] ) ? $item_attrs['item_price'] : null ),
includes/layouts/feedzy-support.php CHANGED
@@ -4,17 +4,18 @@
4
 
5
  <?php
6
  $active_tab = isset( $_REQUEST['tab'] ) ? sanitize_text_field( $_REQUEST['tab'] ) : 'help';
 
7
  ?>
8
 
9
  <h2 class="nav-tab-wrapper">
10
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=feedzy-support&tab=help' ) ); ?>"
11
  class="nav-tab <?php echo $active_tab == 'help' ? 'nav-tab-active' : ''; ?>"><?php _e( 'Support', 'feedzy-rss-feeds' ); ?></a>
12
  <?php
13
- if ( ! class_exists( 'Feedzy_Rss_Feeds_Pro' ) ) {
14
- ?>
15
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=feedzy-support&tab=more' ) ); ?>"
16
  class="nav-tab <?php echo $active_tab == 'more' ? 'nav-tab-active' : ''; ?>"><?php _e( 'More Features', 'feedzy-rss-feeds' ); ?></a>
17
- <?php
18
  }
19
  ?>
20
  </h2>
@@ -28,7 +29,7 @@
28
  load_template( FEEDZY_ABSPATH . '/includes/layouts/feedzy-tutorial.php' );
29
  break;
30
  case 'more':
31
- if ( ! class_exists( 'Feedzy_Rss_Feeds_Pro' ) ) {
32
  load_template( FEEDZY_ABSPATH . '/includes/layouts/feedzy-upsell.php' );
33
  }
34
  break;
4
 
5
  <?php
6
  $active_tab = isset( $_REQUEST['tab'] ) ? sanitize_text_field( $_REQUEST['tab'] ) : 'help';
7
+ $show_more = ! class_exists( 'Feedzy_Rss_Feeds_Pro' ) || false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' );
8
  ?>
9
 
10
  <h2 class="nav-tab-wrapper">
11
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=feedzy-support&tab=help' ) ); ?>"
12
  class="nav-tab <?php echo $active_tab == 'help' ? 'nav-tab-active' : ''; ?>"><?php _e( 'Support', 'feedzy-rss-feeds' ); ?></a>
13
  <?php
14
+ if ( $show_more ) {
15
+ ?>
16
  <a href="<?php echo esc_url( admin_url( 'admin.php?page=feedzy-support&tab=more' ) ); ?>"
17
  class="nav-tab <?php echo $active_tab == 'more' ? 'nav-tab-active' : ''; ?>"><?php _e( 'More Features', 'feedzy-rss-feeds' ); ?></a>
18
+ <?php
19
  }
20
  ?>
21
  </h2>
29
  load_template( FEEDZY_ABSPATH . '/includes/layouts/feedzy-tutorial.php' );
30
  break;
31
  case 'more':
32
+ if ( $show_more ) {
33
  load_template( FEEDZY_ABSPATH . '/includes/layouts/feedzy-upsell.php' );
34
  }
35
  break;
includes/layouts/feedzy-tutorial.php CHANGED
@@ -39,12 +39,14 @@ Layout For Tutorial Page of Feedzy RSS Feeds
39
  <h2>Grow your WordPress business with Feedzy today.</h4>
40
  <div class="header-btns">
41
  <?php
42
- if ( ! defined( 'FEEDZY_PRO_ABSURL' ) ) :
 
 
43
  ?>
44
- <a target="_blank" href="<?php echo FEEDZY_UPSELL_LINK; ?>" class="buy-now"><span
45
- class="dashicons dashicons-cart"></span> Get Feedzy Pro</a>
46
  <?php
47
- endif;
48
  ?>
49
  </div>
50
 
39
  <h2>Grow your WordPress business with Feedzy today.</h4>
40
  <div class="header-btns">
41
  <?php
42
+ $show_more = ! class_exists( 'Feedzy_Rss_Feeds_Pro' ) || false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' );
43
+
44
+ if ( $show_more ) {
45
  ?>
46
+ <a href="<?php echo esc_url( admin_url( 'admin.php?page=feedzy-support&tab=more' ) ); ?>" class="buy-now"><span
47
+ class="dashicons dashicons-cart"></span> Click here to see the additional features in Feedzy Pro</a>
48
  <?php
49
+ }
50
  ?>
51
  </div>
52
 
includes/layouts/feedzy-upsell.php CHANGED
@@ -4,29 +4,24 @@ Layout For Upsell Page of Feedzy RSS Feeds
4
  @since 3.0.12
5
  @package feedzy-rss-feeds
6
  -->
 
7
  <div id="fz-features">
8
 
9
  <div class="fz-features-content">
10
 
11
- <div class="fz-feature">
12
- <div class="fz-feature-features fz-feature-centered">
13
- <h2>Boost your Business with Pro Content</h4>
14
- <h4>Aggregate unlimited RSS feeds in your posts, pages or custom content types</h3>
15
- <br><hr><br>
16
- <h4>Upgrade to Feedzy Pro to experience powerful benefits:</h4>
17
- <h3>Add content on up to 30 of your own websites, automatically build affiliate links, integrate with WordAI and even add live product pricing feeds.</h3>
18
- <div class="header-btns">
19
- <?php
20
- if ( ! defined( 'FEEDZY_PRO_ABSURL' ) ) :
21
- ?>
22
- <a target="_blank" href="<?php echo FEEDZY_UPSELL_LINK; ?>" class="buy-now"><span
23
- class="dashicons dashicons-cart"></span> Upgrade to Pro now</a>
24
- <?php
25
- endif;
26
- ?>
27
- </div>
28
  </div>
29
- </div>
30
  <div class="fz-feature">
31
  <div class="fz-feature-features">
32
  <h2>Unlimited Content</h2>
@@ -41,7 +36,7 @@ Layout For Upsell Page of Feedzy RSS Feeds
41
  </div>
42
  <div class="fz-feature">
43
  <div class="fz-feature-features">
44
- <h2>Templates to suit your style</h2>
45
  <p>Three beautiful templates are available for you to choose the style which best fits your design. We even have support for complex media such as audio playback and YouTube videos.</p>
46
  </div>
47
  <div class="fz-feature-image">
@@ -66,15 +61,32 @@ Layout For Upsell Page of Feedzy RSS Feeds
66
  <img src="<?php echo FEEDZY_ABSURL; ?>/img/Protect-your-Brand.jpg" alt="Affiliate ready">
67
  </div>
68
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  <div class="fz-feature">
70
  <div class="fz-feature-features">
71
- <h2>Word AI integration</h2>
72
- <p>Through WordAI integration, Feedzy will give you unlimited new content. Your WordAI subscription (not included) integrates seamlessly with Feedzy, so you won’t ever have to worry about duplicate content – or Google penalties – again.</p>
73
  </div>
74
  <div class="fz-feature-image">
75
  <img src="<?php echo FEEDZY_ABSURL; ?>/img/feedzy-rss-feeds-wordai.jpg" alt="WordAi integration">
76
  </div>
77
  </div>
 
78
  <div class="fz-feature">
79
  <div class="fz-feature-features">
80
  <h2>World-class support</h2>
@@ -89,14 +101,10 @@ Layout For Upsell Page of Feedzy RSS Feeds
89
  <div class="fz-feature-features fz-feature-centered">
90
  <h2>Grow your WordPress business with Feedzy today.</h4>
91
  <div class="header-btns">
92
- <?php
93
- if ( ! defined( 'FEEDZY_PRO_ABSURL' ) ) :
94
- ?>
95
  <a target="_blank" href="<?php echo FEEDZY_UPSELL_LINK; ?>" class="buy-now"><span
96
  class="dashicons dashicons-cart"></span> Get Feedzy Pro</a>
97
- <?php
98
- endif;
99
- ?>
100
  </div>
101
 
102
  </div><!-- .fz-features-content -->
4
  @since 3.0.12
5
  @package feedzy-rss-feeds
6
  -->
7
+
8
  <div id="fz-features">
9
 
10
  <div class="fz-features-content">
11
 
12
+ <?php if ( false === apply_filters( 'feedzy_is_license_of_type', false, 'pro' ) ) { ?>
13
+ <div class="fz-feature">
14
+ <div class="fz-feature-features fz-feature-centered">
15
+ <h2>Boost your Business with Pro Content</h4>
16
+ <h4>Aggregate unlimited RSS feeds in your posts, pages or custom content types</h3>
17
+ <br><hr><br>
18
+ <h4>Upgrade to Feedzy Pro to experience powerful benefits:</h4>
19
+ <h3>Add content on up to 30 of your own websites, automatically build affiliate links, integrate with WordAI and even add live product pricing feeds.</h3>
20
+ <div class="header-btns">
21
+ <a target="_blank" href="<?php echo FEEDZY_UPSELL_LINK; ?>" class="buy-now"><span class="dashicons dashicons-cart"></span> Upgrade to Pro now</a>
22
+ </div>
23
+ </div>
 
 
 
 
 
24
  </div>
 
25
  <div class="fz-feature">
26
  <div class="fz-feature-features">
27
  <h2>Unlimited Content</h2>
36
  </div>
37
  <div class="fz-feature">
38
  <div class="fz-feature-features">
39
+ <h2>Shortcode templates to suit your style</h2>
40
  <p>Three beautiful templates are available for you to choose the style which best fits your design. We even have support for complex media such as audio playback and YouTube videos.</p>
41
  </div>
42
  <div class="fz-feature-image">
61
  <img src="<?php echo FEEDZY_ABSURL; ?>/img/Protect-your-Brand.jpg" alt="Affiliate ready">
62
  </div>
63
  </div>
64
+ <?php } ?>
65
+ <?php if ( true === apply_filters( 'feedzy_is_license_of_type', false, 'pro' ) && false === apply_filters( 'feedzy_is_license_of_type', false, 'business' ) ) { ?>
66
+ <div class="fz-feature">
67
+ <div class="fz-feature-features">
68
+ <h2>Unlimited Content</h2>
69
+ <p>With Pro, collect RSS feeds from an unlimited number of sources and bring them to up to 30 of your own WordPress sites.</p>
70
+ <p>Feedzy will automatically filter each feed item and place it wherever you want in your site. Easy to install and ready to go.</p>
71
+ <h2>Feed to Post</h2>
72
+ <p>Convert feed items along with their <b>full content</b> into WordPress Posts, Pages, or any custom post type in a few easy steps.</p>
73
+ </div>
74
+ <div class="fz-feature-image">
75
+ <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-feed-to-post.jpg" alt="Feed to post">
76
+ </div>
77
+ </div>
78
+ <?php } ?>
79
+ <?php if ( false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' ) ) { ?>
80
  <div class="fz-feature">
81
  <div class="fz-feature-features">
82
+ <h2>Integration with SpinnerChief & WordAI</h2>
83
+ <p>Through WordAI integration, Feedzy will give you unlimited new content. Your SpinnerChief or WordAI subscriptions (not included) integrate seamlessly with Feedzy, so you won’t ever have to worry about duplicate content – or Google penalties – again.</p>
84
  </div>
85
  <div class="fz-feature-image">
86
  <img src="<?php echo FEEDZY_ABSURL; ?>/img/feedzy-rss-feeds-wordai.jpg" alt="WordAi integration">
87
  </div>
88
  </div>
89
+ <?php } ?>
90
  <div class="fz-feature">
91
  <div class="fz-feature-features">
92
  <h2>World-class support</h2>
101
  <div class="fz-feature-features fz-feature-centered">
102
  <h2>Grow your WordPress business with Feedzy today.</h4>
103
  <div class="header-btns">
104
+ <?php if ( false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' ) ) { ?>
 
 
105
  <a target="_blank" href="<?php echo FEEDZY_UPSELL_LINK; ?>" class="buy-now"><span
106
  class="dashicons dashicons-cart"></span> Get Feedzy Pro</a>
107
+ <?php } ?>
 
 
108
  </div>
109
 
110
  </div><!-- .fz-features-content -->
readme.md CHANGED
@@ -159,6 +159,7 @@ Become a translator and send me your translation! [Contact-me](http://themeisle.
159
 
160
 
161
 
 
162
  ### Is it responsive friendly? ###
163
 
164
  Yes it is.
@@ -383,6 +384,12 @@ You have to check first if your feed is valid. Please test it here: https://vali
383
  = How price is displayed from the feed =
384
  [https://docs.themeisle.com/article/923-how-price-is-displayed-from-the-feed](https://docs.themeisle.com/article/923-how-price-is-displayed-from-the-feed)
385
 
 
 
 
 
 
 
386
  == Screenshots ==
387
 
388
  1. Simple example
@@ -392,6 +399,13 @@ You have to check first if your feed is valid. Please test it here: https://vali
392
 
393
 
394
  ## Changelog ##
 
 
 
 
 
 
 
395
  ### 3.3.2 - 2018-12-22 ###
396
 
397
  * Option to handle HTTP images in the shortcode
159
 
160
 
161
 
162
+
163
  ### Is it responsive friendly? ###
164
 
165
  Yes it is.
384
  = How price is displayed from the feed =
385
  [https://docs.themeisle.com/article/923-how-price-is-displayed-from-the-feed](https://docs.themeisle.com/article/923-how-price-is-displayed-from-the-feed)
386
 
387
+ = How to find Feed URL for Feedzy RSS Feeds =
388
+ [https://docs.themeisle.com/article/799-how-to-find-feed-url-for-feedzy-rss-feeds](https://docs.themeisle.com/article/799-how-to-find-feed-url-for-feedzy-rss-feeds)
389
+
390
+ = In Feedzy how do I... =
391
+ [https://docs.themeisle.com/article/942-in-feedzy-how-do-i](https://docs.themeisle.com/article/942-in-feedzy-how-do-i)
392
+
393
  == Screenshots ==
394
 
395
  1. Simple example
399
 
400
 
401
  ## Changelog ##
402
+ ### 3.3.3 - 2019-01-31 ###
403
+
404
+ * Customize error message when no items in the feed
405
+ * Outgoing links should have rel=noopener
406
+ * Fixed fatal error in Feedzy_Rss_Feeds_Admin_Abstract::feedzy_retrieve_image
407
+
408
+
409
  ### 3.3.2 - 2018-12-22 ###
410
 
411
  * Option to handle HTTP images in the shortcode
readme.txt CHANGED
@@ -399,6 +399,13 @@ You have to check first if your feed is valid. Please test it here: https://vali
399
 
400
 
401
  == Changelog ==
 
 
 
 
 
 
 
402
  = 3.3.2 - 2018-12-22 =
403
 
404
  * Option to handle HTTP images in the shortcode
399
 
400
 
401
  == Changelog ==
402
+ = 3.3.3 - 2019-01-31 =
403
+
404
+ * Customize error message when no items in the feed
405
+ * Outgoing links should have rel=noopener
406
+ * Fixed fatal error in Feedzy_Rss_Feeds_Admin_Abstract::feedzy_retrieve_image
407
+
408
+
409
  = 3.3.2 - 2018-12-22 =
410
 
411
  * Option to handle HTTP images in the shortcode
themeisle-hash.json CHANGED
@@ -1 +1 @@
1
- {"feedzy-rss-feed.php":"6d0bcc0490803b418b518502ef692e3d","index.php":"71c0755260138a4b7b2182c3c61179f6","uninstall.php":"cdb21f8648e005cbb9c73481d1750186"}
1
+ {"feedzy-rss-feed.php":"e79e27c9ae3dc579f6892ed200b24552","index.php":"71c0755260138a4b7b2182c3c61179f6","uninstall.php":"cdb21f8648e005cbb9c73481d1750186"}
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit192ce97fadbb58f36174182e5bd061ad::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit7cbe24d5e9e3efbfd7d05e55bd59f69e::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit7300e34db896a77d95fa9ea47a0613a5::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInitade923528ab5d2a5f0facc43915b585b::getLoader();
vendor/codeinwp/themeisle-sdk/CHANGELOG.md CHANGED
@@ -1,3 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  # 1.0.0 (2018-12-21)
2
 
3
 
1
+ ## [3.0.4](https://github.com/Codeinwp/themeisle-sdk/compare/v3.0.3...v3.0.4) (2019-01-28)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * uninstall feedback disclosure issues when one of the feedback fields is open ([4631eef](https://github.com/Codeinwp/themeisle-sdk/commit/4631eef))
7
+
8
+ ## [3.0.3](https://github.com/Codeinwp/themeisle-sdk/compare/v3.0.2...v3.0.3) (2019-01-07)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **build:** fix exit code when is running outside wordpress context ([d298bb5](https://github.com/Codeinwp/themeisle-sdk/commit/d298bb5))
14
+
15
+ ## [3.0.2](https://github.com/Codeinwp/themeisle-sdk/compare/v3.0.1...v3.0.2) (2018-12-28)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * remove composer/installers from package requirements ([a0ad543](https://github.com/Codeinwp/themeisle-sdk/commit/a0ad543))
21
+
22
+ ## [3.0.1](https://github.com/Codeinwp/themeisle-sdk/compare/v3.0.0...v3.0.1) (2018-12-24)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * notifications setup triggers after all products register their n… ([999a944](https://github.com/Codeinwp/themeisle-sdk/commit/999a944))
28
+ * notifications setup triggers after all products register their notices ([ec3cacc](https://github.com/Codeinwp/themeisle-sdk/commit/ec3cacc))
29
+
30
  # 1.0.0 (2018-12-21)
31
 
32
 
vendor/codeinwp/themeisle-sdk/Gruntfile.js ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module.exports = function (grunt) {
2
+ grunt.initConfig(
3
+ {
4
+ version: {
5
+ project: {
6
+ src: [
7
+ 'package.json'
8
+ ]
9
+ },
10
+ composer: {
11
+ src: [
12
+ 'composer.json'
13
+ ]
14
+ },
15
+ load_php: {
16
+ options: {
17
+ prefix: '\\.*\\$themeisle_sdk_version\.*\\s=\.*\\s\''
18
+ },
19
+ src: [
20
+ 'load.php'
21
+ ]
22
+ },
23
+ },
24
+ }
25
+ );
26
+ grunt.loadNpmTasks( 'grunt-version' );
27
+ };
vendor/codeinwp/themeisle-sdk/README.md ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Themeisle SDK
2
+
3
+ ThemeIsle SDK used to register common features for products in the portfolio.
4
+
5
+ Can be installed using composer:
6
+ `composer require codeinwp/themeisle-sdk`
7
+ and manually autoloading the load.php file in the composer.json file of your project:
8
+
9
+ ```
10
+
11
+ "autoload": {
12
+ "files": [
13
+ "vendor/codeinwp/themeisle-sdk/load.php"
14
+ ]
15
+ }
16
+
17
+ ```
18
+
19
+
20
+ ### Features
21
+
22
+ * Loads the most recent version of the library across all the products on the same wordpress instance. For instance if there is a theme which bundles v2.0.0 of the SDK and one plugin which bundles the v1.9.1, it will load on the most recent one, v2.0.0 for both products.
23
+ * If there are two products using the same version, it will load the first one that register the SDK, unless it's explicitly overwritten.
24
+ * Each functionality is bundled into modules, which are loaded based on the product type. Free/Pro, is available on wordpress or not.
25
+
26
+ ### How to register product
27
+
28
+ * The library works out of the box by simply loading the autoloader into the plugin/theme files.
29
+ * Some modules are loaded only if the product is not available on WordPress.org ( licenser/review ). You can define if the product is available on wordpress.org by adding this file header `WordPress Available: <yes|no>` where `<yes|no>` will be replaced with the proper status.
30
+ * If the product requires is a premium one and requires a licesing mechanism, we can use `Requires License: <yes|no>` to specifically tell that the product requires license.
31
+
32
+
vendor/codeinwp/themeisle-sdk/bin/install-wp-tests.sh ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+
3
+ if [ $# -lt 3 ]; then
4
+ echo "usage: $0 <db-name> <db-user> <db-pass> [db-host] [wp-version] [skip-database-creation]"
5
+ exit 1
6
+ fi
7
+
8
+ DB_NAME=$1
9
+ DB_USER=$2
10
+ DB_PASS=$3
11
+ DB_HOST=${4-localhost}
12
+ WP_VERSION=${5-latest}
13
+ SKIP_DB_CREATE=${6-false}
14
+
15
+ WP_TESTS_DIR=${WP_TESTS_DIR-/tmp/wordpress-tests-lib}
16
+ WP_CORE_DIR=${WP_CORE_DIR-/tmp/wordpress/}
17
+
18
+ command_exists() {
19
+ type -t "$1" >/dev/null 2>&1
20
+ }
21
+ download() {
22
+ if command_exists "curl"; then
23
+ curl -s -o "${2:--}" "$1"
24
+ elif command_exists "wget"; then
25
+ wget -nv -O "${2:--}" "$1"
26
+ fi
27
+ }
28
+ if [[ $WP_VERSION =~ [0-9]+\.[0-9]+(\.[0-9]+)? ]]; then
29
+ WP_TESTS_TAG="tags/$WP_VERSION"
30
+ elif [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then
31
+ WP_TESTS_TAG="trunk"
32
+ else
33
+ # http serves a single offer, whereas https serves multiple. we only want one
34
+ download http://api.wordpress.org/core/version-check/1.7/ /tmp/wp-latest.json
35
+ grep '[0-9]+\.[0-9]+(\.[0-9]+)?' /tmp/wp-latest.json
36
+ LATEST_VERSION=$(grep -o '"version":"[^"]*' /tmp/wp-latest.json | sed 's/"version":"//')
37
+ if [[ -z "$LATEST_VERSION" ]]; then
38
+ echo "Latest WordPress version could not be found"
39
+ exit 1
40
+ fi
41
+ WP_TESTS_TAG="tags/$LATEST_VERSION"
42
+ fi
43
+
44
+ set -ex
45
+
46
+
47
+ install_wp() {
48
+
49
+ if [ -d $WP_CORE_DIR ]; then
50
+ return;
51
+ fi
52
+
53
+ mkdir -p $WP_CORE_DIR
54
+
55
+ if [[ $WP_VERSION == 'nightly' || $WP_VERSION == 'trunk' ]]; then
56
+ mkdir -p /tmp/wordpress-nightly
57
+ download https://wordpress.org/nightly-builds/wordpress-latest.zip /tmp/wordpress-nightly/wordpress-nightly.zip
58
+ unzip -q /tmp/wordpress-nightly/wordpress-nightly.zip -d /tmp/wordpress-nightly/
59
+ mv /tmp/wordpress-nightly/wordpress/* $WP_CORE_DIR
60
+ else
61
+ if [ $WP_VERSION == 'latest' ]; then
62
+ local ARCHIVE_NAME='latest'
63
+ else
64
+ local ARCHIVE_NAME="wordpress-$WP_VERSION"
65
+ fi
66
+ download https://wordpress.org/${ARCHIVE_NAME}.tar.gz /tmp/wordpress.tar.gz
67
+ tar --strip-components=1 -zxmf /tmp/wordpress.tar.gz -C $WP_CORE_DIR
68
+ fi
69
+
70
+ download https://raw.github.com/markoheijnen/wp-mysqli/master/db.php $WP_CORE_DIR/wp-content/db.php
71
+ }
72
+
73
+ install_test_suite() {
74
+ # portable in-place argument for both GNU sed and Mac OSX sed
75
+ if [[ $(uname -s) == 'Darwin' ]]; then
76
+ local ioption='-i .bak'
77
+ else
78
+ local ioption='-i'
79
+ fi
80
+
81
+ # set up testing suite if it doesn't yet exist
82
+ if [ ! -d $WP_TESTS_DIR ]; then
83
+ # set up testing suite
84
+ mkdir -p $WP_TESTS_DIR
85
+ svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/includes/ $WP_TESTS_DIR/includes
86
+ svn co --quiet https://develop.svn.wordpress.org/${WP_TESTS_TAG}/tests/phpunit/data/ $WP_TESTS_DIR/data
87
+ fi
88
+
89
+ if [ ! -f wp-tests-config.php ]; then
90
+ download https://develop.svn.wordpress.org/${WP_TESTS_TAG}/wp-tests-config-sample.php "$WP_TESTS_DIR"/wp-tests-config.php
91
+ # remove all forward slashes in the end
92
+ WP_CORE_DIR=$(echo $WP_CORE_DIR | sed "s:/\+$::")
93
+ sed $ioption "s:dirname( __FILE__ ) . '/src/':'$WP_CORE_DIR/':" "$WP_TESTS_DIR"/wp-tests-config.php
94
+ sed $ioption "s/youremptytestdbnamehere/$DB_NAME/" "$WP_TESTS_DIR"/wp-tests-config.php
95
+ sed $ioption "s/yourusernamehere/$DB_USER/" "$WP_TESTS_DIR"/wp-tests-config.php
96
+ sed $ioption "s/yourpasswordhere/$DB_PASS/" "$WP_TESTS_DIR"/wp-tests-config.php
97
+ sed $ioption "s|localhost|${DB_HOST}|" "$WP_TESTS_DIR"/wp-tests-config.php
98
+ fi
99
+
100
+ }
101
+
102
+ install_db() {
103
+
104
+ if [ ${SKIP_DB_CREATE} = "true" ]; then
105
+ return 0
106
+ fi
107
+
108
+ # parse DB_HOST for port or socket references
109
+ local PARTS=(${DB_HOST//\:/ })
110
+ local DB_HOSTNAME=${PARTS[0]};
111
+ local DB_SOCK_OR_PORT=${PARTS[1]};
112
+ local EXTRA=""
113
+
114
+ if ! [ -z $DB_HOSTNAME ] ; then
115
+ if [ $(echo $DB_SOCK_OR_PORT | grep -e '^[0-9]\{1,\}$') ]; then
116
+ EXTRA=" --host=$DB_HOSTNAME --port=$DB_SOCK_OR_PORT --protocol=tcp"
117
+ elif ! [ -z $DB_SOCK_OR_PORT ] ; then
118
+ EXTRA=" --socket=$DB_SOCK_OR_PORT"
119
+ elif ! [ -z $DB_HOSTNAME ] ; then
120
+ EXTRA=" --host=$DB_HOSTNAME --protocol=tcp"
121
+ fi
122
+ fi
123
+
124
+ # create database
125
+ mysql --user="$DB_USER" --password="$DB_PASS"$EXTRA --execute "CREATE DATABASE IF NOT EXISTS $DB_NAME;"
126
+ }
127
+
128
+ install_wp
129
+ install_test_suite
130
+ install_db
vendor/codeinwp/themeisle-sdk/bin/run-unit-tests.sh ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ #!/usr/bin/env bash
2
+ composer global require "phpunit/phpunit=4.8.*|5.7.*"
3
+ bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION
4
+ phpunit --version
5
+ php -v
6
+ phpunit || exit 1
7
+ WP_MULTISITE=1 phpunit || exit 1
vendor/codeinwp/themeisle-sdk/composer.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "codeinwp/themeisle-sdk",
3
+ "description": "ThemeIsle SDK.",
4
+ "type": "library",
5
+ "keywords": [
6
+ "wordpress"
7
+ ],
8
+ "homepage": "https://github.com/Codeinwp/themeisle-sdk",
9
+ "license": "GPL-2.0+",
10
+ "authors": [
11
+ {
12
+ "name": "ThemeIsle team",
13
+ "email": "friends@themeisle.com",
14
+ "homepage": "https://themeisle.com"
15
+ }
16
+ ],
17
+ "version": "3.0.4",
18
+ "require-dev": {
19
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4",
20
+ "squizlabs/php_codesniffer": "^3.1",
21
+ "wp-coding-standards/wpcs": "^1.0.0"
22
+ },
23
+ "scripts": {
24
+ "format": "phpcbf --standard=phpcs.xml --report-summary --report-source",
25
+ "lint": "phpcs --standard=phpcs.xml"
26
+ },
27
+ "support": {
28
+ "issues": "https://github.com/Codeinwp/themeisle-sdk/issues"
29
+ }
30
+ }
vendor/codeinwp/themeisle-sdk/composer.lock ADDED
@@ -0,0 +1,180 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_readme": [
3
+ "This file locks the dependencies of your project to a known state",
4
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
+ "This file is @generated automatically"
6
+ ],
7
+ "content-hash": "836b37c9484505643ee34c575a736209",
8
+ "packages": [],
9
+ "packages-dev": [
10
+ {
11
+ "name": "dealerdirect/phpcodesniffer-composer-installer",
12
+ "version": "v0.4.4",
13
+ "source": {
14
+ "type": "git",
15
+ "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
16
+ "reference": "2e41850d5f7797cbb1af7b030d245b3b24e63a08"
17
+ },
18
+ "dist": {
19
+ "type": "zip",
20
+ "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/2e41850d5f7797cbb1af7b030d245b3b24e63a08",
21
+ "reference": "2e41850d5f7797cbb1af7b030d245b3b24e63a08",
22
+ "shasum": ""
23
+ },
24
+ "require": {
25
+ "composer-plugin-api": "^1.0",
26
+ "php": "^5.3|^7",
27
+ "squizlabs/php_codesniffer": "*"
28
+ },
29
+ "require-dev": {
30
+ "composer/composer": "*",
31
+ "wimg/php-compatibility": "^8.0"
32
+ },
33
+ "suggest": {
34
+ "dealerdirect/qa-tools": "All the PHP QA tools you'll need"
35
+ },
36
+ "type": "composer-plugin",
37
+ "extra": {
38
+ "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
39
+ },
40
+ "autoload": {
41
+ "psr-4": {
42
+ "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
43
+ }
44
+ },
45
+ "notification-url": "https://packagist.org/downloads/",
46
+ "license": [
47
+ "MIT"
48
+ ],
49
+ "authors": [
50
+ {
51
+ "name": "Franck Nijhof",
52
+ "email": "f.nijhof@dealerdirect.nl",
53
+ "homepage": "http://workingatdealerdirect.eu",
54
+ "role": "Developer"
55
+ }
56
+ ],
57
+ "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
58
+ "homepage": "http://workingatdealerdirect.eu",
59
+ "keywords": [
60
+ "PHPCodeSniffer",
61
+ "PHP_CodeSniffer",
62
+ "code quality",
63
+ "codesniffer",
64
+ "composer",
65
+ "installer",
66
+ "phpcs",
67
+ "plugin",
68
+ "qa",
69
+ "quality",
70
+ "standard",
71
+ "standards",
72
+ "style guide",
73
+ "stylecheck",
74
+ "tests"
75
+ ],
76
+ "time": "2017-12-06T16:27:17+00:00"
77
+ },
78
+ {
79
+ "name": "squizlabs/php_codesniffer",
80
+ "version": "3.4.0",
81
+ "source": {
82
+ "type": "git",
83
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
84
+ "reference": "379deb987e26c7cd103a7b387aea178baec96e48"
85
+ },
86
+ "dist": {
87
+ "type": "zip",
88
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/379deb987e26c7cd103a7b387aea178baec96e48",
89
+ "reference": "379deb987e26c7cd103a7b387aea178baec96e48",
90
+ "shasum": ""
91
+ },
92
+ "require": {
93
+ "ext-simplexml": "*",
94
+ "ext-tokenizer": "*",
95
+ "ext-xmlwriter": "*",
96
+ "php": ">=5.4.0"
97
+ },
98
+ "require-dev": {
99
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
100
+ },
101
+ "bin": [
102
+ "bin/phpcs",
103
+ "bin/phpcbf"
104
+ ],
105
+ "type": "library",
106
+ "extra": {
107
+ "branch-alias": {
108
+ "dev-master": "3.x-dev"
109
+ }
110
+ },
111
+ "notification-url": "https://packagist.org/downloads/",
112
+ "license": [
113
+ "BSD-3-Clause"
114
+ ],
115
+ "authors": [
116
+ {
117
+ "name": "Greg Sherwood",
118
+ "role": "lead"
119
+ }
120
+ ],
121
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
122
+ "homepage": "http://www.squizlabs.com/php-codesniffer",
123
+ "keywords": [
124
+ "phpcs",
125
+ "standards"
126
+ ],
127
+ "time": "2018-12-19T23:57:18+00:00"
128
+ },
129
+ {
130
+ "name": "wp-coding-standards/wpcs",
131
+ "version": "1.2.1",
132
+ "source": {
133
+ "type": "git",
134
+ "url": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards.git",
135
+ "reference": "f328bcafd97377e8e5e5d7b244d5ddbf301a3a5c"
136
+ },
137
+ "dist": {
138
+ "type": "zip",
139
+ "url": "https://api.github.com/repos/WordPress-Coding-Standards/WordPress-Coding-Standards/zipball/f328bcafd97377e8e5e5d7b244d5ddbf301a3a5c",
140
+ "reference": "f328bcafd97377e8e5e5d7b244d5ddbf301a3a5c",
141
+ "shasum": ""
142
+ },
143
+ "require": {
144
+ "php": ">=5.3",
145
+ "squizlabs/php_codesniffer": "^2.9.0 || ^3.0.2"
146
+ },
147
+ "require-dev": {
148
+ "phpcompatibility/php-compatibility": "^9.0"
149
+ },
150
+ "suggest": {
151
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically."
152
+ },
153
+ "type": "phpcodesniffer-standard",
154
+ "notification-url": "https://packagist.org/downloads/",
155
+ "license": [
156
+ "MIT"
157
+ ],
158
+ "authors": [
159
+ {
160
+ "name": "Contributors",
161
+ "homepage": "https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/graphs/contributors"
162
+ }
163
+ ],
164
+ "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions",
165
+ "keywords": [
166
+ "phpcs",
167
+ "standards",
168
+ "wordpress"
169
+ ],
170
+ "time": "2018-12-18T09:43:51+00:00"
171
+ }
172
+ ],
173
+ "aliases": [],
174
+ "minimum-stability": "stable",
175
+ "stability-flags": [],
176
+ "prefer-stable": false,
177
+ "prefer-lowest": false,
178
+ "platform": [],
179
+ "platform-dev": []
180
+ }
vendor/codeinwp/themeisle-sdk/docker-compose.local.yml ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ version: '3.1'
2
+
3
+ services:
4
+ wordpress:
5
+ depends_on:
6
+ - mysql
7
+ image: hardeepasrani/pirate-brewery
8
+ ports:
9
+ - 999:80
10
+ volumes:
11
+ - ./:/var/www/html/wp-content/plugins/themeisle-sdk-sample
12
+ restart: always
13
+ environment:
14
+ WORDPRESS_DB_NAME: wordpress
15
+ WORDPRESS_DB_USER: wordpress
16
+ WORDPRESS_DB_PASSWORD: wordpress
17
+ WORDPRESS_DB_ROOT_PASSWORD: wordpress
18
+ mysql:
19
+ image: mysql:5.7
20
+ volumes:
21
+ - ~/db_data:/var/lib/mysql
22
+ restart: always
23
+ environment:
24
+ MYSQL_ROOT_PASSWORD: wordpress
25
+ MYSQL_DATABASE: wordpress
26
+ MYSQL_USER: wordpress
27
+ MYSQL_PASSWORD: wordpress
vendor/codeinwp/themeisle-sdk/load.php CHANGED
@@ -11,10 +11,10 @@
11
  */
12
 
13
  if ( ! defined( 'ABSPATH' ) ) {
14
- exit;
15
  }
16
  // Current SDK version and path.
17
- $themeisle_sdk_version = '3.0.0';
18
  $themeisle_sdk_path = dirname( __FILE__ );
19
 
20
  global $themeisle_sdk_max_version;
11
  */
12
 
13
  if ( ! defined( 'ABSPATH' ) ) {
14
+ return;
15
  }
16
  // Current SDK version and path.
17
+ $themeisle_sdk_version = '3.0.4';
18
  $themeisle_sdk_path = dirname( __FILE__ );
19
 
20
  global $themeisle_sdk_max_version;
vendor/codeinwp/themeisle-sdk/package-lock.json ADDED
@@ -0,0 +1,7312 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "themeisle-sdk",
3
+ "version": "3.0.3",
4
+ "lockfileVersion": 1,
5
+ "requires": true,
6
+ "dependencies": {
7
+ "@mrmlnc/readdir-enhanced": {
8
+ "version": "2.2.1",
9
+ "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
10
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
11
+ "dev": true,
12
+ "requires": {
13
+ "call-me-maybe": "^1.0.1",
14
+ "glob-to-regexp": "^0.3.0"
15
+ }
16
+ },
17
+ "@nodelib/fs.stat": {
18
+ "version": "1.1.3",
19
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
20
+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
21
+ "dev": true
22
+ },
23
+ "@octokit/endpoint": {
24
+ "version": "3.1.1",
25
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-3.1.1.tgz",
26
+ "integrity": "sha512-KPkoTvKwCTetu/UqonLs1pfwFO5HAqTv/Ksp9y4NAg//ZgUCpvJsT4Hrst85uEzJvkB8+LxKyR4Bfv2X8O4cmQ==",
27
+ "dev": true,
28
+ "requires": {
29
+ "deepmerge": "3.0.0",
30
+ "is-plain-object": "^2.0.4",
31
+ "universal-user-agent": "^2.0.1",
32
+ "url-template": "^2.0.8"
33
+ }
34
+ },
35
+ "@octokit/request": {
36
+ "version": "2.2.0",
37
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-2.2.0.tgz",
38
+ "integrity": "sha512-4P9EbwKZ4xfyupVMb3KVuHmM+aO2fye3nufjGKz/qDssvdJj9Rlx44O0FdFvUp4kIzToy3AHLTOulEIDAL+dpg==",
39
+ "dev": true,
40
+ "requires": {
41
+ "@octokit/endpoint": "^3.0.0",
42
+ "is-plain-object": "^2.0.4",
43
+ "node-fetch": "^2.3.0",
44
+ "universal-user-agent": "^2.0.1"
45
+ }
46
+ },
47
+ "@octokit/rest": {
48
+ "version": "16.3.0",
49
+ "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.3.0.tgz",
50
+ "integrity": "sha512-u0HkROLB0nOSfJhkF5FKMg6I12m6cN5S3S73Lwtfgrs9u4LhgUCZN2hC2KDyIaT7nhvNe9Kx0PgxhhD6li6QsA==",
51
+ "dev": true,
52
+ "requires": {
53
+ "@octokit/request": "2.2.0",
54
+ "before-after-hook": "^1.2.0",
55
+ "btoa-lite": "^1.0.0",
56
+ "lodash.get": "^4.4.2",
57
+ "lodash.pick": "^4.4.0",
58
+ "lodash.set": "^4.3.2",
59
+ "lodash.uniq": "^4.5.0",
60
+ "octokit-pagination-methods": "^1.1.0",
61
+ "universal-user-agent": "^2.0.0",
62
+ "url-template": "^2.0.8"
63
+ }
64
+ },
65
+ "@semantic-release/changelog": {
66
+ "version": "3.0.1",
67
+ "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-3.0.1.tgz",
68
+ "integrity": "sha512-N3lWwS3SUQmjBI/IoxwfQwPHAeQgYkvM63nzBpYkp2DXQ9zdLs5ZYpD1oln//wWCKVSIY2tPDs7KD4LVVh6u5Q==",
69
+ "dev": true,
70
+ "requires": {
71
+ "@semantic-release/error": "^2.1.0",
72
+ "aggregate-error": "^1.0.0",
73
+ "fs-extra": "^7.0.0",
74
+ "lodash": "^4.17.4"
75
+ }
76
+ },
77
+ "@semantic-release/commit-analyzer": {
78
+ "version": "6.1.0",
79
+ "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-6.1.0.tgz",
80
+ "integrity": "sha512-2lb+t6muGenI86mYGpZYOgITx9L3oZYF697tJoqXeQEk0uw0fm+OkkOuDTBA3Oax9ftoNIrCKv9bwgYvxrbM6w==",
81
+ "dev": true,
82
+ "requires": {
83
+ "conventional-changelog-angular": "^5.0.0",
84
+ "conventional-commits-filter": "^2.0.0",
85
+ "conventional-commits-parser": "^3.0.0",
86
+ "debug": "^4.0.0",
87
+ "import-from": "^2.1.0",
88
+ "lodash": "^4.17.4"
89
+ }
90
+ },
91
+ "@semantic-release/error": {
92
+ "version": "2.2.0",
93
+ "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz",
94
+ "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==",
95
+ "dev": true
96
+ },
97
+ "@semantic-release/exec": {
98
+ "version": "3.3.1",
99
+ "resolved": "https://registry.npmjs.org/@semantic-release/exec/-/exec-3.3.1.tgz",
100
+ "integrity": "sha512-dyktNa5cpV9TqQjxBIfCJKpDlKyYJ5OzL/04uBr9qUDXcDgaczGip3M/In/Ff/KGZSzkvrx+m96LVpng9+g5Tw==",
101
+ "dev": true,
102
+ "requires": {
103
+ "@semantic-release/error": "^2.1.0",
104
+ "aggregate-error": "^1.0.0",
105
+ "debug": "^4.0.0",
106
+ "execa": "^1.0.0",
107
+ "lodash": "^4.17.4",
108
+ "parse-json": "^4.0.0"
109
+ }
110
+ },
111
+ "@semantic-release/git": {
112
+ "version": "7.0.6",
113
+ "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-7.0.6.tgz",
114
+ "integrity": "sha512-Uyi/RFBYv8jecMo7vJfjsr9rweJkOPuY6CJOITbOzhHmJjZssVOf7sS+zuqEQQsVzU+PPYIjx86HkIzbve/Evg==",
115
+ "dev": true,
116
+ "requires": {
117
+ "@semantic-release/error": "^2.1.0",
118
+ "aggregate-error": "^1.0.0",
119
+ "debug": "^4.0.0",
120
+ "dir-glob": "^2.0.0",
121
+ "execa": "^1.0.0",
122
+ "fs-extra": "^7.0.0",
123
+ "globby": "^8.0.1",
124
+ "lodash": "^4.17.4",
125
+ "micromatch": "^3.1.4",
126
+ "p-reduce": "^1.0.0"
127
+ }
128
+ },
129
+ "@semantic-release/github": {
130
+ "version": "5.2.7",
131
+ "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-5.2.7.tgz",
132
+ "integrity": "sha512-cWQhM9bdBv8KAwClmwM64Mo3vsOHVM2aJAGI6K3qbJfJ3GsLJLh1hTi+rMd5EkZ2DA8zUUHCiAJZ3ujMvUB0yg==",
133
+ "dev": true,
134
+ "requires": {
135
+ "@octokit/rest": "^16.0.1",
136
+ "@semantic-release/error": "^2.2.0",
137
+ "aggregate-error": "^1.0.0",
138
+ "bottleneck": "^2.0.1",
139
+ "debug": "^4.0.0",
140
+ "dir-glob": "^2.0.0",
141
+ "fs-extra": "^7.0.0",
142
+ "globby": "^8.0.0",
143
+ "http-proxy-agent": "^2.1.0",
144
+ "https-proxy-agent": "^2.2.1",
145
+ "issue-parser": "^3.0.0",
146
+ "lodash": "^4.17.4",
147
+ "mime": "^2.0.3",
148
+ "p-filter": "^1.0.0",
149
+ "p-retry": "^3.0.0",
150
+ "parse-github-url": "^1.0.1",
151
+ "url-join": "^4.0.0"
152
+ }
153
+ },
154
+ "@semantic-release/npm": {
155
+ "version": "5.1.2",
156
+ "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-5.1.2.tgz",
157
+ "integrity": "sha512-hAt8Q86jjp0AiykihhZ7vuCFKYz0j8v3W6Jae8b+RCLi8IUofrPF1ZImx3oY0rRu8ZZSb4aU9uxtFmeOYZebjg==",
158
+ "dev": true,
159
+ "requires": {
160
+ "@semantic-release/error": "^2.2.0",
161
+ "aggregate-error": "^1.0.0",
162
+ "execa": "^1.0.0",
163
+ "fs-extra": "^7.0.0",
164
+ "lodash": "^4.17.4",
165
+ "nerf-dart": "^1.0.0",
166
+ "normalize-url": "^4.0.0",
167
+ "npm": "^6.3.0",
168
+ "rc": "^1.2.8",
169
+ "read-pkg": "^4.0.0",
170
+ "registry-auth-token": "^3.3.1"
171
+ },
172
+ "dependencies": {
173
+ "read-pkg": {
174
+ "version": "4.0.1",
175
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz",
176
+ "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=",
177
+ "dev": true,
178
+ "requires": {
179
+ "normalize-package-data": "^2.3.2",
180
+ "parse-json": "^4.0.0",
181
+ "pify": "^3.0.0"
182
+ }
183
+ }
184
+ }
185
+ },
186
+ "@semantic-release/release-notes-generator": {
187
+ "version": "7.1.4",
188
+ "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-7.1.4.tgz",
189
+ "integrity": "sha512-pWPouZujddgb6t61t9iA9G3yIfp3TeQ7bPbV1ixYSeP6L7gI1+Du82fY/OHfEwyifpymLUQW0XnIKgKct5IMMw==",
190
+ "dev": true,
191
+ "requires": {
192
+ "conventional-changelog-angular": "^5.0.0",
193
+ "conventional-changelog-writer": "^4.0.0",
194
+ "conventional-commits-filter": "^2.0.0",
195
+ "conventional-commits-parser": "^3.0.0",
196
+ "debug": "^4.0.0",
197
+ "get-stream": "^4.0.0",
198
+ "import-from": "^2.1.0",
199
+ "into-stream": "^4.0.0",
200
+ "lodash": "^4.17.4"
201
+ }
202
+ },
203
+ "JSONStream": {
204
+ "version": "1.3.5",
205
+ "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
206
+ "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
207
+ "dev": true,
208
+ "requires": {
209
+ "jsonparse": "^1.2.0",
210
+ "through": ">=2.2.7 <3"
211
+ }
212
+ },
213
+ "abbrev": {
214
+ "version": "1.1.1",
215
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
216
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
217
+ "dev": true
218
+ },
219
+ "agent-base": {
220
+ "version": "4.2.1",
221
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
222
+ "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
223
+ "dev": true,
224
+ "requires": {
225
+ "es6-promisify": "^5.0.0"
226
+ }
227
+ },
228
+ "aggregate-error": {
229
+ "version": "1.0.0",
230
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-1.0.0.tgz",
231
+ "integrity": "sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w=",
232
+ "dev": true,
233
+ "requires": {
234
+ "clean-stack": "^1.0.0",
235
+ "indent-string": "^3.0.0"
236
+ }
237
+ },
238
+ "ansi-regex": {
239
+ "version": "3.0.0",
240
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
241
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
242
+ "dev": true
243
+ },
244
+ "ansi-styles": {
245
+ "version": "3.2.1",
246
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
247
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
248
+ "dev": true,
249
+ "requires": {
250
+ "color-convert": "^1.9.0"
251
+ }
252
+ },
253
+ "ansicolors": {
254
+ "version": "0.3.2",
255
+ "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz",
256
+ "integrity": "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=",
257
+ "dev": true
258
+ },
259
+ "argparse": {
260
+ "version": "1.0.10",
261
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
262
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
263
+ "dev": true,
264
+ "requires": {
265
+ "sprintf-js": "~1.0.2"
266
+ },
267
+ "dependencies": {
268
+ "sprintf-js": {
269
+ "version": "1.0.3",
270
+ "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
271
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
272
+ "dev": true
273
+ }
274
+ }
275
+ },
276
+ "argv-formatter": {
277
+ "version": "1.0.0",
278
+ "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz",
279
+ "integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=",
280
+ "dev": true
281
+ },
282
+ "arr-diff": {
283
+ "version": "4.0.0",
284
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
285
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
286
+ "dev": true
287
+ },
288
+ "arr-flatten": {
289
+ "version": "1.1.0",
290
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
291
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
292
+ "dev": true
293
+ },
294
+ "arr-union": {
295
+ "version": "3.1.0",
296
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
297
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
298
+ "dev": true
299
+ },
300
+ "array-find-index": {
301
+ "version": "1.0.2",
302
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
303
+ "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
304
+ "dev": true
305
+ },
306
+ "array-ify": {
307
+ "version": "1.0.0",
308
+ "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
309
+ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
310
+ "dev": true
311
+ },
312
+ "array-union": {
313
+ "version": "1.0.2",
314
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
315
+ "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
316
+ "dev": true,
317
+ "requires": {
318
+ "array-uniq": "^1.0.1"
319
+ }
320
+ },
321
+ "array-uniq": {
322
+ "version": "1.0.3",
323
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
324
+ "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
325
+ "dev": true
326
+ },
327
+ "array-unique": {
328
+ "version": "0.3.2",
329
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
330
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
331
+ "dev": true
332
+ },
333
+ "arrify": {
334
+ "version": "1.0.1",
335
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
336
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
337
+ "dev": true
338
+ },
339
+ "assign-symbols": {
340
+ "version": "1.0.0",
341
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
342
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
343
+ "dev": true
344
+ },
345
+ "async": {
346
+ "version": "1.5.2",
347
+ "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz",
348
+ "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
349
+ "dev": true
350
+ },
351
+ "atob": {
352
+ "version": "2.1.2",
353
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
354
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
355
+ "dev": true
356
+ },
357
+ "balanced-match": {
358
+ "version": "1.0.0",
359
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
360
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
361
+ "dev": true
362
+ },
363
+ "base": {
364
+ "version": "0.11.2",
365
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
366
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
367
+ "dev": true,
368
+ "requires": {
369
+ "cache-base": "^1.0.1",
370
+ "class-utils": "^0.3.5",
371
+ "component-emitter": "^1.2.1",
372
+ "define-property": "^1.0.0",
373
+ "isobject": "^3.0.1",
374
+ "mixin-deep": "^1.2.0",
375
+ "pascalcase": "^0.1.1"
376
+ },
377
+ "dependencies": {
378
+ "define-property": {
379
+ "version": "1.0.0",
380
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
381
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
382
+ "dev": true,
383
+ "requires": {
384
+ "is-descriptor": "^1.0.0"
385
+ }
386
+ },
387
+ "is-accessor-descriptor": {
388
+ "version": "1.0.0",
389
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
390
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
391
+ "dev": true,
392
+ "requires": {
393
+ "kind-of": "^6.0.0"
394
+ }
395
+ },
396
+ "is-data-descriptor": {
397
+ "version": "1.0.0",
398
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
399
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
400
+ "dev": true,
401
+ "requires": {
402
+ "kind-of": "^6.0.0"
403
+ }
404
+ },
405
+ "is-descriptor": {
406
+ "version": "1.0.2",
407
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
408
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
409
+ "dev": true,
410
+ "requires": {
411
+ "is-accessor-descriptor": "^1.0.0",
412
+ "is-data-descriptor": "^1.0.0",
413
+ "kind-of": "^6.0.2"
414
+ }
415
+ }
416
+ }
417
+ },
418
+ "before-after-hook": {
419
+ "version": "1.2.0",
420
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.2.0.tgz",
421
+ "integrity": "sha512-wI3QtdLppHNkmM1VgRVLCrlWCKk/YexlPicYbXPs4eYdd1InrUCTFsx5bX1iUQzzMsoRXXPpM1r+p7JEJJydag==",
422
+ "dev": true
423
+ },
424
+ "bottleneck": {
425
+ "version": "2.14.0",
426
+ "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.14.0.tgz",
427
+ "integrity": "sha512-hM5zQPPpIe2/pn8rornETr2x7/HOBGJ5u1RW1js6zvE5453bRMMbtbZl0ojB8yNj7w2xNWddpNukrhOikHb7BQ==",
428
+ "dev": true
429
+ },
430
+ "brace-expansion": {
431
+ "version": "1.1.11",
432
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
433
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
434
+ "dev": true,
435
+ "requires": {
436
+ "balanced-match": "^1.0.0",
437
+ "concat-map": "0.0.1"
438
+ }
439
+ },
440
+ "braces": {
441
+ "version": "2.3.2",
442
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
443
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
444
+ "dev": true,
445
+ "requires": {
446
+ "arr-flatten": "^1.1.0",
447
+ "array-unique": "^0.3.2",
448
+ "extend-shallow": "^2.0.1",
449
+ "fill-range": "^4.0.0",
450
+ "isobject": "^3.0.1",
451
+ "repeat-element": "^1.1.2",
452
+ "snapdragon": "^0.8.1",
453
+ "snapdragon-node": "^2.0.1",
454
+ "split-string": "^3.0.2",
455
+ "to-regex": "^3.0.1"
456
+ },
457
+ "dependencies": {
458
+ "extend-shallow": {
459
+ "version": "2.0.1",
460
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
461
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
462
+ "dev": true,
463
+ "requires": {
464
+ "is-extendable": "^0.1.0"
465
+ }
466
+ }
467
+ }
468
+ },
469
+ "btoa-lite": {
470
+ "version": "1.0.0",
471
+ "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
472
+ "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=",
473
+ "dev": true
474
+ },
475
+ "builtin-modules": {
476
+ "version": "1.1.1",
477
+ "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
478
+ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
479
+ "dev": true
480
+ },
481
+ "cache-base": {
482
+ "version": "1.0.1",
483
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
484
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
485
+ "dev": true,
486
+ "requires": {
487
+ "collection-visit": "^1.0.0",
488
+ "component-emitter": "^1.2.1",
489
+ "get-value": "^2.0.6",
490
+ "has-value": "^1.0.0",
491
+ "isobject": "^3.0.1",
492
+ "set-value": "^2.0.0",
493
+ "to-object-path": "^0.3.0",
494
+ "union-value": "^1.0.0",
495
+ "unset-value": "^1.0.0"
496
+ }
497
+ },
498
+ "call-me-maybe": {
499
+ "version": "1.0.1",
500
+ "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
501
+ "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=",
502
+ "dev": true
503
+ },
504
+ "caller-callsite": {
505
+ "version": "2.0.0",
506
+ "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
507
+ "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
508
+ "dev": true,
509
+ "requires": {
510
+ "callsites": "^2.0.0"
511
+ }
512
+ },
513
+ "caller-path": {
514
+ "version": "2.0.0",
515
+ "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
516
+ "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
517
+ "dev": true,
518
+ "requires": {
519
+ "caller-callsite": "^2.0.0"
520
+ }
521
+ },
522
+ "callsites": {
523
+ "version": "2.0.0",
524
+ "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
525
+ "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
526
+ "dev": true
527
+ },
528
+ "camelcase": {
529
+ "version": "2.1.1",
530
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
531
+ "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
532
+ "dev": true
533
+ },
534
+ "camelcase-keys": {
535
+ "version": "2.1.0",
536
+ "resolved": "http://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
537
+ "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
538
+ "dev": true,
539
+ "requires": {
540
+ "camelcase": "^2.0.0",
541
+ "map-obj": "^1.0.0"
542
+ }
543
+ },
544
+ "cardinal": {
545
+ "version": "2.1.1",
546
+ "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz",
547
+ "integrity": "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=",
548
+ "dev": true,
549
+ "requires": {
550
+ "ansicolors": "~0.3.2",
551
+ "redeyed": "~2.1.0"
552
+ }
553
+ },
554
+ "chalk": {
555
+ "version": "2.4.1",
556
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
557
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
558
+ "dev": true,
559
+ "requires": {
560
+ "ansi-styles": "^3.2.1",
561
+ "escape-string-regexp": "^1.0.5",
562
+ "supports-color": "^5.3.0"
563
+ }
564
+ },
565
+ "class-utils": {
566
+ "version": "0.3.6",
567
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
568
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
569
+ "dev": true,
570
+ "requires": {
571
+ "arr-union": "^3.1.0",
572
+ "define-property": "^0.2.5",
573
+ "isobject": "^3.0.0",
574
+ "static-extend": "^0.1.1"
575
+ },
576
+ "dependencies": {
577
+ "define-property": {
578
+ "version": "0.2.5",
579
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
580
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
581
+ "dev": true,
582
+ "requires": {
583
+ "is-descriptor": "^0.1.0"
584
+ }
585
+ }
586
+ }
587
+ },
588
+ "clean-stack": {
589
+ "version": "1.3.0",
590
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz",
591
+ "integrity": "sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=",
592
+ "dev": true
593
+ },
594
+ "cli-table": {
595
+ "version": "0.3.1",
596
+ "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz",
597
+ "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=",
598
+ "dev": true,
599
+ "requires": {
600
+ "colors": "1.0.3"
601
+ },
602
+ "dependencies": {
603
+ "colors": {
604
+ "version": "1.0.3",
605
+ "resolved": "http://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
606
+ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
607
+ "dev": true
608
+ }
609
+ }
610
+ },
611
+ "cliui": {
612
+ "version": "4.1.0",
613
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
614
+ "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==",
615
+ "dev": true,
616
+ "requires": {
617
+ "string-width": "^2.1.1",
618
+ "strip-ansi": "^4.0.0",
619
+ "wrap-ansi": "^2.0.0"
620
+ }
621
+ },
622
+ "code-point-at": {
623
+ "version": "1.1.0",
624
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
625
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
626
+ "dev": true
627
+ },
628
+ "coffeescript": {
629
+ "version": "1.10.0",
630
+ "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz",
631
+ "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=",
632
+ "dev": true
633
+ },
634
+ "collection-visit": {
635
+ "version": "1.0.0",
636
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
637
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
638
+ "dev": true,
639
+ "requires": {
640
+ "map-visit": "^1.0.0",
641
+ "object-visit": "^1.0.0"
642
+ }
643
+ },
644
+ "color-convert": {
645
+ "version": "1.9.3",
646
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
647
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
648
+ "dev": true,
649
+ "requires": {
650
+ "color-name": "1.1.3"
651
+ }
652
+ },
653
+ "color-name": {
654
+ "version": "1.1.3",
655
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
656
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
657
+ "dev": true
658
+ },
659
+ "colors": {
660
+ "version": "1.1.2",
661
+ "resolved": "http://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
662
+ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
663
+ "dev": true
664
+ },
665
+ "commander": {
666
+ "version": "2.17.1",
667
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
668
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
669
+ "dev": true,
670
+ "optional": true
671
+ },
672
+ "compare-func": {
673
+ "version": "1.3.2",
674
+ "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
675
+ "integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
676
+ "dev": true,
677
+ "requires": {
678
+ "array-ify": "^1.0.0",
679
+ "dot-prop": "^3.0.0"
680
+ }
681
+ },
682
+ "component-emitter": {
683
+ "version": "1.2.1",
684
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
685
+ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=",
686
+ "dev": true
687
+ },
688
+ "concat-map": {
689
+ "version": "0.0.1",
690
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
691
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
692
+ "dev": true
693
+ },
694
+ "conventional-changelog-angular": {
695
+ "version": "5.0.2",
696
+ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.2.tgz",
697
+ "integrity": "sha512-yx7m7lVrXmt4nKWQgWZqxSALEiAKZhOAcbxdUaU9575mB0CzXVbgrgpfSnSP7OqWDUTYGD0YVJ0MSRdyOPgAwA==",
698
+ "dev": true,
699
+ "requires": {
700
+ "compare-func": "^1.3.1",
701
+ "q": "^1.5.1"
702
+ }
703
+ },
704
+ "conventional-changelog-writer": {
705
+ "version": "4.0.2",
706
+ "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.2.tgz",
707
+ "integrity": "sha512-d8/FQY/fix2xXEBUhOo8u3DCbyEw3UOQgYHxLsPDw+wHUDma/GQGAGsGtoH876WyNs32fViHmTOUrgRKVLvBug==",
708
+ "dev": true,
709
+ "requires": {
710
+ "compare-func": "^1.3.1",
711
+ "conventional-commits-filter": "^2.0.1",
712
+ "dateformat": "^3.0.0",
713
+ "handlebars": "^4.0.2",
714
+ "json-stringify-safe": "^5.0.1",
715
+ "lodash": "^4.2.1",
716
+ "meow": "^4.0.0",
717
+ "semver": "^5.5.0",
718
+ "split": "^1.0.0",
719
+ "through2": "^2.0.0"
720
+ },
721
+ "dependencies": {
722
+ "camelcase": {
723
+ "version": "4.1.0",
724
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
725
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
726
+ "dev": true
727
+ },
728
+ "camelcase-keys": {
729
+ "version": "4.2.0",
730
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
731
+ "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
732
+ "dev": true,
733
+ "requires": {
734
+ "camelcase": "^4.1.0",
735
+ "map-obj": "^2.0.0",
736
+ "quick-lru": "^1.0.0"
737
+ }
738
+ },
739
+ "dateformat": {
740
+ "version": "3.0.3",
741
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
742
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
743
+ "dev": true
744
+ },
745
+ "find-up": {
746
+ "version": "2.1.0",
747
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
748
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
749
+ "dev": true,
750
+ "requires": {
751
+ "locate-path": "^2.0.0"
752
+ }
753
+ },
754
+ "load-json-file": {
755
+ "version": "4.0.0",
756
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
757
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
758
+ "dev": true,
759
+ "requires": {
760
+ "graceful-fs": "^4.1.2",
761
+ "parse-json": "^4.0.0",
762
+ "pify": "^3.0.0",
763
+ "strip-bom": "^3.0.0"
764
+ }
765
+ },
766
+ "map-obj": {
767
+ "version": "2.0.0",
768
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
769
+ "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
770
+ "dev": true
771
+ },
772
+ "meow": {
773
+ "version": "4.0.1",
774
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
775
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
776
+ "dev": true,
777
+ "requires": {
778
+ "camelcase-keys": "^4.0.0",
779
+ "decamelize-keys": "^1.0.0",
780
+ "loud-rejection": "^1.0.0",
781
+ "minimist": "^1.1.3",
782
+ "minimist-options": "^3.0.1",
783
+ "normalize-package-data": "^2.3.4",
784
+ "read-pkg-up": "^3.0.0",
785
+ "redent": "^2.0.0",
786
+ "trim-newlines": "^2.0.0"
787
+ }
788
+ },
789
+ "read-pkg": {
790
+ "version": "3.0.0",
791
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
792
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
793
+ "dev": true,
794
+ "requires": {
795
+ "load-json-file": "^4.0.0",
796
+ "normalize-package-data": "^2.3.2",
797
+ "path-type": "^3.0.0"
798
+ }
799
+ },
800
+ "read-pkg-up": {
801
+ "version": "3.0.0",
802
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
803
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
804
+ "dev": true,
805
+ "requires": {
806
+ "find-up": "^2.0.0",
807
+ "read-pkg": "^3.0.0"
808
+ }
809
+ },
810
+ "redent": {
811
+ "version": "2.0.0",
812
+ "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
813
+ "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
814
+ "dev": true,
815
+ "requires": {
816
+ "indent-string": "^3.0.0",
817
+ "strip-indent": "^2.0.0"
818
+ }
819
+ },
820
+ "strip-bom": {
821
+ "version": "3.0.0",
822
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
823
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
824
+ "dev": true
825
+ },
826
+ "strip-indent": {
827
+ "version": "2.0.0",
828
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
829
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
830
+ "dev": true
831
+ },
832
+ "trim-newlines": {
833
+ "version": "2.0.0",
834
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
835
+ "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
836
+ "dev": true
837
+ }
838
+ }
839
+ },
840
+ "conventional-commits-filter": {
841
+ "version": "2.0.1",
842
+ "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz",
843
+ "integrity": "sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==",
844
+ "dev": true,
845
+ "requires": {
846
+ "is-subset": "^0.1.1",
847
+ "modify-values": "^1.0.0"
848
+ }
849
+ },
850
+ "conventional-commits-parser": {
851
+ "version": "3.0.1",
852
+ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz",
853
+ "integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==",
854
+ "dev": true,
855
+ "requires": {
856
+ "JSONStream": "^1.0.4",
857
+ "is-text-path": "^1.0.0",
858
+ "lodash": "^4.2.1",
859
+ "meow": "^4.0.0",
860
+ "split2": "^2.0.0",
861
+ "through2": "^2.0.0",
862
+ "trim-off-newlines": "^1.0.0"
863
+ },
864
+ "dependencies": {
865
+ "camelcase": {
866
+ "version": "4.1.0",
867
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
868
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
869
+ "dev": true
870
+ },
871
+ "camelcase-keys": {
872
+ "version": "4.2.0",
873
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
874
+ "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=",
875
+ "dev": true,
876
+ "requires": {
877
+ "camelcase": "^4.1.0",
878
+ "map-obj": "^2.0.0",
879
+ "quick-lru": "^1.0.0"
880
+ }
881
+ },
882
+ "find-up": {
883
+ "version": "2.1.0",
884
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
885
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
886
+ "dev": true,
887
+ "requires": {
888
+ "locate-path": "^2.0.0"
889
+ }
890
+ },
891
+ "load-json-file": {
892
+ "version": "4.0.0",
893
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
894
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
895
+ "dev": true,
896
+ "requires": {
897
+ "graceful-fs": "^4.1.2",
898
+ "parse-json": "^4.0.0",
899
+ "pify": "^3.0.0",
900
+ "strip-bom": "^3.0.0"
901
+ }
902
+ },
903
+ "map-obj": {
904
+ "version": "2.0.0",
905
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
906
+ "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=",
907
+ "dev": true
908
+ },
909
+ "meow": {
910
+ "version": "4.0.1",
911
+ "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
912
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
913
+ "dev": true,
914
+ "requires": {
915
+ "camelcase-keys": "^4.0.0",
916
+ "decamelize-keys": "^1.0.0",
917
+ "loud-rejection": "^1.0.0",
918
+ "minimist": "^1.1.3",
919
+ "minimist-options": "^3.0.1",
920
+ "normalize-package-data": "^2.3.4",
921
+ "read-pkg-up": "^3.0.0",
922
+ "redent": "^2.0.0",
923
+ "trim-newlines": "^2.0.0"
924
+ }
925
+ },
926
+ "read-pkg": {
927
+ "version": "3.0.0",
928
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
929
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
930
+ "dev": true,
931
+ "requires": {
932
+ "load-json-file": "^4.0.0",
933
+ "normalize-package-data": "^2.3.2",
934
+ "path-type": "^3.0.0"
935
+ }
936
+ },
937
+ "read-pkg-up": {
938
+ "version": "3.0.0",
939
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
940
+ "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=",
941
+ "dev": true,
942
+ "requires": {
943
+ "find-up": "^2.0.0",
944
+ "read-pkg": "^3.0.0"
945
+ }
946
+ },
947
+ "redent": {
948
+ "version": "2.0.0",
949
+ "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
950
+ "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=",
951
+ "dev": true,
952
+ "requires": {
953
+ "indent-string": "^3.0.0",
954
+ "strip-indent": "^2.0.0"
955
+ }
956
+ },
957
+ "strip-bom": {
958
+ "version": "3.0.0",
959
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
960
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
961
+ "dev": true
962
+ },
963
+ "strip-indent": {
964
+ "version": "2.0.0",
965
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
966
+ "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=",
967
+ "dev": true
968
+ },
969
+ "trim-newlines": {
970
+ "version": "2.0.0",
971
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
972
+ "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=",
973
+ "dev": true
974
+ }
975
+ }
976
+ },
977
+ "copy-descriptor": {
978
+ "version": "0.1.1",
979
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
980
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
981
+ "dev": true
982
+ },
983
+ "core-util-is": {
984
+ "version": "1.0.2",
985
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
986
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
987
+ "dev": true
988
+ },
989
+ "cosmiconfig": {
990
+ "version": "5.0.7",
991
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz",
992
+ "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==",
993
+ "dev": true,
994
+ "requires": {
995
+ "import-fresh": "^2.0.0",
996
+ "is-directory": "^0.3.1",
997
+ "js-yaml": "^3.9.0",
998
+ "parse-json": "^4.0.0"
999
+ },
1000
+ "dependencies": {
1001
+ "esprima": {
1002
+ "version": "4.0.1",
1003
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
1004
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
1005
+ "dev": true
1006
+ },
1007
+ "js-yaml": {
1008
+ "version": "3.12.0",
1009
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
1010
+ "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==",
1011
+ "dev": true,
1012
+ "requires": {
1013
+ "argparse": "^1.0.7",
1014
+ "esprima": "^4.0.0"
1015
+ }
1016
+ }
1017
+ }
1018
+ },
1019
+ "cross-spawn": {
1020
+ "version": "6.0.5",
1021
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
1022
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
1023
+ "dev": true,
1024
+ "requires": {
1025
+ "nice-try": "^1.0.4",
1026
+ "path-key": "^2.0.1",
1027
+ "semver": "^5.5.0",
1028
+ "shebang-command": "^1.2.0",
1029
+ "which": "^1.2.9"
1030
+ }
1031
+ },
1032
+ "currently-unhandled": {
1033
+ "version": "0.4.1",
1034
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
1035
+ "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
1036
+ "dev": true,
1037
+ "requires": {
1038
+ "array-find-index": "^1.0.1"
1039
+ }
1040
+ },
1041
+ "dateformat": {
1042
+ "version": "1.0.12",
1043
+ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz",
1044
+ "integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
1045
+ "dev": true,
1046
+ "requires": {
1047
+ "get-stdin": "^4.0.1",
1048
+ "meow": "^3.3.0"
1049
+ }
1050
+ },
1051
+ "debug": {
1052
+ "version": "4.1.0",
1053
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz",
1054
+ "integrity": "sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==",
1055
+ "dev": true,
1056
+ "requires": {
1057
+ "ms": "^2.1.1"
1058
+ }
1059
+ },
1060
+ "decamelize": {
1061
+ "version": "1.2.0",
1062
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
1063
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
1064
+ "dev": true
1065
+ },
1066
+ "decamelize-keys": {
1067
+ "version": "1.1.0",
1068
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
1069
+ "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
1070
+ "dev": true,
1071
+ "requires": {
1072
+ "decamelize": "^1.1.0",
1073
+ "map-obj": "^1.0.0"
1074
+ }
1075
+ },
1076
+ "decode-uri-component": {
1077
+ "version": "0.2.0",
1078
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
1079
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
1080
+ "dev": true
1081
+ },
1082
+ "deep-extend": {
1083
+ "version": "0.6.0",
1084
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
1085
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
1086
+ "dev": true
1087
+ },
1088
+ "deepmerge": {
1089
+ "version": "3.0.0",
1090
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.0.0.tgz",
1091
+ "integrity": "sha512-a8z8bkgHsAML+uHLqmMS83HHlpy3PvZOOuiTQqaa3wu8ZVg3h0hqHk6aCsGdOnZV2XMM/FRimNGjUh0KCcmHBw==",
1092
+ "dev": true
1093
+ },
1094
+ "define-property": {
1095
+ "version": "2.0.2",
1096
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
1097
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
1098
+ "dev": true,
1099
+ "requires": {
1100
+ "is-descriptor": "^1.0.2",
1101
+ "isobject": "^3.0.1"
1102
+ },
1103
+ "dependencies": {
1104
+ "is-accessor-descriptor": {
1105
+ "version": "1.0.0",
1106
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1107
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1108
+ "dev": true,
1109
+ "requires": {
1110
+ "kind-of": "^6.0.0"
1111
+ }
1112
+ },
1113
+ "is-data-descriptor": {
1114
+ "version": "1.0.0",
1115
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1116
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1117
+ "dev": true,
1118
+ "requires": {
1119
+ "kind-of": "^6.0.0"
1120
+ }
1121
+ },
1122
+ "is-descriptor": {
1123
+ "version": "1.0.2",
1124
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1125
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1126
+ "dev": true,
1127
+ "requires": {
1128
+ "is-accessor-descriptor": "^1.0.0",
1129
+ "is-data-descriptor": "^1.0.0",
1130
+ "kind-of": "^6.0.2"
1131
+ }
1132
+ }
1133
+ }
1134
+ },
1135
+ "dir-glob": {
1136
+ "version": "2.0.0",
1137
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz",
1138
+ "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==",
1139
+ "dev": true,
1140
+ "requires": {
1141
+ "arrify": "^1.0.1",
1142
+ "path-type": "^3.0.0"
1143
+ }
1144
+ },
1145
+ "dot-prop": {
1146
+ "version": "3.0.0",
1147
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
1148
+ "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
1149
+ "dev": true,
1150
+ "requires": {
1151
+ "is-obj": "^1.0.0"
1152
+ }
1153
+ },
1154
+ "duplexer2": {
1155
+ "version": "0.1.4",
1156
+ "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
1157
+ "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
1158
+ "dev": true,
1159
+ "requires": {
1160
+ "readable-stream": "^2.0.2"
1161
+ }
1162
+ },
1163
+ "end-of-stream": {
1164
+ "version": "1.4.1",
1165
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
1166
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
1167
+ "dev": true,
1168
+ "requires": {
1169
+ "once": "^1.4.0"
1170
+ }
1171
+ },
1172
+ "env-ci": {
1173
+ "version": "3.1.3",
1174
+ "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-3.1.3.tgz",
1175
+ "integrity": "sha512-4NudFu3oUCNprsGkt/LmvqAwJlzX9QT8289AavXiDH1pBJuEd4n0ty98yUOWN3uFtjOhOGrmt1/FDKFxCewejw==",
1176
+ "dev": true,
1177
+ "requires": {
1178
+ "execa": "^1.0.0",
1179
+ "java-properties": "^0.2.9"
1180
+ }
1181
+ },
1182
+ "error-ex": {
1183
+ "version": "1.3.2",
1184
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
1185
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
1186
+ "dev": true,
1187
+ "requires": {
1188
+ "is-arrayish": "^0.2.1"
1189
+ }
1190
+ },
1191
+ "es6-promise": {
1192
+ "version": "4.2.5",
1193
+ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
1194
+ "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==",
1195
+ "dev": true
1196
+ },
1197
+ "es6-promisify": {
1198
+ "version": "5.0.0",
1199
+ "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
1200
+ "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
1201
+ "dev": true,
1202
+ "requires": {
1203
+ "es6-promise": "^4.0.3"
1204
+ }
1205
+ },
1206
+ "escape-string-regexp": {
1207
+ "version": "1.0.5",
1208
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1209
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1210
+ "dev": true
1211
+ },
1212
+ "esprima": {
1213
+ "version": "2.7.3",
1214
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
1215
+ "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
1216
+ "dev": true
1217
+ },
1218
+ "eventemitter2": {
1219
+ "version": "0.4.14",
1220
+ "resolved": "http://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
1221
+ "integrity": "sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas=",
1222
+ "dev": true
1223
+ },
1224
+ "execa": {
1225
+ "version": "1.0.0",
1226
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
1227
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
1228
+ "dev": true,
1229
+ "requires": {
1230
+ "cross-spawn": "^6.0.0",
1231
+ "get-stream": "^4.0.0",
1232
+ "is-stream": "^1.1.0",
1233
+ "npm-run-path": "^2.0.0",
1234
+ "p-finally": "^1.0.0",
1235
+ "signal-exit": "^3.0.0",
1236
+ "strip-eof": "^1.0.0"
1237
+ }
1238
+ },
1239
+ "exit": {
1240
+ "version": "0.1.2",
1241
+ "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
1242
+ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
1243
+ "dev": true
1244
+ },
1245
+ "expand-brackets": {
1246
+ "version": "2.1.4",
1247
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
1248
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
1249
+ "dev": true,
1250
+ "requires": {
1251
+ "debug": "^2.3.3",
1252
+ "define-property": "^0.2.5",
1253
+ "extend-shallow": "^2.0.1",
1254
+ "posix-character-classes": "^0.1.0",
1255
+ "regex-not": "^1.0.0",
1256
+ "snapdragon": "^0.8.1",
1257
+ "to-regex": "^3.0.1"
1258
+ },
1259
+ "dependencies": {
1260
+ "debug": {
1261
+ "version": "2.6.9",
1262
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1263
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1264
+ "dev": true,
1265
+ "requires": {
1266
+ "ms": "2.0.0"
1267
+ }
1268
+ },
1269
+ "define-property": {
1270
+ "version": "0.2.5",
1271
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
1272
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
1273
+ "dev": true,
1274
+ "requires": {
1275
+ "is-descriptor": "^0.1.0"
1276
+ }
1277
+ },
1278
+ "extend-shallow": {
1279
+ "version": "2.0.1",
1280
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1281
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1282
+ "dev": true,
1283
+ "requires": {
1284
+ "is-extendable": "^0.1.0"
1285
+ }
1286
+ },
1287
+ "ms": {
1288
+ "version": "2.0.0",
1289
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1290
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1291
+ "dev": true
1292
+ }
1293
+ }
1294
+ },
1295
+ "extend-shallow": {
1296
+ "version": "3.0.2",
1297
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
1298
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
1299
+ "dev": true,
1300
+ "requires": {
1301
+ "assign-symbols": "^1.0.0",
1302
+ "is-extendable": "^1.0.1"
1303
+ },
1304
+ "dependencies": {
1305
+ "is-extendable": {
1306
+ "version": "1.0.1",
1307
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
1308
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
1309
+ "dev": true,
1310
+ "requires": {
1311
+ "is-plain-object": "^2.0.4"
1312
+ }
1313
+ }
1314
+ }
1315
+ },
1316
+ "extglob": {
1317
+ "version": "2.0.4",
1318
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
1319
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
1320
+ "dev": true,
1321
+ "requires": {
1322
+ "array-unique": "^0.3.2",
1323
+ "define-property": "^1.0.0",
1324
+ "expand-brackets": "^2.1.4",
1325
+ "extend-shallow": "^2.0.1",
1326
+ "fragment-cache": "^0.2.1",
1327
+ "regex-not": "^1.0.0",
1328
+ "snapdragon": "^0.8.1",
1329
+ "to-regex": "^3.0.1"
1330
+ },
1331
+ "dependencies": {
1332
+ "define-property": {
1333
+ "version": "1.0.0",
1334
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
1335
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
1336
+ "dev": true,
1337
+ "requires": {
1338
+ "is-descriptor": "^1.0.0"
1339
+ }
1340
+ },
1341
+ "extend-shallow": {
1342
+ "version": "2.0.1",
1343
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1344
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1345
+ "dev": true,
1346
+ "requires": {
1347
+ "is-extendable": "^0.1.0"
1348
+ }
1349
+ },
1350
+ "is-accessor-descriptor": {
1351
+ "version": "1.0.0",
1352
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
1353
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
1354
+ "dev": true,
1355
+ "requires": {
1356
+ "kind-of": "^6.0.0"
1357
+ }
1358
+ },
1359
+ "is-data-descriptor": {
1360
+ "version": "1.0.0",
1361
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
1362
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
1363
+ "dev": true,
1364
+ "requires": {
1365
+ "kind-of": "^6.0.0"
1366
+ }
1367
+ },
1368
+ "is-descriptor": {
1369
+ "version": "1.0.2",
1370
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
1371
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
1372
+ "dev": true,
1373
+ "requires": {
1374
+ "is-accessor-descriptor": "^1.0.0",
1375
+ "is-data-descriptor": "^1.0.0",
1376
+ "kind-of": "^6.0.2"
1377
+ }
1378
+ }
1379
+ }
1380
+ },
1381
+ "fast-glob": {
1382
+ "version": "2.2.4",
1383
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.4.tgz",
1384
+ "integrity": "sha512-FjK2nCGI/McyzgNtTESqaWP3trPvHyRyoyY70hxjc3oKPNmDe8taohLZpoVKoUjW85tbU5txaYUZCNtVzygl1g==",
1385
+ "dev": true,
1386
+ "requires": {
1387
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
1388
+ "@nodelib/fs.stat": "^1.1.2",
1389
+ "glob-parent": "^3.1.0",
1390
+ "is-glob": "^4.0.0",
1391
+ "merge2": "^1.2.3",
1392
+ "micromatch": "^3.1.10"
1393
+ }
1394
+ },
1395
+ "figures": {
1396
+ "version": "2.0.0",
1397
+ "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
1398
+ "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
1399
+ "dev": true,
1400
+ "requires": {
1401
+ "escape-string-regexp": "^1.0.5"
1402
+ }
1403
+ },
1404
+ "fill-range": {
1405
+ "version": "4.0.0",
1406
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
1407
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
1408
+ "dev": true,
1409
+ "requires": {
1410
+ "extend-shallow": "^2.0.1",
1411
+ "is-number": "^3.0.0",
1412
+ "repeat-string": "^1.6.1",
1413
+ "to-regex-range": "^2.1.0"
1414
+ },
1415
+ "dependencies": {
1416
+ "extend-shallow": {
1417
+ "version": "2.0.1",
1418
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1419
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1420
+ "dev": true,
1421
+ "requires": {
1422
+ "is-extendable": "^0.1.0"
1423
+ }
1424
+ }
1425
+ }
1426
+ },
1427
+ "find-up": {
1428
+ "version": "1.1.2",
1429
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
1430
+ "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
1431
+ "dev": true,
1432
+ "requires": {
1433
+ "path-exists": "^2.0.0",
1434
+ "pinkie-promise": "^2.0.0"
1435
+ }
1436
+ },
1437
+ "find-versions": {
1438
+ "version": "3.0.0",
1439
+ "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.0.0.tgz",
1440
+ "integrity": "sha512-IUvtItVFNmTtKoB0PRfbkR0zR9XMG5rWNO3qI1S8L0zdv+v2gqzM0pAunloxqbqAfT8w7bg8n/5gHzTXte8H5A==",
1441
+ "dev": true,
1442
+ "requires": {
1443
+ "array-uniq": "^2.0.0",
1444
+ "semver-regex": "^2.0.0"
1445
+ },
1446
+ "dependencies": {
1447
+ "array-uniq": {
1448
+ "version": "2.0.0",
1449
+ "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-2.0.0.tgz",
1450
+ "integrity": "sha512-O3QZEr+3wDj7otzF7PjNGs6CA3qmYMLvt5xGkjY/V0VxS+ovvqVo/5wKM/OVOAyuX4DTh9H31zE/yKtO66hTkg==",
1451
+ "dev": true
1452
+ }
1453
+ }
1454
+ },
1455
+ "findup-sync": {
1456
+ "version": "0.3.0",
1457
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
1458
+ "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
1459
+ "dev": true,
1460
+ "requires": {
1461
+ "glob": "~5.0.0"
1462
+ },
1463
+ "dependencies": {
1464
+ "glob": {
1465
+ "version": "5.0.15",
1466
+ "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
1467
+ "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
1468
+ "dev": true,
1469
+ "requires": {
1470
+ "inflight": "^1.0.4",
1471
+ "inherits": "2",
1472
+ "minimatch": "2 || 3",
1473
+ "once": "^1.3.0",
1474
+ "path-is-absolute": "^1.0.0"
1475
+ }
1476
+ }
1477
+ }
1478
+ },
1479
+ "for-in": {
1480
+ "version": "1.0.2",
1481
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
1482
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
1483
+ "dev": true
1484
+ },
1485
+ "fragment-cache": {
1486
+ "version": "0.2.1",
1487
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
1488
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
1489
+ "dev": true,
1490
+ "requires": {
1491
+ "map-cache": "^0.2.2"
1492
+ }
1493
+ },
1494
+ "from2": {
1495
+ "version": "2.3.0",
1496
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
1497
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
1498
+ "dev": true,
1499
+ "requires": {
1500
+ "inherits": "^2.0.1",
1501
+ "readable-stream": "^2.0.0"
1502
+ }
1503
+ },
1504
+ "fs-extra": {
1505
+ "version": "7.0.1",
1506
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz",
1507
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
1508
+ "dev": true,
1509
+ "requires": {
1510
+ "graceful-fs": "^4.1.2",
1511
+ "jsonfile": "^4.0.0",
1512
+ "universalify": "^0.1.0"
1513
+ }
1514
+ },
1515
+ "fs.realpath": {
1516
+ "version": "1.0.0",
1517
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1518
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1519
+ "dev": true
1520
+ },
1521
+ "get-caller-file": {
1522
+ "version": "1.0.3",
1523
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
1524
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
1525
+ "dev": true
1526
+ },
1527
+ "get-stdin": {
1528
+ "version": "4.0.1",
1529
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
1530
+ "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
1531
+ "dev": true
1532
+ },
1533
+ "get-stream": {
1534
+ "version": "4.1.0",
1535
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
1536
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
1537
+ "dev": true,
1538
+ "requires": {
1539
+ "pump": "^3.0.0"
1540
+ }
1541
+ },
1542
+ "get-value": {
1543
+ "version": "2.0.6",
1544
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
1545
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
1546
+ "dev": true
1547
+ },
1548
+ "getobject": {
1549
+ "version": "0.1.0",
1550
+ "resolved": "https://registry.npmjs.org/getobject/-/getobject-0.1.0.tgz",
1551
+ "integrity": "sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw=",
1552
+ "dev": true
1553
+ },
1554
+ "git-log-parser": {
1555
+ "version": "1.2.0",
1556
+ "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.0.tgz",
1557
+ "integrity": "sha1-LmpMGxP8AAKCB7p5WnrDFme5/Uo=",
1558
+ "dev": true,
1559
+ "requires": {
1560
+ "argv-formatter": "~1.0.0",
1561
+ "spawn-error-forwarder": "~1.0.0",
1562
+ "split2": "~1.0.0",
1563
+ "stream-combiner2": "~1.1.1",
1564
+ "through2": "~2.0.0",
1565
+ "traverse": "~0.6.6"
1566
+ },
1567
+ "dependencies": {
1568
+ "split2": {
1569
+ "version": "1.0.0",
1570
+ "resolved": "http://registry.npmjs.org/split2/-/split2-1.0.0.tgz",
1571
+ "integrity": "sha1-UuLiIdiMdfmnP5BVbiY/+WdysxQ=",
1572
+ "dev": true,
1573
+ "requires": {
1574
+ "through2": "~2.0.0"
1575
+ }
1576
+ }
1577
+ }
1578
+ },
1579
+ "glob": {
1580
+ "version": "7.1.3",
1581
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
1582
+ "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
1583
+ "dev": true,
1584
+ "requires": {
1585
+ "fs.realpath": "^1.0.0",
1586
+ "inflight": "^1.0.4",
1587
+ "inherits": "2",
1588
+ "minimatch": "^3.0.4",
1589
+ "once": "^1.3.0",
1590
+ "path-is-absolute": "^1.0.0"
1591
+ }
1592
+ },
1593
+ "glob-parent": {
1594
+ "version": "3.1.0",
1595
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
1596
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
1597
+ "dev": true,
1598
+ "requires": {
1599
+ "is-glob": "^3.1.0",
1600
+ "path-dirname": "^1.0.0"
1601
+ },
1602
+ "dependencies": {
1603
+ "is-glob": {
1604
+ "version": "3.1.0",
1605
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
1606
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
1607
+ "dev": true,
1608
+ "requires": {
1609
+ "is-extglob": "^2.1.0"
1610
+ }
1611
+ }
1612
+ }
1613
+ },
1614
+ "glob-to-regexp": {
1615
+ "version": "0.3.0",
1616
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
1617
+ "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
1618
+ "dev": true
1619
+ },
1620
+ "globby": {
1621
+ "version": "8.0.1",
1622
+ "resolved": "http://registry.npmjs.org/globby/-/globby-8.0.1.tgz",
1623
+ "integrity": "sha512-oMrYrJERnKBLXNLVTqhm3vPEdJ/b2ZE28xN4YARiix1NOIOBPEpOUnm844K1iu/BkphCaf2WNFwMszv8Soi1pw==",
1624
+ "dev": true,
1625
+ "requires": {
1626
+ "array-union": "^1.0.1",
1627
+ "dir-glob": "^2.0.0",
1628
+ "fast-glob": "^2.0.2",
1629
+ "glob": "^7.1.2",
1630
+ "ignore": "^3.3.5",
1631
+ "pify": "^3.0.0",
1632
+ "slash": "^1.0.0"
1633
+ }
1634
+ },
1635
+ "graceful-fs": {
1636
+ "version": "4.1.15",
1637
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
1638
+ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
1639
+ "dev": true
1640
+ },
1641
+ "grunt": {
1642
+ "version": "1.0.3",
1643
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.3.tgz",
1644
+ "integrity": "sha512-/JzmZNPfKorlCrrmxWqQO4JVodO+DVd5XX4DkocL/1WlLlKVLE9+SdEIempOAxDhWPysLle6afvn/hg7Ck2k9g==",
1645
+ "dev": true,
1646
+ "requires": {
1647
+ "coffeescript": "~1.10.0",
1648
+ "dateformat": "~1.0.12",
1649
+ "eventemitter2": "~0.4.13",
1650
+ "exit": "~0.1.1",
1651
+ "findup-sync": "~0.3.0",
1652
+ "glob": "~7.0.0",
1653
+ "grunt-cli": "~1.2.0",
1654
+ "grunt-known-options": "~1.1.0",
1655
+ "grunt-legacy-log": "~2.0.0",
1656
+ "grunt-legacy-util": "~1.1.1",
1657
+ "iconv-lite": "~0.4.13",
1658
+ "js-yaml": "~3.5.2",
1659
+ "minimatch": "~3.0.2",
1660
+ "mkdirp": "~0.5.1",
1661
+ "nopt": "~3.0.6",
1662
+ "path-is-absolute": "~1.0.0",
1663
+ "rimraf": "~2.6.2"
1664
+ },
1665
+ "dependencies": {
1666
+ "glob": {
1667
+ "version": "7.0.6",
1668
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz",
1669
+ "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
1670
+ "dev": true,
1671
+ "requires": {
1672
+ "fs.realpath": "^1.0.0",
1673
+ "inflight": "^1.0.4",
1674
+ "inherits": "2",
1675
+ "minimatch": "^3.0.2",
1676
+ "once": "^1.3.0",
1677
+ "path-is-absolute": "^1.0.0"
1678
+ }
1679
+ },
1680
+ "grunt-cli": {
1681
+ "version": "1.2.0",
1682
+ "resolved": "http://registry.npmjs.org/grunt-cli/-/grunt-cli-1.2.0.tgz",
1683
+ "integrity": "sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg=",
1684
+ "dev": true,
1685
+ "requires": {
1686
+ "findup-sync": "~0.3.0",
1687
+ "grunt-known-options": "~1.1.0",
1688
+ "nopt": "~3.0.6",
1689
+ "resolve": "~1.1.0"
1690
+ }
1691
+ }
1692
+ }
1693
+ },
1694
+ "grunt-known-options": {
1695
+ "version": "1.1.1",
1696
+ "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.1.tgz",
1697
+ "integrity": "sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ==",
1698
+ "dev": true
1699
+ },
1700
+ "grunt-legacy-log": {
1701
+ "version": "2.0.0",
1702
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz",
1703
+ "integrity": "sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw==",
1704
+ "dev": true,
1705
+ "requires": {
1706
+ "colors": "~1.1.2",
1707
+ "grunt-legacy-log-utils": "~2.0.0",
1708
+ "hooker": "~0.2.3",
1709
+ "lodash": "~4.17.5"
1710
+ }
1711
+ },
1712
+ "grunt-legacy-log-utils": {
1713
+ "version": "2.0.1",
1714
+ "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz",
1715
+ "integrity": "sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA==",
1716
+ "dev": true,
1717
+ "requires": {
1718
+ "chalk": "~2.4.1",
1719
+ "lodash": "~4.17.10"
1720
+ }
1721
+ },
1722
+ "grunt-legacy-util": {
1723
+ "version": "1.1.1",
1724
+ "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz",
1725
+ "integrity": "sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A==",
1726
+ "dev": true,
1727
+ "requires": {
1728
+ "async": "~1.5.2",
1729
+ "exit": "~0.1.1",
1730
+ "getobject": "~0.1.0",
1731
+ "hooker": "~0.2.3",
1732
+ "lodash": "~4.17.10",
1733
+ "underscore.string": "~3.3.4",
1734
+ "which": "~1.3.0"
1735
+ }
1736
+ },
1737
+ "grunt-version": {
1738
+ "version": "1.3.0",
1739
+ "resolved": "https://registry.npmjs.org/grunt-version/-/grunt-version-1.3.0.tgz",
1740
+ "integrity": "sha512-sHXaI20enfemESU2r/mrJd8eEFr8qSJSwzzIyau2IaxKwez0ojr5wg93x74K7PqSBKmVxumJ6TTscvGIfygRbA==",
1741
+ "dev": true,
1742
+ "requires": {
1743
+ "grunt": "0.4.5 - 1",
1744
+ "semver": "^4.0.0"
1745
+ },
1746
+ "dependencies": {
1747
+ "semver": {
1748
+ "version": "4.3.6",
1749
+ "resolved": "http://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
1750
+ "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=",
1751
+ "dev": true
1752
+ }
1753
+ }
1754
+ },
1755
+ "handlebars": {
1756
+ "version": "4.0.12",
1757
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz",
1758
+ "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==",
1759
+ "dev": true,
1760
+ "requires": {
1761
+ "async": "^2.5.0",
1762
+ "optimist": "^0.6.1",
1763
+ "source-map": "^0.6.1",
1764
+ "uglify-js": "^3.1.4"
1765
+ },
1766
+ "dependencies": {
1767
+ "async": {
1768
+ "version": "2.6.1",
1769
+ "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
1770
+ "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
1771
+ "dev": true,
1772
+ "requires": {
1773
+ "lodash": "^4.17.10"
1774
+ }
1775
+ },
1776
+ "source-map": {
1777
+ "version": "0.6.1",
1778
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1779
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1780
+ "dev": true
1781
+ }
1782
+ }
1783
+ },
1784
+ "has-flag": {
1785
+ "version": "3.0.0",
1786
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1787
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1788
+ "dev": true
1789
+ },
1790
+ "has-value": {
1791
+ "version": "1.0.0",
1792
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
1793
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
1794
+ "dev": true,
1795
+ "requires": {
1796
+ "get-value": "^2.0.6",
1797
+ "has-values": "^1.0.0",
1798
+ "isobject": "^3.0.0"
1799
+ }
1800
+ },
1801
+ "has-values": {
1802
+ "version": "1.0.0",
1803
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
1804
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
1805
+ "dev": true,
1806
+ "requires": {
1807
+ "is-number": "^3.0.0",
1808
+ "kind-of": "^4.0.0"
1809
+ },
1810
+ "dependencies": {
1811
+ "kind-of": {
1812
+ "version": "4.0.0",
1813
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
1814
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
1815
+ "dev": true,
1816
+ "requires": {
1817
+ "is-buffer": "^1.1.5"
1818
+ }
1819
+ }
1820
+ }
1821
+ },
1822
+ "hook-std": {
1823
+ "version": "1.2.0",
1824
+ "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-1.2.0.tgz",
1825
+ "integrity": "sha512-yntre2dbOAjgQ5yoRykyON0D9T96BfshR8IuiL/r3celeHD8I/76w4qo8m3z99houR4Z678jakV3uXrQdSvW/w==",
1826
+ "dev": true
1827
+ },
1828
+ "hooker": {
1829
+ "version": "0.2.3",
1830
+ "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
1831
+ "integrity": "sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk=",
1832
+ "dev": true
1833
+ },
1834
+ "hosted-git-info": {
1835
+ "version": "2.7.1",
1836
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
1837
+ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
1838
+ "dev": true
1839
+ },
1840
+ "http-proxy-agent": {
1841
+ "version": "2.1.0",
1842
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
1843
+ "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
1844
+ "dev": true,
1845
+ "requires": {
1846
+ "agent-base": "4",
1847
+ "debug": "3.1.0"
1848
+ },
1849
+ "dependencies": {
1850
+ "debug": {
1851
+ "version": "3.1.0",
1852
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
1853
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
1854
+ "dev": true,
1855
+ "requires": {
1856
+ "ms": "2.0.0"
1857
+ }
1858
+ },
1859
+ "ms": {
1860
+ "version": "2.0.0",
1861
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1862
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1863
+ "dev": true
1864
+ }
1865
+ }
1866
+ },
1867
+ "https-proxy-agent": {
1868
+ "version": "2.2.1",
1869
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
1870
+ "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
1871
+ "dev": true,
1872
+ "requires": {
1873
+ "agent-base": "^4.1.0",
1874
+ "debug": "^3.1.0"
1875
+ },
1876
+ "dependencies": {
1877
+ "debug": {
1878
+ "version": "3.2.6",
1879
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
1880
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
1881
+ "dev": true,
1882
+ "requires": {
1883
+ "ms": "^2.1.1"
1884
+ }
1885
+ }
1886
+ }
1887
+ },
1888
+ "iconv-lite": {
1889
+ "version": "0.4.24",
1890
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1891
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1892
+ "dev": true,
1893
+ "requires": {
1894
+ "safer-buffer": ">= 2.1.2 < 3"
1895
+ }
1896
+ },
1897
+ "ignore": {
1898
+ "version": "3.3.10",
1899
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
1900
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
1901
+ "dev": true
1902
+ },
1903
+ "import-fresh": {
1904
+ "version": "2.0.0",
1905
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
1906
+ "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
1907
+ "dev": true,
1908
+ "requires": {
1909
+ "caller-path": "^2.0.0",
1910
+ "resolve-from": "^3.0.0"
1911
+ },
1912
+ "dependencies": {
1913
+ "resolve-from": {
1914
+ "version": "3.0.0",
1915
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
1916
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
1917
+ "dev": true
1918
+ }
1919
+ }
1920
+ },
1921
+ "import-from": {
1922
+ "version": "2.1.0",
1923
+ "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
1924
+ "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
1925
+ "dev": true,
1926
+ "requires": {
1927
+ "resolve-from": "^3.0.0"
1928
+ },
1929
+ "dependencies": {
1930
+ "resolve-from": {
1931
+ "version": "3.0.0",
1932
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
1933
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
1934
+ "dev": true
1935
+ }
1936
+ }
1937
+ },
1938
+ "indent-string": {
1939
+ "version": "3.2.0",
1940
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
1941
+ "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
1942
+ "dev": true
1943
+ },
1944
+ "inflight": {
1945
+ "version": "1.0.6",
1946
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1947
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1948
+ "dev": true,
1949
+ "requires": {
1950
+ "once": "^1.3.0",
1951
+ "wrappy": "1"
1952
+ }
1953
+ },
1954
+ "inherits": {
1955
+ "version": "2.0.3",
1956
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1957
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1958
+ "dev": true
1959
+ },
1960
+ "ini": {
1961
+ "version": "1.3.5",
1962
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
1963
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
1964
+ "dev": true
1965
+ },
1966
+ "into-stream": {
1967
+ "version": "4.0.0",
1968
+ "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-4.0.0.tgz",
1969
+ "integrity": "sha512-i29KNyE5r0Y/UQzcQ0IbZO1MYJ53Jn0EcFRZPj5FzWKYH17kDFEOwuA+3jroymOI06SW1dEDnly9A1CAreC5dg==",
1970
+ "dev": true,
1971
+ "requires": {
1972
+ "from2": "^2.1.1",
1973
+ "p-is-promise": "^2.0.0"
1974
+ }
1975
+ },
1976
+ "invert-kv": {
1977
+ "version": "2.0.0",
1978
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
1979
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
1980
+ "dev": true
1981
+ },
1982
+ "is-accessor-descriptor": {
1983
+ "version": "0.1.6",
1984
+ "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
1985
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
1986
+ "dev": true,
1987
+ "requires": {
1988
+ "kind-of": "^3.0.2"
1989
+ },
1990
+ "dependencies": {
1991
+ "kind-of": {
1992
+ "version": "3.2.2",
1993
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
1994
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
1995
+ "dev": true,
1996
+ "requires": {
1997
+ "is-buffer": "^1.1.5"
1998
+ }
1999
+ }
2000
+ }
2001
+ },
2002
+ "is-arrayish": {
2003
+ "version": "0.2.1",
2004
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
2005
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
2006
+ "dev": true
2007
+ },
2008
+ "is-buffer": {
2009
+ "version": "1.1.6",
2010
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
2011
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
2012
+ "dev": true
2013
+ },
2014
+ "is-builtin-module": {
2015
+ "version": "1.0.0",
2016
+ "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
2017
+ "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
2018
+ "dev": true,
2019
+ "requires": {
2020
+ "builtin-modules": "^1.0.0"
2021
+ }
2022
+ },
2023
+ "is-data-descriptor": {
2024
+ "version": "0.1.4",
2025
+ "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
2026
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
2027
+ "dev": true,
2028
+ "requires": {
2029
+ "kind-of": "^3.0.2"
2030
+ },
2031
+ "dependencies": {
2032
+ "kind-of": {
2033
+ "version": "3.2.2",
2034
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2035
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2036
+ "dev": true,
2037
+ "requires": {
2038
+ "is-buffer": "^1.1.5"
2039
+ }
2040
+ }
2041
+ }
2042
+ },
2043
+ "is-descriptor": {
2044
+ "version": "0.1.6",
2045
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
2046
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
2047
+ "dev": true,
2048
+ "requires": {
2049
+ "is-accessor-descriptor": "^0.1.6",
2050
+ "is-data-descriptor": "^0.1.4",
2051
+ "kind-of": "^5.0.0"
2052
+ },
2053
+ "dependencies": {
2054
+ "kind-of": {
2055
+ "version": "5.1.0",
2056
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
2057
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
2058
+ "dev": true
2059
+ }
2060
+ }
2061
+ },
2062
+ "is-directory": {
2063
+ "version": "0.3.1",
2064
+ "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
2065
+ "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
2066
+ "dev": true
2067
+ },
2068
+ "is-extendable": {
2069
+ "version": "0.1.1",
2070
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
2071
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
2072
+ "dev": true
2073
+ },
2074
+ "is-extglob": {
2075
+ "version": "2.1.1",
2076
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2077
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
2078
+ "dev": true
2079
+ },
2080
+ "is-finite": {
2081
+ "version": "1.0.2",
2082
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
2083
+ "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
2084
+ "dev": true,
2085
+ "requires": {
2086
+ "number-is-nan": "^1.0.0"
2087
+ }
2088
+ },
2089
+ "is-fullwidth-code-point": {
2090
+ "version": "2.0.0",
2091
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
2092
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
2093
+ "dev": true
2094
+ },
2095
+ "is-glob": {
2096
+ "version": "4.0.0",
2097
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
2098
+ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
2099
+ "dev": true,
2100
+ "requires": {
2101
+ "is-extglob": "^2.1.1"
2102
+ }
2103
+ },
2104
+ "is-number": {
2105
+ "version": "3.0.0",
2106
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
2107
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
2108
+ "dev": true,
2109
+ "requires": {
2110
+ "kind-of": "^3.0.2"
2111
+ },
2112
+ "dependencies": {
2113
+ "kind-of": {
2114
+ "version": "3.2.2",
2115
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2116
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2117
+ "dev": true,
2118
+ "requires": {
2119
+ "is-buffer": "^1.1.5"
2120
+ }
2121
+ }
2122
+ }
2123
+ },
2124
+ "is-obj": {
2125
+ "version": "1.0.1",
2126
+ "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
2127
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
2128
+ "dev": true
2129
+ },
2130
+ "is-plain-obj": {
2131
+ "version": "1.1.0",
2132
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
2133
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
2134
+ "dev": true
2135
+ },
2136
+ "is-plain-object": {
2137
+ "version": "2.0.4",
2138
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
2139
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
2140
+ "dev": true,
2141
+ "requires": {
2142
+ "isobject": "^3.0.1"
2143
+ }
2144
+ },
2145
+ "is-stream": {
2146
+ "version": "1.1.0",
2147
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
2148
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
2149
+ "dev": true
2150
+ },
2151
+ "is-subset": {
2152
+ "version": "0.1.1",
2153
+ "resolved": "https://registry.npmjs.org/is-subset/-/is-subset-0.1.1.tgz",
2154
+ "integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
2155
+ "dev": true
2156
+ },
2157
+ "is-text-path": {
2158
+ "version": "1.0.1",
2159
+ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
2160
+ "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=",
2161
+ "dev": true,
2162
+ "requires": {
2163
+ "text-extensions": "^1.0.0"
2164
+ }
2165
+ },
2166
+ "is-utf8": {
2167
+ "version": "0.2.1",
2168
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
2169
+ "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
2170
+ "dev": true
2171
+ },
2172
+ "is-windows": {
2173
+ "version": "1.0.2",
2174
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
2175
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
2176
+ "dev": true
2177
+ },
2178
+ "isarray": {
2179
+ "version": "1.0.0",
2180
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
2181
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
2182
+ "dev": true
2183
+ },
2184
+ "isexe": {
2185
+ "version": "2.0.0",
2186
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2187
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
2188
+ "dev": true
2189
+ },
2190
+ "isobject": {
2191
+ "version": "3.0.1",
2192
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
2193
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
2194
+ "dev": true
2195
+ },
2196
+ "issue-parser": {
2197
+ "version": "3.0.1",
2198
+ "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-3.0.1.tgz",
2199
+ "integrity": "sha512-5wdT3EE8Kq38x/hJD8QZCJ9scGoOZ5QnzwXyClkviSWTS+xOCE6hJ0qco3H5n5jCsFqpbofZCcMWqlXJzF72VQ==",
2200
+ "dev": true,
2201
+ "requires": {
2202
+ "lodash.capitalize": "^4.2.1",
2203
+ "lodash.escaperegexp": "^4.1.2",
2204
+ "lodash.isplainobject": "^4.0.6",
2205
+ "lodash.isstring": "^4.0.1",
2206
+ "lodash.uniqby": "^4.7.0"
2207
+ }
2208
+ },
2209
+ "java-properties": {
2210
+ "version": "0.2.10",
2211
+ "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-0.2.10.tgz",
2212
+ "integrity": "sha512-CpKJh9VRNhS+XqZtg1UMejETGEiqwCGDC/uwPEEQwc2nfdbSm73SIE29TplG2gLYuBOOTNDqxzG6A9NtEPLt0w==",
2213
+ "dev": true
2214
+ },
2215
+ "js-yaml": {
2216
+ "version": "3.5.5",
2217
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.5.5.tgz",
2218
+ "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=",
2219
+ "dev": true,
2220
+ "requires": {
2221
+ "argparse": "^1.0.2",
2222
+ "esprima": "^2.6.0"
2223
+ }
2224
+ },
2225
+ "json-parse-better-errors": {
2226
+ "version": "1.0.2",
2227
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
2228
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
2229
+ "dev": true
2230
+ },
2231
+ "json-stringify-safe": {
2232
+ "version": "5.0.1",
2233
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
2234
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
2235
+ "dev": true
2236
+ },
2237
+ "jsonfile": {
2238
+ "version": "4.0.0",
2239
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
2240
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
2241
+ "dev": true,
2242
+ "requires": {
2243
+ "graceful-fs": "^4.1.6"
2244
+ }
2245
+ },
2246
+ "jsonparse": {
2247
+ "version": "1.3.1",
2248
+ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
2249
+ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
2250
+ "dev": true
2251
+ },
2252
+ "kind-of": {
2253
+ "version": "6.0.2",
2254
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
2255
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
2256
+ "dev": true
2257
+ },
2258
+ "lcid": {
2259
+ "version": "2.0.0",
2260
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
2261
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
2262
+ "dev": true,
2263
+ "requires": {
2264
+ "invert-kv": "^2.0.0"
2265
+ }
2266
+ },
2267
+ "load-json-file": {
2268
+ "version": "1.1.0",
2269
+ "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
2270
+ "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
2271
+ "dev": true,
2272
+ "requires": {
2273
+ "graceful-fs": "^4.1.2",
2274
+ "parse-json": "^2.2.0",
2275
+ "pify": "^2.0.0",
2276
+ "pinkie-promise": "^2.0.0",
2277
+ "strip-bom": "^2.0.0"
2278
+ },
2279
+ "dependencies": {
2280
+ "parse-json": {
2281
+ "version": "2.2.0",
2282
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
2283
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
2284
+ "dev": true,
2285
+ "requires": {
2286
+ "error-ex": "^1.2.0"
2287
+ }
2288
+ },
2289
+ "pify": {
2290
+ "version": "2.3.0",
2291
+ "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
2292
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
2293
+ "dev": true
2294
+ }
2295
+ }
2296
+ },
2297
+ "locate-path": {
2298
+ "version": "2.0.0",
2299
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
2300
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
2301
+ "dev": true,
2302
+ "requires": {
2303
+ "p-locate": "^2.0.0",
2304
+ "path-exists": "^3.0.0"
2305
+ },
2306
+ "dependencies": {
2307
+ "p-locate": {
2308
+ "version": "2.0.0",
2309
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
2310
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
2311
+ "dev": true,
2312
+ "requires": {
2313
+ "p-limit": "^1.1.0"
2314
+ }
2315
+ },
2316
+ "path-exists": {
2317
+ "version": "3.0.0",
2318
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
2319
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
2320
+ "dev": true
2321
+ }
2322
+ }
2323
+ },
2324
+ "lodash": {
2325
+ "version": "4.17.11",
2326
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
2327
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
2328
+ "dev": true
2329
+ },
2330
+ "lodash.assign": {
2331
+ "version": "4.2.0",
2332
+ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
2333
+ "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=",
2334
+ "dev": true
2335
+ },
2336
+ "lodash.capitalize": {
2337
+ "version": "4.2.1",
2338
+ "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz",
2339
+ "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=",
2340
+ "dev": true
2341
+ },
2342
+ "lodash.escaperegexp": {
2343
+ "version": "4.1.2",
2344
+ "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
2345
+ "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=",
2346
+ "dev": true
2347
+ },
2348
+ "lodash.get": {
2349
+ "version": "4.4.2",
2350
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
2351
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
2352
+ "dev": true
2353
+ },
2354
+ "lodash.isplainobject": {
2355
+ "version": "4.0.6",
2356
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
2357
+ "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
2358
+ "dev": true
2359
+ },
2360
+ "lodash.isstring": {
2361
+ "version": "4.0.1",
2362
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
2363
+ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=",
2364
+ "dev": true
2365
+ },
2366
+ "lodash.pick": {
2367
+ "version": "4.4.0",
2368
+ "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
2369
+ "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
2370
+ "dev": true
2371
+ },
2372
+ "lodash.set": {
2373
+ "version": "4.3.2",
2374
+ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
2375
+ "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=",
2376
+ "dev": true
2377
+ },
2378
+ "lodash.toarray": {
2379
+ "version": "4.4.0",
2380
+ "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
2381
+ "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=",
2382
+ "dev": true
2383
+ },
2384
+ "lodash.uniq": {
2385
+ "version": "4.5.0",
2386
+ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
2387
+ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
2388
+ "dev": true
2389
+ },
2390
+ "lodash.uniqby": {
2391
+ "version": "4.7.0",
2392
+ "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
2393
+ "integrity": "sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=",
2394
+ "dev": true
2395
+ },
2396
+ "loud-rejection": {
2397
+ "version": "1.6.0",
2398
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
2399
+ "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
2400
+ "dev": true,
2401
+ "requires": {
2402
+ "currently-unhandled": "^0.4.1",
2403
+ "signal-exit": "^3.0.0"
2404
+ }
2405
+ },
2406
+ "macos-release": {
2407
+ "version": "2.0.0",
2408
+ "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.0.0.tgz",
2409
+ "integrity": "sha512-iCM3ZGeqIzlrH7KxYK+fphlJpCCczyHXc+HhRVbEu9uNTCrzYJjvvtefzeKTCVHd5AP/aD/fzC80JZ4ZP+dQ/A==",
2410
+ "dev": true
2411
+ },
2412
+ "map-age-cleaner": {
2413
+ "version": "0.1.3",
2414
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
2415
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
2416
+ "dev": true,
2417
+ "requires": {
2418
+ "p-defer": "^1.0.0"
2419
+ }
2420
+ },
2421
+ "map-cache": {
2422
+ "version": "0.2.2",
2423
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
2424
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
2425
+ "dev": true
2426
+ },
2427
+ "map-obj": {
2428
+ "version": "1.0.1",
2429
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
2430
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
2431
+ "dev": true
2432
+ },
2433
+ "map-visit": {
2434
+ "version": "1.0.0",
2435
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
2436
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
2437
+ "dev": true,
2438
+ "requires": {
2439
+ "object-visit": "^1.0.0"
2440
+ }
2441
+ },
2442
+ "marked": {
2443
+ "version": "0.5.2",
2444
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.5.2.tgz",
2445
+ "integrity": "sha512-fdZvBa7/vSQIZCi4uuwo2N3q+7jJURpMVCcbaX0S1Mg65WZ5ilXvC67MviJAsdjqqgD+CEq4RKo5AYGgINkVAA==",
2446
+ "dev": true
2447
+ },
2448
+ "marked-terminal": {
2449
+ "version": "3.1.1",
2450
+ "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-3.1.1.tgz",
2451
+ "integrity": "sha512-7UBFww1rdx0w9HehLMCVYa8/AxXaiDigDfMsJcj82/wgLQG9cj+oiMAVlJpeWD57VFJY2OYY+bKeEVIjIlxi+w==",
2452
+ "dev": true,
2453
+ "requires": {
2454
+ "cardinal": "^2.1.1",
2455
+ "chalk": "^2.4.1",
2456
+ "cli-table": "^0.3.1",
2457
+ "lodash.assign": "^4.2.0",
2458
+ "node-emoji": "^1.4.1"
2459
+ }
2460
+ },
2461
+ "mem": {
2462
+ "version": "4.0.0",
2463
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz",
2464
+ "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==",
2465
+ "dev": true,
2466
+ "requires": {
2467
+ "map-age-cleaner": "^0.1.1",
2468
+ "mimic-fn": "^1.0.0",
2469
+ "p-is-promise": "^1.1.0"
2470
+ },
2471
+ "dependencies": {
2472
+ "p-is-promise": {
2473
+ "version": "1.1.0",
2474
+ "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz",
2475
+ "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=",
2476
+ "dev": true
2477
+ }
2478
+ }
2479
+ },
2480
+ "meow": {
2481
+ "version": "3.7.0",
2482
+ "resolved": "http://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
2483
+ "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
2484
+ "dev": true,
2485
+ "requires": {
2486
+ "camelcase-keys": "^2.0.0",
2487
+ "decamelize": "^1.1.2",
2488
+ "loud-rejection": "^1.0.0",
2489
+ "map-obj": "^1.0.1",
2490
+ "minimist": "^1.1.3",
2491
+ "normalize-package-data": "^2.3.4",
2492
+ "object-assign": "^4.0.1",
2493
+ "read-pkg-up": "^1.0.1",
2494
+ "redent": "^1.0.0",
2495
+ "trim-newlines": "^1.0.0"
2496
+ }
2497
+ },
2498
+ "merge2": {
2499
+ "version": "1.2.3",
2500
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.2.3.tgz",
2501
+ "integrity": "sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA==",
2502
+ "dev": true
2503
+ },
2504
+ "micromatch": {
2505
+ "version": "3.1.10",
2506
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
2507
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
2508
+ "dev": true,
2509
+ "requires": {
2510
+ "arr-diff": "^4.0.0",
2511
+ "array-unique": "^0.3.2",
2512
+ "braces": "^2.3.1",
2513
+ "define-property": "^2.0.2",
2514
+ "extend-shallow": "^3.0.2",
2515
+ "extglob": "^2.0.4",
2516
+ "fragment-cache": "^0.2.1",
2517
+ "kind-of": "^6.0.2",
2518
+ "nanomatch": "^1.2.9",
2519
+ "object.pick": "^1.3.0",
2520
+ "regex-not": "^1.0.0",
2521
+ "snapdragon": "^0.8.1",
2522
+ "to-regex": "^3.0.2"
2523
+ }
2524
+ },
2525
+ "mime": {
2526
+ "version": "2.4.0",
2527
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz",
2528
+ "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==",
2529
+ "dev": true
2530
+ },
2531
+ "mimic-fn": {
2532
+ "version": "1.2.0",
2533
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
2534
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
2535
+ "dev": true
2536
+ },
2537
+ "minimatch": {
2538
+ "version": "3.0.4",
2539
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2540
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2541
+ "dev": true,
2542
+ "requires": {
2543
+ "brace-expansion": "^1.1.7"
2544
+ }
2545
+ },
2546
+ "minimist": {
2547
+ "version": "1.2.0",
2548
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
2549
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
2550
+ "dev": true
2551
+ },
2552
+ "minimist-options": {
2553
+ "version": "3.0.2",
2554
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
2555
+ "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
2556
+ "dev": true,
2557
+ "requires": {
2558
+ "arrify": "^1.0.1",
2559
+ "is-plain-obj": "^1.1.0"
2560
+ }
2561
+ },
2562
+ "mixin-deep": {
2563
+ "version": "1.3.1",
2564
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
2565
+ "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==",
2566
+ "dev": true,
2567
+ "requires": {
2568
+ "for-in": "^1.0.2",
2569
+ "is-extendable": "^1.0.1"
2570
+ },
2571
+ "dependencies": {
2572
+ "is-extendable": {
2573
+ "version": "1.0.1",
2574
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
2575
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
2576
+ "dev": true,
2577
+ "requires": {
2578
+ "is-plain-object": "^2.0.4"
2579
+ }
2580
+ }
2581
+ }
2582
+ },
2583
+ "mkdirp": {
2584
+ "version": "0.5.1",
2585
+ "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
2586
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
2587
+ "dev": true,
2588
+ "requires": {
2589
+ "minimist": "0.0.8"
2590
+ },
2591
+ "dependencies": {
2592
+ "minimist": {
2593
+ "version": "0.0.8",
2594
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
2595
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
2596
+ "dev": true
2597
+ }
2598
+ }
2599
+ },
2600
+ "modify-values": {
2601
+ "version": "1.0.1",
2602
+ "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
2603
+ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
2604
+ "dev": true
2605
+ },
2606
+ "ms": {
2607
+ "version": "2.1.1",
2608
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
2609
+ "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
2610
+ "dev": true
2611
+ },
2612
+ "nanomatch": {
2613
+ "version": "1.2.13",
2614
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
2615
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
2616
+ "dev": true,
2617
+ "requires": {
2618
+ "arr-diff": "^4.0.0",
2619
+ "array-unique": "^0.3.2",
2620
+ "define-property": "^2.0.2",
2621
+ "extend-shallow": "^3.0.2",
2622
+ "fragment-cache": "^0.2.1",
2623
+ "is-windows": "^1.0.2",
2624
+ "kind-of": "^6.0.2",
2625
+ "object.pick": "^1.3.0",
2626
+ "regex-not": "^1.0.0",
2627
+ "snapdragon": "^0.8.1",
2628
+ "to-regex": "^3.0.1"
2629
+ }
2630
+ },
2631
+ "nerf-dart": {
2632
+ "version": "1.0.0",
2633
+ "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz",
2634
+ "integrity": "sha1-5tq3/r9a2Bbqgc9cYpxaDr3nLBo=",
2635
+ "dev": true
2636
+ },
2637
+ "nice-try": {
2638
+ "version": "1.0.5",
2639
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
2640
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
2641
+ "dev": true
2642
+ },
2643
+ "node-emoji": {
2644
+ "version": "1.8.1",
2645
+ "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.8.1.tgz",
2646
+ "integrity": "sha512-+ktMAh1Jwas+TnGodfCfjUbJKoANqPaJFN0z0iqh41eqD8dvguNzcitVSBSVK1pidz0AqGbLKcoVuVLRVZ/aVg==",
2647
+ "dev": true,
2648
+ "requires": {
2649
+ "lodash.toarray": "^4.4.0"
2650
+ }
2651
+ },
2652
+ "node-fetch": {
2653
+ "version": "2.3.0",
2654
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
2655
+ "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==",
2656
+ "dev": true
2657
+ },
2658
+ "nopt": {
2659
+ "version": "3.0.6",
2660
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
2661
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
2662
+ "dev": true,
2663
+ "requires": {
2664
+ "abbrev": "1"
2665
+ }
2666
+ },
2667
+ "normalize-package-data": {
2668
+ "version": "2.4.0",
2669
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
2670
+ "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
2671
+ "dev": true,
2672
+ "requires": {
2673
+ "hosted-git-info": "^2.1.4",
2674
+ "is-builtin-module": "^1.0.0",
2675
+ "semver": "2 || 3 || 4 || 5",
2676
+ "validate-npm-package-license": "^3.0.1"
2677
+ }
2678
+ },
2679
+ "normalize-url": {
2680
+ "version": "4.1.0",
2681
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.1.0.tgz",
2682
+ "integrity": "sha512-X781mkWeK6PDMAZJfGn/wnwil4dV6pIdF9euiNqtA89uJvZuNDJO2YyJxiwpPhTQcF5pYUU1v+kcOxzYV6rZlA==",
2683
+ "dev": true
2684
+ },
2685
+ "npm": {
2686
+ "version": "6.5.0",
2687
+ "resolved": "https://registry.npmjs.org/npm/-/npm-6.5.0.tgz",
2688
+ "integrity": "sha512-SPq8zG2Kto+Xrq55E97O14Jla13PmQT5kSnvwBj88BmJZ5Nvw++OmlWfhjkB67pcgP5UEXljEtnGFKZtOgt6MQ==",
2689
+ "dev": true,
2690
+ "requires": {
2691
+ "JSONStream": "^1.3.4",
2692
+ "abbrev": "~1.1.1",
2693
+ "ansicolors": "~0.3.2",
2694
+ "ansistyles": "~0.1.3",
2695
+ "aproba": "~1.2.0",
2696
+ "archy": "~1.0.0",
2697
+ "bin-links": "^1.1.2",
2698
+ "bluebird": "^3.5.3",
2699
+ "byte-size": "^4.0.3",
2700
+ "cacache": "^11.2.0",
2701
+ "call-limit": "~1.1.0",
2702
+ "chownr": "~1.0.1",
2703
+ "ci-info": "^1.6.0",
2704
+ "cli-columns": "^3.1.2",
2705
+ "cli-table3": "^0.5.0",
2706
+ "cmd-shim": "~2.0.2",
2707
+ "columnify": "~1.5.4",
2708
+ "config-chain": "^1.1.12",
2709
+ "debuglog": "*",
2710
+ "detect-indent": "~5.0.0",
2711
+ "detect-newline": "^2.1.0",
2712
+ "dezalgo": "~1.0.3",
2713
+ "editor": "~1.0.0",
2714
+ "figgy-pudding": "^3.5.1",
2715
+ "find-npm-prefix": "^1.0.2",
2716
+ "fs-vacuum": "~1.2.10",
2717
+ "fs-write-stream-atomic": "~1.0.10",
2718
+ "gentle-fs": "^2.0.1",
2719
+ "glob": "^7.1.3",
2720
+ "graceful-fs": "^4.1.15",
2721
+ "has-unicode": "~2.0.1",
2722
+ "hosted-git-info": "^2.7.1",
2723
+ "iferr": "^1.0.2",
2724
+ "imurmurhash": "*",
2725
+ "inflight": "~1.0.6",
2726
+ "inherits": "~2.0.3",
2727
+ "ini": "^1.3.5",
2728
+ "init-package-json": "^1.10.3",
2729
+ "is-cidr": "^2.0.6",
2730
+ "json-parse-better-errors": "^1.0.2",
2731
+ "lazy-property": "~1.0.0",
2732
+ "libcipm": "^2.0.2",
2733
+ "libnpmhook": "^4.0.1",
2734
+ "libnpx": "^10.2.0",
2735
+ "lock-verify": "^2.0.2",
2736
+ "lockfile": "^1.0.4",
2737
+ "lodash._baseindexof": "*",
2738
+ "lodash._baseuniq": "~4.6.0",
2739
+ "lodash._bindcallback": "*",
2740
+ "lodash._cacheindexof": "*",
2741
+ "lodash._createcache": "*",
2742
+ "lodash._getnative": "*",
2743
+ "lodash.clonedeep": "~4.5.0",
2744
+ "lodash.restparam": "*",
2745
+ "lodash.union": "~4.6.0",
2746
+ "lodash.uniq": "~4.5.0",
2747
+ "lodash.without": "~4.4.0",
2748
+ "lru-cache": "^4.1.3",
2749
+ "meant": "~1.0.1",
2750
+ "mississippi": "^3.0.0",
2751
+ "mkdirp": "~0.5.1",
2752
+ "move-concurrently": "^1.0.1",
2753
+ "node-gyp": "^3.8.0",
2754
+ "nopt": "~4.0.1",
2755
+ "normalize-package-data": "~2.4.0",
2756
+ "npm-audit-report": "^1.3.1",
2757
+ "npm-cache-filename": "~1.0.2",
2758
+ "npm-install-checks": "~3.0.0",
2759
+ "npm-lifecycle": "^2.1.0",
2760
+ "npm-package-arg": "^6.1.0",
2761
+ "npm-packlist": "^1.1.12",
2762
+ "npm-pick-manifest": "^2.1.0",
2763
+ "npm-profile": "^3.0.2",
2764
+ "npm-registry-client": "^8.6.0",
2765
+ "npm-registry-fetch": "^1.1.0",
2766
+ "npm-user-validate": "~1.0.0",
2767
+ "npmlog": "~4.1.2",
2768
+ "once": "~1.4.0",
2769
+ "opener": "^1.5.1",
2770
+ "osenv": "^0.1.5",
2771
+ "pacote": "^8.1.6",
2772
+ "path-is-inside": "~1.0.2",
2773
+ "promise-inflight": "~1.0.1",
2774
+ "qrcode-terminal": "^0.12.0",
2775
+ "query-string": "^6.1.0",
2776
+ "qw": "~1.0.1",
2777
+ "read": "~1.0.7",
2778
+ "read-cmd-shim": "~1.0.1",
2779
+ "read-installed": "~4.0.3",
2780
+ "read-package-json": "^2.0.13",
2781
+ "read-package-tree": "^5.2.1",
2782
+ "readable-stream": "^2.3.6",
2783
+ "readdir-scoped-modules": "*",
2784
+ "request": "^2.88.0",
2785
+ "retry": "^0.12.0",
2786
+ "rimraf": "~2.6.2",
2787
+ "safe-buffer": "^5.1.2",
2788
+ "semver": "^5.5.1",
2789
+ "sha": "~2.0.1",
2790
+ "slide": "~1.1.6",
2791
+ "sorted-object": "~2.0.1",
2792
+ "sorted-union-stream": "~2.1.3",
2793
+ "ssri": "^6.0.1",
2794
+ "stringify-package": "^1.0.0",
2795
+ "tar": "^4.4.8",
2796
+ "text-table": "~0.2.0",
2797
+ "tiny-relative-date": "^1.3.0",
2798
+ "uid-number": "0.0.6",
2799
+ "umask": "~1.1.0",
2800
+ "unique-filename": "~1.1.0",
2801
+ "unpipe": "~1.0.0",
2802
+ "update-notifier": "^2.5.0",
2803
+ "uuid": "^3.3.2",
2804
+ "validate-npm-package-license": "^3.0.4",
2805
+ "validate-npm-package-name": "~3.0.0",
2806
+ "which": "^1.3.1",
2807
+ "worker-farm": "^1.6.0",
2808
+ "write-file-atomic": "^2.3.0"
2809
+ },
2810
+ "dependencies": {
2811
+ "JSONStream": {
2812
+ "version": "1.3.4",
2813
+ "bundled": true,
2814
+ "dev": true,
2815
+ "requires": {
2816
+ "jsonparse": "^1.2.0",
2817
+ "through": ">=2.2.7 <3"
2818
+ }
2819
+ },
2820
+ "abbrev": {
2821
+ "version": "1.1.1",
2822
+ "bundled": true,
2823
+ "dev": true
2824
+ },
2825
+ "agent-base": {
2826
+ "version": "4.2.0",
2827
+ "bundled": true,
2828
+ "dev": true,
2829
+ "requires": {
2830
+ "es6-promisify": "^5.0.0"
2831
+ }
2832
+ },
2833
+ "agentkeepalive": {
2834
+ "version": "3.4.1",
2835
+ "bundled": true,
2836
+ "dev": true,
2837
+ "requires": {
2838
+ "humanize-ms": "^1.2.1"
2839
+ }
2840
+ },
2841
+ "ajv": {
2842
+ "version": "5.5.2",
2843
+ "bundled": true,
2844
+ "dev": true,
2845
+ "requires": {
2846
+ "co": "^4.6.0",
2847
+ "fast-deep-equal": "^1.0.0",
2848
+ "fast-json-stable-stringify": "^2.0.0",
2849
+ "json-schema-traverse": "^0.3.0"
2850
+ }
2851
+ },
2852
+ "ansi-align": {
2853
+ "version": "2.0.0",
2854
+ "bundled": true,
2855
+ "dev": true,
2856
+ "requires": {
2857
+ "string-width": "^2.0.0"
2858
+ }
2859
+ },
2860
+ "ansi-regex": {
2861
+ "version": "2.1.1",
2862
+ "bundled": true,
2863
+ "dev": true
2864
+ },
2865
+ "ansi-styles": {
2866
+ "version": "3.2.1",
2867
+ "bundled": true,
2868
+ "dev": true,
2869
+ "requires": {
2870
+ "color-convert": "^1.9.0"
2871
+ }
2872
+ },
2873
+ "ansicolors": {
2874
+ "version": "0.3.2",
2875
+ "bundled": true,
2876
+ "dev": true
2877
+ },
2878
+ "ansistyles": {
2879
+ "version": "0.1.3",
2880
+ "bundled": true,
2881
+ "dev": true
2882
+ },
2883
+ "aproba": {
2884
+ "version": "1.2.0",
2885
+ "bundled": true,
2886
+ "dev": true
2887
+ },
2888
+ "archy": {
2889
+ "version": "1.0.0",
2890
+ "bundled": true,
2891
+ "dev": true
2892
+ },
2893
+ "are-we-there-yet": {
2894
+ "version": "1.1.4",
2895
+ "bundled": true,
2896
+ "dev": true,
2897
+ "requires": {
2898
+ "delegates": "^1.0.0",
2899
+ "readable-stream": "^2.0.6"
2900
+ }
2901
+ },
2902
+ "asap": {
2903
+ "version": "2.0.6",
2904
+ "bundled": true,
2905
+ "dev": true
2906
+ },
2907
+ "asn1": {
2908
+ "version": "0.2.4",
2909
+ "bundled": true,
2910
+ "dev": true,
2911
+ "requires": {
2912
+ "safer-buffer": "~2.1.0"
2913
+ }
2914
+ },
2915
+ "assert-plus": {
2916
+ "version": "1.0.0",
2917
+ "bundled": true,
2918
+ "dev": true
2919
+ },
2920
+ "asynckit": {
2921
+ "version": "0.4.0",
2922
+ "bundled": true,
2923
+ "dev": true
2924
+ },
2925
+ "aws-sign2": {
2926
+ "version": "0.7.0",
2927
+ "bundled": true,
2928
+ "dev": true
2929
+ },
2930
+ "aws4": {
2931
+ "version": "1.8.0",
2932
+ "bundled": true,
2933
+ "dev": true
2934
+ },
2935
+ "balanced-match": {
2936
+ "version": "1.0.0",
2937
+ "bundled": true,
2938
+ "dev": true
2939
+ },
2940
+ "bcrypt-pbkdf": {
2941
+ "version": "1.0.2",
2942
+ "bundled": true,
2943
+ "dev": true,
2944
+ "optional": true,
2945
+ "requires": {
2946
+ "tweetnacl": "^0.14.3"
2947
+ }
2948
+ },
2949
+ "bin-links": {
2950
+ "version": "1.1.2",
2951
+ "bundled": true,
2952
+ "dev": true,
2953
+ "requires": {
2954
+ "bluebird": "^3.5.0",
2955
+ "cmd-shim": "^2.0.2",
2956
+ "gentle-fs": "^2.0.0",
2957
+ "graceful-fs": "^4.1.11",
2958
+ "write-file-atomic": "^2.3.0"
2959
+ }
2960
+ },
2961
+ "block-stream": {
2962
+ "version": "0.0.9",
2963
+ "bundled": true,
2964
+ "dev": true,
2965
+ "requires": {
2966
+ "inherits": "~2.0.0"
2967
+ }
2968
+ },
2969
+ "bluebird": {
2970
+ "version": "3.5.3",
2971
+ "bundled": true,
2972
+ "dev": true
2973
+ },
2974
+ "boxen": {
2975
+ "version": "1.3.0",
2976
+ "bundled": true,
2977
+ "dev": true,
2978
+ "requires": {
2979
+ "ansi-align": "^2.0.0",
2980
+ "camelcase": "^4.0.0",
2981
+ "chalk": "^2.0.1",
2982
+ "cli-boxes": "^1.0.0",
2983
+ "string-width": "^2.0.0",
2984
+ "term-size": "^1.2.0",
2985
+ "widest-line": "^2.0.0"
2986
+ }
2987
+ },
2988
+ "brace-expansion": {
2989
+ "version": "1.1.11",
2990
+ "bundled": true,
2991
+ "dev": true,
2992
+ "requires": {
2993
+ "balanced-match": "^1.0.0",
2994
+ "concat-map": "0.0.1"
2995
+ }
2996
+ },
2997
+ "buffer-from": {
2998
+ "version": "1.0.0",
2999
+ "bundled": true,
3000
+ "dev": true
3001
+ },
3002
+ "builtin-modules": {
3003
+ "version": "1.1.1",
3004
+ "bundled": true,
3005
+ "dev": true
3006
+ },
3007
+ "builtins": {
3008
+ "version": "1.0.3",
3009
+ "bundled": true,
3010
+ "dev": true
3011
+ },
3012
+ "byline": {
3013
+ "version": "5.0.0",
3014
+ "bundled": true,
3015
+ "dev": true
3016
+ },
3017
+ "byte-size": {
3018
+ "version": "4.0.3",
3019
+ "bundled": true,
3020
+ "dev": true
3021
+ },
3022
+ "cacache": {
3023
+ "version": "11.2.0",
3024
+ "bundled": true,
3025
+ "dev": true,
3026
+ "requires": {
3027
+ "bluebird": "^3.5.1",
3028
+ "chownr": "^1.0.1",
3029
+ "figgy-pudding": "^3.1.0",
3030
+ "glob": "^7.1.2",
3031
+ "graceful-fs": "^4.1.11",
3032
+ "lru-cache": "^4.1.3",
3033
+ "mississippi": "^3.0.0",
3034
+ "mkdirp": "^0.5.1",
3035
+ "move-concurrently": "^1.0.1",
3036
+ "promise-inflight": "^1.0.1",
3037
+ "rimraf": "^2.6.2",
3038
+ "ssri": "^6.0.0",
3039
+ "unique-filename": "^1.1.0",
3040
+ "y18n": "^4.0.0"
3041
+ }
3042
+ },
3043
+ "call-limit": {
3044
+ "version": "1.1.0",
3045
+ "bundled": true,
3046
+ "dev": true
3047
+ },
3048
+ "camelcase": {
3049
+ "version": "4.1.0",
3050
+ "bundled": true,
3051
+ "dev": true
3052
+ },
3053
+ "capture-stack-trace": {
3054
+ "version": "1.0.0",
3055
+ "bundled": true,
3056
+ "dev": true
3057
+ },
3058
+ "caseless": {
3059
+ "version": "0.12.0",
3060
+ "bundled": true,
3061
+ "dev": true
3062
+ },
3063
+ "chalk": {
3064
+ "version": "2.4.1",
3065
+ "bundled": true,
3066
+ "dev": true,
3067
+ "requires": {
3068
+ "ansi-styles": "^3.2.1",
3069
+ "escape-string-regexp": "^1.0.5",
3070
+ "supports-color": "^5.3.0"
3071
+ }
3072
+ },
3073
+ "chownr": {
3074
+ "version": "1.0.1",
3075
+ "bundled": true,
3076
+ "dev": true
3077
+ },
3078
+ "ci-info": {
3079
+ "version": "1.6.0",
3080
+ "bundled": true,
3081
+ "dev": true
3082
+ },
3083
+ "cidr-regex": {
3084
+ "version": "2.0.9",
3085
+ "bundled": true,
3086
+ "dev": true,
3087
+ "requires": {
3088
+ "ip-regex": "^2.1.0"
3089
+ }
3090
+ },
3091
+ "cli-boxes": {
3092
+ "version": "1.0.0",
3093
+ "bundled": true,
3094
+ "dev": true
3095
+ },
3096
+ "cli-columns": {
3097
+ "version": "3.1.2",
3098
+ "bundled": true,
3099
+ "dev": true,
3100
+ "requires": {
3101
+ "string-width": "^2.0.0",
3102
+ "strip-ansi": "^3.0.1"
3103
+ }
3104
+ },
3105
+ "cli-table3": {
3106
+ "version": "0.5.0",
3107
+ "bundled": true,
3108
+ "dev": true,
3109
+ "requires": {
3110
+ "colors": "^1.1.2",
3111
+ "object-assign": "^4.1.0",
3112
+ "string-width": "^2.1.1"
3113
+ }
3114
+ },
3115
+ "cliui": {
3116
+ "version": "4.1.0",
3117
+ "bundled": true,
3118
+ "dev": true,
3119
+ "requires": {
3120
+ "string-width": "^2.1.1",
3121
+ "strip-ansi": "^4.0.0",
3122
+ "wrap-ansi": "^2.0.0"
3123
+ },
3124
+ "dependencies": {
3125
+ "ansi-regex": {
3126
+ "version": "3.0.0",
3127
+ "bundled": true,
3128
+ "dev": true
3129
+ },
3130
+ "strip-ansi": {
3131
+ "version": "4.0.0",
3132
+ "bundled": true,
3133
+ "dev": true,
3134
+ "requires": {
3135
+ "ansi-regex": "^3.0.0"
3136
+ }
3137
+ }
3138
+ }
3139
+ },
3140
+ "clone": {
3141
+ "version": "1.0.4",
3142
+ "bundled": true,
3143
+ "dev": true
3144
+ },
3145
+ "cmd-shim": {
3146
+ "version": "2.0.2",
3147
+ "bundled": true,
3148
+ "dev": true,
3149
+ "requires": {
3150
+ "graceful-fs": "^4.1.2",
3151
+ "mkdirp": "~0.5.0"
3152
+ }
3153
+ },
3154
+ "co": {
3155
+ "version": "4.6.0",
3156
+ "bundled": true,
3157
+ "dev": true
3158
+ },
3159
+ "code-point-at": {
3160
+ "version": "1.1.0",
3161
+ "bundled": true,
3162
+ "dev": true
3163
+ },
3164
+ "color-convert": {
3165
+ "version": "1.9.1",
3166
+ "bundled": true,
3167
+ "dev": true,
3168
+ "requires": {
3169
+ "color-name": "^1.1.1"
3170
+ }
3171
+ },
3172
+ "color-name": {
3173
+ "version": "1.1.3",
3174
+ "bundled": true,
3175
+ "dev": true
3176
+ },
3177
+ "colors": {
3178
+ "version": "1.1.2",
3179
+ "bundled": true,
3180
+ "dev": true,
3181
+ "optional": true
3182
+ },
3183
+ "columnify": {
3184
+ "version": "1.5.4",
3185
+ "bundled": true,
3186
+ "dev": true,
3187
+ "requires": {
3188
+ "strip-ansi": "^3.0.0",
3189
+ "wcwidth": "^1.0.0"
3190
+ }
3191
+ },
3192
+ "combined-stream": {
3193
+ "version": "1.0.6",
3194
+ "bundled": true,
3195
+ "dev": true,
3196
+ "requires": {
3197
+ "delayed-stream": "~1.0.0"
3198
+ }
3199
+ },
3200
+ "concat-map": {
3201
+ "version": "0.0.1",
3202
+ "bundled": true,
3203
+ "dev": true
3204
+ },
3205
+ "concat-stream": {
3206
+ "version": "1.6.2",
3207
+ "bundled": true,
3208
+ "dev": true,
3209
+ "requires": {
3210
+ "buffer-from": "^1.0.0",
3211
+ "inherits": "^2.0.3",
3212
+ "readable-stream": "^2.2.2",
3213
+ "typedarray": "^0.0.6"
3214
+ }
3215
+ },
3216
+ "config-chain": {
3217
+ "version": "1.1.12",
3218
+ "bundled": true,
3219
+ "dev": true,
3220
+ "requires": {
3221
+ "ini": "^1.3.4",
3222
+ "proto-list": "~1.2.1"
3223
+ }
3224
+ },
3225
+ "configstore": {
3226
+ "version": "3.1.2",
3227
+ "bundled": true,
3228
+ "dev": true,
3229
+ "requires": {
3230
+ "dot-prop": "^4.1.0",
3231
+ "graceful-fs": "^4.1.2",
3232
+ "make-dir": "^1.0.0",
3233
+ "unique-string": "^1.0.0",
3234
+ "write-file-atomic": "^2.0.0",
3235
+ "xdg-basedir": "^3.0.0"
3236
+ }
3237
+ },
3238
+ "console-control-strings": {
3239
+ "version": "1.1.0",
3240
+ "bundled": true,
3241
+ "dev": true
3242
+ },
3243
+ "copy-concurrently": {
3244
+ "version": "1.0.5",
3245
+ "bundled": true,
3246
+ "dev": true,
3247
+ "requires": {
3248
+ "aproba": "^1.1.1",
3249
+ "fs-write-stream-atomic": "^1.0.8",
3250
+ "iferr": "^0.1.5",
3251
+ "mkdirp": "^0.5.1",
3252
+ "rimraf": "^2.5.4",
3253
+ "run-queue": "^1.0.0"
3254
+ },
3255
+ "dependencies": {
3256
+ "iferr": {
3257
+ "version": "0.1.5",
3258
+ "bundled": true,
3259
+ "dev": true
3260
+ }
3261
+ }
3262
+ },
3263
+ "core-util-is": {
3264
+ "version": "1.0.2",
3265
+ "bundled": true,
3266
+ "dev": true
3267
+ },
3268
+ "create-error-class": {
3269
+ "version": "3.0.2",
3270
+ "bundled": true,
3271
+ "dev": true,
3272
+ "requires": {
3273
+ "capture-stack-trace": "^1.0.0"
3274
+ }
3275
+ },
3276
+ "cross-spawn": {
3277
+ "version": "5.1.0",
3278
+ "bundled": true,
3279
+ "dev": true,
3280
+ "requires": {
3281
+ "lru-cache": "^4.0.1",
3282
+ "shebang-command": "^1.2.0",
3283
+ "which": "^1.2.9"
3284
+ }
3285
+ },
3286
+ "crypto-random-string": {
3287
+ "version": "1.0.0",
3288
+ "bundled": true,
3289
+ "dev": true
3290
+ },
3291
+ "cyclist": {
3292
+ "version": "0.2.2",
3293
+ "bundled": true,
3294
+ "dev": true
3295
+ },
3296
+ "dashdash": {
3297
+ "version": "1.14.1",
3298
+ "bundled": true,
3299
+ "dev": true,
3300
+ "requires": {
3301
+ "assert-plus": "^1.0.0"
3302
+ }
3303
+ },
3304
+ "debug": {
3305
+ "version": "3.1.0",
3306
+ "bundled": true,
3307
+ "dev": true,
3308
+ "requires": {
3309
+ "ms": "2.0.0"
3310
+ },
3311
+ "dependencies": {
3312
+ "ms": {
3313
+ "version": "2.0.0",
3314
+ "bundled": true,
3315
+ "dev": true
3316
+ }
3317
+ }
3318
+ },
3319
+ "debuglog": {
3320
+ "version": "1.0.1",
3321
+ "bundled": true,
3322
+ "dev": true
3323
+ },
3324
+ "decamelize": {
3325
+ "version": "1.2.0",
3326
+ "bundled": true,
3327
+ "dev": true
3328
+ },
3329
+ "decode-uri-component": {
3330
+ "version": "0.2.0",
3331
+ "bundled": true,
3332
+ "dev": true
3333
+ },
3334
+ "deep-extend": {
3335
+ "version": "0.5.1",
3336
+ "bundled": true,
3337
+ "dev": true
3338
+ },
3339
+ "defaults": {
3340
+ "version": "1.0.3",
3341
+ "bundled": true,
3342
+ "dev": true,
3343
+ "requires": {
3344
+ "clone": "^1.0.2"
3345
+ }
3346
+ },
3347
+ "delayed-stream": {
3348
+ "version": "1.0.0",
3349
+ "bundled": true,
3350
+ "dev": true
3351
+ },
3352
+ "delegates": {
3353
+ "version": "1.0.0",
3354
+ "bundled": true,
3355
+ "dev": true
3356
+ },
3357
+ "detect-indent": {
3358
+ "version": "5.0.0",
3359
+ "bundled": true,
3360
+ "dev": true
3361
+ },
3362
+ "detect-newline": {
3363
+ "version": "2.1.0",
3364
+ "bundled": true,
3365
+ "dev": true
3366
+ },
3367
+ "dezalgo": {
3368
+ "version": "1.0.3",
3369
+ "bundled": true,
3370
+ "dev": true,
3371
+ "requires": {
3372
+ "asap": "^2.0.0",
3373
+ "wrappy": "1"
3374
+ }
3375
+ },
3376
+ "dot-prop": {
3377
+ "version": "4.2.0",
3378
+ "bundled": true,
3379
+ "dev": true,
3380
+ "requires": {
3381
+ "is-obj": "^1.0.0"
3382
+ }
3383
+ },
3384
+ "dotenv": {
3385
+ "version": "5.0.1",
3386
+ "bundled": true,
3387
+ "dev": true
3388
+ },
3389
+ "duplexer3": {
3390
+ "version": "0.1.4",
3391
+ "bundled": true,
3392
+ "dev": true
3393
+ },
3394
+ "duplexify": {
3395
+ "version": "3.6.0",
3396
+ "bundled": true,
3397
+ "dev": true,
3398
+ "requires": {
3399
+ "end-of-stream": "^1.0.0",
3400
+ "inherits": "^2.0.1",
3401
+ "readable-stream": "^2.0.0",
3402
+ "stream-shift": "^1.0.0"
3403
+ }
3404
+ },
3405
+ "ecc-jsbn": {
3406
+ "version": "0.1.2",
3407
+ "bundled": true,
3408
+ "dev": true,
3409
+ "optional": true,
3410
+ "requires": {
3411
+ "jsbn": "~0.1.0",
3412
+ "safer-buffer": "^2.1.0"
3413
+ }
3414
+ },
3415
+ "editor": {
3416
+ "version": "1.0.0",
3417
+ "bundled": true,
3418
+ "dev": true
3419
+ },
3420
+ "encoding": {
3421
+ "version": "0.1.12",
3422
+ "bundled": true,
3423
+ "dev": true,
3424
+ "requires": {
3425
+ "iconv-lite": "~0.4.13"
3426
+ }
3427
+ },
3428
+ "end-of-stream": {
3429
+ "version": "1.4.1",
3430
+ "bundled": true,
3431
+ "dev": true,
3432
+ "requires": {
3433
+ "once": "^1.4.0"
3434
+ }
3435
+ },
3436
+ "err-code": {
3437
+ "version": "1.1.2",
3438
+ "bundled": true,
3439
+ "dev": true
3440
+ },
3441
+ "errno": {
3442
+ "version": "0.1.7",
3443
+ "bundled": true,
3444
+ "dev": true,
3445
+ "requires": {
3446
+ "prr": "~1.0.1"
3447
+ }
3448
+ },
3449
+ "es6-promise": {
3450
+ "version": "4.2.4",
3451
+ "bundled": true,
3452
+ "dev": true
3453
+ },
3454
+ "es6-promisify": {
3455
+ "version": "5.0.0",
3456
+ "bundled": true,
3457
+ "dev": true,
3458
+ "requires": {
3459
+ "es6-promise": "^4.0.3"
3460
+ }
3461
+ },
3462
+ "escape-string-regexp": {
3463
+ "version": "1.0.5",
3464
+ "bundled": true,
3465
+ "dev": true
3466
+ },
3467
+ "execa": {
3468
+ "version": "0.7.0",
3469
+ "bundled": true,
3470
+ "dev": true,
3471
+ "requires": {
3472
+ "cross-spawn": "^5.0.1",
3473
+ "get-stream": "^3.0.0",
3474
+ "is-stream": "^1.1.0",
3475
+ "npm-run-path": "^2.0.0",
3476
+ "p-finally": "^1.0.0",
3477
+ "signal-exit": "^3.0.0",
3478
+ "strip-eof": "^1.0.0"
3479
+ }
3480
+ },
3481
+ "extend": {
3482
+ "version": "3.0.2",
3483
+ "bundled": true,
3484
+ "dev": true
3485
+ },
3486
+ "extsprintf": {
3487
+ "version": "1.3.0",
3488
+ "bundled": true,
3489
+ "dev": true
3490
+ },
3491
+ "fast-deep-equal": {
3492
+ "version": "1.1.0",
3493
+ "bundled": true,
3494
+ "dev": true
3495
+ },
3496
+ "fast-json-stable-stringify": {
3497
+ "version": "2.0.0",
3498
+ "bundled": true,
3499
+ "dev": true
3500
+ },
3501
+ "figgy-pudding": {
3502
+ "version": "3.5.1",
3503
+ "bundled": true,
3504
+ "dev": true
3505
+ },
3506
+ "find-npm-prefix": {
3507
+ "version": "1.0.2",
3508
+ "bundled": true,
3509
+ "dev": true
3510
+ },
3511
+ "find-up": {
3512
+ "version": "2.1.0",
3513
+ "bundled": true,
3514
+ "dev": true,
3515
+ "requires": {
3516
+ "locate-path": "^2.0.0"
3517
+ }
3518
+ },
3519
+ "flush-write-stream": {
3520
+ "version": "1.0.3",
3521
+ "bundled": true,
3522
+ "dev": true,
3523
+ "requires": {
3524
+ "inherits": "^2.0.1",
3525
+ "readable-stream": "^2.0.4"
3526
+ }
3527
+ },
3528
+ "forever-agent": {
3529
+ "version": "0.6.1",
3530
+ "bundled": true,
3531
+ "dev": true
3532
+ },
3533
+ "form-data": {
3534
+ "version": "2.3.2",
3535
+ "bundled": true,
3536
+ "dev": true,
3537
+ "requires": {
3538
+ "asynckit": "^0.4.0",
3539
+ "combined-stream": "1.0.6",
3540
+ "mime-types": "^2.1.12"
3541
+ }
3542
+ },
3543
+ "from2": {
3544
+ "version": "2.3.0",
3545
+ "bundled": true,
3546
+ "dev": true,
3547
+ "requires": {
3548
+ "inherits": "^2.0.1",
3549
+ "readable-stream": "^2.0.0"
3550
+ }
3551
+ },
3552
+ "fs-minipass": {
3553
+ "version": "1.2.5",
3554
+ "bundled": true,
3555
+ "dev": true,
3556
+ "requires": {
3557
+ "minipass": "^2.2.1"
3558
+ }
3559
+ },
3560
+ "fs-vacuum": {
3561
+ "version": "1.2.10",
3562
+ "bundled": true,
3563
+ "dev": true,
3564
+ "requires": {
3565
+ "graceful-fs": "^4.1.2",
3566
+ "path-is-inside": "^1.0.1",
3567
+ "rimraf": "^2.5.2"
3568
+ }
3569
+ },
3570
+ "fs-write-stream-atomic": {
3571
+ "version": "1.0.10",
3572
+ "bundled": true,
3573
+ "dev": true,
3574
+ "requires": {
3575
+ "graceful-fs": "^4.1.2",
3576
+ "iferr": "^0.1.5",
3577
+ "imurmurhash": "^0.1.4",
3578
+ "readable-stream": "1 || 2"
3579
+ },
3580
+ "dependencies": {
3581
+ "iferr": {
3582
+ "version": "0.1.5",
3583
+ "bundled": true,
3584
+ "dev": true
3585
+ }
3586
+ }
3587
+ },
3588
+ "fs.realpath": {
3589
+ "version": "1.0.0",
3590
+ "bundled": true,
3591
+ "dev": true
3592
+ },
3593
+ "fstream": {
3594
+ "version": "1.0.11",
3595
+ "bundled": true,
3596
+ "dev": true,
3597
+ "requires": {
3598
+ "graceful-fs": "^4.1.2",
3599
+ "inherits": "~2.0.0",
3600
+ "mkdirp": ">=0.5 0",
3601
+ "rimraf": "2"
3602
+ }
3603
+ },
3604
+ "gauge": {
3605
+ "version": "2.7.4",
3606
+ "bundled": true,
3607
+ "dev": true,
3608
+ "requires": {
3609
+ "aproba": "^1.0.3",
3610
+ "console-control-strings": "^1.0.0",
3611
+ "has-unicode": "^2.0.0",
3612
+ "object-assign": "^4.1.0",
3613
+ "signal-exit": "^3.0.0",
3614
+ "string-width": "^1.0.1",
3615
+ "strip-ansi": "^3.0.1",
3616
+ "wide-align": "^1.1.0"
3617
+ },
3618
+ "dependencies": {
3619
+ "string-width": {
3620
+ "version": "1.0.2",
3621
+ "bundled": true,
3622
+ "dev": true,
3623
+ "requires": {
3624
+ "code-point-at": "^1.0.0",
3625
+ "is-fullwidth-code-point": "^1.0.0",
3626
+ "strip-ansi": "^3.0.0"
3627
+ }
3628
+ }
3629
+ }
3630
+ },
3631
+ "genfun": {
3632
+ "version": "4.0.1",
3633
+ "bundled": true,
3634
+ "dev": true
3635
+ },
3636
+ "gentle-fs": {
3637
+ "version": "2.0.1",
3638
+ "bundled": true,
3639
+ "dev": true,
3640
+ "requires": {
3641
+ "aproba": "^1.1.2",
3642
+ "fs-vacuum": "^1.2.10",
3643
+ "graceful-fs": "^4.1.11",
3644
+ "iferr": "^0.1.5",
3645
+ "mkdirp": "^0.5.1",
3646
+ "path-is-inside": "^1.0.2",
3647
+ "read-cmd-shim": "^1.0.1",
3648
+ "slide": "^1.1.6"
3649
+ },
3650
+ "dependencies": {
3651
+ "iferr": {
3652
+ "version": "0.1.5",
3653
+ "bundled": true,
3654
+ "dev": true
3655
+ }
3656
+ }
3657
+ },
3658
+ "get-caller-file": {
3659
+ "version": "1.0.2",
3660
+ "bundled": true,
3661
+ "dev": true
3662
+ },
3663
+ "get-stream": {
3664
+ "version": "3.0.0",
3665
+ "bundled": true,
3666
+ "dev": true
3667
+ },
3668
+ "getpass": {
3669
+ "version": "0.1.7",
3670
+ "bundled": true,
3671
+ "dev": true,
3672
+ "requires": {
3673
+ "assert-plus": "^1.0.0"
3674
+ }
3675
+ },
3676
+ "glob": {
3677
+ "version": "7.1.3",
3678
+ "bundled": true,
3679
+ "dev": true,
3680
+ "requires": {
3681
+ "fs.realpath": "^1.0.0",
3682
+ "inflight": "^1.0.4",
3683
+ "inherits": "2",
3684
+ "minimatch": "^3.0.4",
3685
+ "once": "^1.3.0",
3686
+ "path-is-absolute": "^1.0.0"
3687
+ }
3688
+ },
3689
+ "global-dirs": {
3690
+ "version": "0.1.1",
3691
+ "bundled": true,
3692
+ "dev": true,
3693
+ "requires": {
3694
+ "ini": "^1.3.4"
3695
+ }
3696
+ },
3697
+ "got": {
3698
+ "version": "6.7.1",
3699
+ "bundled": true,
3700
+ "dev": true,
3701
+ "requires": {
3702
+ "create-error-class": "^3.0.0",
3703
+ "duplexer3": "^0.1.4",
3704
+ "get-stream": "^3.0.0",
3705
+ "is-redirect": "^1.0.0",
3706
+ "is-retry-allowed": "^1.0.0",
3707
+ "is-stream": "^1.0.0",
3708
+ "lowercase-keys": "^1.0.0",
3709
+ "safe-buffer": "^5.0.1",
3710
+ "timed-out": "^4.0.0",
3711
+ "unzip-response": "^2.0.1",
3712
+ "url-parse-lax": "^1.0.0"
3713
+ }
3714
+ },
3715
+ "graceful-fs": {
3716
+ "version": "4.1.15",
3717
+ "bundled": true,
3718
+ "dev": true
3719
+ },
3720
+ "har-schema": {
3721
+ "version": "2.0.0",
3722
+ "bundled": true,
3723
+ "dev": true
3724
+ },
3725
+ "har-validator": {
3726
+ "version": "5.1.0",
3727
+ "bundled": true,
3728
+ "dev": true,
3729
+ "requires": {
3730
+ "ajv": "^5.3.0",
3731
+ "har-schema": "^2.0.0"
3732
+ }
3733
+ },
3734
+ "has-flag": {
3735
+ "version": "3.0.0",
3736
+ "bundled": true,
3737
+ "dev": true
3738
+ },
3739
+ "has-unicode": {
3740
+ "version": "2.0.1",
3741
+ "bundled": true,
3742
+ "dev": true
3743
+ },
3744
+ "hosted-git-info": {
3745
+ "version": "2.7.1",
3746
+ "bundled": true,
3747
+ "dev": true
3748
+ },
3749
+ "http-cache-semantics": {
3750
+ "version": "3.8.1",
3751
+ "bundled": true,
3752
+ "dev": true
3753
+ },
3754
+ "http-proxy-agent": {
3755
+ "version": "2.1.0",
3756
+ "bundled": true,
3757
+ "dev": true,
3758
+ "requires": {
3759
+ "agent-base": "4",
3760
+ "debug": "3.1.0"
3761
+ }
3762
+ },
3763
+ "http-signature": {
3764
+ "version": "1.2.0",
3765
+ "bundled": true,
3766
+ "dev": true,
3767
+ "requires": {
3768
+ "assert-plus": "^1.0.0",
3769
+ "jsprim": "^1.2.2",
3770
+ "sshpk": "^1.7.0"
3771
+ }
3772
+ },
3773
+ "https-proxy-agent": {
3774
+ "version": "2.2.1",
3775
+ "bundled": true,
3776
+ "dev": true,
3777
+ "requires": {
3778
+ "agent-base": "^4.1.0",
3779
+ "debug": "^3.1.0"
3780
+ }
3781
+ },
3782
+ "humanize-ms": {
3783
+ "version": "1.2.1",
3784
+ "bundled": true,
3785
+ "dev": true,
3786
+ "requires": {
3787
+ "ms": "^2.0.0"
3788
+ }
3789
+ },
3790
+ "iconv-lite": {
3791
+ "version": "0.4.23",
3792
+ "bundled": true,
3793
+ "dev": true,
3794
+ "requires": {
3795
+ "safer-buffer": ">= 2.1.2 < 3"
3796
+ }
3797
+ },
3798
+ "iferr": {
3799
+ "version": "1.0.2",
3800
+ "bundled": true,
3801
+ "dev": true
3802
+ },
3803
+ "ignore-walk": {
3804
+ "version": "3.0.1",
3805
+ "bundled": true,
3806
+ "dev": true,
3807
+ "requires": {
3808
+ "minimatch": "^3.0.4"
3809
+ }
3810
+ },
3811
+ "import-lazy": {
3812
+ "version": "2.1.0",
3813
+ "bundled": true,
3814
+ "dev": true
3815
+ },
3816
+ "imurmurhash": {
3817
+ "version": "0.1.4",
3818
+ "bundled": true,
3819
+ "dev": true
3820
+ },
3821
+ "inflight": {
3822
+ "version": "1.0.6",
3823
+ "bundled": true,
3824
+ "dev": true,
3825
+ "requires": {
3826
+ "once": "^1.3.0",
3827
+ "wrappy": "1"
3828
+ }
3829
+ },
3830
+ "inherits": {
3831
+ "version": "2.0.3",
3832
+ "bundled": true,
3833
+ "dev": true
3834
+ },
3835
+ "ini": {
3836
+ "version": "1.3.5",
3837
+ "bundled": true,
3838
+ "dev": true
3839
+ },
3840
+ "init-package-json": {
3841
+ "version": "1.10.3",
3842
+ "bundled": true,
3843
+ "dev": true,
3844
+ "requires": {
3845
+ "glob": "^7.1.1",
3846
+ "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0",
3847
+ "promzard": "^0.3.0",
3848
+ "read": "~1.0.1",
3849
+ "read-package-json": "1 || 2",
3850
+ "semver": "2.x || 3.x || 4 || 5",
3851
+ "validate-npm-package-license": "^3.0.1",
3852
+ "validate-npm-package-name": "^3.0.0"
3853
+ }
3854
+ },
3855
+ "invert-kv": {
3856
+ "version": "1.0.0",
3857
+ "bundled": true,
3858
+ "dev": true
3859
+ },
3860
+ "ip": {
3861
+ "version": "1.1.5",
3862
+ "bundled": true,
3863
+ "dev": true
3864
+ },
3865
+ "ip-regex": {
3866
+ "version": "2.1.0",
3867
+ "bundled": true,
3868
+ "dev": true
3869
+ },
3870
+ "is-builtin-module": {
3871
+ "version": "1.0.0",
3872
+ "bundled": true,
3873
+ "dev": true,
3874
+ "requires": {
3875
+ "builtin-modules": "^1.0.0"
3876
+ }
3877
+ },
3878
+ "is-ci": {
3879
+ "version": "1.1.0",
3880
+ "bundled": true,
3881
+ "dev": true,
3882
+ "requires": {
3883
+ "ci-info": "^1.0.0"
3884
+ }
3885
+ },
3886
+ "is-cidr": {
3887
+ "version": "2.0.6",
3888
+ "bundled": true,
3889
+ "dev": true,
3890
+ "requires": {
3891
+ "cidr-regex": "^2.0.8"
3892
+ }
3893
+ },
3894
+ "is-fullwidth-code-point": {
3895
+ "version": "1.0.0",
3896
+ "bundled": true,
3897
+ "dev": true,
3898
+ "requires": {
3899
+ "number-is-nan": "^1.0.0"
3900
+ }
3901
+ },
3902
+ "is-installed-globally": {
3903
+ "version": "0.1.0",
3904
+ "bundled": true,
3905
+ "dev": true,
3906
+ "requires": {
3907
+ "global-dirs": "^0.1.0",
3908
+ "is-path-inside": "^1.0.0"
3909
+ }
3910
+ },
3911
+ "is-npm": {
3912
+ "version": "1.0.0",
3913
+ "bundled": true,
3914
+ "dev": true
3915
+ },
3916
+ "is-obj": {
3917
+ "version": "1.0.1",
3918
+ "bundled": true,
3919
+ "dev": true
3920
+ },
3921
+ "is-path-inside": {
3922
+ "version": "1.0.1",
3923
+ "bundled": true,
3924
+ "dev": true,
3925
+ "requires": {
3926
+ "path-is-inside": "^1.0.1"
3927
+ }
3928
+ },
3929
+ "is-redirect": {
3930
+ "version": "1.0.0",
3931
+ "bundled": true,
3932
+ "dev": true
3933
+ },
3934
+ "is-retry-allowed": {
3935
+ "version": "1.1.0",
3936
+ "bundled": true,
3937
+ "dev": true
3938
+ },
3939
+ "is-stream": {
3940
+ "version": "1.1.0",
3941
+ "bundled": true,
3942
+ "dev": true
3943
+ },
3944
+ "is-typedarray": {
3945
+ "version": "1.0.0",
3946
+ "bundled": true,
3947
+ "dev": true
3948
+ },
3949
+ "isarray": {
3950
+ "version": "1.0.0",
3951
+ "bundled": true,
3952
+ "dev": true
3953
+ },
3954
+ "isexe": {
3955
+ "version": "2.0.0",
3956
+ "bundled": true,
3957
+ "dev": true
3958
+ },
3959
+ "isstream": {
3960
+ "version": "0.1.2",
3961
+ "bundled": true,
3962
+ "dev": true
3963
+ },
3964
+ "jsbn": {
3965
+ "version": "0.1.1",
3966
+ "bundled": true,
3967
+ "dev": true,
3968
+ "optional": true
3969
+ },
3970
+ "json-parse-better-errors": {
3971
+ "version": "1.0.2",
3972
+ "bundled": true,
3973
+ "dev": true
3974
+ },
3975
+ "json-schema": {
3976
+ "version": "0.2.3",
3977
+ "bundled": true,
3978
+ "dev": true
3979
+ },
3980
+ "json-schema-traverse": {
3981
+ "version": "0.3.1",
3982
+ "bundled": true,
3983
+ "dev": true
3984
+ },
3985
+ "json-stringify-safe": {
3986
+ "version": "5.0.1",
3987
+ "bundled": true,
3988
+ "dev": true
3989
+ },
3990
+ "jsonparse": {
3991
+ "version": "1.3.1",
3992
+ "bundled": true,
3993
+ "dev": true
3994
+ },
3995
+ "jsprim": {
3996
+ "version": "1.4.1",
3997
+ "bundled": true,
3998
+ "dev": true,
3999
+ "requires": {
4000
+ "assert-plus": "1.0.0",
4001
+ "extsprintf": "1.3.0",
4002
+ "json-schema": "0.2.3",
4003
+ "verror": "1.10.0"
4004
+ }
4005
+ },
4006
+ "latest-version": {
4007
+ "version": "3.1.0",
4008
+ "bundled": true,
4009
+ "dev": true,
4010
+ "requires": {
4011
+ "package-json": "^4.0.0"
4012
+ }
4013
+ },
4014
+ "lazy-property": {
4015
+ "version": "1.0.0",
4016
+ "bundled": true,
4017
+ "dev": true
4018
+ },
4019
+ "lcid": {
4020
+ "version": "1.0.0",
4021
+ "bundled": true,
4022
+ "dev": true,
4023
+ "requires": {
4024
+ "invert-kv": "^1.0.0"
4025
+ }
4026
+ },
4027
+ "libcipm": {
4028
+ "version": "2.0.2",
4029
+ "bundled": true,
4030
+ "dev": true,
4031
+ "requires": {
4032
+ "bin-links": "^1.1.2",
4033
+ "bluebird": "^3.5.1",
4034
+ "find-npm-prefix": "^1.0.2",
4035
+ "graceful-fs": "^4.1.11",
4036
+ "lock-verify": "^2.0.2",
4037
+ "mkdirp": "^0.5.1",
4038
+ "npm-lifecycle": "^2.0.3",
4039
+ "npm-logical-tree": "^1.2.1",
4040
+ "npm-package-arg": "^6.1.0",
4041
+ "pacote": "^8.1.6",
4042
+ "protoduck": "^5.0.0",
4043
+ "read-package-json": "^2.0.13",
4044
+ "rimraf": "^2.6.2",
4045
+ "worker-farm": "^1.6.0"
4046
+ }
4047
+ },
4048
+ "libnpmhook": {
4049
+ "version": "4.0.1",
4050
+ "bundled": true,
4051
+ "dev": true,
4052
+ "requires": {
4053
+ "figgy-pudding": "^3.1.0",
4054
+ "npm-registry-fetch": "^3.0.0"
4055
+ },
4056
+ "dependencies": {
4057
+ "npm-registry-fetch": {
4058
+ "version": "3.1.1",
4059
+ "bundled": true,
4060
+ "dev": true,
4061
+ "requires": {
4062
+ "bluebird": "^3.5.1",
4063
+ "figgy-pudding": "^3.1.0",
4064
+ "lru-cache": "^4.1.2",
4065
+ "make-fetch-happen": "^4.0.0",
4066
+ "npm-package-arg": "^6.0.0"
4067
+ }
4068
+ }
4069
+ }
4070
+ },
4071
+ "libnpx": {
4072
+ "version": "10.2.0",
4073
+ "bundled": true,
4074
+ "dev": true,
4075
+ "requires": {
4076
+ "dotenv": "^5.0.1",
4077
+ "npm-package-arg": "^6.0.0",
4078
+ "rimraf": "^2.6.2",
4079
+ "safe-buffer": "^5.1.0",
4080
+ "update-notifier": "^2.3.0",
4081
+ "which": "^1.3.0",
4082
+ "y18n": "^4.0.0",
4083
+ "yargs": "^11.0.0"
4084
+ }
4085
+ },
4086
+ "locate-path": {
4087
+ "version": "2.0.0",
4088
+ "bundled": true,
4089
+ "dev": true,
4090
+ "requires": {
4091
+ "p-locate": "^2.0.0",
4092
+ "path-exists": "^3.0.0"
4093
+ }
4094
+ },
4095
+ "lock-verify": {
4096
+ "version": "2.0.2",
4097
+ "bundled": true,
4098
+ "dev": true,
4099
+ "requires": {
4100
+ "npm-package-arg": "^5.1.2 || 6",
4101
+ "semver": "^5.4.1"
4102
+ }
4103
+ },
4104
+ "lockfile": {
4105
+ "version": "1.0.4",
4106
+ "bundled": true,
4107
+ "dev": true,
4108
+ "requires": {
4109
+ "signal-exit": "^3.0.2"
4110
+ }
4111
+ },
4112
+ "lodash._baseindexof": {
4113
+ "version": "3.1.0",
4114
+ "bundled": true,
4115
+ "dev": true
4116
+ },
4117
+ "lodash._baseuniq": {
4118
+ "version": "4.6.0",
4119
+ "bundled": true,
4120
+ "dev": true,
4121
+ "requires": {
4122
+ "lodash._createset": "~4.0.0",
4123
+ "lodash._root": "~3.0.0"
4124
+ }
4125
+ },
4126
+ "lodash._bindcallback": {
4127
+ "version": "3.0.1",
4128
+ "bundled": true,
4129
+ "dev": true
4130
+ },
4131
+ "lodash._cacheindexof": {
4132
+ "version": "3.0.2",
4133
+ "bundled": true,
4134
+ "dev": true
4135
+ },
4136
+ "lodash._createcache": {
4137
+ "version": "3.1.2",
4138
+ "bundled": true,
4139
+ "dev": true,
4140
+ "requires": {
4141
+ "lodash._getnative": "^3.0.0"
4142
+ }
4143
+ },
4144
+ "lodash._createset": {
4145
+ "version": "4.0.3",
4146
+ "bundled": true,
4147
+ "dev": true
4148
+ },
4149
+ "lodash._getnative": {
4150
+ "version": "3.9.1",
4151
+ "bundled": true,
4152
+ "dev": true
4153
+ },
4154
+ "lodash._root": {
4155
+ "version": "3.0.1",
4156
+ "bundled": true,
4157
+ "dev": true
4158
+ },
4159
+ "lodash.clonedeep": {
4160
+ "version": "4.5.0",
4161
+ "bundled": true,
4162
+ "dev": true
4163
+ },
4164
+ "lodash.restparam": {
4165
+ "version": "3.6.1",
4166
+ "bundled": true,
4167
+ "dev": true
4168
+ },
4169
+ "lodash.union": {
4170
+ "version": "4.6.0",
4171
+ "bundled": true,
4172
+ "dev": true
4173
+ },
4174
+ "lodash.uniq": {
4175
+ "version": "4.5.0",
4176
+ "bundled": true,
4177
+ "dev": true
4178
+ },
4179
+ "lodash.without": {
4180
+ "version": "4.4.0",
4181
+ "bundled": true,
4182
+ "dev": true
4183
+ },
4184
+ "lowercase-keys": {
4185
+ "version": "1.0.1",
4186
+ "bundled": true,
4187
+ "dev": true
4188
+ },
4189
+ "lru-cache": {
4190
+ "version": "4.1.3",
4191
+ "bundled": true,
4192
+ "dev": true,
4193
+ "requires": {
4194
+ "pseudomap": "^1.0.2",
4195
+ "yallist": "^2.1.2"
4196
+ }
4197
+ },
4198
+ "make-dir": {
4199
+ "version": "1.3.0",
4200
+ "bundled": true,
4201
+ "dev": true,
4202
+ "requires": {
4203
+ "pify": "^3.0.0"
4204
+ }
4205
+ },
4206
+ "make-fetch-happen": {
4207
+ "version": "4.0.1",
4208
+ "bundled": true,
4209
+ "dev": true,
4210
+ "requires": {
4211
+ "agentkeepalive": "^3.4.1",
4212
+ "cacache": "^11.0.1",
4213
+ "http-cache-semantics": "^3.8.1",
4214
+ "http-proxy-agent": "^2.1.0",
4215
+ "https-proxy-agent": "^2.2.1",
4216
+ "lru-cache": "^4.1.2",
4217
+ "mississippi": "^3.0.0",
4218
+ "node-fetch-npm": "^2.0.2",
4219
+ "promise-retry": "^1.1.1",
4220
+ "socks-proxy-agent": "^4.0.0",
4221
+ "ssri": "^6.0.0"
4222
+ }
4223
+ },
4224
+ "meant": {
4225
+ "version": "1.0.1",
4226
+ "bundled": true,
4227
+ "dev": true
4228
+ },
4229
+ "mem": {
4230
+ "version": "1.1.0",
4231
+ "bundled": true,
4232
+ "dev": true,
4233
+ "requires": {
4234
+ "mimic-fn": "^1.0.0"
4235
+ }
4236
+ },
4237
+ "mime-db": {
4238
+ "version": "1.35.0",
4239
+ "bundled": true,
4240
+ "dev": true
4241
+ },
4242
+ "mime-types": {
4243
+ "version": "2.1.19",
4244
+ "bundled": true,
4245
+ "dev": true,
4246
+ "requires": {
4247
+ "mime-db": "~1.35.0"
4248
+ }
4249
+ },
4250
+ "mimic-fn": {
4251
+ "version": "1.2.0",
4252
+ "bundled": true,
4253
+ "dev": true
4254
+ },
4255
+ "minimatch": {
4256
+ "version": "3.0.4",
4257
+ "bundled": true,
4258
+ "dev": true,
4259
+ "requires": {
4260
+ "brace-expansion": "^1.1.7"
4261
+ }
4262
+ },
4263
+ "minimist": {
4264
+ "version": "0.0.8",
4265
+ "bundled": true,
4266
+ "dev": true
4267
+ },
4268
+ "minipass": {
4269
+ "version": "2.3.3",
4270
+ "bundled": true,
4271
+ "dev": true,
4272
+ "requires": {
4273
+ "safe-buffer": "^5.1.2",
4274
+ "yallist": "^3.0.0"
4275
+ },
4276
+ "dependencies": {
4277
+ "yallist": {
4278
+ "version": "3.0.2",
4279
+ "bundled": true,
4280
+ "dev": true
4281
+ }
4282
+ }
4283
+ },
4284
+ "minizlib": {
4285
+ "version": "1.1.1",
4286
+ "bundled": true,
4287
+ "dev": true,
4288
+ "requires": {
4289
+ "minipass": "^2.2.1"
4290
+ }
4291
+ },
4292
+ "mississippi": {
4293
+ "version": "3.0.0",
4294
+ "bundled": true,
4295
+ "dev": true,
4296
+ "requires": {
4297
+ "concat-stream": "^1.5.0",
4298
+ "duplexify": "^3.4.2",
4299
+ "end-of-stream": "^1.1.0",
4300
+ "flush-write-stream": "^1.0.0",
4301
+ "from2": "^2.1.0",
4302
+ "parallel-transform": "^1.1.0",
4303
+ "pump": "^3.0.0",
4304
+ "pumpify": "^1.3.3",
4305
+ "stream-each": "^1.1.0",
4306
+ "through2": "^2.0.0"
4307
+ }
4308
+ },
4309
+ "mkdirp": {
4310
+ "version": "0.5.1",
4311
+ "bundled": true,
4312
+ "dev": true,
4313
+ "requires": {
4314
+ "minimist": "0.0.8"
4315
+ }
4316
+ },
4317
+ "move-concurrently": {
4318
+ "version": "1.0.1",
4319
+ "bundled": true,
4320
+ "dev": true,
4321
+ "requires": {
4322
+ "aproba": "^1.1.1",
4323
+ "copy-concurrently": "^1.0.0",
4324
+ "fs-write-stream-atomic": "^1.0.8",
4325
+ "mkdirp": "^0.5.1",
4326
+ "rimraf": "^2.5.4",
4327
+ "run-queue": "^1.0.3"
4328
+ }
4329
+ },
4330
+ "ms": {
4331
+ "version": "2.1.1",
4332
+ "bundled": true,
4333
+ "dev": true
4334
+ },
4335
+ "mute-stream": {
4336
+ "version": "0.0.7",
4337
+ "bundled": true,
4338
+ "dev": true
4339
+ },
4340
+ "node-fetch-npm": {
4341
+ "version": "2.0.2",
4342
+ "bundled": true,
4343
+ "dev": true,
4344
+ "requires": {
4345
+ "encoding": "^0.1.11",
4346
+ "json-parse-better-errors": "^1.0.0",
4347
+ "safe-buffer": "^5.1.1"
4348
+ }
4349
+ },
4350
+ "node-gyp": {
4351
+ "version": "3.8.0",
4352
+ "bundled": true,
4353
+ "dev": true,
4354
+ "requires": {
4355
+ "fstream": "^1.0.0",
4356
+ "glob": "^7.0.3",
4357
+ "graceful-fs": "^4.1.2",
4358
+ "mkdirp": "^0.5.0",
4359
+ "nopt": "2 || 3",
4360
+ "npmlog": "0 || 1 || 2 || 3 || 4",
4361
+ "osenv": "0",
4362
+ "request": "^2.87.0",
4363
+ "rimraf": "2",
4364
+ "semver": "~5.3.0",
4365
+ "tar": "^2.0.0",
4366
+ "which": "1"
4367
+ },
4368
+ "dependencies": {
4369
+ "nopt": {
4370
+ "version": "3.0.6",
4371
+ "bundled": true,
4372
+ "dev": true,
4373
+ "requires": {
4374
+ "abbrev": "1"
4375
+ }
4376
+ },
4377
+ "semver": {
4378
+ "version": "5.3.0",
4379
+ "bundled": true,
4380
+ "dev": true
4381
+ },
4382
+ "tar": {
4383
+ "version": "2.2.1",
4384
+ "bundled": true,
4385
+ "dev": true,
4386
+ "requires": {
4387
+ "block-stream": "*",
4388
+ "fstream": "^1.0.2",
4389
+ "inherits": "2"
4390
+ }
4391
+ }
4392
+ }
4393
+ },
4394
+ "nopt": {
4395
+ "version": "4.0.1",
4396
+ "bundled": true,
4397
+ "dev": true,
4398
+ "requires": {
4399
+ "abbrev": "1",
4400
+ "osenv": "^0.1.4"
4401
+ }
4402
+ },
4403
+ "normalize-package-data": {
4404
+ "version": "2.4.0",
4405
+ "bundled": true,
4406
+ "dev": true,
4407
+ "requires": {
4408
+ "hosted-git-info": "^2.1.4",
4409
+ "is-builtin-module": "^1.0.0",
4410
+ "semver": "2 || 3 || 4 || 5",
4411
+ "validate-npm-package-license": "^3.0.1"
4412
+ }
4413
+ },
4414
+ "npm-audit-report": {
4415
+ "version": "1.3.1",
4416
+ "bundled": true,
4417
+ "dev": true,
4418
+ "requires": {
4419
+ "cli-table3": "^0.5.0",
4420
+ "console-control-strings": "^1.1.0"
4421
+ }
4422
+ },
4423
+ "npm-bundled": {
4424
+ "version": "1.0.5",
4425
+ "bundled": true,
4426
+ "dev": true
4427
+ },
4428
+ "npm-cache-filename": {
4429
+ "version": "1.0.2",
4430
+ "bundled": true,
4431
+ "dev": true
4432
+ },
4433
+ "npm-install-checks": {
4434
+ "version": "3.0.0",
4435
+ "bundled": true,
4436
+ "dev": true,
4437
+ "requires": {
4438
+ "semver": "^2.3.0 || 3.x || 4 || 5"
4439
+ }
4440
+ },
4441
+ "npm-lifecycle": {
4442
+ "version": "2.1.0",
4443
+ "bundled": true,
4444
+ "dev": true,
4445
+ "requires": {
4446
+ "byline": "^5.0.0",
4447
+ "graceful-fs": "^4.1.11",
4448
+ "node-gyp": "^3.8.0",
4449
+ "resolve-from": "^4.0.0",
4450
+ "slide": "^1.1.6",
4451
+ "uid-number": "0.0.6",
4452
+ "umask": "^1.1.0",
4453
+ "which": "^1.3.1"
4454
+ }
4455
+ },
4456
+ "npm-logical-tree": {
4457
+ "version": "1.2.1",
4458
+ "bundled": true,
4459
+ "dev": true
4460
+ },
4461
+ "npm-package-arg": {
4462
+ "version": "6.1.0",
4463
+ "bundled": true,
4464
+ "dev": true,
4465
+ "requires": {
4466
+ "hosted-git-info": "^2.6.0",
4467
+ "osenv": "^0.1.5",
4468
+ "semver": "^5.5.0",
4469
+ "validate-npm-package-name": "^3.0.0"
4470
+ }
4471
+ },
4472
+ "npm-packlist": {
4473
+ "version": "1.1.12",
4474
+ "bundled": true,
4475
+ "dev": true,
4476
+ "requires": {
4477
+ "ignore-walk": "^3.0.1",
4478
+ "npm-bundled": "^1.0.1"
4479
+ }
4480
+ },
4481
+ "npm-pick-manifest": {
4482
+ "version": "2.1.0",
4483
+ "bundled": true,
4484
+ "dev": true,
4485
+ "requires": {
4486
+ "npm-package-arg": "^6.0.0",
4487
+ "semver": "^5.4.1"
4488
+ }
4489
+ },
4490
+ "npm-profile": {
4491
+ "version": "3.0.2",
4492
+ "bundled": true,
4493
+ "dev": true,
4494
+ "requires": {
4495
+ "aproba": "^1.1.2 || 2",
4496
+ "make-fetch-happen": "^2.5.0 || 3 || 4"
4497
+ }
4498
+ },
4499
+ "npm-registry-client": {
4500
+ "version": "8.6.0",
4501
+ "bundled": true,
4502
+ "dev": true,
4503
+ "requires": {
4504
+ "concat-stream": "^1.5.2",
4505
+ "graceful-fs": "^4.1.6",
4506
+ "normalize-package-data": "~1.0.1 || ^2.0.0",
4507
+ "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0",
4508
+ "npmlog": "2 || ^3.1.0 || ^4.0.0",
4509
+ "once": "^1.3.3",
4510
+ "request": "^2.74.0",
4511
+ "retry": "^0.10.0",
4512
+ "safe-buffer": "^5.1.1",
4513
+ "semver": "2 >=2.2.1 || 3.x || 4 || 5",
4514
+ "slide": "^1.1.3",
4515
+ "ssri": "^5.2.4"
4516
+ },
4517
+ "dependencies": {
4518
+ "retry": {
4519
+ "version": "0.10.1",
4520
+ "bundled": true,
4521
+ "dev": true
4522
+ },
4523
+ "ssri": {
4524
+ "version": "5.3.0",
4525
+ "bundled": true,
4526
+ "dev": true,
4527
+ "requires": {
4528
+ "safe-buffer": "^5.1.1"
4529
+ }
4530
+ }
4531
+ }
4532
+ },
4533
+ "npm-registry-fetch": {
4534
+ "version": "1.1.0",
4535
+ "bundled": true,
4536
+ "dev": true,
4537
+ "requires": {
4538
+ "bluebird": "^3.5.1",
4539
+ "figgy-pudding": "^2.0.1",
4540
+ "lru-cache": "^4.1.2",
4541
+ "make-fetch-happen": "^3.0.0",
4542
+ "npm-package-arg": "^6.0.0",
4543
+ "safe-buffer": "^5.1.1"
4544
+ },
4545
+ "dependencies": {
4546
+ "cacache": {
4547
+ "version": "10.0.4",
4548
+ "bundled": true,
4549
+ "dev": true,
4550
+ "requires": {
4551
+ "bluebird": "^3.5.1",
4552
+ "chownr": "^1.0.1",
4553
+ "glob": "^7.1.2",
4554
+ "graceful-fs": "^4.1.11",
4555
+ "lru-cache": "^4.1.1",
4556
+ "mississippi": "^2.0.0",
4557
+ "mkdirp": "^0.5.1",
4558
+ "move-concurrently": "^1.0.1",
4559
+ "promise-inflight": "^1.0.1",
4560
+ "rimraf": "^2.6.2",
4561
+ "ssri": "^5.2.4",
4562
+ "unique-filename": "^1.1.0",
4563
+ "y18n": "^4.0.0"
4564
+ },
4565
+ "dependencies": {
4566
+ "mississippi": {
4567
+ "version": "2.0.0",
4568
+ "bundled": true,
4569
+ "dev": true,
4570
+ "requires": {
4571
+ "concat-stream": "^1.5.0",
4572
+ "duplexify": "^3.4.2",
4573
+ "end-of-stream": "^1.1.0",
4574
+ "flush-write-stream": "^1.0.0",
4575
+ "from2": "^2.1.0",
4576
+ "parallel-transform": "^1.1.0",
4577
+ "pump": "^2.0.1",
4578
+ "pumpify": "^1.3.3",
4579
+ "stream-each": "^1.1.0",
4580
+ "through2": "^2.0.0"
4581
+ }
4582
+ }
4583
+ }
4584
+ },
4585
+ "figgy-pudding": {
4586
+ "version": "2.0.1",
4587
+ "bundled": true,
4588
+ "dev": true
4589
+ },
4590
+ "make-fetch-happen": {
4591
+ "version": "3.0.0",
4592
+ "bundled": true,
4593
+ "dev": true,
4594
+ "requires": {
4595
+ "agentkeepalive": "^3.4.1",
4596
+ "cacache": "^10.0.4",
4597
+ "http-cache-semantics": "^3.8.1",
4598
+ "http-proxy-agent": "^2.1.0",
4599
+ "https-proxy-agent": "^2.2.0",
4600
+ "lru-cache": "^4.1.2",
4601
+ "mississippi": "^3.0.0",
4602
+ "node-fetch-npm": "^2.0.2",
4603
+ "promise-retry": "^1.1.1",
4604
+ "socks-proxy-agent": "^3.0.1",
4605
+ "ssri": "^5.2.4"
4606
+ }
4607
+ },
4608
+ "pump": {
4609
+ "version": "2.0.1",
4610
+ "bundled": true,
4611
+ "dev": true,
4612
+ "requires": {
4613
+ "end-of-stream": "^1.1.0",
4614
+ "once": "^1.3.1"
4615
+ }
4616
+ },
4617
+ "smart-buffer": {
4618
+ "version": "1.1.15",
4619
+ "bundled": true,
4620
+ "dev": true
4621
+ },
4622
+ "socks": {
4623
+ "version": "1.1.10",
4624
+ "bundled": true,
4625
+ "dev": true,
4626
+ "requires": {
4627
+ "ip": "^1.1.4",
4628
+ "smart-buffer": "^1.0.13"
4629
+ }
4630
+ },
4631
+ "socks-proxy-agent": {
4632
+ "version": "3.0.1",
4633
+ "bundled": true,
4634
+ "dev": true,
4635
+ "requires": {
4636
+ "agent-base": "^4.1.0",
4637
+ "socks": "^1.1.10"
4638
+ }
4639
+ },
4640
+ "ssri": {
4641
+ "version": "5.3.0",
4642
+ "bundled": true,
4643
+ "dev": true,
4644
+ "requires": {
4645
+ "safe-buffer": "^5.1.1"
4646
+ }
4647
+ }
4648
+ }
4649
+ },
4650
+ "npm-run-path": {
4651
+ "version": "2.0.2",
4652
+ "bundled": true,
4653
+ "dev": true,
4654
+ "requires": {
4655
+ "path-key": "^2.0.0"
4656
+ }
4657
+ },
4658
+ "npm-user-validate": {
4659
+ "version": "1.0.0",
4660
+ "bundled": true,
4661
+ "dev": true
4662
+ },
4663
+ "npmlog": {
4664
+ "version": "4.1.2",
4665
+ "bundled": true,
4666
+ "dev": true,
4667
+ "requires": {
4668
+ "are-we-there-yet": "~1.1.2",
4669
+ "console-control-strings": "~1.1.0",
4670
+ "gauge": "~2.7.3",
4671
+ "set-blocking": "~2.0.0"
4672
+ }
4673
+ },
4674
+ "number-is-nan": {
4675
+ "version": "1.0.1",
4676
+ "bundled": true,
4677
+ "dev": true
4678
+ },
4679
+ "oauth-sign": {
4680
+ "version": "0.9.0",
4681
+ "bundled": true,
4682
+ "dev": true
4683
+ },
4684
+ "object-assign": {
4685
+ "version": "4.1.1",
4686
+ "bundled": true,
4687
+ "dev": true
4688
+ },
4689
+ "once": {
4690
+ "version": "1.4.0",
4691
+ "bundled": true,
4692
+ "dev": true,
4693
+ "requires": {
4694
+ "wrappy": "1"
4695
+ }
4696
+ },
4697
+ "opener": {
4698
+ "version": "1.5.1",
4699
+ "bundled": true,
4700
+ "dev": true
4701
+ },
4702
+ "os-homedir": {
4703
+ "version": "1.0.2",
4704
+ "bundled": true,
4705
+ "dev": true
4706
+ },
4707
+ "os-locale": {
4708
+ "version": "2.1.0",
4709
+ "bundled": true,
4710
+ "dev": true,
4711
+ "requires": {
4712
+ "execa": "^0.7.0",
4713
+ "lcid": "^1.0.0",
4714
+ "mem": "^1.1.0"
4715
+ }
4716
+ },
4717
+ "os-tmpdir": {
4718
+ "version": "1.0.2",
4719
+ "bundled": true,
4720
+ "dev": true
4721
+ },
4722
+ "osenv": {
4723
+ "version": "0.1.5",
4724
+ "bundled": true,
4725
+ "dev": true,
4726
+ "requires": {
4727
+ "os-homedir": "^1.0.0",
4728
+ "os-tmpdir": "^1.0.0"
4729
+ }
4730
+ },
4731
+ "p-finally": {
4732
+ "version": "1.0.0",
4733
+ "bundled": true,
4734
+ "dev": true
4735
+ },
4736
+ "p-limit": {
4737
+ "version": "1.2.0",
4738
+ "bundled": true,
4739
+ "dev": true,
4740
+ "requires": {
4741
+ "p-try": "^1.0.0"
4742
+ }
4743
+ },
4744
+ "p-locate": {
4745
+ "version": "2.0.0",
4746
+ "bundled": true,
4747
+ "dev": true,
4748
+ "requires": {
4749
+ "p-limit": "^1.1.0"
4750
+ }
4751
+ },
4752
+ "p-try": {
4753
+ "version": "1.0.0",
4754
+ "bundled": true,
4755
+ "dev": true
4756
+ },
4757
+ "package-json": {
4758
+ "version": "4.0.1",
4759
+ "bundled": true,
4760
+ "dev": true,
4761
+ "requires": {
4762
+ "got": "^6.7.1",
4763
+ "registry-auth-token": "^3.0.1",
4764
+ "registry-url": "^3.0.3",
4765
+ "semver": "^5.1.0"
4766
+ }
4767
+ },
4768
+ "pacote": {
4769
+ "version": "8.1.6",
4770
+ "bundled": true,
4771
+ "dev": true,
4772
+ "requires": {
4773
+ "bluebird": "^3.5.1",
4774
+ "cacache": "^11.0.2",
4775
+ "get-stream": "^3.0.0",
4776
+ "glob": "^7.1.2",
4777
+ "lru-cache": "^4.1.3",
4778
+ "make-fetch-happen": "^4.0.1",
4779
+ "minimatch": "^3.0.4",
4780
+ "minipass": "^2.3.3",
4781
+ "mississippi": "^3.0.0",
4782
+ "mkdirp": "^0.5.1",
4783
+ "normalize-package-data": "^2.4.0",
4784
+ "npm-package-arg": "^6.1.0",
4785
+ "npm-packlist": "^1.1.10",
4786
+ "npm-pick-manifest": "^2.1.0",
4787
+ "osenv": "^0.1.5",
4788
+ "promise-inflight": "^1.0.1",
4789
+ "promise-retry": "^1.1.1",
4790
+ "protoduck": "^5.0.0",
4791
+ "rimraf": "^2.6.2",
4792
+ "safe-buffer": "^5.1.2",
4793
+ "semver": "^5.5.0",
4794
+ "ssri": "^6.0.0",
4795
+ "tar": "^4.4.3",
4796
+ "unique-filename": "^1.1.0",
4797
+ "which": "^1.3.0"
4798
+ }
4799
+ },
4800
+ "parallel-transform": {
4801
+ "version": "1.1.0",
4802
+ "bundled": true,
4803
+ "dev": true,
4804
+ "requires": {
4805
+ "cyclist": "~0.2.2",
4806
+ "inherits": "^2.0.3",
4807
+ "readable-stream": "^2.1.5"
4808
+ }
4809
+ },
4810
+ "path-exists": {
4811
+ "version": "3.0.0",
4812
+ "bundled": true,
4813
+ "dev": true
4814
+ },
4815
+ "path-is-absolute": {
4816
+ "version": "1.0.1",
4817
+ "bundled": true,
4818
+ "dev": true
4819
+ },
4820
+ "path-is-inside": {
4821
+ "version": "1.0.2",
4822
+ "bundled": true,
4823
+ "dev": true
4824
+ },
4825
+ "path-key": {
4826
+ "version": "2.0.1",
4827
+ "bundled": true,
4828
+ "dev": true
4829
+ },
4830
+ "performance-now": {
4831
+ "version": "2.1.0",
4832
+ "bundled": true,
4833
+ "dev": true
4834
+ },
4835
+ "pify": {
4836
+ "version": "3.0.0",
4837
+ "bundled": true,
4838
+ "dev": true
4839
+ },
4840
+ "prepend-http": {
4841
+ "version": "1.0.4",
4842
+ "bundled": true,
4843
+ "dev": true
4844
+ },
4845
+ "process-nextick-args": {
4846
+ "version": "2.0.0",
4847
+ "bundled": true,
4848
+ "dev": true
4849
+ },
4850
+ "promise-inflight": {
4851
+ "version": "1.0.1",
4852
+ "bundled": true,
4853
+ "dev": true
4854
+ },
4855
+ "promise-retry": {
4856
+ "version": "1.1.1",
4857
+ "bundled": true,
4858
+ "dev": true,
4859
+ "requires": {
4860
+ "err-code": "^1.0.0",
4861
+ "retry": "^0.10.0"
4862
+ },
4863
+ "dependencies": {
4864
+ "retry": {
4865
+ "version": "0.10.1",
4866
+ "bundled": true,
4867
+ "dev": true
4868
+ }
4869
+ }
4870
+ },
4871
+ "promzard": {
4872
+ "version": "0.3.0",
4873
+ "bundled": true,
4874
+ "dev": true,
4875
+ "requires": {
4876
+ "read": "1"
4877
+ }
4878
+ },
4879
+ "proto-list": {
4880
+ "version": "1.2.4",
4881
+ "bundled": true,
4882
+ "dev": true
4883
+ },
4884
+ "protoduck": {
4885
+ "version": "5.0.0",
4886
+ "bundled": true,
4887
+ "dev": true,
4888
+ "requires": {
4889
+ "genfun": "^4.0.1"
4890
+ }
4891
+ },
4892
+ "prr": {
4893
+ "version": "1.0.1",
4894
+ "bundled": true,
4895
+ "dev": true
4896
+ },
4897
+ "pseudomap": {
4898
+ "version": "1.0.2",
4899
+ "bundled": true,
4900
+ "dev": true
4901
+ },
4902
+ "psl": {
4903
+ "version": "1.1.29",
4904
+ "bundled": true,
4905
+ "dev": true
4906
+ },
4907
+ "pump": {
4908
+ "version": "3.0.0",
4909
+ "bundled": true,
4910
+ "dev": true,
4911
+ "requires": {
4912
+ "end-of-stream": "^1.1.0",
4913
+ "once": "^1.3.1"
4914
+ }
4915
+ },
4916
+ "pumpify": {
4917
+ "version": "1.5.1",
4918
+ "bundled": true,
4919
+ "dev": true,
4920
+ "requires": {
4921
+ "duplexify": "^3.6.0",
4922
+ "inherits": "^2.0.3",
4923
+ "pump": "^2.0.0"
4924
+ },
4925
+ "dependencies": {
4926
+ "pump": {
4927
+ "version": "2.0.1",
4928
+ "bundled": true,
4929
+ "dev": true,
4930
+ "requires": {
4931
+ "end-of-stream": "^1.1.0",
4932
+ "once": "^1.3.1"
4933
+ }
4934
+ }
4935
+ }
4936
+ },
4937
+ "punycode": {
4938
+ "version": "1.4.1",
4939
+ "bundled": true,
4940
+ "dev": true
4941
+ },
4942
+ "qrcode-terminal": {
4943
+ "version": "0.12.0",
4944
+ "bundled": true,
4945
+ "dev": true
4946
+ },
4947
+ "qs": {
4948
+ "version": "6.5.2",
4949
+ "bundled": true,
4950
+ "dev": true
4951
+ },
4952
+ "query-string": {
4953
+ "version": "6.1.0",
4954
+ "bundled": true,
4955
+ "dev": true,
4956
+ "requires": {
4957
+ "decode-uri-component": "^0.2.0",
4958
+ "strict-uri-encode": "^2.0.0"
4959
+ }
4960
+ },
4961
+ "qw": {
4962
+ "version": "1.0.1",
4963
+ "bundled": true,
4964
+ "dev": true
4965
+ },
4966
+ "rc": {
4967
+ "version": "1.2.7",
4968
+ "bundled": true,
4969
+ "dev": true,
4970
+ "requires": {
4971
+ "deep-extend": "^0.5.1",
4972
+ "ini": "~1.3.0",
4973
+ "minimist": "^1.2.0",
4974
+ "strip-json-comments": "~2.0.1"
4975
+ },
4976
+ "dependencies": {
4977
+ "minimist": {
4978
+ "version": "1.2.0",
4979
+ "bundled": true,
4980
+ "dev": true
4981
+ }
4982
+ }
4983
+ },
4984
+ "read": {
4985
+ "version": "1.0.7",
4986
+ "bundled": true,
4987
+ "dev": true,
4988
+ "requires": {
4989
+ "mute-stream": "~0.0.4"
4990
+ }
4991
+ },
4992
+ "read-cmd-shim": {
4993
+ "version": "1.0.1",
4994
+ "bundled": true,
4995
+ "dev": true,
4996
+ "requires": {
4997
+ "graceful-fs": "^4.1.2"
4998
+ }
4999
+ },
5000
+ "read-installed": {
5001
+ "version": "4.0.3",
5002
+ "bundled": true,
5003
+ "dev": true,
5004
+ "requires": {
5005
+ "debuglog": "^1.0.1",
5006
+ "graceful-fs": "^4.1.2",
5007
+ "read-package-json": "^2.0.0",
5008
+ "readdir-scoped-modules": "^1.0.0",
5009
+ "semver": "2 || 3 || 4 || 5",
5010
+ "slide": "~1.1.3",
5011
+ "util-extend": "^1.0.1"
5012
+ }
5013
+ },
5014
+ "read-package-json": {
5015
+ "version": "2.0.13",
5016
+ "bundled": true,
5017
+ "dev": true,
5018
+ "requires": {
5019
+ "glob": "^7.1.1",
5020
+ "graceful-fs": "^4.1.2",
5021
+ "json-parse-better-errors": "^1.0.1",
5022
+ "normalize-package-data": "^2.0.0",
5023
+ "slash": "^1.0.0"
5024
+ }
5025
+ },
5026
+ "read-package-tree": {
5027
+ "version": "5.2.1",
5028
+ "bundled": true,
5029
+ "dev": true,
5030
+ "requires": {
5031
+ "debuglog": "^1.0.1",
5032
+ "dezalgo": "^1.0.0",
5033
+ "once": "^1.3.0",
5034
+ "read-package-json": "^2.0.0",
5035
+ "readdir-scoped-modules": "^1.0.0"
5036
+ }
5037
+ },
5038
+ "readable-stream": {
5039
+ "version": "2.3.6",
5040
+ "bundled": true,
5041
+ "dev": true,
5042
+ "requires": {
5043
+ "core-util-is": "~1.0.0",
5044
+ "inherits": "~2.0.3",
5045
+ "isarray": "~1.0.0",
5046
+ "process-nextick-args": "~2.0.0",
5047
+ "safe-buffer": "~5.1.1",
5048
+ "string_decoder": "~1.1.1",
5049
+ "util-deprecate": "~1.0.1"
5050
+ }
5051
+ },
5052
+ "readdir-scoped-modules": {
5053
+ "version": "1.0.2",
5054
+ "bundled": true,
5055
+ "dev": true,
5056
+ "requires": {
5057
+ "debuglog": "^1.0.1",
5058
+ "dezalgo": "^1.0.0",
5059
+ "graceful-fs": "^4.1.2",
5060
+ "once": "^1.3.0"
5061
+ }
5062
+ },
5063
+ "registry-auth-token": {
5064
+ "version": "3.3.2",
5065
+ "bundled": true,
5066
+ "dev": true,
5067
+ "requires": {
5068
+ "rc": "^1.1.6",
5069
+ "safe-buffer": "^5.0.1"
5070
+ }
5071
+ },
5072
+ "registry-url": {
5073
+ "version": "3.1.0",
5074
+ "bundled": true,
5075
+ "dev": true,
5076
+ "requires": {
5077
+ "rc": "^1.0.1"
5078
+ }
5079
+ },
5080
+ "request": {
5081
+ "version": "2.88.0",
5082
+ "bundled": true,
5083
+ "dev": true,
5084
+ "requires": {
5085
+ "aws-sign2": "~0.7.0",
5086
+ "aws4": "^1.8.0",
5087
+ "caseless": "~0.12.0",
5088
+ "combined-stream": "~1.0.6",
5089
+ "extend": "~3.0.2",
5090
+ "forever-agent": "~0.6.1",
5091
+ "form-data": "~2.3.2",
5092
+ "har-validator": "~5.1.0",
5093
+ "http-signature": "~1.2.0",
5094
+ "is-typedarray": "~1.0.0",
5095
+ "isstream": "~0.1.2",
5096
+ "json-stringify-safe": "~5.0.1",
5097
+ "mime-types": "~2.1.19",
5098
+ "oauth-sign": "~0.9.0",
5099
+ "performance-now": "^2.1.0",
5100
+ "qs": "~6.5.2",
5101
+ "safe-buffer": "^5.1.2",
5102
+ "tough-cookie": "~2.4.3",
5103
+ "tunnel-agent": "^0.6.0",
5104
+ "uuid": "^3.3.2"
5105
+ }
5106
+ },
5107
+ "require-directory": {
5108
+ "version": "2.1.1",
5109
+ "bundled": true,
5110
+ "dev": true
5111
+ },
5112
+ "require-main-filename": {
5113
+ "version": "1.0.1",
5114
+ "bundled": true,
5115
+ "dev": true
5116
+ },
5117
+ "resolve-from": {
5118
+ "version": "4.0.0",
5119
+ "bundled": true,
5120
+ "dev": true
5121
+ },
5122
+ "retry": {
5123
+ "version": "0.12.0",
5124
+ "bundled": true,
5125
+ "dev": true
5126
+ },
5127
+ "rimraf": {
5128
+ "version": "2.6.2",
5129
+ "bundled": true,
5130
+ "dev": true,
5131
+ "requires": {
5132
+ "glob": "^7.0.5"
5133
+ }
5134
+ },
5135
+ "run-queue": {
5136
+ "version": "1.0.3",
5137
+ "bundled": true,
5138
+ "dev": true,
5139
+ "requires": {
5140
+ "aproba": "^1.1.1"
5141
+ }
5142
+ },
5143
+ "safe-buffer": {
5144
+ "version": "5.1.2",
5145
+ "bundled": true,
5146
+ "dev": true
5147
+ },
5148
+ "safer-buffer": {
5149
+ "version": "2.1.2",
5150
+ "bundled": true,
5151
+ "dev": true
5152
+ },
5153
+ "semver": {
5154
+ "version": "5.5.1",
5155
+ "bundled": true,
5156
+ "dev": true
5157
+ },
5158
+ "semver-diff": {
5159
+ "version": "2.1.0",
5160
+ "bundled": true,
5161
+ "dev": true,
5162
+ "requires": {
5163
+ "semver": "^5.0.3"
5164
+ }
5165
+ },
5166
+ "set-blocking": {
5167
+ "version": "2.0.0",
5168
+ "bundled": true,
5169
+ "dev": true
5170
+ },
5171
+ "sha": {
5172
+ "version": "2.0.1",
5173
+ "bundled": true,
5174
+ "dev": true,
5175
+ "requires": {
5176
+ "graceful-fs": "^4.1.2",
5177
+ "readable-stream": "^2.0.2"
5178
+ }
5179
+ },
5180
+ "shebang-command": {
5181
+ "version": "1.2.0",
5182
+ "bundled": true,
5183
+ "dev": true,
5184
+ "requires": {
5185
+ "shebang-regex": "^1.0.0"
5186
+ }
5187
+ },
5188
+ "shebang-regex": {
5189
+ "version": "1.0.0",
5190
+ "bundled": true,
5191
+ "dev": true
5192
+ },
5193
+ "signal-exit": {
5194
+ "version": "3.0.2",
5195
+ "bundled": true,
5196
+ "dev": true
5197
+ },
5198
+ "slash": {
5199
+ "version": "1.0.0",
5200
+ "bundled": true,
5201
+ "dev": true
5202
+ },
5203
+ "slide": {
5204
+ "version": "1.1.6",
5205
+ "bundled": true,
5206
+ "dev": true
5207
+ },
5208
+ "smart-buffer": {
5209
+ "version": "4.0.1",
5210
+ "bundled": true,
5211
+ "dev": true
5212
+ },
5213
+ "socks": {
5214
+ "version": "2.2.0",
5215
+ "bundled": true,
5216
+ "dev": true,
5217
+ "requires": {
5218
+ "ip": "^1.1.5",
5219
+ "smart-buffer": "^4.0.1"
5220
+ }
5221
+ },
5222
+ "socks-proxy-agent": {
5223
+ "version": "4.0.1",
5224
+ "bundled": true,
5225
+ "dev": true,
5226
+ "requires": {
5227
+ "agent-base": "~4.2.0",
5228
+ "socks": "~2.2.0"
5229
+ }
5230
+ },
5231
+ "sorted-object": {
5232
+ "version": "2.0.1",
5233
+ "bundled": true,
5234
+ "dev": true
5235
+ },
5236
+ "sorted-union-stream": {
5237
+ "version": "2.1.3",
5238
+ "bundled": true,
5239
+ "dev": true,
5240
+ "requires": {
5241
+ "from2": "^1.3.0",
5242
+ "stream-iterate": "^1.1.0"
5243
+ },
5244
+ "dependencies": {
5245
+ "from2": {
5246
+ "version": "1.3.0",
5247
+ "bundled": true,
5248
+ "dev": true,
5249
+ "requires": {
5250
+ "inherits": "~2.0.1",
5251
+ "readable-stream": "~1.1.10"
5252
+ }
5253
+ },
5254
+ "isarray": {
5255
+ "version": "0.0.1",
5256
+ "bundled": true,
5257
+ "dev": true
5258
+ },
5259
+ "readable-stream": {
5260
+ "version": "1.1.14",
5261
+ "bundled": true,
5262
+ "dev": true,
5263
+ "requires": {
5264
+ "core-util-is": "~1.0.0",
5265
+ "inherits": "~2.0.1",
5266
+ "isarray": "0.0.1",
5267
+ "string_decoder": "~0.10.x"
5268
+ }
5269
+ },
5270
+ "string_decoder": {
5271
+ "version": "0.10.31",
5272
+ "bundled": true,
5273
+ "dev": true
5274
+ }
5275
+ }
5276
+ },
5277
+ "spdx-correct": {
5278
+ "version": "3.0.0",
5279
+ "bundled": true,
5280
+ "dev": true,
5281
+ "requires": {
5282
+ "spdx-expression-parse": "^3.0.0",
5283
+ "spdx-license-ids": "^3.0.0"
5284
+ }
5285
+ },
5286
+ "spdx-exceptions": {
5287
+ "version": "2.1.0",
5288
+ "bundled": true,
5289
+ "dev": true
5290
+ },
5291
+ "spdx-expression-parse": {
5292
+ "version": "3.0.0",
5293
+ "bundled": true,
5294
+ "dev": true,
5295
+ "requires": {
5296
+ "spdx-exceptions": "^2.1.0",
5297
+ "spdx-license-ids": "^3.0.0"
5298
+ }
5299
+ },
5300
+ "spdx-license-ids": {
5301
+ "version": "3.0.0",
5302
+ "bundled": true,
5303
+ "dev": true
5304
+ },
5305
+ "sshpk": {
5306
+ "version": "1.14.2",
5307
+ "bundled": true,
5308
+ "dev": true,
5309
+ "requires": {
5310
+ "asn1": "~0.2.3",
5311
+ "assert-plus": "^1.0.0",
5312
+ "bcrypt-pbkdf": "^1.0.0",
5313
+ "dashdash": "^1.12.0",
5314
+ "ecc-jsbn": "~0.1.1",
5315
+ "getpass": "^0.1.1",
5316
+ "jsbn": "~0.1.0",
5317
+ "safer-buffer": "^2.0.2",
5318
+ "tweetnacl": "~0.14.0"
5319
+ }
5320
+ },
5321
+ "ssri": {
5322
+ "version": "6.0.1",
5323
+ "bundled": true,
5324
+ "dev": true,
5325
+ "requires": {
5326
+ "figgy-pudding": "^3.5.1"
5327
+ }
5328
+ },
5329
+ "stream-each": {
5330
+ "version": "1.2.2",
5331
+ "bundled": true,
5332
+ "dev": true,
5333
+ "requires": {
5334
+ "end-of-stream": "^1.1.0",
5335
+ "stream-shift": "^1.0.0"
5336
+ }
5337
+ },
5338
+ "stream-iterate": {
5339
+ "version": "1.2.0",
5340
+ "bundled": true,
5341
+ "dev": true,
5342
+ "requires": {
5343
+ "readable-stream": "^2.1.5",
5344
+ "stream-shift": "^1.0.0"
5345
+ }
5346
+ },
5347
+ "stream-shift": {
5348
+ "version": "1.0.0",
5349
+ "bundled": true,
5350
+ "dev": true
5351
+ },
5352
+ "strict-uri-encode": {
5353
+ "version": "2.0.0",
5354
+ "bundled": true,
5355
+ "dev": true
5356
+ },
5357
+ "string-width": {
5358
+ "version": "2.1.1",
5359
+ "bundled": true,
5360
+ "dev": true,
5361
+ "requires": {
5362
+ "is-fullwidth-code-point": "^2.0.0",
5363
+ "strip-ansi": "^4.0.0"
5364
+ },
5365
+ "dependencies": {
5366
+ "ansi-regex": {
5367
+ "version": "3.0.0",
5368
+ "bundled": true,
5369
+ "dev": true
5370
+ },
5371
+ "is-fullwidth-code-point": {
5372
+ "version": "2.0.0",
5373
+ "bundled": true,
5374
+ "dev": true
5375
+ },
5376
+ "strip-ansi": {
5377
+ "version": "4.0.0",
5378
+ "bundled": true,
5379
+ "dev": true,
5380
+ "requires": {
5381
+ "ansi-regex": "^3.0.0"
5382
+ }
5383
+ }
5384
+ }
5385
+ },
5386
+ "string_decoder": {
5387
+ "version": "1.1.1",
5388
+ "bundled": true,
5389
+ "dev": true,
5390
+ "requires": {
5391
+ "safe-buffer": "~5.1.0"
5392
+ }
5393
+ },
5394
+ "stringify-package": {
5395
+ "version": "1.0.0",
5396
+ "bundled": true,
5397
+ "dev": true
5398
+ },
5399
+ "strip-ansi": {
5400
+ "version": "3.0.1",
5401
+ "bundled": true,
5402
+ "dev": true,
5403
+ "requires": {
5404
+ "ansi-regex": "^2.0.0"
5405
+ }
5406
+ },
5407
+ "strip-eof": {
5408
+ "version": "1.0.0",
5409
+ "bundled": true,
5410
+ "dev": true
5411
+ },
5412
+ "strip-json-comments": {
5413
+ "version": "2.0.1",
5414
+ "bundled": true,
5415
+ "dev": true
5416
+ },
5417
+ "supports-color": {
5418
+ "version": "5.4.0",
5419
+ "bundled": true,
5420
+ "dev": true,
5421
+ "requires": {
5422
+ "has-flag": "^3.0.0"
5423
+ }
5424
+ },
5425
+ "tar": {
5426
+ "version": "4.4.8",
5427
+ "bundled": true,
5428
+ "dev": true,
5429
+ "requires": {
5430
+ "chownr": "^1.1.1",
5431
+ "fs-minipass": "^1.2.5",
5432
+ "minipass": "^2.3.4",
5433
+ "minizlib": "^1.1.1",
5434
+ "mkdirp": "^0.5.0",
5435
+ "safe-buffer": "^5.1.2",
5436
+ "yallist": "^3.0.2"
5437
+ },
5438
+ "dependencies": {
5439
+ "chownr": {
5440
+ "version": "1.1.1",
5441
+ "bundled": true,
5442
+ "dev": true
5443
+ },
5444
+ "minipass": {
5445
+ "version": "2.3.5",
5446
+ "bundled": true,
5447
+ "dev": true,
5448
+ "requires": {
5449
+ "safe-buffer": "^5.1.2",
5450
+ "yallist": "^3.0.0"
5451
+ }
5452
+ },
5453
+ "yallist": {
5454
+ "version": "3.0.3",
5455
+ "bundled": true,
5456
+ "dev": true
5457
+ }
5458
+ }
5459
+ },
5460
+ "term-size": {
5461
+ "version": "1.2.0",
5462
+ "bundled": true,
5463
+ "dev": true,
5464
+ "requires": {
5465
+ "execa": "^0.7.0"
5466
+ }
5467
+ },
5468
+ "text-table": {
5469
+ "version": "0.2.0",
5470
+ "bundled": true,
5471
+ "dev": true
5472
+ },
5473
+ "through": {
5474
+ "version": "2.3.8",
5475
+ "bundled": true,
5476
+ "dev": true
5477
+ },
5478
+ "through2": {
5479
+ "version": "2.0.3",
5480
+ "bundled": true,
5481
+ "dev": true,
5482
+ "requires": {
5483
+ "readable-stream": "^2.1.5",
5484
+ "xtend": "~4.0.1"
5485
+ }
5486
+ },
5487
+ "timed-out": {
5488
+ "version": "4.0.1",
5489
+ "bundled": true,
5490
+ "dev": true
5491
+ },
5492
+ "tiny-relative-date": {
5493
+ "version": "1.3.0",
5494
+ "bundled": true,
5495
+ "dev": true
5496
+ },
5497
+ "tough-cookie": {
5498
+ "version": "2.4.3",
5499
+ "bundled": true,
5500
+ "dev": true,
5501
+ "requires": {
5502
+ "psl": "^1.1.24",
5503
+ "punycode": "^1.4.1"
5504
+ }
5505
+ },
5506
+ "tunnel-agent": {
5507
+ "version": "0.6.0",
5508
+ "bundled": true,
5509
+ "dev": true,
5510
+ "requires": {
5511
+ "safe-buffer": "^5.0.1"
5512
+ }
5513
+ },
5514
+ "tweetnacl": {
5515
+ "version": "0.14.5",
5516
+ "bundled": true,
5517
+ "dev": true,
5518
+ "optional": true
5519
+ },
5520
+ "typedarray": {
5521
+ "version": "0.0.6",
5522
+ "bundled": true,
5523
+ "dev": true
5524
+ },
5525
+ "uid-number": {
5526
+ "version": "0.0.6",
5527
+ "bundled": true,
5528
+ "dev": true
5529
+ },
5530
+ "umask": {
5531
+ "version": "1.1.0",
5532
+ "bundled": true,
5533
+ "dev": true
5534
+ },
5535
+ "unique-filename": {
5536
+ "version": "1.1.0",
5537
+ "bundled": true,
5538
+ "dev": true,
5539
+ "requires": {
5540
+ "unique-slug": "^2.0.0"
5541
+ }
5542
+ },
5543
+ "unique-slug": {
5544
+ "version": "2.0.0",
5545
+ "bundled": true,
5546
+ "dev": true,
5547
+ "requires": {
5548
+ "imurmurhash": "^0.1.4"
5549
+ }
5550
+ },
5551
+ "unique-string": {
5552
+ "version": "1.0.0",
5553
+ "bundled": true,
5554
+ "dev": true,
5555
+ "requires": {
5556
+ "crypto-random-string": "^1.0.0"
5557
+ }
5558
+ },
5559
+ "unpipe": {
5560
+ "version": "1.0.0",
5561
+ "bundled": true,
5562
+ "dev": true
5563
+ },
5564
+ "unzip-response": {
5565
+ "version": "2.0.1",
5566
+ "bundled": true,
5567
+ "dev": true
5568
+ },
5569
+ "update-notifier": {
5570
+ "version": "2.5.0",
5571
+ "bundled": true,
5572
+ "dev": true,
5573
+ "requires": {
5574
+ "boxen": "^1.2.1",
5575
+ "chalk": "^2.0.1",
5576
+ "configstore": "^3.0.0",
5577
+ "import-lazy": "^2.1.0",
5578
+ "is-ci": "^1.0.10",
5579
+ "is-installed-globally": "^0.1.0",
5580
+ "is-npm": "^1.0.0",
5581
+ "latest-version": "^3.0.0",
5582
+ "semver-diff": "^2.0.0",
5583
+ "xdg-basedir": "^3.0.0"
5584
+ }
5585
+ },
5586
+ "url-parse-lax": {
5587
+ "version": "1.0.0",
5588
+ "bundled": true,
5589
+ "dev": true,
5590
+ "requires": {
5591
+ "prepend-http": "^1.0.1"
5592
+ }
5593
+ },
5594
+ "util-deprecate": {
5595
+ "version": "1.0.2",
5596
+ "bundled": true,
5597
+ "dev": true
5598
+ },
5599
+ "util-extend": {
5600
+ "version": "1.0.3",
5601
+ "bundled": true,
5602
+ "dev": true
5603
+ },
5604
+ "uuid": {
5605
+ "version": "3.3.2",
5606
+ "bundled": true,
5607
+ "dev": true
5608
+ },
5609
+ "validate-npm-package-license": {
5610
+ "version": "3.0.4",
5611
+ "bundled": true,
5612
+ "dev": true,
5613
+ "requires": {
5614
+ "spdx-correct": "^3.0.0",
5615
+ "spdx-expression-parse": "^3.0.0"
5616
+ }
5617
+ },
5618
+ "validate-npm-package-name": {
5619
+ "version": "3.0.0",
5620
+ "bundled": true,
5621
+ "dev": true,
5622
+ "requires": {
5623
+ "builtins": "^1.0.3"
5624
+ }
5625
+ },
5626
+ "verror": {
5627
+ "version": "1.10.0",
5628
+ "bundled": true,
5629
+ "dev": true,
5630
+ "requires": {
5631
+ "assert-plus": "^1.0.0",
5632
+ "core-util-is": "1.0.2",
5633
+ "extsprintf": "^1.2.0"
5634
+ }
5635
+ },
5636
+ "wcwidth": {
5637
+ "version": "1.0.1",
5638
+ "bundled": true,
5639
+ "dev": true,
5640
+ "requires": {
5641
+ "defaults": "^1.0.3"
5642
+ }
5643
+ },
5644
+ "which": {
5645
+ "version": "1.3.1",
5646
+ "bundled": true,
5647
+ "dev": true,
5648
+ "requires": {
5649
+ "isexe": "^2.0.0"
5650
+ }
5651
+ },
5652
+ "which-module": {
5653
+ "version": "2.0.0",
5654
+ "bundled": true,
5655
+ "dev": true
5656
+ },
5657
+ "wide-align": {
5658
+ "version": "1.1.2",
5659
+ "bundled": true,
5660
+ "dev": true,
5661
+ "requires": {
5662
+ "string-width": "^1.0.2"
5663
+ },
5664
+ "dependencies": {
5665
+ "string-width": {
5666
+ "version": "1.0.2",
5667
+ "bundled": true,
5668
+ "dev": true,
5669
+ "requires": {
5670
+ "code-point-at": "^1.0.0",
5671
+ "is-fullwidth-code-point": "^1.0.0",
5672
+ "strip-ansi": "^3.0.0"
5673
+ }
5674
+ }
5675
+ }
5676
+ },
5677
+ "widest-line": {
5678
+ "version": "2.0.0",
5679
+ "bundled": true,
5680
+ "dev": true,
5681
+ "requires": {
5682
+ "string-width": "^2.1.1"
5683
+ }
5684
+ },
5685
+ "worker-farm": {
5686
+ "version": "1.6.0",
5687
+ "bundled": true,
5688
+ "dev": true,
5689
+ "requires": {
5690
+ "errno": "~0.1.7"
5691
+ }
5692
+ },
5693
+ "wrap-ansi": {
5694
+ "version": "2.1.0",
5695
+ "bundled": true,
5696
+ "dev": true,
5697
+ "requires": {
5698
+ "string-width": "^1.0.1",
5699
+ "strip-ansi": "^3.0.1"
5700
+ },
5701
+ "dependencies": {
5702
+ "string-width": {
5703
+ "version": "1.0.2",
5704
+ "bundled": true,
5705
+ "dev": true,
5706
+ "requires": {
5707
+ "code-point-at": "^1.0.0",
5708
+ "is-fullwidth-code-point": "^1.0.0",
5709
+ "strip-ansi": "^3.0.0"
5710
+ }
5711
+ }
5712
+ }
5713
+ },
5714
+ "wrappy": {
5715
+ "version": "1.0.2",
5716
+ "bundled": true,
5717
+ "dev": true
5718
+ },
5719
+ "write-file-atomic": {
5720
+ "version": "2.3.0",
5721
+ "bundled": true,
5722
+ "dev": true,
5723
+ "requires": {
5724
+ "graceful-fs": "^4.1.11",
5725
+ "imurmurhash": "^0.1.4",
5726
+ "signal-exit": "^3.0.2"
5727
+ }
5728
+ },
5729
+ "xdg-basedir": {
5730
+ "version": "3.0.0",
5731
+ "bundled": true,
5732
+ "dev": true
5733
+ },
5734
+ "xtend": {
5735
+ "version": "4.0.1",
5736
+ "bundled": true,
5737
+ "dev": true
5738
+ },
5739
+ "y18n": {
5740
+ "version": "4.0.0",
5741
+ "bundled": true,
5742
+ "dev": true
5743
+ },
5744
+ "yallist": {
5745
+ "version": "2.1.2",
5746
+ "bundled": true,
5747
+ "dev": true
5748
+ },
5749
+ "yargs": {
5750
+ "version": "11.0.0",
5751
+ "bundled": true,
5752
+ "dev": true,
5753
+ "requires": {
5754
+ "cliui": "^4.0.0",
5755
+ "decamelize": "^1.1.1",
5756
+ "find-up": "^2.1.0",
5757
+ "get-caller-file": "^1.0.1",
5758
+ "os-locale": "^2.0.0",
5759
+ "require-directory": "^2.1.1",
5760
+ "require-main-filename": "^1.0.1",
5761
+ "set-blocking": "^2.0.0",
5762
+ "string-width": "^2.0.0",
5763
+ "which-module": "^2.0.0",
5764
+ "y18n": "^3.2.1",
5765
+ "yargs-parser": "^9.0.2"
5766
+ },
5767
+ "dependencies": {
5768
+ "y18n": {
5769
+ "version": "3.2.1",
5770
+ "bundled": true,
5771
+ "dev": true
5772
+ }
5773
+ }
5774
+ },
5775
+ "yargs-parser": {
5776
+ "version": "9.0.2",
5777
+ "bundled": true,
5778
+ "dev": true,
5779
+ "requires": {
5780
+ "camelcase": "^4.1.0"
5781
+ }
5782
+ }
5783
+ }
5784
+ },
5785
+ "npm-run-path": {
5786
+ "version": "2.0.2",
5787
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
5788
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
5789
+ "dev": true,
5790
+ "requires": {
5791
+ "path-key": "^2.0.0"
5792
+ }
5793
+ },
5794
+ "number-is-nan": {
5795
+ "version": "1.0.1",
5796
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
5797
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
5798
+ "dev": true
5799
+ },
5800
+ "object-assign": {
5801
+ "version": "4.1.1",
5802
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
5803
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
5804
+ "dev": true
5805
+ },
5806
+ "object-copy": {
5807
+ "version": "0.1.0",
5808
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
5809
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
5810
+ "dev": true,
5811
+ "requires": {
5812
+ "copy-descriptor": "^0.1.0",
5813
+ "define-property": "^0.2.5",
5814
+ "kind-of": "^3.0.3"
5815
+ },
5816
+ "dependencies": {
5817
+ "define-property": {
5818
+ "version": "0.2.5",
5819
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
5820
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
5821
+ "dev": true,
5822
+ "requires": {
5823
+ "is-descriptor": "^0.1.0"
5824
+ }
5825
+ },
5826
+ "kind-of": {
5827
+ "version": "3.2.2",
5828
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
5829
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
5830
+ "dev": true,
5831
+ "requires": {
5832
+ "is-buffer": "^1.1.5"
5833
+ }
5834
+ }
5835
+ }
5836
+ },
5837
+ "object-visit": {
5838
+ "version": "1.0.1",
5839
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
5840
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
5841
+ "dev": true,
5842
+ "requires": {
5843
+ "isobject": "^3.0.0"
5844
+ }
5845
+ },
5846
+ "object.pick": {
5847
+ "version": "1.3.0",
5848
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
5849
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
5850
+ "dev": true,
5851
+ "requires": {
5852
+ "isobject": "^3.0.1"
5853
+ }
5854
+ },
5855
+ "octokit-pagination-methods": {
5856
+ "version": "1.1.0",
5857
+ "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
5858
+ "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==",
5859
+ "dev": true
5860
+ },
5861
+ "once": {
5862
+ "version": "1.4.0",
5863
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
5864
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
5865
+ "dev": true,
5866
+ "requires": {
5867
+ "wrappy": "1"
5868
+ }
5869
+ },
5870
+ "optimist": {
5871
+ "version": "0.6.1",
5872
+ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
5873
+ "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
5874
+ "dev": true,
5875
+ "requires": {
5876
+ "minimist": "~0.0.1",
5877
+ "wordwrap": "~0.0.2"
5878
+ },
5879
+ "dependencies": {
5880
+ "minimist": {
5881
+ "version": "0.0.10",
5882
+ "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
5883
+ "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
5884
+ "dev": true
5885
+ }
5886
+ }
5887
+ },
5888
+ "os-locale": {
5889
+ "version": "3.0.1",
5890
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz",
5891
+ "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==",
5892
+ "dev": true,
5893
+ "requires": {
5894
+ "execa": "^0.10.0",
5895
+ "lcid": "^2.0.0",
5896
+ "mem": "^4.0.0"
5897
+ },
5898
+ "dependencies": {
5899
+ "execa": {
5900
+ "version": "0.10.0",
5901
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
5902
+ "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
5903
+ "dev": true,
5904
+ "requires": {
5905
+ "cross-spawn": "^6.0.0",
5906
+ "get-stream": "^3.0.0",
5907
+ "is-stream": "^1.1.0",
5908
+ "npm-run-path": "^2.0.0",
5909
+ "p-finally": "^1.0.0",
5910
+ "signal-exit": "^3.0.0",
5911
+ "strip-eof": "^1.0.0"
5912
+ }
5913
+ },
5914
+ "get-stream": {
5915
+ "version": "3.0.0",
5916
+ "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
5917
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
5918
+ "dev": true
5919
+ }
5920
+ }
5921
+ },
5922
+ "os-name": {
5923
+ "version": "3.0.0",
5924
+ "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.0.0.tgz",
5925
+ "integrity": "sha512-7c74tib2FsdFbQ3W+qj8Tyd1R3Z6tuVRNNxXjJcZ4NgjIEQU9N/prVMqcW29XZPXGACqaXN3jq58/6hoaoXH6g==",
5926
+ "dev": true,
5927
+ "requires": {
5928
+ "macos-release": "^2.0.0",
5929
+ "windows-release": "^3.1.0"
5930
+ }
5931
+ },
5932
+ "p-defer": {
5933
+ "version": "1.0.0",
5934
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
5935
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
5936
+ "dev": true
5937
+ },
5938
+ "p-filter": {
5939
+ "version": "1.0.0",
5940
+ "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-1.0.0.tgz",
5941
+ "integrity": "sha1-Yp0xcVAgnI/VCLoTdxPvS7kg6ds=",
5942
+ "dev": true,
5943
+ "requires": {
5944
+ "p-map": "^1.0.0"
5945
+ }
5946
+ },
5947
+ "p-finally": {
5948
+ "version": "1.0.0",
5949
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
5950
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
5951
+ "dev": true
5952
+ },
5953
+ "p-is-promise": {
5954
+ "version": "2.0.0",
5955
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz",
5956
+ "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==",
5957
+ "dev": true
5958
+ },
5959
+ "p-limit": {
5960
+ "version": "1.3.0",
5961
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
5962
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
5963
+ "dev": true,
5964
+ "requires": {
5965
+ "p-try": "^1.0.0"
5966
+ }
5967
+ },
5968
+ "p-locate": {
5969
+ "version": "3.0.0",
5970
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
5971
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
5972
+ "dev": true,
5973
+ "requires": {
5974
+ "p-limit": "^2.0.0"
5975
+ },
5976
+ "dependencies": {
5977
+ "p-limit": {
5978
+ "version": "2.0.0",
5979
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz",
5980
+ "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==",
5981
+ "dev": true,
5982
+ "requires": {
5983
+ "p-try": "^2.0.0"
5984
+ }
5985
+ },
5986
+ "p-try": {
5987
+ "version": "2.0.0",
5988
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
5989
+ "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
5990
+ "dev": true
5991
+ }
5992
+ }
5993
+ },
5994
+ "p-map": {
5995
+ "version": "1.2.0",
5996
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
5997
+ "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
5998
+ "dev": true
5999
+ },
6000
+ "p-reduce": {
6001
+ "version": "1.0.0",
6002
+ "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz",
6003
+ "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=",
6004
+ "dev": true
6005
+ },
6006
+ "p-retry": {
6007
+ "version": "3.0.0",
6008
+ "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.0.tgz",
6009
+ "integrity": "sha512-fAB7bebxaj8nylNAsxPNkwPZ/48bXFdFnWrz0v2sV+H5BsGfVL7Ap7KgONqy7rOK4ZI1I+SU+lmettO3hM+2HQ==",
6010
+ "dev": true,
6011
+ "requires": {
6012
+ "retry": "^0.12.0"
6013
+ }
6014
+ },
6015
+ "p-try": {
6016
+ "version": "1.0.0",
6017
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
6018
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
6019
+ "dev": true
6020
+ },
6021
+ "parse-github-url": {
6022
+ "version": "1.0.2",
6023
+ "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz",
6024
+ "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==",
6025
+ "dev": true
6026
+ },
6027
+ "parse-json": {
6028
+ "version": "4.0.0",
6029
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
6030
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
6031
+ "dev": true,
6032
+ "requires": {
6033
+ "error-ex": "^1.3.1",
6034
+ "json-parse-better-errors": "^1.0.1"
6035
+ }
6036
+ },
6037
+ "pascalcase": {
6038
+ "version": "0.1.1",
6039
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
6040
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
6041
+ "dev": true
6042
+ },
6043
+ "path-dirname": {
6044
+ "version": "1.0.2",
6045
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
6046
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
6047
+ "dev": true
6048
+ },
6049
+ "path-exists": {
6050
+ "version": "2.1.0",
6051
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
6052
+ "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
6053
+ "dev": true,
6054
+ "requires": {
6055
+ "pinkie-promise": "^2.0.0"
6056
+ }
6057
+ },
6058
+ "path-is-absolute": {
6059
+ "version": "1.0.1",
6060
+ "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
6061
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
6062
+ "dev": true
6063
+ },
6064
+ "path-key": {
6065
+ "version": "2.0.1",
6066
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
6067
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
6068
+ "dev": true
6069
+ },
6070
+ "path-type": {
6071
+ "version": "3.0.0",
6072
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
6073
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
6074
+ "dev": true,
6075
+ "requires": {
6076
+ "pify": "^3.0.0"
6077
+ }
6078
+ },
6079
+ "pify": {
6080
+ "version": "3.0.0",
6081
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
6082
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
6083
+ "dev": true
6084
+ },
6085
+ "pinkie": {
6086
+ "version": "2.0.4",
6087
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
6088
+ "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
6089
+ "dev": true
6090
+ },
6091
+ "pinkie-promise": {
6092
+ "version": "2.0.1",
6093
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
6094
+ "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
6095
+ "dev": true,
6096
+ "requires": {
6097
+ "pinkie": "^2.0.0"
6098
+ }
6099
+ },
6100
+ "pkg-conf": {
6101
+ "version": "2.1.0",
6102
+ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
6103
+ "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=",
6104
+ "dev": true,
6105
+ "requires": {
6106
+ "find-up": "^2.0.0",
6107
+ "load-json-file": "^4.0.0"
6108
+ },
6109
+ "dependencies": {
6110
+ "find-up": {
6111
+ "version": "2.1.0",
6112
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
6113
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
6114
+ "dev": true,
6115
+ "requires": {
6116
+ "locate-path": "^2.0.0"
6117
+ }
6118
+ },
6119
+ "load-json-file": {
6120
+ "version": "4.0.0",
6121
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
6122
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
6123
+ "dev": true,
6124
+ "requires": {
6125
+ "graceful-fs": "^4.1.2",
6126
+ "parse-json": "^4.0.0",
6127
+ "pify": "^3.0.0",
6128
+ "strip-bom": "^3.0.0"
6129
+ }
6130
+ },
6131
+ "strip-bom": {
6132
+ "version": "3.0.0",
6133
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
6134
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
6135
+ "dev": true
6136
+ }
6137
+ }
6138
+ },
6139
+ "posix-character-classes": {
6140
+ "version": "0.1.1",
6141
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
6142
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
6143
+ "dev": true
6144
+ },
6145
+ "process-nextick-args": {
6146
+ "version": "2.0.0",
6147
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
6148
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
6149
+ "dev": true
6150
+ },
6151
+ "pump": {
6152
+ "version": "3.0.0",
6153
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
6154
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
6155
+ "dev": true,
6156
+ "requires": {
6157
+ "end-of-stream": "^1.1.0",
6158
+ "once": "^1.3.1"
6159
+ }
6160
+ },
6161
+ "q": {
6162
+ "version": "1.5.1",
6163
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
6164
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
6165
+ "dev": true
6166
+ },
6167
+ "quick-lru": {
6168
+ "version": "1.1.0",
6169
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
6170
+ "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=",
6171
+ "dev": true
6172
+ },
6173
+ "rc": {
6174
+ "version": "1.2.8",
6175
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
6176
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
6177
+ "dev": true,
6178
+ "requires": {
6179
+ "deep-extend": "^0.6.0",
6180
+ "ini": "~1.3.0",
6181
+ "minimist": "^1.2.0",
6182
+ "strip-json-comments": "~2.0.1"
6183
+ }
6184
+ },
6185
+ "read-pkg": {
6186
+ "version": "1.1.0",
6187
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
6188
+ "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
6189
+ "dev": true,
6190
+ "requires": {
6191
+ "load-json-file": "^1.0.0",
6192
+ "normalize-package-data": "^2.3.2",
6193
+ "path-type": "^1.0.0"
6194
+ },
6195
+ "dependencies": {
6196
+ "path-type": {
6197
+ "version": "1.1.0",
6198
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
6199
+ "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
6200
+ "dev": true,
6201
+ "requires": {
6202
+ "graceful-fs": "^4.1.2",
6203
+ "pify": "^2.0.0",
6204
+ "pinkie-promise": "^2.0.0"
6205
+ }
6206
+ },
6207
+ "pify": {
6208
+ "version": "2.3.0",
6209
+ "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
6210
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
6211
+ "dev": true
6212
+ }
6213
+ }
6214
+ },
6215
+ "read-pkg-up": {
6216
+ "version": "1.0.1",
6217
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
6218
+ "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
6219
+ "dev": true,
6220
+ "requires": {
6221
+ "find-up": "^1.0.0",
6222
+ "read-pkg": "^1.0.0"
6223
+ }
6224
+ },
6225
+ "readable-stream": {
6226
+ "version": "2.3.6",
6227
+ "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
6228
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
6229
+ "dev": true,
6230
+ "requires": {
6231
+ "core-util-is": "~1.0.0",
6232
+ "inherits": "~2.0.3",
6233
+ "isarray": "~1.0.0",
6234
+ "process-nextick-args": "~2.0.0",
6235
+ "safe-buffer": "~5.1.1",
6236
+ "string_decoder": "~1.1.1",
6237
+ "util-deprecate": "~1.0.1"
6238
+ }
6239
+ },
6240
+ "redent": {
6241
+ "version": "1.0.0",
6242
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
6243
+ "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
6244
+ "dev": true,
6245
+ "requires": {
6246
+ "indent-string": "^2.1.0",
6247
+ "strip-indent": "^1.0.1"
6248
+ },
6249
+ "dependencies": {
6250
+ "indent-string": {
6251
+ "version": "2.1.0",
6252
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
6253
+ "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
6254
+ "dev": true,
6255
+ "requires": {
6256
+ "repeating": "^2.0.0"
6257
+ }
6258
+ }
6259
+ }
6260
+ },
6261
+ "redeyed": {
6262
+ "version": "2.1.1",
6263
+ "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz",
6264
+ "integrity": "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=",
6265
+ "dev": true,
6266
+ "requires": {
6267
+ "esprima": "~4.0.0"
6268
+ },
6269
+ "dependencies": {
6270
+ "esprima": {
6271
+ "version": "4.0.1",
6272
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
6273
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
6274
+ "dev": true
6275
+ }
6276
+ }
6277
+ },
6278
+ "regex-not": {
6279
+ "version": "1.0.2",
6280
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
6281
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
6282
+ "dev": true,
6283
+ "requires": {
6284
+ "extend-shallow": "^3.0.2",
6285
+ "safe-regex": "^1.1.0"
6286
+ }
6287
+ },
6288
+ "registry-auth-token": {
6289
+ "version": "3.3.2",
6290
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
6291
+ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
6292
+ "dev": true,
6293
+ "requires": {
6294
+ "rc": "^1.1.6",
6295
+ "safe-buffer": "^5.0.1"
6296
+ }
6297
+ },
6298
+ "repeat-element": {
6299
+ "version": "1.1.3",
6300
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
6301
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
6302
+ "dev": true
6303
+ },
6304
+ "repeat-string": {
6305
+ "version": "1.6.1",
6306
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
6307
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
6308
+ "dev": true
6309
+ },
6310
+ "repeating": {
6311
+ "version": "2.0.1",
6312
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
6313
+ "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
6314
+ "dev": true,
6315
+ "requires": {
6316
+ "is-finite": "^1.0.0"
6317
+ }
6318
+ },
6319
+ "require-directory": {
6320
+ "version": "2.1.1",
6321
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
6322
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
6323
+ "dev": true
6324
+ },
6325
+ "require-main-filename": {
6326
+ "version": "1.0.1",
6327
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
6328
+ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
6329
+ "dev": true
6330
+ },
6331
+ "resolve": {
6332
+ "version": "1.1.7",
6333
+ "resolved": "http://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
6334
+ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
6335
+ "dev": true
6336
+ },
6337
+ "resolve-from": {
6338
+ "version": "4.0.0",
6339
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
6340
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
6341
+ "dev": true
6342
+ },
6343
+ "resolve-url": {
6344
+ "version": "0.2.1",
6345
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
6346
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
6347
+ "dev": true
6348
+ },
6349
+ "ret": {
6350
+ "version": "0.1.15",
6351
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
6352
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
6353
+ "dev": true
6354
+ },
6355
+ "retry": {
6356
+ "version": "0.12.0",
6357
+ "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
6358
+ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
6359
+ "dev": true
6360
+ },
6361
+ "rimraf": {
6362
+ "version": "2.6.2",
6363
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
6364
+ "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
6365
+ "dev": true,
6366
+ "requires": {
6367
+ "glob": "^7.0.5"
6368
+ }
6369
+ },
6370
+ "safe-buffer": {
6371
+ "version": "5.1.2",
6372
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
6373
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
6374
+ "dev": true
6375
+ },
6376
+ "safe-regex": {
6377
+ "version": "1.1.0",
6378
+ "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
6379
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
6380
+ "dev": true,
6381
+ "requires": {
6382
+ "ret": "~0.1.10"
6383
+ }
6384
+ },
6385
+ "safer-buffer": {
6386
+ "version": "2.1.2",
6387
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
6388
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
6389
+ "dev": true
6390
+ },
6391
+ "semantic-release": {
6392
+ "version": "15.13.1",
6393
+ "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-15.13.1.tgz",
6394
+ "integrity": "sha512-bkrfQ10BhbJRMeq/Ih9DZ9FO4ffDwFYsRR134JP9JvQSf8GVX4sg3SnFFd7Q10C6pKwjKqMZ4+ZNB5uQYMLPEg==",
6395
+ "dev": true,
6396
+ "requires": {
6397
+ "@semantic-release/commit-analyzer": "^6.1.0",
6398
+ "@semantic-release/error": "^2.2.0",
6399
+ "@semantic-release/github": "^5.1.0",
6400
+ "@semantic-release/npm": "^5.0.5",
6401
+ "@semantic-release/release-notes-generator": "^7.1.2",
6402
+ "aggregate-error": "^1.0.0",
6403
+ "cosmiconfig": "^5.0.1",
6404
+ "debug": "^4.0.0",
6405
+ "env-ci": "^3.0.0",
6406
+ "execa": "^1.0.0",
6407
+ "figures": "^2.0.0",
6408
+ "find-versions": "^3.0.0",
6409
+ "get-stream": "^4.0.0",
6410
+ "git-log-parser": "^1.2.0",
6411
+ "hook-std": "^1.1.0",
6412
+ "hosted-git-info": "^2.7.1",
6413
+ "lodash": "^4.17.4",
6414
+ "marked": "^0.5.0",
6415
+ "marked-terminal": "^3.0.0",
6416
+ "p-locate": "^3.0.0",
6417
+ "p-reduce": "^1.0.0",
6418
+ "read-pkg-up": "^4.0.0",
6419
+ "resolve-from": "^4.0.0",
6420
+ "semver": "^5.4.1",
6421
+ "signale": "^1.2.1",
6422
+ "yargs": "^12.0.0"
6423
+ },
6424
+ "dependencies": {
6425
+ "find-up": {
6426
+ "version": "3.0.0",
6427
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
6428
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
6429
+ "dev": true,
6430
+ "requires": {
6431
+ "locate-path": "^3.0.0"
6432
+ }
6433
+ },
6434
+ "load-json-file": {
6435
+ "version": "4.0.0",
6436
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
6437
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
6438
+ "dev": true,
6439
+ "requires": {
6440
+ "graceful-fs": "^4.1.2",
6441
+ "parse-json": "^4.0.0",
6442
+ "pify": "^3.0.0",
6443
+ "strip-bom": "^3.0.0"
6444
+ }
6445
+ },
6446
+ "locate-path": {
6447
+ "version": "3.0.0",
6448
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
6449
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
6450
+ "dev": true,
6451
+ "requires": {
6452
+ "p-locate": "^3.0.0",
6453
+ "path-exists": "^3.0.0"
6454
+ }
6455
+ },
6456
+ "path-exists": {
6457
+ "version": "3.0.0",
6458
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
6459
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
6460
+ "dev": true
6461
+ },
6462
+ "read-pkg": {
6463
+ "version": "3.0.0",
6464
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
6465
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
6466
+ "dev": true,
6467
+ "requires": {
6468
+ "load-json-file": "^4.0.0",
6469
+ "normalize-package-data": "^2.3.2",
6470
+ "path-type": "^3.0.0"
6471
+ }
6472
+ },
6473
+ "read-pkg-up": {
6474
+ "version": "4.0.0",
6475
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
6476
+ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
6477
+ "dev": true,
6478
+ "requires": {
6479
+ "find-up": "^3.0.0",
6480
+ "read-pkg": "^3.0.0"
6481
+ }
6482
+ },
6483
+ "strip-bom": {
6484
+ "version": "3.0.0",
6485
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
6486
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
6487
+ "dev": true
6488
+ }
6489
+ }
6490
+ },
6491
+ "semver": {
6492
+ "version": "5.6.0",
6493
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
6494
+ "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
6495
+ "dev": true
6496
+ },
6497
+ "semver-regex": {
6498
+ "version": "2.0.0",
6499
+ "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz",
6500
+ "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==",
6501
+ "dev": true
6502
+ },
6503
+ "set-blocking": {
6504
+ "version": "2.0.0",
6505
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
6506
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
6507
+ "dev": true
6508
+ },
6509
+ "set-value": {
6510
+ "version": "2.0.0",
6511
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz",
6512
+ "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==",
6513
+ "dev": true,
6514
+ "requires": {
6515
+ "extend-shallow": "^2.0.1",
6516
+ "is-extendable": "^0.1.1",
6517
+ "is-plain-object": "^2.0.3",
6518
+ "split-string": "^3.0.1"
6519
+ },
6520
+ "dependencies": {
6521
+ "extend-shallow": {
6522
+ "version": "2.0.1",
6523
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
6524
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
6525
+ "dev": true,
6526
+ "requires": {
6527
+ "is-extendable": "^0.1.0"
6528
+ }
6529
+ }
6530
+ }
6531
+ },
6532
+ "shebang-command": {
6533
+ "version": "1.2.0",
6534
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
6535
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
6536
+ "dev": true,
6537
+ "requires": {
6538
+ "shebang-regex": "^1.0.0"
6539
+ }
6540
+ },
6541
+ "shebang-regex": {
6542
+ "version": "1.0.0",
6543
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
6544
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
6545
+ "dev": true
6546
+ },
6547
+ "signal-exit": {
6548
+ "version": "3.0.2",
6549
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
6550
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
6551
+ "dev": true
6552
+ },
6553
+ "signale": {
6554
+ "version": "1.3.0",
6555
+ "resolved": "https://registry.npmjs.org/signale/-/signale-1.3.0.tgz",
6556
+ "integrity": "sha512-TyFhsQ9wZDYDfsPqWMyjCxsDoMwfpsT0130Mce7wDiVCSDdtWSg83dOqoj8aGpGCs3n1YPcam6sT1OFPuGT/OQ==",
6557
+ "dev": true,
6558
+ "requires": {
6559
+ "chalk": "^2.3.2",
6560
+ "figures": "^2.0.0",
6561
+ "pkg-conf": "^2.1.0"
6562
+ }
6563
+ },
6564
+ "slash": {
6565
+ "version": "1.0.0",
6566
+ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
6567
+ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
6568
+ "dev": true
6569
+ },
6570
+ "snapdragon": {
6571
+ "version": "0.8.2",
6572
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
6573
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
6574
+ "dev": true,
6575
+ "requires": {
6576
+ "base": "^0.11.1",
6577
+ "debug": "^2.2.0",
6578
+ "define-property": "^0.2.5",
6579
+ "extend-shallow": "^2.0.1",
6580
+ "map-cache": "^0.2.2",
6581
+ "source-map": "^0.5.6",
6582
+ "source-map-resolve": "^0.5.0",
6583
+ "use": "^3.1.0"
6584
+ },
6585
+ "dependencies": {
6586
+ "debug": {
6587
+ "version": "2.6.9",
6588
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
6589
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
6590
+ "dev": true,
6591
+ "requires": {
6592
+ "ms": "2.0.0"
6593
+ }
6594
+ },
6595
+ "define-property": {
6596
+ "version": "0.2.5",
6597
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
6598
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
6599
+ "dev": true,
6600
+ "requires": {
6601
+ "is-descriptor": "^0.1.0"
6602
+ }
6603
+ },
6604
+ "extend-shallow": {
6605
+ "version": "2.0.1",
6606
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
6607
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
6608
+ "dev": true,
6609
+ "requires": {
6610
+ "is-extendable": "^0.1.0"
6611
+ }
6612
+ },
6613
+ "ms": {
6614
+ "version": "2.0.0",
6615
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
6616
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
6617
+ "dev": true
6618
+ }
6619
+ }
6620
+ },
6621
+ "snapdragon-node": {
6622
+ "version": "2.1.1",
6623
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
6624
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
6625
+ "dev": true,
6626
+ "requires": {
6627
+ "define-property": "^1.0.0",
6628
+ "isobject": "^3.0.0",
6629
+ "snapdragon-util": "^3.0.1"
6630
+ },
6631
+ "dependencies": {
6632
+ "define-property": {
6633
+ "version": "1.0.0",
6634
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
6635
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
6636
+ "dev": true,
6637
+ "requires": {
6638
+ "is-descriptor": "^1.0.0"
6639
+ }
6640
+ },
6641
+ "is-accessor-descriptor": {
6642
+ "version": "1.0.0",
6643
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
6644
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
6645
+ "dev": true,
6646
+ "requires": {
6647
+ "kind-of": "^6.0.0"
6648
+ }
6649
+ },
6650
+ "is-data-descriptor": {
6651
+ "version": "1.0.0",
6652
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
6653
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
6654
+ "dev": true,
6655
+ "requires": {
6656
+ "kind-of": "^6.0.0"
6657
+ }
6658
+ },
6659
+ "is-descriptor": {
6660
+ "version": "1.0.2",
6661
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
6662
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
6663
+ "dev": true,
6664
+ "requires": {
6665
+ "is-accessor-descriptor": "^1.0.0",
6666
+ "is-data-descriptor": "^1.0.0",
6667
+ "kind-of": "^6.0.2"
6668
+ }
6669
+ }
6670
+ }
6671
+ },
6672
+ "snapdragon-util": {
6673
+ "version": "3.0.1",
6674
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
6675
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
6676
+ "dev": true,
6677
+ "requires": {
6678
+ "kind-of": "^3.2.0"
6679
+ },
6680
+ "dependencies": {
6681
+ "kind-of": {
6682
+ "version": "3.2.2",
6683
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
6684
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
6685
+ "dev": true,
6686
+ "requires": {
6687
+ "is-buffer": "^1.1.5"
6688
+ }
6689
+ }
6690
+ }
6691
+ },
6692
+ "source-map": {
6693
+ "version": "0.5.7",
6694
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
6695
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
6696
+ "dev": true
6697
+ },
6698
+ "source-map-resolve": {
6699
+ "version": "0.5.2",
6700
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
6701
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
6702
+ "dev": true,
6703
+ "requires": {
6704
+ "atob": "^2.1.1",
6705
+ "decode-uri-component": "^0.2.0",
6706
+ "resolve-url": "^0.2.1",
6707
+ "source-map-url": "^0.4.0",
6708
+ "urix": "^0.1.0"
6709
+ }
6710
+ },
6711
+ "source-map-url": {
6712
+ "version": "0.4.0",
6713
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
6714
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
6715
+ "dev": true
6716
+ },
6717
+ "spawn-error-forwarder": {
6718
+ "version": "1.0.0",
6719
+ "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz",
6720
+ "integrity": "sha1-Gv2Uc46ZmwNG17n8NzvlXgdXcCk=",
6721
+ "dev": true
6722
+ },
6723
+ "spdx-correct": {
6724
+ "version": "3.1.0",
6725
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
6726
+ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
6727
+ "dev": true,
6728
+ "requires": {
6729
+ "spdx-expression-parse": "^3.0.0",
6730
+ "spdx-license-ids": "^3.0.0"
6731
+ }
6732
+ },
6733
+ "spdx-exceptions": {
6734
+ "version": "2.2.0",
6735
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
6736
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
6737
+ "dev": true
6738
+ },
6739
+ "spdx-expression-parse": {
6740
+ "version": "3.0.0",
6741
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
6742
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
6743
+ "dev": true,
6744
+ "requires": {
6745
+ "spdx-exceptions": "^2.1.0",
6746
+ "spdx-license-ids": "^3.0.0"
6747
+ }
6748
+ },
6749
+ "spdx-license-ids": {
6750
+ "version": "3.0.2",
6751
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz",
6752
+ "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==",
6753
+ "dev": true
6754
+ },
6755
+ "split": {
6756
+ "version": "1.0.1",
6757
+ "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
6758
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
6759
+ "dev": true,
6760
+ "requires": {
6761
+ "through": "2"
6762
+ }
6763
+ },
6764
+ "split-string": {
6765
+ "version": "3.1.0",
6766
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
6767
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
6768
+ "dev": true,
6769
+ "requires": {
6770
+ "extend-shallow": "^3.0.0"
6771
+ }
6772
+ },
6773
+ "split2": {
6774
+ "version": "2.2.0",
6775
+ "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
6776
+ "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
6777
+ "dev": true,
6778
+ "requires": {
6779
+ "through2": "^2.0.2"
6780
+ }
6781
+ },
6782
+ "sprintf-js": {
6783
+ "version": "1.1.2",
6784
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
6785
+ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
6786
+ "dev": true
6787
+ },
6788
+ "static-extend": {
6789
+ "version": "0.1.2",
6790
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
6791
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
6792
+ "dev": true,
6793
+ "requires": {
6794
+ "define-property": "^0.2.5",
6795
+ "object-copy": "^0.1.0"
6796
+ },
6797
+ "dependencies": {
6798
+ "define-property": {
6799
+ "version": "0.2.5",
6800
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
6801
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
6802
+ "dev": true,
6803
+ "requires": {
6804
+ "is-descriptor": "^0.1.0"
6805
+ }
6806
+ }
6807
+ }
6808
+ },
6809
+ "stream-combiner2": {
6810
+ "version": "1.1.1",
6811
+ "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
6812
+ "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
6813
+ "dev": true,
6814
+ "requires": {
6815
+ "duplexer2": "~0.1.0",
6816
+ "readable-stream": "^2.0.2"
6817
+ }
6818
+ },
6819
+ "string-width": {
6820
+ "version": "2.1.1",
6821
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
6822
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
6823
+ "dev": true,
6824
+ "requires": {
6825
+ "is-fullwidth-code-point": "^2.0.0",
6826
+ "strip-ansi": "^4.0.0"
6827
+ }
6828
+ },
6829
+ "string_decoder": {
6830
+ "version": "1.1.1",
6831
+ "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
6832
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
6833
+ "dev": true,
6834
+ "requires": {
6835
+ "safe-buffer": "~5.1.0"
6836
+ }
6837
+ },
6838
+ "strip-ansi": {
6839
+ "version": "4.0.0",
6840
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
6841
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
6842
+ "dev": true,
6843
+ "requires": {
6844
+ "ansi-regex": "^3.0.0"
6845
+ }
6846
+ },
6847
+ "strip-bom": {
6848
+ "version": "2.0.0",
6849
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
6850
+ "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
6851
+ "dev": true,
6852
+ "requires": {
6853
+ "is-utf8": "^0.2.0"
6854
+ }
6855
+ },
6856
+ "strip-eof": {
6857
+ "version": "1.0.0",
6858
+ "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
6859
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
6860
+ "dev": true
6861
+ },
6862
+ "strip-indent": {
6863
+ "version": "1.0.1",
6864
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
6865
+ "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
6866
+ "dev": true,
6867
+ "requires": {
6868
+ "get-stdin": "^4.0.1"
6869
+ }
6870
+ },
6871
+ "strip-json-comments": {
6872
+ "version": "2.0.1",
6873
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
6874
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
6875
+ "dev": true
6876
+ },
6877
+ "supports-color": {
6878
+ "version": "5.5.0",
6879
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
6880
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
6881
+ "dev": true,
6882
+ "requires": {
6883
+ "has-flag": "^3.0.0"
6884
+ }
6885
+ },
6886
+ "text-extensions": {
6887
+ "version": "1.9.0",
6888
+ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
6889
+ "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
6890
+ "dev": true
6891
+ },
6892
+ "through": {
6893
+ "version": "2.3.8",
6894
+ "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz",
6895
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
6896
+ "dev": true
6897
+ },
6898
+ "through2": {
6899
+ "version": "2.0.5",
6900
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
6901
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
6902
+ "dev": true,
6903
+ "requires": {
6904
+ "readable-stream": "~2.3.6",
6905
+ "xtend": "~4.0.1"
6906
+ }
6907
+ },
6908
+ "to-object-path": {
6909
+ "version": "0.3.0",
6910
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
6911
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
6912
+ "dev": true,
6913
+ "requires": {
6914
+ "kind-of": "^3.0.2"
6915
+ },
6916
+ "dependencies": {
6917
+ "kind-of": {
6918
+ "version": "3.2.2",
6919
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
6920
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
6921
+ "dev": true,
6922
+ "requires": {
6923
+ "is-buffer": "^1.1.5"
6924
+ }
6925
+ }
6926
+ }
6927
+ },
6928
+ "to-regex": {
6929
+ "version": "3.0.2",
6930
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
6931
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
6932
+ "dev": true,
6933
+ "requires": {
6934
+ "define-property": "^2.0.2",
6935
+ "extend-shallow": "^3.0.2",
6936
+ "regex-not": "^1.0.2",
6937
+ "safe-regex": "^1.1.0"
6938
+ }
6939
+ },
6940
+ "to-regex-range": {
6941
+ "version": "2.1.1",
6942
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
6943
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
6944
+ "dev": true,
6945
+ "requires": {
6946
+ "is-number": "^3.0.0",
6947
+ "repeat-string": "^1.6.1"
6948
+ }
6949
+ },
6950
+ "traverse": {
6951
+ "version": "0.6.6",
6952
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
6953
+ "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=",
6954
+ "dev": true
6955
+ },
6956
+ "trim-newlines": {
6957
+ "version": "1.0.0",
6958
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
6959
+ "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
6960
+ "dev": true
6961
+ },
6962
+ "trim-off-newlines": {
6963
+ "version": "1.0.1",
6964
+ "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz",
6965
+ "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=",
6966
+ "dev": true
6967
+ },
6968
+ "uglify-js": {
6969
+ "version": "3.4.9",
6970
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
6971
+ "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
6972
+ "dev": true,
6973
+ "optional": true,
6974
+ "requires": {
6975
+ "commander": "~2.17.1",
6976
+ "source-map": "~0.6.1"
6977
+ },
6978
+ "dependencies": {
6979
+ "source-map": {
6980
+ "version": "0.6.1",
6981
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6982
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
6983
+ "dev": true,
6984
+ "optional": true
6985
+ }
6986
+ }
6987
+ },
6988
+ "underscore.string": {
6989
+ "version": "3.3.5",
6990
+ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",
6991
+ "integrity": "sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg==",
6992
+ "dev": true,
6993
+ "requires": {
6994
+ "sprintf-js": "^1.0.3",
6995
+ "util-deprecate": "^1.0.2"
6996
+ }
6997
+ },
6998
+ "union-value": {
6999
+ "version": "1.0.0",
7000
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz",
7001
+ "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=",
7002
+ "dev": true,
7003
+ "requires": {
7004
+ "arr-union": "^3.1.0",
7005
+ "get-value": "^2.0.6",
7006
+ "is-extendable": "^0.1.1",
7007
+ "set-value": "^0.4.3"
7008
+ },
7009
+ "dependencies": {
7010
+ "extend-shallow": {
7011
+ "version": "2.0.1",
7012
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
7013
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
7014
+ "dev": true,
7015
+ "requires": {
7016
+ "is-extendable": "^0.1.0"
7017
+ }
7018
+ },
7019
+ "set-value": {
7020
+ "version": "0.4.3",
7021
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz",
7022
+ "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=",
7023
+ "dev": true,
7024
+ "requires": {
7025
+ "extend-shallow": "^2.0.1",
7026
+ "is-extendable": "^0.1.1",
7027
+ "is-plain-object": "^2.0.1",
7028
+ "to-object-path": "^0.3.0"
7029
+ }
7030
+ }
7031
+ }
7032
+ },
7033
+ "universal-user-agent": {
7034
+ "version": "2.0.2",
7035
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.0.2.tgz",
7036
+ "integrity": "sha512-nOwvHWLH3dBazyuzbECPA5uVFNd7AlgviXRHgR4yf48QqitIvpdncRrxMbZNMpPPEfgz30I9ubd1XmiJiqsTrg==",
7037
+ "dev": true,
7038
+ "requires": {
7039
+ "os-name": "^3.0.0"
7040
+ }
7041
+ },
7042
+ "universalify": {
7043
+ "version": "0.1.2",
7044
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
7045
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
7046
+ "dev": true
7047
+ },
7048
+ "unset-value": {
7049
+ "version": "1.0.0",
7050
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
7051
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
7052
+ "dev": true,
7053
+ "requires": {
7054
+ "has-value": "^0.3.1",
7055
+ "isobject": "^3.0.0"
7056
+ },
7057
+ "dependencies": {
7058
+ "has-value": {
7059
+ "version": "0.3.1",
7060
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
7061
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
7062
+ "dev": true,
7063
+ "requires": {
7064
+ "get-value": "^2.0.3",
7065
+ "has-values": "^0.1.4",
7066
+ "isobject": "^2.0.0"
7067
+ },
7068
+ "dependencies": {
7069
+ "isobject": {
7070
+ "version": "2.1.0",
7071
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
7072
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
7073
+ "dev": true,
7074
+ "requires": {
7075
+ "isarray": "1.0.0"
7076
+ }
7077
+ }
7078
+ }
7079
+ },
7080
+ "has-values": {
7081
+ "version": "0.1.4",
7082
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
7083
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
7084
+ "dev": true
7085
+ }
7086
+ }
7087
+ },
7088
+ "urix": {
7089
+ "version": "0.1.0",
7090
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
7091
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
7092
+ "dev": true
7093
+ },
7094
+ "url-join": {
7095
+ "version": "4.0.0",
7096
+ "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz",
7097
+ "integrity": "sha1-TTNA6AfTdzvamZH4MFrNzCpmXSo=",
7098
+ "dev": true
7099
+ },
7100
+ "url-template": {
7101
+ "version": "2.0.8",
7102
+ "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
7103
+ "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=",
7104
+ "dev": true
7105
+ },
7106
+ "use": {
7107
+ "version": "3.1.1",
7108
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
7109
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
7110
+ "dev": true
7111
+ },
7112
+ "util-deprecate": {
7113
+ "version": "1.0.2",
7114
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
7115
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
7116
+ "dev": true
7117
+ },
7118
+ "validate-npm-package-license": {
7119
+ "version": "3.0.4",
7120
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
7121
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
7122
+ "dev": true,
7123
+ "requires": {
7124
+ "spdx-correct": "^3.0.0",
7125
+ "spdx-expression-parse": "^3.0.0"
7126
+ }
7127
+ },
7128
+ "which": {
7129
+ "version": "1.3.1",
7130
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
7131
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
7132
+ "dev": true,
7133
+ "requires": {
7134
+ "isexe": "^2.0.0"
7135
+ }
7136
+ },
7137
+ "which-module": {
7138
+ "version": "2.0.0",
7139
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
7140
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
7141
+ "dev": true
7142
+ },
7143
+ "windows-release": {
7144
+ "version": "3.1.0",
7145
+ "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.1.0.tgz",
7146
+ "integrity": "sha512-hBb7m7acFgQPQc222uEQTmdcGLeBmQLNLFIh0rDk3CwFOBrfjefLzEfEfmpMq8Af/n/GnFf3eYf203FY1PmudA==",
7147
+ "dev": true,
7148
+ "requires": {
7149
+ "execa": "^0.10.0"
7150
+ },
7151
+ "dependencies": {
7152
+ "execa": {
7153
+ "version": "0.10.0",
7154
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
7155
+ "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
7156
+ "dev": true,
7157
+ "requires": {
7158
+ "cross-spawn": "^6.0.0",
7159
+ "get-stream": "^3.0.0",
7160
+ "is-stream": "^1.1.0",
7161
+ "npm-run-path": "^2.0.0",
7162
+ "p-finally": "^1.0.0",
7163
+ "signal-exit": "^3.0.0",
7164
+ "strip-eof": "^1.0.0"
7165
+ }
7166
+ },
7167
+ "get-stream": {
7168
+ "version": "3.0.0",
7169
+ "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
7170
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
7171
+ "dev": true
7172
+ }
7173
+ }
7174
+ },
7175
+ "wordwrap": {
7176
+ "version": "0.0.3",
7177
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
7178
+ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
7179
+ "dev": true
7180
+ },
7181
+ "wrap-ansi": {
7182
+ "version": "2.1.0",
7183
+ "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
7184
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
7185
+ "dev": true,
7186
+ "requires": {
7187
+ "string-width": "^1.0.1",
7188
+ "strip-ansi": "^3.0.1"
7189
+ },
7190
+ "dependencies": {
7191
+ "ansi-regex": {
7192
+ "version": "2.1.1",
7193
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
7194
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
7195
+ "dev": true
7196
+ },
7197
+ "is-fullwidth-code-point": {
7198
+ "version": "1.0.0",
7199
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
7200
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
7201
+ "dev": true,
7202
+ "requires": {
7203
+ "number-is-nan": "^1.0.0"
7204
+ }
7205
+ },
7206
+ "string-width": {
7207
+ "version": "1.0.2",
7208
+ "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
7209
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
7210
+ "dev": true,
7211
+ "requires": {
7212
+ "code-point-at": "^1.0.0",
7213
+ "is-fullwidth-code-point": "^1.0.0",
7214
+ "strip-ansi": "^3.0.0"
7215
+ }
7216
+ },
7217
+ "strip-ansi": {
7218
+ "version": "3.0.1",
7219
+ "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
7220
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
7221
+ "dev": true,
7222
+ "requires": {
7223
+ "ansi-regex": "^2.0.0"
7224
+ }
7225
+ }
7226
+ }
7227
+ },
7228
+ "wrappy": {
7229
+ "version": "1.0.2",
7230
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
7231
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
7232
+ "dev": true
7233
+ },
7234
+ "xtend": {
7235
+ "version": "4.0.1",
7236
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
7237
+ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
7238
+ "dev": true
7239
+ },
7240
+ "y18n": {
7241
+ "version": "4.0.0",
7242
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
7243
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
7244
+ "dev": true
7245
+ },
7246
+ "yargs": {
7247
+ "version": "12.0.5",
7248
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
7249
+ "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
7250
+ "dev": true,
7251
+ "requires": {
7252
+ "cliui": "^4.0.0",
7253
+ "decamelize": "^1.2.0",
7254
+ "find-up": "^3.0.0",
7255
+ "get-caller-file": "^1.0.1",
7256
+ "os-locale": "^3.0.0",
7257
+ "require-directory": "^2.1.1",
7258
+ "require-main-filename": "^1.0.1",
7259
+ "set-blocking": "^2.0.0",
7260
+ "string-width": "^2.0.0",
7261
+ "which-module": "^2.0.0",
7262
+ "y18n": "^3.2.1 || ^4.0.0",
7263
+ "yargs-parser": "^11.1.1"
7264
+ },
7265
+ "dependencies": {
7266
+ "find-up": {
7267
+ "version": "3.0.0",
7268
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
7269
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
7270
+ "dev": true,
7271
+ "requires": {
7272
+ "locate-path": "^3.0.0"
7273
+ }
7274
+ },
7275
+ "locate-path": {
7276
+ "version": "3.0.0",
7277
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
7278
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
7279
+ "dev": true,
7280
+ "requires": {
7281
+ "p-locate": "^3.0.0",
7282
+ "path-exists": "^3.0.0"
7283
+ }
7284
+ },
7285
+ "path-exists": {
7286
+ "version": "3.0.0",
7287
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
7288
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
7289
+ "dev": true
7290
+ }
7291
+ }
7292
+ },
7293
+ "yargs-parser": {
7294
+ "version": "11.1.1",
7295
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
7296
+ "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
7297
+ "dev": true,
7298
+ "requires": {
7299
+ "camelcase": "^5.0.0",
7300
+ "decamelize": "^1.2.0"
7301
+ },
7302
+ "dependencies": {
7303
+ "camelcase": {
7304
+ "version": "5.0.0",
7305
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
7306
+ "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
7307
+ "dev": true
7308
+ }
7309
+ }
7310
+ }
7311
+ }
7312
+ }
vendor/codeinwp/themeisle-sdk/package.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "themeisle-sdk",
3
+ "version": "3.0.4",
4
+ "scripts": {
5
+ "semantic-release": "semantic-release --debug"
6
+ },
7
+ "author": "Themeisle",
8
+ "devDependencies": {
9
+ "@semantic-release/changelog": "^3.0.1",
10
+ "@semantic-release/exec": "^3.3.1",
11
+ "@semantic-release/git": "^7.0.6",
12
+ "grunt-version": "^1.3.0",
13
+ "semantic-release": "^15.13.1"
14
+ }
15
+ }
vendor/codeinwp/themeisle-sdk/phpcs.xml ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <ruleset name="Themeisle">
3
+ <description>Themeisle rules for PHP_CodeSnifferr</description>
4
+
5
+ <file>./</file>
6
+
7
+ <arg value="ps"/>
8
+ <arg name="extensions" value="php"/>
9
+
10
+ <exclude-pattern>./vendor</exclude-pattern>
11
+ <exclude-pattern>./old</exclude-pattern>
12
+ <exclude-pattern>./tests/sample_products</exclude-pattern>
13
+
14
+
15
+ <rule ref="WordPress-Core">
16
+
17
+ <exclude name="WordPress.Files.FileName.NotHyphenatedLowercase"/>
18
+ <exclude name="WordPress.Files.FileName.InvalidClassFileName"/>
19
+ <exclude name="Squiz.PHP.DisallowMultipleAssignments.Found"/>
20
+ </rule>
21
+ <rule ref="WordPress-Docs"/>
22
+ <rule ref="WordPress.WP.I18n"/>
23
+ <rule ref="Squiz.Commenting.FunctionComment.Missing">
24
+ <exclude-pattern>tests/*</exclude-pattern>
25
+ </rule>
26
+ <rule ref="Squiz.Commenting.FileComment.Missing">
27
+ <exclude-pattern>tests/*</exclude-pattern>
28
+ </rule>
29
+ <rule ref="Squiz.Commenting.ClassComment.Missing">
30
+ <exclude-pattern>tests/*</exclude-pattern>
31
+ </rule>
32
+ <rule ref="Squiz.Commenting.ClassComment.SpacingAfter">
33
+ <exclude-pattern>tests/*</exclude-pattern>
34
+ </rule>
35
+ <rule ref="Squiz.Commenting.FunctionComment.MissingParamTag">
36
+ <exclude-pattern>tests/*</exclude-pattern>
37
+ </rule>
38
+ <rule ref="Generic.Commenting.DocComment.MissingShort">
39
+ <exclude-pattern>tests/*</exclude-pattern>
40
+ </rule>
41
+ <rule ref="Squiz.Commenting.VariableComment.Missing">
42
+ <exclude-pattern>tests/*</exclude-pattern>
43
+ </rule>
44
+ <rule ref="Squiz.Commenting.FunctionCommentThrowTag.Missing">
45
+ <exclude-pattern>tests/*</exclude-pattern>
46
+ </rule>
47
+ <rule ref="WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid">
48
+ <exclude-pattern>tests/*</exclude-pattern>
49
+ </rule>
50
+ </ruleset>
vendor/codeinwp/themeisle-sdk/phpunit.xml ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <phpunit
2
+ bootstrap="tests/bootstrap.php"
3
+ backupGlobals="false"
4
+ colors="true"
5
+ convertErrorsToExceptions="true"
6
+ convertNoticesToExceptions="true"
7
+ convertWarningsToExceptions="true"
8
+ >
9
+ <testsuites name="General Unit tests ( Requires PHP 5.4) ">
10
+ <testsuite>
11
+ <directory phpVersion="5.4.0" phpVersionOperator=">=" suffix="-test.php">./tests/</directory>
12
+ <exclude>./tests/old/</exclude>
13
+ </testsuite>
14
+ </testsuites>
15
+ <testsuites name="Bail lower php versions( For PHP lower than 5.4) ">
16
+ <testsuite>
17
+ <directory phpVersion="5.4.0" phpVersionOperator="lt" suffix="-test.php">./tests/old/</directory>
18
+ </testsuite>
19
+ </testsuites>
20
+ </phpunit>
vendor/codeinwp/themeisle-sdk/src/Modules/Licenser.php CHANGED
@@ -411,6 +411,9 @@ class Licenser extends Abstract_Module {
411
  $license_data = new \stdClass();
412
  $license_data->license = ( 'valid' != $status ) ? 'valid' : 'invalid';
413
  }
 
 
 
414
  }
415
  if ( ! isset( $license_data->key ) ) {
416
  $license_data->key = $license;
411
  $license_data = new \stdClass();
412
  $license_data->license = ( 'valid' != $status ) ? 'valid' : 'invalid';
413
  }
414
+ if ( ! isset( $license_data->license ) ) {
415
+ $license_data->license = 'invalid';
416
+ }
417
  }
418
  if ( ! isset( $license_data->key ) ) {
419
  $license_data->key = $license;
vendor/codeinwp/themeisle-sdk/src/Modules/Notification.php CHANGED
@@ -82,11 +82,11 @@ class Notification extends Abstract_Module {
82
  return;
83
  }
84
  $notification_html = self::get_notification_html( $notification_details );
85
- do_action( $current_notification['id'] . '_before_render' );
86
 
87
  echo $notification_html;
88
 
89
- do_action( $current_notification['id'] . '_after_render' );
90
  self::render_snippets();
91
  }
92
 
@@ -402,6 +402,26 @@ class Notification extends Abstract_Module {
402
  return true;
403
  }
404
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
405
  /**
406
  * Load the module logic.
407
  *
@@ -429,6 +449,7 @@ class Notification extends Abstract_Module {
429
  self::$notifications = $notifications;
430
  add_action( 'admin_notices', array( __CLASS__, 'show_notification' ) );
431
  add_action( 'wp_ajax_themeisle_sdk_dismiss_notice', array( __CLASS__, 'dismiss' ) );
 
432
 
433
  return $this;
434
  }
82
  return;
83
  }
84
  $notification_html = self::get_notification_html( $notification_details );
85
+ do_action( $notification_details['id'] . '_before_render' );
86
 
87
  echo $notification_html;
88
 
89
+ do_action( $notification_details['id'] . '_after_render' );
90
  self::render_snippets();
91
  }
92
 
402
  return true;
403
  }
404
 
405
+ /**
406
+ * Setup notifications queue.
407
+ */
408
+ public static function setup_notifications() {
409
+ $notifications = apply_filters( 'themeisle_sdk_registered_notifications', [] );
410
+ $notifications = array_filter(
411
+ $notifications,
412
+ function ( $value ) {
413
+ if ( ! isset( $value['id'] ) ) {
414
+ return false;
415
+ }
416
+ if ( get_option( $value['id'], '' ) !== '' ) {
417
+ return false;
418
+ }
419
+
420
+ return apply_filters( $value['id'] . '_should_show', true );
421
+ }
422
+ );
423
+ self::$notifications = $notifications;
424
+ }
425
  /**
426
  * Load the module logic.
427
  *
449
  self::$notifications = $notifications;
450
  add_action( 'admin_notices', array( __CLASS__, 'show_notification' ) );
451
  add_action( 'wp_ajax_themeisle_sdk_dismiss_notice', array( __CLASS__, 'dismiss' ) );
452
+ add_action( 'admin_head', array( __CLASS__, 'setup_notifications' ) );
453
 
454
  return $this;
455
  }
vendor/codeinwp/themeisle-sdk/src/Modules/Rollback.php CHANGED
@@ -75,7 +75,9 @@ class Rollback extends Abstract_Module {
75
  $rollback = array();
76
  $versions = $this->get_api_versions();
77
  $versions = apply_filters( $this->product->get_key() . '_rollbacks', $versions );
78
-
 
 
79
  if ( $versions ) {
80
  usort( $versions, array( $this, 'sort_rollback_array' ) );
81
  foreach ( $versions as $version ) {
@@ -177,6 +179,9 @@ class Rollback extends Abstract_Module {
177
  */
178
  public function add_rollback_link( $links ) {
179
  $version = $this->get_rollback();
 
 
 
180
  $links[] = '<a href="' . wp_nonce_url( admin_url( 'admin-post.php?action=' . $this->product->get_key() . '_rollback' ), $this->product->get_key() . '_rollback' ) . '">' . sprintf( apply_filters( $this->product->get_key() . '_rollback_label', 'Rollback to v%s' ), $version['version'] ) . '</a>';
181
 
182
  return $links;
75
  $rollback = array();
76
  $versions = $this->get_api_versions();
77
  $versions = apply_filters( $this->product->get_key() . '_rollbacks', $versions );
78
+ if ( empty( $versions ) ) {
79
+ return $rollback;
80
+ }
81
  if ( $versions ) {
82
  usort( $versions, array( $this, 'sort_rollback_array' ) );
83
  foreach ( $versions as $version ) {
179
  */
180
  public function add_rollback_link( $links ) {
181
  $version = $this->get_rollback();
182
+ if ( empty( $version ) ) {
183
+ return $links;
184
+ }
185
  $links[] = '<a href="' . wp_nonce_url( admin_url( 'admin-post.php?action=' . $this->product->get_key() . '_rollback' ), $this->product->get_key() . '_rollback' ) . '">' . sprintf( apply_filters( $this->product->get_key() . '_rollback_label', 'Rollback to v%s' ), $version['version'] ) . '</a>';
186
 
187
  return $links;
vendor/codeinwp/themeisle-sdk/src/Modules/Uninstall_feedback.php CHANGED
@@ -203,20 +203,19 @@ class Uninstall_Feedback extends Abstract_Module {
203
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #<?php echo $key; ?>-info-disclosure-content {
204
  display: none;
205
  }
206
-
207
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container.<?php echo $key; ?>-container-disc-open #<?php echo $key; ?>-info-disclosure-content {
208
  display: block;
209
- margin-top: 80px;
 
210
  }
211
 
212
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container.<?php echo $key; ?>-container-disc-open #<?php echo $key; ?>-info-disclosure {
213
- top: -150px;
214
  }
215
 
216
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container.<?php echo $key; ?>-container-disc-open {
217
- height: 570px !important;
218
  }
219
-
220
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #<?php echo $key; ?>-info-disclosure {
221
  position: absolute;
222
  top: -50px;
203
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #<?php echo $key; ?>-info-disclosure-content {
204
  display: none;
205
  }
 
206
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container.<?php echo $key; ?>-container-disc-open #<?php echo $key; ?>-info-disclosure-content {
207
  display: block;
208
+ position:absolute;
209
+ bottom: 100px;
210
  }
211
 
212
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container.<?php echo $key; ?>-container-disc-open #<?php echo $key; ?>-info-disclosure {
213
+ top: -130px;
214
  }
215
 
216
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container.<?php echo $key; ?>-container-disc-open {
217
+ height: 590px !important;
218
  }
 
219
  body.<?php echo $suffix; ?> .<?php echo $key; ?>-container #<?php echo $key; ?>-info-disclosure {
220
  position: absolute;
221
  top: -50px;
vendor/codeinwp/themeisle-sdk/tests/bootstrap.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * PHPUnit bootstrap file
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ // Determine the tests directory (from a WP dev checkout).
9
+ // Try the WP_TESTS_DIR environment variable first.
10
+ $_tests_dir = getenv( 'WP_TESTS_DIR' );
11
+ // See if we're installed inside an existing WP dev instance.
12
+ if ( ! $_tests_dir ) {
13
+ $_try_tests_dir = dirname( __FILE__ ) . '/../../../../../tests/phpunit';
14
+ if ( file_exists( $_try_tests_dir . '/includes/functions.php' ) ) {
15
+ $_tests_dir = $_try_tests_dir;
16
+ }
17
+ }
18
+ // Fallback.
19
+ if ( ! $_tests_dir ) {
20
+ $_tests_dir = '/tmp/wordpress-tests-lib';
21
+ }
22
+ // Give access to tests_add_filter() function.
23
+ require_once $_tests_dir . '/includes/functions.php';
24
+ /**
25
+ * Manually load the plugin being tested.
26
+ */
27
+ function _manually_load_plugin() {
28
+ require dirname( dirname( __FILE__ ) ) . '/load.php';
29
+ }
30
+
31
+ tests_add_filter( 'muplugins_loaded', '_manually_load_plugin' );
32
+ // Start up the WP testing environment.
33
+ require $_tests_dir . '/includes/bootstrap.php';
vendor/codeinwp/themeisle-sdk/tests/dashboard-widget-test.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Dashboard widget related tests.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test Dashboard widget class.
10
+ */
11
+ class Dashboard_Widget_Test extends WP_UnitTestCase {
12
+
13
+ /**
14
+ * Test product from partner loading.
15
+ */
16
+ public function test_product_partner_module_loading() {
17
+
18
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
19
+
20
+ \ThemeisleSDK\Loader::add_product( $file );
21
+
22
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
23
+ $this->assertArrayHasKey( 'sample_theme_external', $modules );
24
+ $modules['sample_theme_external'] = array_filter(
25
+ $modules['sample_theme_external'],
26
+ function ( $value ) {
27
+ return ( get_class( $value ) === 'ThemeisleSDK\\Modules\\Dashboard_widget' );
28
+ }
29
+ );
30
+ $this->assertEquals( count( $modules['sample_theme_external'] ), 0 );
31
+
32
+ }
33
+
34
+ /**
35
+ * Test if dashboard widget is disabled on partners.
36
+ */
37
+ public function test_dashboard_widget_can_load_partner() {
38
+
39
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
40
+ $product = new \ThemeisleSDK\Product( $file );
41
+
42
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Dashboard_Widget() )->can_load( $product ) );
43
+
44
+ }
45
+
46
+ /**
47
+ * Test if dashboard widget is disabled on partners.
48
+ */
49
+ public function test_dashboard_widget_can_load_regular() {
50
+
51
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
52
+ $product = new \ThemeisleSDK\Product( $file );
53
+
54
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Dashboard_Widget() )->can_load( $product ) );
55
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Dashboard_Widget', ( new \ThemeisleSDK\Modules\Dashboard_Widget() )->load( $product ) );
56
+
57
+ }
58
+
59
+ }
vendor/codeinwp/themeisle-sdk/tests/endpoint-test.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Endpoint feature test.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test endpoint feature.
10
+ */
11
+ class Endpoint_Test extends WP_UnitTestCase {
12
+
13
+
14
+ /**
15
+ * Test product from partner loading.
16
+ */
17
+ public function test_product_partner_module_loading() {
18
+
19
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
20
+
21
+ \ThemeisleSDK\Loader::add_product( $file );
22
+
23
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
24
+
25
+ $this->assertArrayHasKey( 'sample_theme_external', $modules );
26
+ $modules['sample_theme_external'] = array_filter(
27
+ $modules['sample_theme_external'],
28
+ function ( $value ) {
29
+ return ( get_class( $value ) === 'ThemeisleSDK\\Modules\\Endpoint' );
30
+ }
31
+ );
32
+ $this->assertCount( 1, $modules['sample_theme_external'] );
33
+
34
+ }
35
+
36
+ /**
37
+ * Test product from partner loading.
38
+ */
39
+ public function test_endpoint_product_loading() {
40
+
41
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
42
+
43
+ \ThemeisleSDK\Loader::add_product( $file );
44
+
45
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
46
+
47
+ $this->assertArrayHasKey( 'sample_theme', $modules );
48
+ $this->assertGreaterThan( 0, count( $modules['sample_theme'] ) );
49
+
50
+ }
51
+
52
+ /**
53
+ * Test if endpoint is disabled on partners.
54
+ */
55
+ public function test_endpoint_can_load_partner() {
56
+
57
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
58
+ $product = new \ThemeisleSDK\Product( $file );
59
+
60
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Endpoint() )->can_load( $product ) );
61
+
62
+ }
63
+
64
+
65
+ /**
66
+ * Test if endpoint should load for admins.
67
+ */
68
+ public function test_endpoint_can_load() {
69
+
70
+ $file = dirname( __FILE__ ) . '/sample_products/sample_plugin/plugin_file.php';
71
+ $product = new \ThemeisleSDK\Product( $file );
72
+
73
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Endpoint() )->can_load( $product ) );
74
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Endpoint', ( new \ThemeisleSDK\Modules\Endpoint() )->load( $product ) );
75
+
76
+ }
77
+
78
+
79
+ }
vendor/codeinwp/themeisle-sdk/tests/licenser-test.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Licenser feature test.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test licenser feature.
10
+ */
11
+ class Licenser_Test extends WP_UnitTestCase {
12
+
13
+
14
+ /**
15
+ * Test product from partner loading.
16
+ */
17
+ public function test_product_partner_module_loading() {
18
+
19
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
20
+
21
+ \ThemeisleSDK\Loader::add_product( $file );
22
+
23
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
24
+
25
+ $this->assertArrayHasKey( 'sample_theme_external', $modules );
26
+ $modules['sample_theme_external'] = array_filter(
27
+ $modules['sample_theme_external'],
28
+ function ( $value ) {
29
+ return ( get_class( $value ) === 'ThemeisleSDK\\Modules\\Licenser' );
30
+ }
31
+ );
32
+ $this->assertCount( 1, $modules['sample_theme_external'] );
33
+
34
+ }
35
+
36
+ /**
37
+ * Test product from partner loading.
38
+ */
39
+ public function test_licenser_product_loading() {
40
+
41
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
42
+
43
+ \ThemeisleSDK\Loader::add_product( $file );
44
+
45
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
46
+
47
+ $this->assertArrayHasKey( 'sample_theme', $modules );
48
+ $this->assertGreaterThan( 0, count( $modules['sample_theme'] ) );
49
+
50
+ }
51
+
52
+ /**
53
+ * Test if licenser is disabled on partners.
54
+ */
55
+ public function test_licenser_can_load_partner() {
56
+
57
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
58
+ $product = new \ThemeisleSDK\Product( $file );
59
+
60
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Licenser() )->can_load( $product ) );
61
+
62
+ }
63
+
64
+
65
+ /**
66
+ * Test if licenser should load for admins.
67
+ */
68
+ public function test_licenser_can_load() {
69
+
70
+ $file = dirname( __FILE__ ) . '/sample_products/sample_plugin/plugin_file.php';
71
+ $product = new \ThemeisleSDK\Product( $file );
72
+
73
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Licenser() )->can_load( $product ) );
74
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Licenser', ( new \ThemeisleSDK\Modules\Licenser() )->load( $product ) );
75
+
76
+ }
77
+
78
+
79
+ }
vendor/codeinwp/themeisle-sdk/tests/loader-test.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loader manager test.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test loader manager.
10
+ *
11
+ * @runTestsInSeparateProcesses
12
+ */
13
+ class Loader_Test extends WP_UnitTestCase {
14
+
15
+ /**
16
+ * Test loading of invalid file.
17
+ */
18
+ public function test_products_invalid_subscribe() {
19
+ $file = dirname( __FILE__ ) . '/invalid/sample_products/sample_plugin/plugin-file.php';
20
+ \ThemeisleSDK\Loader::add_product( $file );
21
+ $this->assertEmpty( ThemeisleSDK\Loader::get_products() );
22
+ }
23
+
24
+ /**
25
+ * Test loading of plugin file.
26
+ */
27
+ public function test_products_valid_subscribe_plugin() {
28
+ $file = dirname( __FILE__ ) . '/sample_products/sample_plugin/plugin_file.php';
29
+
30
+ \ThemeisleSDK\Loader::add_product( $file );
31
+
32
+ $this->assertEquals( count( ThemeisleSDK\Loader::get_products() ), 1 );
33
+ }
34
+
35
+ /**
36
+ * Test loading of theme file.
37
+ */
38
+ public function test_products_valid_subscribe_theme() {
39
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
40
+
41
+ \ThemeisleSDK\Loader::add_product( $file );
42
+
43
+ $this->assertEquals( count( ThemeisleSDK\Loader::get_products() ), 1 );
44
+ }
45
+
46
+
47
+ }
vendor/codeinwp/themeisle-sdk/tests/loading-test.php ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * `loading` test.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test sdk loading.
10
+ *
11
+ * @runTestsInSeparateProcesses
12
+ */
13
+ class Sdk_Loading_Test extends WP_UnitTestCase {
14
+ /**
15
+ * Test if the SDK is loading properly and version is exported.
16
+ */
17
+ public function test_version_exists() {
18
+ global $themeisle_sdk_max_version;
19
+ $this->assertTrue( isset( $themeisle_sdk_max_version ) );
20
+ $this->assertTrue( version_compare( '0.0.1', $themeisle_sdk_max_version, '<' ) );
21
+ }
22
+
23
+ /**
24
+ * Test that classes are properly loaded.
25
+ */
26
+ public function test_class_loading() {
27
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Loader' ) );
28
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Product' ) );
29
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Modules\\Dashboard_Widget' ) );
30
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Modules\\Rollback' ) );
31
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Modules\\Uninstall_Feedback' ) );
32
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Modules\\Licenser' ) );
33
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Modules\\Endpoint' ) );
34
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Modules\\Notification' ) );
35
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Modules\\Logger' ) );
36
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Modules\\Translate' ) );
37
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Modules\\Review' ) );
38
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Common\\Abstract_Module' ) );
39
+ $this->assertTrue( class_exists( 'ThemeisleSDK\\Common\\Module_factory' ) );
40
+ }
41
+
42
+ /**
43
+ * Test the loaded products.
44
+ */
45
+ public function test_loaded_defaults() {
46
+ $this->assertEquals( count( \ThemeisleSDK\Loader::get_products() ), 0 );
47
+ $this->assertGreaterThan( 0, count( \ThemeisleSDK\Loader::get_modules() ) );
48
+
49
+ }
50
+
51
+
52
+ }
vendor/codeinwp/themeisle-sdk/tests/logger-test.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Logger feature test.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test logger feature.
10
+ */
11
+ class Logger_Test extends WP_UnitTestCase {
12
+
13
+
14
+ public function test_product_partner_module_loading() {
15
+
16
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
17
+
18
+ \ThemeisleSDK\Loader::add_product( $file );
19
+
20
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
21
+
22
+ $this->assertArrayHasKey( 'sample_theme_external', $modules );
23
+ $modules['sample_theme_external'] = array_filter(
24
+ $modules['sample_theme_external'],
25
+ function ( $value ) {
26
+ return ( get_class( $value ) === 'ThemeisleSDK\\Modules\\Logger' );
27
+ }
28
+ );
29
+ $this->assertEquals( count( $modules['sample_theme_external'] ), 1 );
30
+
31
+ }
32
+
33
+ public function test_product_loading() {
34
+
35
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
36
+
37
+ \ThemeisleSDK\Loader::add_product( $file );
38
+
39
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
40
+
41
+ $this->assertArrayHasKey( 'sample_theme', $modules );
42
+ $this->assertGreaterThan( 0, count( $modules['sample_theme'] ) );
43
+
44
+ }
45
+
46
+ public function test_can_load_partner() {
47
+
48
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
49
+ $product = new \ThemeisleSDK\Product( $file );
50
+
51
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Logger() )->can_load( $product ) );
52
+
53
+ }
54
+
55
+ public function test_load_normal() {
56
+
57
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
58
+
59
+ $product = new \ThemeisleSDK\Product( $file );
60
+
61
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Logger() )->can_load( $product ) );
62
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Logger', ( new \ThemeisleSDK\Modules\Logger() )->load( $product ) );
63
+
64
+ }
65
+
66
+
67
+ }
vendor/codeinwp/themeisle-sdk/tests/notification-test.php ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Notification feature test.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test notification feature.
10
+ */
11
+ class Notification_Test extends WP_UnitTestCase {
12
+
13
+ protected static $editor_id;
14
+ protected static $admin_id;
15
+
16
+ public static function wpSetUpBeforeClass( $factory ) {
17
+ self::$editor_id = $factory->user->create(
18
+ array(
19
+ 'role' => 'editor',
20
+ )
21
+ );
22
+ self::$admin_id = $factory->user->create(
23
+ array(
24
+ 'role' => 'administrator',
25
+ )
26
+ );
27
+
28
+ wp_set_current_user( self::$editor_id );
29
+ }
30
+
31
+ public static function wpTearDownAfterClass() {
32
+ self::delete_user( self::$editor_id );
33
+ self::delete_user( self::$admin_id );
34
+ }
35
+
36
+ public function test_product_partner_module_loading() {
37
+
38
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
39
+
40
+ \ThemeisleSDK\Loader::add_product( $file );
41
+
42
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
43
+
44
+ $this->assertArrayHasKey( 'sample_theme_external', $modules );
45
+ $modules['sample_theme_external'] = array_filter(
46
+ $modules['sample_theme_external'],
47
+ function ( $value ) {
48
+ return ( get_class( $value ) === 'ThemeisleSDK\\Modules\\Notification' );
49
+ }
50
+ );
51
+ $this->assertEquals( count( $modules['sample_theme_external'] ), 0 );
52
+
53
+ }
54
+
55
+ public function test_notification_product_loading() {
56
+
57
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
58
+
59
+ \ThemeisleSDK\Loader::add_product( $file );
60
+
61
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
62
+
63
+ $this->assertArrayHasKey( 'sample_theme', $modules );
64
+ $this->assertGreaterThan( 0, count( $modules['sample_theme'] ) );
65
+
66
+ }
67
+
68
+ public function test_notification_can_load_partner() {
69
+
70
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
71
+ $product = new \ThemeisleSDK\Product( $file );
72
+
73
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Notification() )->can_load( $product ) );
74
+
75
+ }
76
+
77
+ public function test_notification_load_non_admins() {
78
+ wp_set_current_user( self::$editor_id );
79
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
80
+ $product = new \ThemeisleSDK\Product( $file );
81
+
82
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Notification() )->can_load( $product ) );
83
+
84
+ }
85
+
86
+ public function test_notification_not_load_for_new() {
87
+ wp_set_current_user( self::$admin_id );
88
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
89
+
90
+ $product = new \ThemeisleSDK\Product( $file );
91
+
92
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Notification() )->can_load( $product ) );
93
+
94
+ }
95
+
96
+ public function test_notification_load_old() {
97
+ wp_set_current_user( self::$admin_id );
98
+
99
+ update_option( 'sample_theme_install', ( time() - MONTH_IN_SECONDS ) );
100
+
101
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
102
+
103
+ $product = new \ThemeisleSDK\Product( $file );
104
+
105
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Notification() )->can_load( $product ) );
106
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Notification', ( new \ThemeisleSDK\Modules\Notification() )->load( $product ) );
107
+
108
+ }
109
+
110
+
111
+ }
vendor/codeinwp/themeisle-sdk/tests/old/loading-test.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Loading test for lower PHP versions.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test sdk loading.
10
+ */
11
+ class Sdk_Loading_Old_Test extends WP_UnitTestCase {
12
+ /**
13
+ * Test if the SDK is not loading on lower php versions.
14
+ */
15
+ public function test_sdk_not_loaded() {
16
+ $this->assertFalse( class_exists( 'ThemeisleSDK\\Loader' ) );
17
+ }
18
+
19
+ }
vendor/codeinwp/themeisle-sdk/tests/product-test.php ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Product data tests.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test product class.
10
+ */
11
+ class Product_Test extends WP_UnitTestCase {
12
+ /**
13
+ * Test product from plugin
14
+ */
15
+ public function test_product_from_plugin() {
16
+
17
+ $file = dirname( __FILE__ ) . '/sample_products/sample_plugin/plugin_file.php';
18
+
19
+ $product = new \ThemeisleSDK\Product( $file );
20
+
21
+ $this->assertEquals( $product->get_type(), 'plugin' );
22
+ $this->assertEquals( $product->get_slug(), 'sample_plugin' );
23
+ $this->assertEquals( $product->get_store_name(), 'ThemeIsle' );
24
+ $this->assertEquals( $product->get_version(), '1.1.1' );
25
+ $this->assertGreaterThanOrEqual( $product->get_install_time(), time() );
26
+ $this->assertEquals( $product->get_store_url(), 'https://themeisle.com' );
27
+ $this->assertFalse( $product->requires_license() );
28
+ $this->assertFalse( $product->is_wordpress_available() );
29
+ }
30
+
31
+ /**
32
+ * Test product from theme.
33
+ */
34
+ public function test_product_from_theme() {
35
+
36
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
37
+
38
+ $product = new \ThemeisleSDK\Product( $file );
39
+
40
+ $this->assertEquals( $product->get_type(), 'theme' );
41
+ $this->assertEquals( $product->get_slug(), 'sample_theme' );
42
+ $this->assertEquals( $product->get_store_name(), 'ThemeIsle' );
43
+ $this->assertEquals( $product->get_version(), '2.0.18' );
44
+ $this->assertGreaterThanOrEqual( $product->get_install_time(), time() );
45
+ $this->assertEquals( $product->get_store_url(), 'https://themeisle.com' );
46
+ $this->assertTrue( $product->requires_license() );
47
+ $this->assertTrue( $product->is_wordpress_available() );
48
+ }
49
+ }
vendor/codeinwp/themeisle-sdk/tests/review-test.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Review feature test.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test review feature.
10
+ */
11
+ class Review_Test extends WP_UnitTestCase {
12
+
13
+
14
+ public function test_product_partner_module_loading() {
15
+
16
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
17
+
18
+ \ThemeisleSDK\Loader::add_product( $file );
19
+
20
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
21
+
22
+ $this->assertArrayHasKey( 'sample_theme_external', $modules );
23
+ $modules['sample_theme_external'] = array_filter(
24
+ $modules['sample_theme_external'],
25
+ function ( $value ) {
26
+ return ( get_class( $value ) === 'ThemeisleSDK\\Modules\\Review' );
27
+ }
28
+ );
29
+ $this->assertEquals( count( $modules['sample_theme_external'] ), 0 );
30
+
31
+ }
32
+
33
+ public function test_product_loading() {
34
+
35
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
36
+
37
+ \ThemeisleSDK\Loader::add_product( $file );
38
+
39
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
40
+
41
+ $this->assertArrayHasKey( 'sample_theme', $modules );
42
+ $this->assertGreaterThan( 0, count( $modules['sample_theme'] ) );
43
+
44
+ }
45
+
46
+ public function test_can_load_partner() {
47
+
48
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
49
+ $product = new \ThemeisleSDK\Product( $file );
50
+
51
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Review() )->can_load( $product ) );
52
+
53
+ }
54
+
55
+ public function test_load_normal() {
56
+
57
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
58
+
59
+ $product = new \ThemeisleSDK\Product( $file );
60
+
61
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Review() )->can_load( $product ) );
62
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Review', ( new \ThemeisleSDK\Modules\Review() )->load( $product ) );
63
+
64
+ }
65
+
66
+
67
+ }
vendor/codeinwp/themeisle-sdk/tests/rollback-test.php ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Rollback feature test.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test Rollback feature.
10
+ */
11
+ class Rollback_Test extends WP_UnitTestCase {
12
+
13
+ protected static $editor_id;
14
+ protected static $admin_id;
15
+
16
+ public static function wpSetUpBeforeClass( $factory ) {
17
+ self::$editor_id = $factory->user->create(
18
+ array(
19
+ 'role' => 'editor',
20
+ )
21
+ );
22
+ self::$admin_id = $factory->user->create(
23
+ array(
24
+ 'role' => 'administrator',
25
+ )
26
+ );
27
+
28
+ wp_set_current_user( self::$editor_id );
29
+ }
30
+
31
+ public static function wpTearDownAfterClass() {
32
+ self::delete_user( self::$editor_id );
33
+ self::delete_user( self::$admin_id );
34
+ }
35
+
36
+ /**
37
+ * Test product from partner loading.
38
+ */
39
+ public function test_product_partner_module_loading() {
40
+
41
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
42
+
43
+ \ThemeisleSDK\Loader::add_product( $file );
44
+
45
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
46
+
47
+ $this->assertArrayHasKey( 'sample_theme_external', $modules );
48
+ $modules['sample_theme_external'] = array_filter(
49
+ $modules['sample_theme_external'],
50
+ function ( $value ) {
51
+ return ( get_class( $value ) === 'ThemeisleSDK\\Modules\\Rollback' );
52
+ }
53
+ );
54
+ $this->assertEquals( count( $modules['sample_theme_external'] ), 0 );
55
+
56
+ }
57
+
58
+ /**
59
+ * Test product from partner loading.
60
+ */
61
+ public function test_rollback_product_loading() {
62
+
63
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
64
+
65
+ \ThemeisleSDK\Loader::add_product( $file );
66
+
67
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
68
+
69
+ $this->assertArrayHasKey( 'sample_theme', $modules );
70
+ $this->assertGreaterThan( 0, count( $modules['sample_theme'] ) );
71
+
72
+ }
73
+
74
+ /**
75
+ * Test if rollback is disabled on partners.
76
+ */
77
+ public function test_rollback_can_load_partner() {
78
+
79
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
80
+ $product = new \ThemeisleSDK\Product( $file );
81
+
82
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Rollback() )->can_load( $product ) );
83
+
84
+ }
85
+
86
+ /**
87
+ * Test if rollback should not load for non admins.
88
+ */
89
+ public function test_rollback_not_load_non_admins() {
90
+
91
+ wp_set_current_user( self::$editor_id );
92
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
93
+ $product = new \ThemeisleSDK\Product( $file );
94
+
95
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Rollback() )->can_load( $product ) );
96
+
97
+ }
98
+
99
+ /**
100
+ * Test if rollback should load for admins.
101
+ */
102
+ public function test_rollback_not_load_admins() {
103
+
104
+ wp_set_current_user( self::$admin_id );
105
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
106
+ $product = new \ThemeisleSDK\Product( $file );
107
+
108
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Rollback() )->can_load( $product ) );
109
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Rollback', ( new \ThemeisleSDK\Modules\Rollback() )->load( $product ) );
110
+
111
+ }
112
+
113
+
114
+ }
vendor/codeinwp/themeisle-sdk/tests/sample_products/sample_plugin/plugin_file.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Plugin Name: Sample plugin.
4
+ * Description: Sample description
5
+ * Version: 1.1.1
6
+ * Author: ThemeIsle
7
+ * Author URI: https://themeisle.com
8
+ * License: GPL-2.0+
9
+ * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
10
+ * Text Domain: sample-plugin
11
+ * WordPress Available: no
12
+ * Requires License: no
13
+ */
vendor/codeinwp/themeisle-sdk/tests/sample_products/sample_theme/style.css ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Theme Name: Test theme
3
+ Author: ThemeIsle
4
+ Author URI: https://themeisle.com
5
+ Version: 2.0.18
6
+ License: GNU General Public License v2 or later
7
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html s
8
+ WordPress Available: yes
9
+ Requires License: yes
10
+ */
vendor/codeinwp/themeisle-sdk/tests/sample_products/sample_theme_external/style.css ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Theme Name: Test theme
3
+ Author: ThemeIsle
4
+ Author URI: https://prothemedesign.com
5
+ Version: 2.0.18
6
+ License: GNU General Public License v2 or later
7
+ License URI: http://www.gnu.org/licenses/gpl-2.0.html s
8
+ WordPress Available: no
9
+ Requires License: yes
10
+ */
vendor/codeinwp/themeisle-sdk/tests/translate-test.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Translate feature test.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test translate feature.
10
+ */
11
+ class Translate_Test extends WP_UnitTestCase {
12
+
13
+
14
+ public function test_product_partner_module_loading() {
15
+
16
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
17
+
18
+ \ThemeisleSDK\Loader::add_product( $file );
19
+
20
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
21
+
22
+ $this->assertArrayHasKey( 'sample_theme_external', $modules );
23
+ $modules['sample_theme_external'] = array_filter(
24
+ $modules['sample_theme_external'],
25
+ function ( $value ) {
26
+ return ( get_class( $value ) === 'ThemeisleSDK\\Modules\\Translate' );
27
+ }
28
+ );
29
+ $this->assertEquals( count( $modules['sample_theme_external'] ), 0 );
30
+
31
+ }
32
+
33
+ public function test_product_loading() {
34
+
35
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
36
+
37
+ \ThemeisleSDK\Loader::add_product( $file );
38
+
39
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
40
+
41
+ $this->assertArrayHasKey( 'sample_theme', $modules );
42
+ $this->assertGreaterThan( 0, count( $modules['sample_theme'] ) );
43
+
44
+ }
45
+
46
+ public function test_can_load_partner() {
47
+
48
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
49
+ $product = new \ThemeisleSDK\Product( $file );
50
+
51
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Translate() )->can_load( $product ) );
52
+
53
+ }
54
+
55
+ public function test_load_normal_english() {
56
+
57
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
58
+
59
+ $product = new \ThemeisleSDK\Product( $file );
60
+
61
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Translate() )->can_load( $product ) );
62
+
63
+ }
64
+
65
+ public function test_load_non_english() {
66
+ add_filter(
67
+ 'locale',
68
+ function () {
69
+ return 'fy';
70
+ }
71
+ );
72
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
73
+
74
+ $product = new \ThemeisleSDK\Product( $file );
75
+
76
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Translate() )->can_load( $product ) );
77
+
78
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Translate', ( new \ThemeisleSDK\Modules\Translate() )->load( $product ) );
79
+
80
+ }
81
+
82
+
83
+ }
vendor/codeinwp/themeisle-sdk/tests/uninstall-feedback-test.php ADDED
@@ -0,0 +1,130 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Uninstall feature test.
4
+ *
5
+ * @package ThemeIsleSDK
6
+ */
7
+
8
+ /**
9
+ * Test Uninstall feedback feature.
10
+ */
11
+ class Uninstall_Feedback_Test extends WP_UnitTestCase {
12
+
13
+
14
+ /**
15
+ * Test product from partner loading.
16
+ */
17
+ public function test_product_partner_module_loading() {
18
+
19
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
20
+
21
+ \ThemeisleSDK\Loader::add_product( $file );
22
+
23
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
24
+
25
+ $this->assertArrayHasKey( 'sample_theme_external', $modules );
26
+ $modules['sample_theme_external'] = array_filter(
27
+ $modules['sample_theme_external'],
28
+ function ( $value ) {
29
+ return ( get_class( $value ) === 'ThemeisleSDK\\Modules\\Uninstall_Feedback' );
30
+ }
31
+ );
32
+ $this->assertCount( 0, $modules['sample_theme_external'] );
33
+
34
+ }
35
+
36
+ /**
37
+ * Test product from partner loading.
38
+ */
39
+ public function test_un_feedback_product_loading() {
40
+
41
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
42
+ global $pagenow;
43
+ $pagenow = 'theme-install.php';
44
+ \ThemeisleSDK\Loader::add_product( $file );
45
+
46
+ $modules = \ThemeisleSDK\Common\Module_Factory::get_modules_map();
47
+
48
+ $this->assertArrayHasKey( 'sample_theme', $modules );
49
+ $modules['sample_theme'] = array_filter(
50
+ $modules['sample_theme'],
51
+ function ( $value ) {
52
+ return ( get_class( $value ) === 'ThemeisleSDK\\Modules\\Uninstall_Feedback' );
53
+ }
54
+ );
55
+ $this->assertCount( 1, $modules['sample_theme'] );
56
+ }
57
+
58
+ /**
59
+ * Test if uninstall feedback is disabled on partners.
60
+ */
61
+ public function test_un_feedback_can_load_partner() {
62
+
63
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme_external/style.css';
64
+ $product = new \ThemeisleSDK\Product( $file );
65
+
66
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Uninstall_Feedback() )->can_load( $product ) );
67
+
68
+ }
69
+
70
+
71
+ /**
72
+ * Test if uninstall feedback should load for non whitelisted pages.
73
+ */
74
+ public function test_un_feedback_load_non_pages() {
75
+
76
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
77
+ $product = new \ThemeisleSDK\Product( $file );
78
+ global $pagenow;
79
+ $pagenow = 'index.php';
80
+ $this->assertFalse( ( new \ThemeisleSDK\Modules\Uninstall_Feedback() )->can_load( $product ) );
81
+
82
+ }
83
+
84
+ /**
85
+ * Test if uninstall feedback should load for plugins listing.
86
+ */
87
+ public function test_un_feedback_load_plugins_pages() {
88
+
89
+ $file = dirname( __FILE__ ) . '/sample_products/sample_plugin/plugin-file.php';
90
+ $product = new \ThemeisleSDK\Product( $file );
91
+ global $pagenow;
92
+ $pagenow = 'plugins.php';
93
+
94
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Uninstall_Feedback() )->can_load( $product ) );
95
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Uninstall_Feedback', ( new \ThemeisleSDK\Modules\Uninstall_Feedback() )->load( $product ) );
96
+
97
+ }
98
+
99
+ /**
100
+ * Test if uninstall feedback should load for themes install.
101
+ */
102
+ public function test_un_feedback_load_themes_pages() {
103
+
104
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
105
+ $product = new \ThemeisleSDK\Product( $file );
106
+ global $pagenow;
107
+ $pagenow = 'theme-install.php';
108
+
109
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Uninstall_Feedback() )->can_load( $product ) );
110
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Uninstall_Feedback', ( new \ThemeisleSDK\Modules\Uninstall_Feedback() )->load( $product ) );
111
+
112
+ }
113
+
114
+ /**
115
+ * Test if uninstall feedback loads on ajax requests.
116
+ */
117
+ public function test_un_feedback_load_ajax() {
118
+
119
+ $file = dirname( __FILE__ ) . '/sample_products/sample_theme/style.css';
120
+ $product = new \ThemeisleSDK\Product( $file );
121
+
122
+ define( 'DOING_AJAX', true );
123
+
124
+ $this->assertTrue( ( new \ThemeisleSDK\Modules\Uninstall_Feedback() )->can_load( $product ) );
125
+ $this->assertInstanceOf( 'ThemeisleSDK\\Modules\\Uninstall_Feedback', ( new \ThemeisleSDK\Modules\Uninstall_Feedback() )->load( $product ) );
126
+
127
+ }
128
+
129
+
130
+ }
vendor/composer/autoload_psr4.php CHANGED
@@ -6,5 +6,4 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
- 'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src/Composer/Installers'),
10
  );
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
9
  );
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit192ce97fadbb58f36174182e5bd061ad
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit192ce97fadbb58f36174182e5bd061ad
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit192ce97fadbb58f36174182e5bd061ad', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit192ce97fadbb58f36174182e5bd061ad', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
@@ -42,14 +42,14 @@ class ComposerAutoloaderInit192ce97fadbb58f36174182e5bd061ad
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
- composerRequire192ce97fadbb58f36174182e5bd061ad($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
- function composerRequire192ce97fadbb58f36174182e5bd061ad($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit7cbe24d5e9e3efbfd7d05e55bd59f69e
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit7cbe24d5e9e3efbfd7d05e55bd59f69e', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit7cbe24d5e9e3efbfd7d05e55bd59f69e', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
+ composerRequire7cbe24d5e9e3efbfd7d05e55bd59f69e($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
+ function composerRequire7cbe24d5e9e3efbfd7d05e55bd59f69e($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit7300e34db896a77d95fa9ea47a0613a5 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit7300e34db896a77d95fa9ea47a0613a5 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit7300e34db896a77d95fa9ea47a0613a5', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit7300e34db896a77d95fa9ea47a0613a5', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInitade923528ab5d2a5f0facc43915b585b {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitade923528ab5d2a5f0facc43915b585b', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitade923528ab5d2a5f0facc43915b585b', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/installed.json CHANGED
@@ -1,126 +1,4 @@
1
  [
2
- {
3
- "name": "composer/installers",
4
- "version": "v1.6.0",
5
- "version_normalized": "1.6.0.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/composer/installers.git",
9
- "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b"
10
- },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/composer/installers/zipball/cfcca6b1b60bc4974324efb5783c13dca6932b5b",
14
- "reference": "cfcca6b1b60bc4974324efb5783c13dca6932b5b",
15
- "shasum": ""
16
- },
17
- "require": {
18
- "composer-plugin-api": "^1.0"
19
- },
20
- "replace": {
21
- "roundcube/plugin-installer": "*",
22
- "shama/baton": "*"
23
- },
24
- "require-dev": {
25
- "composer/composer": "1.0.*@dev",
26
- "phpunit/phpunit": "^4.8.36"
27
- },
28
- "time": "2018-08-27 06:10:37",
29
- "type": "composer-plugin",
30
- "extra": {
31
- "class": "Composer\\Installers\\Plugin",
32
- "branch-alias": {
33
- "dev-master": "1.0-dev"
34
- }
35
- },
36
- "installation-source": "dist",
37
- "autoload": {
38
- "psr-4": {
39
- "Composer\\Installers\\": "src/Composer/Installers"
40
- }
41
- },
42
- "notification-url": "https://packagist.org/downloads/",
43
- "license": [
44
- "MIT"
45
- ],
46
- "authors": [
47
- {
48
- "name": "Kyle Robinson Young",
49
- "email": "kyle@dontkry.com",
50
- "homepage": "https://github.com/shama"
51
- }
52
- ],
53
- "description": "A multi-framework Composer library installer",
54
- "homepage": "https://composer.github.io/installers/",
55
- "keywords": [
56
- "Craft",
57
- "Dolibarr",
58
- "Eliasis",
59
- "Hurad",
60
- "ImageCMS",
61
- "Kanboard",
62
- "Lan Management System",
63
- "MODX Evo",
64
- "Mautic",
65
- "Maya",
66
- "OXID",
67
- "Plentymarkets",
68
- "Porto",
69
- "RadPHP",
70
- "SMF",
71
- "Thelia",
72
- "WolfCMS",
73
- "agl",
74
- "aimeos",
75
- "annotatecms",
76
- "attogram",
77
- "bitrix",
78
- "cakephp",
79
- "chef",
80
- "cockpit",
81
- "codeigniter",
82
- "concrete5",
83
- "croogo",
84
- "dokuwiki",
85
- "drupal",
86
- "eZ Platform",
87
- "elgg",
88
- "expressionengine",
89
- "fuelphp",
90
- "grav",
91
- "installer",
92
- "itop",
93
- "joomla",
94
- "kohana",
95
- "laravel",
96
- "lavalite",
97
- "lithium",
98
- "magento",
99
- "majima",
100
- "mako",
101
- "mediawiki",
102
- "modulework",
103
- "modx",
104
- "moodle",
105
- "osclass",
106
- "phpbb",
107
- "piwik",
108
- "ppi",
109
- "puppet",
110
- "pxcms",
111
- "reindex",
112
- "roundcube",
113
- "shopware",
114
- "silverstripe",
115
- "sydes",
116
- "symfony",
117
- "typo3",
118
- "wordpress",
119
- "yawik",
120
- "zend",
121
- "zikula"
122
- ]
123
- },
124
  {
125
  "name": "codeinwp/themeisle-sdk",
126
  "version": "dev-master",
@@ -128,25 +6,22 @@
128
  "source": {
129
  "type": "git",
130
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
131
- "reference": "74b79f888e14ace771202a616c1701da231b4b1a"
132
  },
133
  "dist": {
134
  "type": "zip",
135
- "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/74b79f888e14ace771202a616c1701da231b4b1a",
136
- "reference": "74b79f888e14ace771202a616c1701da231b4b1a",
137
  "shasum": ""
138
  },
139
- "require": {
140
- "composer/installers": "~1.0"
141
- },
142
  "require-dev": {
143
  "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4",
144
  "squizlabs/php_codesniffer": "^3.1",
145
  "wp-coding-standards/wpcs": "^1.0.0"
146
  },
147
- "time": "2018-12-21 18:15:05",
148
  "type": "library",
149
- "installation-source": "dist",
150
  "notification-url": "https://packagist.org/downloads/",
151
  "license": [
152
  "GPL-2.0+"
@@ -158,7 +33,7 @@
158
  "homepage": "https://themeisle.com"
159
  }
160
  ],
161
- "description": "ThemeIsle SDK ",
162
  "homepage": "https://github.com/Codeinwp/themeisle-sdk",
163
  "keywords": [
164
  "wordpress"
1
  [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  {
3
  "name": "codeinwp/themeisle-sdk",
4
  "version": "dev-master",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
9
+ "reference": "cf03ee5b93c6ca66f0c1a4916309f1270fe12319"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/cf03ee5b93c6ca66f0c1a4916309f1270fe12319",
14
+ "reference": "cf03ee5b93c6ca66f0c1a4916309f1270fe12319",
15
  "shasum": ""
16
  },
 
 
 
17
  "require-dev": {
18
  "dealerdirect/phpcodesniffer-composer-installer": "^0.4.4",
19
  "squizlabs/php_codesniffer": "^3.1",
20
  "wp-coding-standards/wpcs": "^1.0.0"
21
  },
22
+ "time": "2019-01-28 12:17:14",
23
  "type": "library",
24
+ "installation-source": "source",
25
  "notification-url": "https://packagist.org/downloads/",
26
  "license": [
27
  "GPL-2.0+"
33
  "homepage": "https://themeisle.com"
34
  }
35
  ],
36
+ "description": "ThemeIsle SDK.",
37
  "homepage": "https://github.com/Codeinwp/themeisle-sdk",
38
  "keywords": [
39
  "wordpress"
vendor/composer/installers/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (c) 2012 Kyle Robinson Young
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is furnished
8
- to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/composer.json DELETED
@@ -1,105 +0,0 @@
1
- {
2
- "name": "composer/installers",
3
- "type": "composer-plugin",
4
- "license": "MIT",
5
- "description": "A multi-framework Composer library installer",
6
- "keywords": [
7
- "installer",
8
- "Aimeos",
9
- "AGL",
10
- "AnnotateCms",
11
- "Attogram",
12
- "Bitrix",
13
- "CakePHP",
14
- "Chef",
15
- "Cockpit",
16
- "CodeIgniter",
17
- "concrete5",
18
- "Craft",
19
- "Croogo",
20
- "DokuWiki",
21
- "Dolibarr",
22
- "Drupal",
23
- "Elgg",
24
- "Eliasis",
25
- "ExpressionEngine",
26
- "eZ Platform",
27
- "FuelPHP",
28
- "Grav",
29
- "Hurad",
30
- "ImageCMS",
31
- "iTop",
32
- "Joomla",
33
- "Kanboard",
34
- "Kohana",
35
- "Lan Management System",
36
- "Laravel",
37
- "Lavalite",
38
- "Lithium",
39
- "Magento",
40
- "majima",
41
- "Mako",
42
- "Mautic",
43
- "Maya",
44
- "MODX",
45
- "MODX Evo",
46
- "MediaWiki",
47
- "OXID",
48
- "osclass",
49
- "MODULEWork",
50
- "Moodle",
51
- "Piwik",
52
- "pxcms",
53
- "phpBB",
54
- "Plentymarkets",
55
- "PPI",
56
- "Puppet",
57
- "Porto",
58
- "RadPHP",
59
- "ReIndex",
60
- "Roundcube",
61
- "shopware",
62
- "SilverStripe",
63
- "SMF",
64
- "SyDES",
65
- "symfony",
66
- "Thelia",
67
- "TYPO3",
68
- "WolfCMS",
69
- "WordPress",
70
- "YAWIK",
71
- "Zend",
72
- "Zikula"
73
- ],
74
- "homepage": "https://composer.github.io/installers/",
75
- "authors": [
76
- {
77
- "name": "Kyle Robinson Young",
78
- "email": "kyle@dontkry.com",
79
- "homepage": "https://github.com/shama"
80
- }
81
- ],
82
- "autoload": {
83
- "psr-4": { "Composer\\Installers\\": "src/Composer/Installers" }
84
- },
85
- "extra": {
86
- "class": "Composer\\Installers\\Plugin",
87
- "branch-alias": {
88
- "dev-master": "1.0-dev"
89
- }
90
- },
91
- "replace": {
92
- "shama/baton": "*",
93
- "roundcube/plugin-installer": "*"
94
- },
95
- "require": {
96
- "composer-plugin-api": "^1.0"
97
- },
98
- "require-dev": {
99
- "composer/composer": "1.0.*@dev",
100
- "phpunit/phpunit": "^4.8.36"
101
- },
102
- "scripts": {
103
- "test": "phpunit"
104
- }
105
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/AglInstaller.php DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class AglInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'More/{$name}/',
8
- );
9
-
10
- /**
11
- * Format package name to CamelCase
12
- */
13
- public function inflectPackageVars($vars)
14
- {
15
- $vars['name'] = preg_replace_callback('/(?:^|_|-)(.?)/', function ($matches) {
16
- return strtoupper($matches[1]);
17
- }, $vars['name']);
18
-
19
- return $vars;
20
- }
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/AimeosInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class AimeosInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'extension' => 'ext/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class AnnotateCmsInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'addons/modules/{$name}/',
8
- 'component' => 'addons/components/{$name}/',
9
- 'service' => 'addons/services/{$name}/',
10
- );
11
- }
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php DELETED
@@ -1,49 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class AsgardInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'Modules/{$name}/',
8
- 'theme' => 'Themes/{$name}/'
9
- );
10
-
11
- /**
12
- * Format package name.
13
- *
14
- * For package type asgard-module, cut off a trailing '-plugin' if present.
15
- *
16
- * For package type asgard-theme, cut off a trailing '-theme' if present.
17
- *
18
- */
19
- public function inflectPackageVars($vars)
20
- {
21
- if ($vars['type'] === 'asgard-module') {
22
- return $this->inflectPluginVars($vars);
23
- }
24
-
25
- if ($vars['type'] === 'asgard-theme') {
26
- return $this->inflectThemeVars($vars);
27
- }
28
-
29
- return $vars;
30
- }
31
-
32
- protected function inflectPluginVars($vars)
33
- {
34
- $vars['name'] = preg_replace('/-module$/', '', $vars['name']);
35
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
36
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
37
-
38
- return $vars;
39
- }
40
-
41
- protected function inflectThemeVars($vars)
42
- {
43
- $vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
44
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
45
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
46
-
47
- return $vars;
48
- }
49
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class AttogramInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'modules/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/BaseInstaller.php DELETED
@@ -1,136 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- use Composer\IO\IOInterface;
5
- use Composer\Composer;
6
- use Composer\Package\PackageInterface;
7
-
8
- abstract class BaseInstaller
9
- {
10
- protected $locations = array();
11
- protected $composer;
12
- protected $package;
13
- protected $io;
14
-
15
- /**
16
- * Initializes base installer.
17
- *
18
- * @param PackageInterface $package
19
- * @param Composer $composer
20
- * @param IOInterface $io
21
- */
22
- public function __construct(PackageInterface $package = null, Composer $composer = null, IOInterface $io = null)
23
- {
24
- $this->composer = $composer;
25
- $this->package = $package;
26
- $this->io = $io;
27
- }
28
-
29
- /**
30
- * Return the install path based on package type.
31
- *
32
- * @param PackageInterface $package
33
- * @param string $frameworkType
34
- * @return string
35
- */
36
- public function getInstallPath(PackageInterface $package, $frameworkType = '')
37
- {
38
- $type = $this->package->getType();
39
-
40
- $prettyName = $this->package->getPrettyName();
41
- if (strpos($prettyName, '/') !== false) {
42
- list($vendor, $name) = explode('/', $prettyName);
43
- } else {
44
- $vendor = '';
45
- $name = $prettyName;
46
- }
47
-
48
- $availableVars = $this->inflectPackageVars(compact('name', 'vendor', 'type'));
49
-
50
- $extra = $package->getExtra();
51
- if (!empty($extra['installer-name'])) {
52
- $availableVars['name'] = $extra['installer-name'];
53
- }
54
-
55
- if ($this->composer->getPackage()) {
56
- $extra = $this->composer->getPackage()->getExtra();
57
- if (!empty($extra['installer-paths'])) {
58
- $customPath = $this->mapCustomInstallPaths($extra['installer-paths'], $prettyName, $type, $vendor);
59
- if ($customPath !== false) {
60
- return $this->templatePath($customPath, $availableVars);
61
- }
62
- }
63
- }
64
-
65
- $packageType = substr($type, strlen($frameworkType) + 1);
66
- $locations = $this->getLocations();
67
- if (!isset($locations[$packageType])) {
68
- throw new \InvalidArgumentException(sprintf('Package type "%s" is not supported', $type));
69
- }
70
-
71
- return $this->templatePath($locations[$packageType], $availableVars);
72
- }
73
-
74
- /**
75
- * For an installer to override to modify the vars per installer.
76
- *
77
- * @param array $vars
78
- * @return array
79
- */
80
- public function inflectPackageVars($vars)
81
- {
82
- return $vars;
83
- }
84
-
85
- /**
86
- * Gets the installer's locations
87
- *
88
- * @return array
89
- */
90
- public function getLocations()
91
- {
92
- return $this->locations;
93
- }
94
-
95
- /**
96
- * Replace vars in a path
97
- *
98
- * @param string $path
99
- * @param array $vars
100
- * @return string
101
- */
102
- protected function templatePath($path, array $vars = array())
103
- {
104
- if (strpos($path, '{') !== false) {
105
- extract($vars);
106
- preg_match_all('@\{\$([A-Za-z0-9_]*)\}@i', $path, $matches);
107
- if (!empty($matches[1])) {
108
- foreach ($matches[1] as $var) {
109
- $path = str_replace('{$' . $var . '}', $$var, $path);
110
- }
111
- }
112
- }
113
-
114
- return $path;
115
- }
116
-
117
- /**
118
- * Search through a passed paths array for a custom install path.
119
- *
120
- * @param array $paths
121
- * @param string $name
122
- * @param string $type
123
- * @param string $vendor = NULL
124
- * @return string
125
- */
126
- protected function mapCustomInstallPaths(array $paths, $name, $type, $vendor = NULL)
127
- {
128
- foreach ($paths as $path => $names) {
129
- if (in_array($name, $names) || in_array('type:' . $type, $names) || in_array('vendor:' . $vendor, $names)) {
130
- return $path;
131
- }
132
- }
133
-
134
- return false;
135
- }
136
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php DELETED
@@ -1,126 +0,0 @@
1
- <?php
2
-
3
- namespace Composer\Installers;
4
-
5
- use Composer\Util\Filesystem;
6
-
7
- /**
8
- * Installer for Bitrix Framework. Supported types of extensions:
9
- * - `bitrix-d7-module` — copy the module to directory `bitrix/modules/<vendor>.<name>`.
10
- * - `bitrix-d7-component` — copy the component to directory `bitrix/components/<vendor>/<name>`.
11
- * - `bitrix-d7-template` — copy the template to directory `bitrix/templates/<vendor>_<name>`.
12
- *
13
- * You can set custom path to directory with Bitrix kernel in `composer.json`:
14
- *
15
- * ```json
16
- * {
17
- * "extra": {
18
- * "bitrix-dir": "s1/bitrix"
19
- * }
20
- * }
21
- * ```
22
- *
23
- * @author Nik Samokhvalov <nik@samokhvalov.info>
24
- * @author Denis Kulichkin <onexhovia@gmail.com>
25
- */
26
- class BitrixInstaller extends BaseInstaller
27
- {
28
- protected $locations = array(
29
- 'module' => '{$bitrix_dir}/modules/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
30
- 'component' => '{$bitrix_dir}/components/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
31
- 'theme' => '{$bitrix_dir}/templates/{$name}/', // deprecated, remove on the major release (Backward compatibility will be broken)
32
- 'd7-module' => '{$bitrix_dir}/modules/{$vendor}.{$name}/',
33
- 'd7-component' => '{$bitrix_dir}/components/{$vendor}/{$name}/',
34
- 'd7-template' => '{$bitrix_dir}/templates/{$vendor}_{$name}/',
35
- );
36
-
37
- /**
38
- * @var array Storage for informations about duplicates at all the time of installation packages.
39
- */
40
- private static $checkedDuplicates = array();
41
-
42
- /**
43
- * {@inheritdoc}
44
- */
45
- public function inflectPackageVars($vars)
46
- {
47
- if ($this->composer->getPackage()) {
48
- $extra = $this->composer->getPackage()->getExtra();
49
-
50
- if (isset($extra['bitrix-dir'])) {
51
- $vars['bitrix_dir'] = $extra['bitrix-dir'];
52
- }
53
- }
54
-
55
- if (!isset($vars['bitrix_dir'])) {
56
- $vars['bitrix_dir'] = 'bitrix';
57
- }
58
-
59
- return parent::inflectPackageVars($vars);
60
- }
61
-
62
- /**
63
- * {@inheritdoc}
64
- */
65
- protected function templatePath($path, array $vars = array())
66
- {
67
- $templatePath = parent::templatePath($path, $vars);
68
- $this->checkDuplicates($templatePath, $vars);
69
-
70
- return $templatePath;
71
- }
72
-
73
- /**
74
- * Duplicates search packages.
75
- *
76
- * @param string $path
77
- * @param array $vars
78
- */
79
- protected function checkDuplicates($path, array $vars = array())
80
- {
81
- $packageType = substr($vars['type'], strlen('bitrix') + 1);
82
- $localDir = explode('/', $vars['bitrix_dir']);
83
- array_pop($localDir);
84
- $localDir[] = 'local';
85
- $localDir = implode('/', $localDir);
86
-
87
- $oldPath = str_replace(
88
- array('{$bitrix_dir}', '{$name}'),
89
- array($localDir, $vars['name']),
90
- $this->locations[$packageType]
91
- );
92
-
93
- if (in_array($oldPath, static::$checkedDuplicates)) {
94
- return;
95
- }
96
-
97
- if ($oldPath !== $path && file_exists($oldPath) && $this->io && $this->io->isInteractive()) {
98
-
99
- $this->io->writeError(' <error>Duplication of packages:</error>');
100
- $this->io->writeError(' <info>Package ' . $oldPath . ' will be called instead package ' . $path . '</info>');
101
-
102
- while (true) {
103
- switch ($this->io->ask(' <info>Delete ' . $oldPath . ' [y,n,?]?</info> ', '?')) {
104
- case 'y':
105
- $fs = new Filesystem();
106
- $fs->removeDirectory($oldPath);
107
- break 2;
108
-
109
- case 'n':
110
- break 2;
111
-
112
- case '?':
113
- default:
114
- $this->io->writeError(array(
115
- ' y - delete package ' . $oldPath . ' and to continue with the installation',
116
- ' n - don\'t delete and to continue with the installation',
117
- ));
118
- $this->io->writeError(' ? - print help');
119
- break;
120
- }
121
- }
122
- }
123
-
124
- static::$checkedDuplicates[] = $oldPath;
125
- }
126
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class BonefishInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'package' => 'Packages/{$vendor}/{$name}/'
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php DELETED
@@ -1,82 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- use Composer\DependencyResolver\Pool;
5
-
6
- class CakePHPInstaller extends BaseInstaller
7
- {
8
- protected $locations = array(
9
- 'plugin' => 'Plugin/{$name}/',
10
- );
11
-
12
- /**
13
- * Format package name to CamelCase
14
- */
15
- public function inflectPackageVars($vars)
16
- {
17
- if ($this->matchesCakeVersion('>=', '3.0.0')) {
18
- return $vars;
19
- }
20
-
21
- $nameParts = explode('/', $vars['name']);
22
- foreach ($nameParts as &$value) {
23
- $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
24
- $value = str_replace(array('-', '_'), ' ', $value);
25
- $value = str_replace(' ', '', ucwords($value));
26
- }
27
- $vars['name'] = implode('/', $nameParts);
28
-
29
- return $vars;
30
- }
31
-
32
- /**
33
- * Change the default plugin location when cakephp >= 3.0
34
- */
35
- public function getLocations()
36
- {
37
- if ($this->matchesCakeVersion('>=', '3.0.0')) {
38
- $this->locations['plugin'] = $this->composer->getConfig()->get('vendor-dir') . '/{$vendor}/{$name}/';
39
- }
40
- return $this->locations;
41
- }
42
-
43
- /**
44
- * Check if CakePHP version matches against a version
45
- *
46
- * @param string $matcher
47
- * @param string $version
48
- * @return bool
49
- */
50
- protected function matchesCakeVersion($matcher, $version)
51
- {
52
- if (class_exists('Composer\Semver\Constraint\MultiConstraint')) {
53
- $multiClass = 'Composer\Semver\Constraint\MultiConstraint';
54
- $constraintClass = 'Composer\Semver\Constraint\Constraint';
55
- } else {
56
- $multiClass = 'Composer\Package\LinkConstraint\MultiConstraint';
57
- $constraintClass = 'Composer\Package\LinkConstraint\VersionConstraint';
58
- }
59
-
60
- $repositoryManager = $this->composer->getRepositoryManager();
61
- if ($repositoryManager) {
62
- $repos = $repositoryManager->getLocalRepository();
63
- if (!$repos) {
64
- return false;
65
- }
66
- $cake3 = new $multiClass(array(
67
- new $constraintClass($matcher, $version),
68
- new $constraintClass('!=', '9999999-dev'),
69
- ));
70
- $pool = new Pool('dev');
71
- $pool->addRepository($repos);
72
- $packages = $pool->whatProvides('cakephp/cakephp');
73
- foreach ($packages as $package) {
74
- $installed = new $constraintClass('=', $package->getVersion());
75
- if ($cake3->matches($installed)) {
76
- return true;
77
- }
78
- }
79
- }
80
- return false;
81
- }
82
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ChefInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class ChefInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'cookbook' => 'Chef/{$vendor}/{$name}/',
8
- 'role' => 'Chef/roles/{$name}/',
9
- );
10
- }
11
-
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class CiviCrmInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'ext' => 'ext/{$name}/'
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class ClanCatsFrameworkInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'ship' => 'CCF/orbit/{$name}/',
8
- 'theme' => 'CCF/app/themes/{$name}/',
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php DELETED
@@ -1,34 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class CockpitInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'cockpit/modules/addons/{$name}/',
8
- );
9
-
10
- /**
11
- * Format module name.
12
- *
13
- * Strip `module-` prefix from package name.
14
- *
15
- * @param array @vars
16
- *
17
- * @return array
18
- */
19
- public function inflectPackageVars($vars)
20
- {
21
- if ($vars['type'] == 'cockpit-module') {
22
- return $this->inflectModuleVars($vars);
23
- }
24
-
25
- return $vars;
26
- }
27
-
28
- public function inflectModuleVars($vars)
29
- {
30
- $vars['name'] = ucfirst(preg_replace('/cockpit-/i', '', $vars['name']));
31
-
32
- return $vars;
33
- }
34
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class CodeIgniterInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'library' => 'application/libraries/{$name}/',
8
- 'third-party' => 'application/third_party/{$name}/',
9
- 'module' => 'application/modules/{$name}/',
10
- );
11
- }
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php DELETED
@@ -1,13 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class Concrete5Installer extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'core' => 'concrete/',
8
- 'block' => 'application/blocks/{$name}/',
9
- 'package' => 'packages/{$name}/',
10
- 'theme' => 'application/themes/{$name}/',
11
- 'update' => 'updates/{$name}/',
12
- );
13
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/CraftInstaller.php DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- * Installer for Craft Plugins
6
- */
7
- class CraftInstaller extends BaseInstaller
8
- {
9
- const NAME_PREFIX = 'craft';
10
- const NAME_SUFFIX = 'plugin';
11
-
12
- protected $locations = array(
13
- 'plugin' => 'craft/plugins/{$name}/',
14
- );
15
-
16
- /**
17
- * Strip `craft-` prefix and/or `-plugin` suffix from package names
18
- *
19
- * @param array $vars
20
- *
21
- * @return array
22
- */
23
- final public function inflectPackageVars($vars)
24
- {
25
- return $this->inflectPluginVars($vars);
26
- }
27
-
28
- private function inflectPluginVars($vars)
29
- {
30
- $vars['name'] = preg_replace('/-' . self::NAME_SUFFIX . '$/i', '', $vars['name']);
31
- $vars['name'] = preg_replace('/^' . self::NAME_PREFIX . '-/i', '', $vars['name']);
32
-
33
- return $vars;
34
- }
35
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class CroogoInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'Plugin/{$name}/',
8
- 'theme' => 'View/Themed/{$name}/',
9
- );
10
-
11
- /**
12
- * Format package name to CamelCase
13
- */
14
- public function inflectPackageVars($vars)
15
- {
16
- $vars['name'] = strtolower(str_replace(array('-', '_'), ' ', $vars['name']));
17
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
18
-
19
- return $vars;
20
- }
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class DecibelInstaller extends BaseInstaller
5
- {
6
- /** @var array */
7
- protected $locations = array(
8
- 'app' => 'app/{$name}/',
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php DELETED
@@ -1,50 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class DokuWikiInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'lib/plugins/{$name}/',
8
- 'template' => 'lib/tpl/{$name}/',
9
- );
10
-
11
- /**
12
- * Format package name.
13
- *
14
- * For package type dokuwiki-plugin, cut off a trailing '-plugin',
15
- * or leading dokuwiki_ if present.
16
- *
17
- * For package type dokuwiki-template, cut off a trailing '-template' if present.
18
- *
19
- */
20
- public function inflectPackageVars($vars)
21
- {
22
-
23
- if ($vars['type'] === 'dokuwiki-plugin') {
24
- return $this->inflectPluginVars($vars);
25
- }
26
-
27
- if ($vars['type'] === 'dokuwiki-template') {
28
- return $this->inflectTemplateVars($vars);
29
- }
30
-
31
- return $vars;
32
- }
33
-
34
- protected function inflectPluginVars($vars)
35
- {
36
- $vars['name'] = preg_replace('/-plugin$/', '', $vars['name']);
37
- $vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']);
38
-
39
- return $vars;
40
- }
41
-
42
- protected function inflectTemplateVars($vars)
43
- {
44
- $vars['name'] = preg_replace('/-template$/', '', $vars['name']);
45
- $vars['name'] = preg_replace('/^dokuwiki_?-?/', '', $vars['name']);
46
-
47
- return $vars;
48
- }
49
-
50
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- * Class DolibarrInstaller
6
- *
7
- * @package Composer\Installers
8
- * @author Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
9
- */
10
- class DolibarrInstaller extends BaseInstaller
11
- {
12
- //TODO: Add support for scripts and themes
13
- protected $locations = array(
14
- 'module' => 'htdocs/custom/{$name}/',
15
- );
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class DrupalInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'core' => 'core/',
8
- 'module' => 'modules/{$name}/',
9
- 'theme' => 'themes/{$name}/',
10
- 'library' => 'libraries/{$name}/',
11
- 'profile' => 'profiles/{$name}/',
12
- 'drush' => 'drush/{$name}/',
13
- 'custom-theme' => 'themes/custom/{$name}/',
14
- 'custom-module' => 'modules/custom/{$name}/',
15
- );
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ElggInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class ElggInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'mod/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php DELETED
@@ -1,12 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class EliasisInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'component' => 'components/{$name}/',
8
- 'module' => 'modules/{$name}/',
9
- 'plugin' => 'plugins/{$name}/',
10
- 'template' => 'templates/{$name}/',
11
- );
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- use Composer\Package\PackageInterface;
5
-
6
- class ExpressionEngineInstaller extends BaseInstaller
7
- {
8
-
9
- protected $locations = array();
10
-
11
- private $ee2Locations = array(
12
- 'addon' => 'system/expressionengine/third_party/{$name}/',
13
- 'theme' => 'themes/third_party/{$name}/',
14
- );
15
-
16
- private $ee3Locations = array(
17
- 'addon' => 'system/user/addons/{$name}/',
18
- 'theme' => 'themes/user/{$name}/',
19
- );
20
-
21
- public function getInstallPath(PackageInterface $package, $frameworkType = '')
22
- {
23
-
24
- $version = "{$frameworkType}Locations";
25
- $this->locations = $this->$version;
26
-
27
- return parent::getInstallPath($package, $frameworkType);
28
- }
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class EzPlatformInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'meta-assets' => 'web/assets/ezplatform/',
8
- 'assets' => 'web/assets/ezplatform/{$name}/',
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/FuelInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class FuelInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'fuel/app/modules/{$name}/',
8
- 'package' => 'fuel/packages/{$name}/',
9
- 'theme' => 'fuel/app/themes/{$name}/',
10
- );
11
- }
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class FuelphpInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'component' => 'components/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/GravInstaller.php DELETED
@@ -1,30 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class GravInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'user/plugins/{$name}/',
8
- 'theme' => 'user/themes/{$name}/',
9
- );
10
-
11
- /**
12
- * Format package name
13
- *
14
- * @param array $vars
15
- *
16
- * @return array
17
- */
18
- public function inflectPackageVars($vars)
19
- {
20
- $restrictedWords = implode('|', array_keys($this->locations));
21
-
22
- $vars['name'] = strtolower($vars['name']);
23
- $vars['name'] = preg_replace('/^(?:grav-)?(?:(?:'.$restrictedWords.')-)?(.*?)(?:-(?:'.$restrictedWords.'))?$/ui',
24
- '$1',
25
- $vars['name']
26
- );
27
-
28
- return $vars;
29
- }
30
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/HuradInstaller.php DELETED
@@ -1,25 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class HuradInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'plugins/{$name}/',
8
- 'theme' => 'plugins/{$name}/',
9
- );
10
-
11
- /**
12
- * Format package name to CamelCase
13
- */
14
- public function inflectPackageVars($vars)
15
- {
16
- $nameParts = explode('/', $vars['name']);
17
- foreach ($nameParts as &$value) {
18
- $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
19
- $value = str_replace(array('-', '_'), ' ', $value);
20
- $value = str_replace(' ', '', ucwords($value));
21
- }
22
- $vars['name'] = implode('/', $nameParts);
23
- return $vars;
24
- }
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class ImageCMSInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'template' => 'templates/{$name}/',
8
- 'module' => 'application/modules/{$name}/',
9
- 'library' => 'application/libraries/{$name}/',
10
- );
11
- }
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/Installer.php DELETED
@@ -1,274 +0,0 @@
1
- <?php
2
-
3
- namespace Composer\Installers;
4
-
5
- use Composer\Composer;
6
- use Composer\Installer\BinaryInstaller;
7
- use Composer\Installer\LibraryInstaller;
8
- use Composer\IO\IOInterface;
9
- use Composer\Package\PackageInterface;
10
- use Composer\Repository\InstalledRepositoryInterface;
11
- use Composer\Util\Filesystem;
12
-
13
- class Installer extends LibraryInstaller
14
- {
15
-
16
- /**
17
- * Package types to installer class map
18
- *
19
- * @var array
20
- */
21
- private $supportedTypes = array(
22
- 'aimeos' => 'AimeosInstaller',
23
- 'asgard' => 'AsgardInstaller',
24
- 'attogram' => 'AttogramInstaller',
25
- 'agl' => 'AglInstaller',
26
- 'annotatecms' => 'AnnotateCmsInstaller',
27
- 'bitrix' => 'BitrixInstaller',
28
- 'bonefish' => 'BonefishInstaller',
29
- 'cakephp' => 'CakePHPInstaller',
30
- 'chef' => 'ChefInstaller',
31
- 'civicrm' => 'CiviCrmInstaller',
32
- 'ccframework' => 'ClanCatsFrameworkInstaller',
33
- 'cockpit' => 'CockpitInstaller',
34
- 'codeigniter' => 'CodeIgniterInstaller',
35
- 'concrete5' => 'Concrete5Installer',
36
- 'craft' => 'CraftInstaller',
37
- 'croogo' => 'CroogoInstaller',
38
- 'dokuwiki' => 'DokuWikiInstaller',
39
- 'dolibarr' => 'DolibarrInstaller',
40
- 'decibel' => 'DecibelInstaller',
41
- 'drupal' => 'DrupalInstaller',
42
- 'elgg' => 'ElggInstaller',
43
- 'eliasis' => 'EliasisInstaller',
44
- 'ee3' => 'ExpressionEngineInstaller',
45
- 'ee2' => 'ExpressionEngineInstaller',
46
- 'ezplatform' => 'EzPlatformInstaller',
47
- 'fuel' => 'FuelInstaller',
48
- 'fuelphp' => 'FuelphpInstaller',
49
- 'grav' => 'GravInstaller',
50
- 'hurad' => 'HuradInstaller',
51
- 'imagecms' => 'ImageCMSInstaller',
52
- 'itop' => 'ItopInstaller',
53
- 'joomla' => 'JoomlaInstaller',
54
- 'kanboard' => 'KanboardInstaller',
55
- 'kirby' => 'KirbyInstaller',
56
- 'kodicms' => 'KodiCMSInstaller',
57
- 'kohana' => 'KohanaInstaller',
58
- 'lms' => 'LanManagementSystemInstaller',
59
- 'laravel' => 'LaravelInstaller',
60
- 'lavalite' => 'LavaLiteInstaller',
61
- 'lithium' => 'LithiumInstaller',
62
- 'magento' => 'MagentoInstaller',
63
- 'majima' => 'MajimaInstaller',
64
- 'mako' => 'MakoInstaller',
65
- 'maya' => 'MayaInstaller',
66
- 'mautic' => 'MauticInstaller',
67
- 'mediawiki' => 'MediaWikiInstaller',
68
- 'microweber' => 'MicroweberInstaller',
69
- 'modulework' => 'MODULEWorkInstaller',
70
- 'modx' => 'ModxInstaller',
71
- 'modxevo' => 'MODXEvoInstaller',
72
- 'moodle' => 'MoodleInstaller',
73
- 'october' => 'OctoberInstaller',
74
- 'ontowiki' => 'OntoWikiInstaller',
75
- 'oxid' => 'OxidInstaller',
76
- 'osclass' => 'OsclassInstaller',
77
- 'pxcms' => 'PxcmsInstaller',
78
- 'phpbb' => 'PhpBBInstaller',
79
- 'pimcore' => 'PimcoreInstaller',
80
- 'piwik' => 'PiwikInstaller',
81
- 'plentymarkets'=> 'PlentymarketsInstaller',
82
- 'ppi' => 'PPIInstaller',
83
- 'puppet' => 'PuppetInstaller',
84
- 'radphp' => 'RadPHPInstaller',
85
- 'phifty' => 'PhiftyInstaller',
86
- 'porto' => 'PortoInstaller',
87
- 'redaxo' => 'RedaxoInstaller',
88
- 'reindex' => 'ReIndexInstaller',
89
- 'roundcube' => 'RoundcubeInstaller',
90
- 'shopware' => 'ShopwareInstaller',
91
- 'sitedirect' => 'SiteDirectInstaller',
92
- 'silverstripe' => 'SilverStripeInstaller',
93
- 'smf' => 'SMFInstaller',
94
- 'sydes' => 'SyDESInstaller',
95
- 'symfony1' => 'Symfony1Installer',
96
- 'thelia' => 'TheliaInstaller',
97
- 'tusk' => 'TuskInstaller',
98
- 'typo3-cms' => 'TYPO3CmsInstaller',
99
- 'typo3-flow' => 'TYPO3FlowInstaller',
100
- 'userfrosting' => 'UserFrostingInstaller',
101
- 'vanilla' => 'VanillaInstaller',
102
- 'whmcs' => 'WHMCSInstaller',
103
- 'wolfcms' => 'WolfCMSInstaller',
104
- 'wordpress' => 'WordPressInstaller',
105
- 'yawik' => 'YawikInstaller',
106
- 'zend' => 'ZendInstaller',
107
- 'zikula' => 'ZikulaInstaller',
108
- 'prestashop' => 'PrestashopInstaller'
109
- );
110
-
111
- /**
112
- * Installer constructor.
113
- *
114
- * Disables installers specified in main composer extra installer-disable
115
- * list
116
- *
117
- * @param IOInterface $io
118
- * @param Composer $composer
119
- * @param string $type
120
- * @param Filesystem|null $filesystem
121
- * @param BinaryInstaller|null $binaryInstaller
122
- */
123
- public function __construct(
124
- IOInterface $io,
125
- Composer $composer,
126
- $type = 'library',
127
- Filesystem $filesystem = null,
128
- BinaryInstaller $binaryInstaller = null
129
- ) {
130
- parent::__construct($io, $composer, $type, $filesystem,
131
- $binaryInstaller);
132
- $this->removeDisabledInstallers();
133
- }
134
-
135
- /**
136
- * {@inheritDoc}
137
- */
138
- public function getInstallPath(PackageInterface $package)
139
- {
140
- $type = $package->getType();
141
- $frameworkType = $this->findFrameworkType($type);
142
-
143
- if ($frameworkType === false) {
144
- throw new \InvalidArgumentException(
145
- 'Sorry the package type of this package is not yet supported.'
146
- );
147
- }
148
-
149
- $class = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
150
- $installer = new $class($package, $this->composer, $this->getIO());
151
-
152
- return $installer->getInstallPath($package, $frameworkType);
153
- }
154
-
155
- public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package)
156
- {
157
- parent::uninstall($repo, $package);
158
- $installPath = $this->getPackageBasePath($package);
159
- $this->io->write(sprintf('Deleting %s - %s', $installPath, !file_exists($installPath) ? '<comment>deleted</comment>' : '<error>not deleted</error>'));
160
- }
161
-
162
- /**
163
- * {@inheritDoc}
164
- */
165
- public function supports($packageType)
166
- {
167
- $frameworkType = $this->findFrameworkType($packageType);
168
-
169
- if ($frameworkType === false) {
170
- return false;
171
- }
172
-
173
- $locationPattern = $this->getLocationPattern($frameworkType);
174
-
175
- return preg_match('#' . $frameworkType . '-' . $locationPattern . '#', $packageType, $matches) === 1;
176
- }
177
-
178
- /**
179
- * Finds a supported framework type if it exists and returns it
180
- *
181
- * @param string $type
182
- * @return string
183
- */
184
- protected function findFrameworkType($type)
185
- {
186
- $frameworkType = false;
187
-
188
- krsort($this->supportedTypes);
189
-
190
- foreach ($this->supportedTypes as $key => $val) {
191
- if ($key === substr($type, 0, strlen($key))) {
192
- $frameworkType = substr($type, 0, strlen($key));
193
- break;
194
- }
195
- }
196
-
197
- return $frameworkType;
198
- }
199
-
200
- /**
201
- * Get the second part of the regular expression to check for support of a
202
- * package type
203
- *
204
- * @param string $frameworkType
205
- * @return string
206
- */
207
- protected function getLocationPattern($frameworkType)
208
- {
209
- $pattern = false;
210
- if (!empty($this->supportedTypes[$frameworkType])) {
211
- $frameworkClass = 'Composer\\Installers\\' . $this->supportedTypes[$frameworkType];
212
- /** @var BaseInstaller $framework */
213
- $framework = new $frameworkClass(null, $this->composer, $this->getIO());
214
- $locations = array_keys($framework->getLocations());
215
- $pattern = $locations ? '(' . implode('|', $locations) . ')' : false;
216
- }
217
-
218
- return $pattern ? : '(\w+)';
219
- }
220
-
221
- /**
222
- * Get I/O object
223
- *
224
- * @return IOInterface
225
- */
226
- private function getIO()
227
- {
228
- return $this->io;
229
- }
230
-
231
- /**
232
- * Look for installers set to be disabled in composer's extra config and
233
- * remove them from the list of supported installers.
234
- *
235
- * Globals:
236
- * - true, "all", and "*" - disable all installers.
237
- * - false - enable all installers (useful with
238
- * wikimedia/composer-merge-plugin or similar)
239
- *
240
- * @return void
241
- */
242
- protected function removeDisabledInstallers()
243
- {
244
- $extra = $this->composer->getPackage()->getExtra();
245
-
246
- if (!isset($extra['installer-disable']) || $extra['installer-disable'] === false) {
247
- // No installers are disabled
248
- return;
249
- }
250
-
251
- // Get installers to disable
252
- $disable = $extra['installer-disable'];
253
-
254
- // Ensure $disabled is an array
255
- if (!is_array($disable)) {
256
- $disable = array($disable);
257
- }
258
-
259
- // Check which installers should be disabled
260
- $all = array(true, "all", "*");
261
- $intersect = array_intersect($all, $disable);
262
- if (!empty($intersect)) {
263
- // Disable all installers
264
- $this->supportedTypes = array();
265
- } else {
266
- // Disable specified installers
267
- foreach ($disable as $key => $installer) {
268
- if (is_string($installer) && key_exists($installer, $this->supportedTypes)) {
269
- unset($this->supportedTypes[$installer]);
270
- }
271
- }
272
- }
273
- }
274
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ItopInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class ItopInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'extension' => 'extensions/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/JoomlaInstaller.php DELETED
@@ -1,15 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class JoomlaInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'component' => 'components/{$name}/',
8
- 'module' => 'modules/{$name}/',
9
- 'template' => 'templates/{$name}/',
10
- 'plugin' => 'plugins/{$name}/',
11
- 'library' => 'libraries/{$name}/',
12
- );
13
-
14
- // TODO: Add inflector for mod_ and com_ names
15
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php DELETED
@@ -1,18 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- *
6
- * Installer for kanboard plugins
7
- *
8
- * kanboard.net
9
- *
10
- * Class KanboardInstaller
11
- * @package Composer\Installers
12
- */
13
- class KanboardInstaller extends BaseInstaller
14
- {
15
- protected $locations = array(
16
- 'plugin' => 'plugins/{$name}/',
17
- );
18
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/KirbyInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class KirbyInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'site/plugins/{$name}/',
8
- 'field' => 'site/fields/{$name}/',
9
- 'tag' => 'site/tags/{$name}/'
10
- );
11
- }
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class KodiCMSInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'cms/plugins/{$name}/',
8
- 'media' => 'cms/media/vendor/{$name}/'
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class KohanaInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'modules/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php DELETED
@@ -1,27 +0,0 @@
1
- <?php
2
-
3
- namespace Composer\Installers;
4
-
5
- class LanManagementSystemInstaller extends BaseInstaller
6
- {
7
-
8
- protected $locations = array(
9
- 'plugin' => 'plugins/{$name}/',
10
- 'template' => 'templates/{$name}/',
11
- 'document-template' => 'documents/templates/{$name}/',
12
- 'userpanel-module' => 'userpanel/modules/{$name}/',
13
- );
14
-
15
- /**
16
- * Format package name to CamelCase
17
- */
18
- public function inflectPackageVars($vars)
19
- {
20
- $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
21
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
22
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
23
-
24
- return $vars;
25
- }
26
-
27
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class LaravelInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'library' => 'libraries/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class LavaLiteInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'package' => 'packages/{$vendor}/{$name}/',
8
- 'theme' => 'public/themes/{$name}/',
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class LithiumInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'library' => 'libraries/{$name}/',
8
- 'source' => 'libraries/_source/{$name}/',
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class MODULEWorkInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'modules/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- * An installer to handle MODX Evolution specifics when installing packages.
6
- */
7
- class MODXEvoInstaller extends BaseInstaller
8
- {
9
- protected $locations = array(
10
- 'snippet' => 'assets/snippets/{$name}/',
11
- 'plugin' => 'assets/plugins/{$name}/',
12
- 'module' => 'assets/modules/{$name}/',
13
- 'template' => 'assets/templates/{$name}/',
14
- 'lib' => 'assets/lib/{$name}/'
15
- );
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class MagentoInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'theme' => 'app/design/frontend/{$name}/',
8
- 'skin' => 'skin/frontend/default/{$name}/',
9
- 'library' => 'lib/{$name}/',
10
- );
11
- }
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php DELETED
@@ -1,37 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- * Plugin/theme installer for majima
6
- * @author David Neustadt
7
- */
8
- class MajimaInstaller extends BaseInstaller
9
- {
10
- protected $locations = array(
11
- 'plugin' => 'plugins/{$name}/',
12
- );
13
-
14
- /**
15
- * Transforms the names
16
- * @param array $vars
17
- * @return array
18
- */
19
- public function inflectPackageVars($vars)
20
- {
21
- return $this->correctPluginName($vars);
22
- }
23
-
24
- /**
25
- * Change hyphenated names to camelcase
26
- * @param array $vars
27
- * @return array
28
- */
29
- private function correctPluginName($vars)
30
- {
31
- $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) {
32
- return strtoupper($matches[0][1]);
33
- }, $vars['name']);
34
- $vars['name'] = ucfirst($camelCasedName);
35
- return $vars;
36
- }
37
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/MakoInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class MakoInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'package' => 'app/packages/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/MauticInstaller.php DELETED
@@ -1,25 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class MauticInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'plugins/{$name}/',
8
- 'theme' => 'themes/{$name}/',
9
- );
10
-
11
- /**
12
- * Format package name of mautic-plugins to CamelCase
13
- */
14
- public function inflectPackageVars($vars)
15
- {
16
- if ($vars['type'] == 'mautic-plugin') {
17
- $vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) {
18
- return strtoupper($matches[0][1]);
19
- }, ucfirst($vars['name']));
20
- }
21
-
22
- return $vars;
23
- }
24
-
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/MayaInstaller.php DELETED
@@ -1,33 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class MayaInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'modules/{$name}/',
8
- );
9
-
10
- /**
11
- * Format package name.
12
- *
13
- * For package type maya-module, cut off a trailing '-module' if present.
14
- *
15
- */
16
- public function inflectPackageVars($vars)
17
- {
18
- if ($vars['type'] === 'maya-module') {
19
- return $this->inflectModuleVars($vars);
20
- }
21
-
22
- return $vars;
23
- }
24
-
25
- protected function inflectModuleVars($vars)
26
- {
27
- $vars['name'] = preg_replace('/-module$/', '', $vars['name']);
28
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
29
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
30
-
31
- return $vars;
32
- }
33
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php DELETED
@@ -1,51 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class MediaWikiInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'core' => 'core/',
8
- 'extension' => 'extensions/{$name}/',
9
- 'skin' => 'skins/{$name}/',
10
- );
11
-
12
- /**
13
- * Format package name.
14
- *
15
- * For package type mediawiki-extension, cut off a trailing '-extension' if present and transform
16
- * to CamelCase keeping existing uppercase chars.
17
- *
18
- * For package type mediawiki-skin, cut off a trailing '-skin' if present.
19
- *
20
- */
21
- public function inflectPackageVars($vars)
22
- {
23
-
24
- if ($vars['type'] === 'mediawiki-extension') {
25
- return $this->inflectExtensionVars($vars);
26
- }
27
-
28
- if ($vars['type'] === 'mediawiki-skin') {
29
- return $this->inflectSkinVars($vars);
30
- }
31
-
32
- return $vars;
33
- }
34
-
35
- protected function inflectExtensionVars($vars)
36
- {
37
- $vars['name'] = preg_replace('/-extension$/', '', $vars['name']);
38
- $vars['name'] = str_replace('-', ' ', $vars['name']);
39
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
40
-
41
- return $vars;
42
- }
43
-
44
- protected function inflectSkinVars($vars)
45
- {
46
- $vars['name'] = preg_replace('/-skin$/', '', $vars['name']);
47
-
48
- return $vars;
49
- }
50
-
51
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php DELETED
@@ -1,111 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class MicroweberInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'userfiles/modules/{$name}/',
8
- 'module-skin' => 'userfiles/modules/{$name}/templates/',
9
- 'template' => 'userfiles/templates/{$name}/',
10
- 'element' => 'userfiles/elements/{$name}/',
11
- 'vendor' => 'vendor/{$name}/',
12
- 'components' => 'components/{$name}/'
13
- );
14
-
15
- /**
16
- * Format package name.
17
- *
18
- * For package type microweber-module, cut off a trailing '-module' if present
19
- *
20
- * For package type microweber-template, cut off a trailing '-template' if present.
21
- *
22
- */
23
- public function inflectPackageVars($vars)
24
- {
25
- if ($vars['type'] === 'microweber-template') {
26
- return $this->inflectTemplateVars($vars);
27
- }
28
- if ($vars['type'] === 'microweber-templates') {
29
- return $this->inflectTemplatesVars($vars);
30
- }
31
- if ($vars['type'] === 'microweber-core') {
32
- return $this->inflectCoreVars($vars);
33
- }
34
- if ($vars['type'] === 'microweber-adapter') {
35
- return $this->inflectCoreVars($vars);
36
- }
37
- if ($vars['type'] === 'microweber-module') {
38
- return $this->inflectModuleVars($vars);
39
- }
40
- if ($vars['type'] === 'microweber-modules') {
41
- return $this->inflectModulesVars($vars);
42
- }
43
- if ($vars['type'] === 'microweber-skin') {
44
- return $this->inflectSkinVars($vars);
45
- }
46
- if ($vars['type'] === 'microweber-element' or $vars['type'] === 'microweber-elements') {
47
- return $this->inflectElementVars($vars);
48
- }
49
-
50
- return $vars;
51
- }
52
-
53
- protected function inflectTemplateVars($vars)
54
- {
55
- $vars['name'] = preg_replace('/-template$/', '', $vars['name']);
56
- $vars['name'] = preg_replace('/template-$/', '', $vars['name']);
57
-
58
- return $vars;
59
- }
60
-
61
- protected function inflectTemplatesVars($vars)
62
- {
63
- $vars['name'] = preg_replace('/-templates$/', '', $vars['name']);
64
- $vars['name'] = preg_replace('/templates-$/', '', $vars['name']);
65
-
66
- return $vars;
67
- }
68
-
69
- protected function inflectCoreVars($vars)
70
- {
71
- $vars['name'] = preg_replace('/-providers$/', '', $vars['name']);
72
- $vars['name'] = preg_replace('/-provider$/', '', $vars['name']);
73
- $vars['name'] = preg_replace('/-adapter$/', '', $vars['name']);
74
-
75
- return $vars;
76
- }
77
-
78
- protected function inflectModuleVars($vars)
79
- {
80
- $vars['name'] = preg_replace('/-module$/', '', $vars['name']);
81
- $vars['name'] = preg_replace('/module-$/', '', $vars['name']);
82
-
83
- return $vars;
84
- }
85
-
86
- protected function inflectModulesVars($vars)
87
- {
88
- $vars['name'] = preg_replace('/-modules$/', '', $vars['name']);
89
- $vars['name'] = preg_replace('/modules-$/', '', $vars['name']);
90
-
91
- return $vars;
92
- }
93
-
94
- protected function inflectSkinVars($vars)
95
- {
96
- $vars['name'] = preg_replace('/-skin$/', '', $vars['name']);
97
- $vars['name'] = preg_replace('/skin-$/', '', $vars['name']);
98
-
99
- return $vars;
100
- }
101
-
102
- protected function inflectElementVars($vars)
103
- {
104
- $vars['name'] = preg_replace('/-elements$/', '', $vars['name']);
105
- $vars['name'] = preg_replace('/elements-$/', '', $vars['name']);
106
- $vars['name'] = preg_replace('/-element$/', '', $vars['name']);
107
- $vars['name'] = preg_replace('/element-$/', '', $vars['name']);
108
-
109
- return $vars;
110
- }
111
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ModxInstaller.php DELETED
@@ -1,12 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- * An installer to handle MODX specifics when installing packages.
6
- */
7
- class ModxInstaller extends BaseInstaller
8
- {
9
- protected $locations = array(
10
- 'extra' => 'core/packages/{$name}/'
11
- );
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class MoodleInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'mod' => 'mod/{$name}/',
8
- 'admin_report' => 'admin/report/{$name}/',
9
- 'atto' => 'lib/editor/atto/plugins/{$name}/',
10
- 'tool' => 'admin/tool/{$name}/',
11
- 'assignment' => 'mod/assignment/type/{$name}/',
12
- 'assignsubmission' => 'mod/assign/submission/{$name}/',
13
- 'assignfeedback' => 'mod/assign/feedback/{$name}/',
14
- 'auth' => 'auth/{$name}/',
15
- 'availability' => 'availability/condition/{$name}/',
16
- 'block' => 'blocks/{$name}/',
17
- 'booktool' => 'mod/book/tool/{$name}/',
18
- 'cachestore' => 'cache/stores/{$name}/',
19
- 'cachelock' => 'cache/locks/{$name}/',
20
- 'calendartype' => 'calendar/type/{$name}/',
21
- 'format' => 'course/format/{$name}/',
22
- 'coursereport' => 'course/report/{$name}/',
23
- 'datafield' => 'mod/data/field/{$name}/',
24
- 'datapreset' => 'mod/data/preset/{$name}/',
25
- 'editor' => 'lib/editor/{$name}/',
26
- 'enrol' => 'enrol/{$name}/',
27
- 'filter' => 'filter/{$name}/',
28
- 'gradeexport' => 'grade/export/{$name}/',
29
- 'gradeimport' => 'grade/import/{$name}/',
30
- 'gradereport' => 'grade/report/{$name}/',
31
- 'gradingform' => 'grade/grading/form/{$name}/',
32
- 'local' => 'local/{$name}/',
33
- 'logstore' => 'admin/tool/log/store/{$name}/',
34
- 'ltisource' => 'mod/lti/source/{$name}/',
35
- 'ltiservice' => 'mod/lti/service/{$name}/',
36
- 'message' => 'message/output/{$name}/',
37
- 'mnetservice' => 'mnet/service/{$name}/',
38
- 'plagiarism' => 'plagiarism/{$name}/',
39
- 'portfolio' => 'portfolio/{$name}/',
40
- 'qbehaviour' => 'question/behaviour/{$name}/',
41
- 'qformat' => 'question/format/{$name}/',
42
- 'qtype' => 'question/type/{$name}/',
43
- 'quizaccess' => 'mod/quiz/accessrule/{$name}/',
44
- 'quiz' => 'mod/quiz/report/{$name}/',
45
- 'report' => 'report/{$name}/',
46
- 'repository' => 'repository/{$name}/',
47
- 'scormreport' => 'mod/scorm/report/{$name}/',
48
- 'search' => 'search/engine/{$name}/',
49
- 'theme' => 'theme/{$name}/',
50
- 'tinymce' => 'lib/editor/tinymce/plugins/{$name}/',
51
- 'profilefield' => 'user/profile/field/{$name}/',
52
- 'webservice' => 'webservice/{$name}/',
53
- 'workshopallocation' => 'mod/workshop/allocation/{$name}/',
54
- 'workshopeval' => 'mod/workshop/eval/{$name}/',
55
- 'workshopform' => 'mod/workshop/form/{$name}/'
56
- );
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php DELETED
@@ -1,47 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class OctoberInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'modules/{$name}/',
8
- 'plugin' => 'plugins/{$vendor}/{$name}/',
9
- 'theme' => 'themes/{$name}/'
10
- );
11
-
12
- /**
13
- * Format package name.
14
- *
15
- * For package type october-plugin, cut off a trailing '-plugin' if present.
16
- *
17
- * For package type october-theme, cut off a trailing '-theme' if present.
18
- *
19
- */
20
- public function inflectPackageVars($vars)
21
- {
22
- if ($vars['type'] === 'october-plugin') {
23
- return $this->inflectPluginVars($vars);
24
- }
25
-
26
- if ($vars['type'] === 'october-theme') {
27
- return $this->inflectThemeVars($vars);
28
- }
29
-
30
- return $vars;
31
- }
32
-
33
- protected function inflectPluginVars($vars)
34
- {
35
- $vars['name'] = preg_replace('/^oc-|-plugin$/', '', $vars['name']);
36
- $vars['vendor'] = preg_replace('/[^a-z0-9_]/i', '', $vars['vendor']);
37
-
38
- return $vars;
39
- }
40
-
41
- protected function inflectThemeVars($vars)
42
- {
43
- $vars['name'] = preg_replace('/^oc-|-theme$/', '', $vars['name']);
44
-
45
- return $vars;
46
- }
47
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class OntoWikiInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'extension' => 'extensions/{$name}/',
8
- 'theme' => 'extensions/themes/{$name}/',
9
- 'translation' => 'extensions/translations/{$name}/',
10
- );
11
-
12
- /**
13
- * Format package name to lower case and remove ".ontowiki" suffix
14
- */
15
- public function inflectPackageVars($vars)
16
- {
17
- $vars['name'] = strtolower($vars['name']);
18
- $vars['name'] = preg_replace('/.ontowiki$/', '', $vars['name']);
19
- $vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
20
- $vars['name'] = preg_replace('/-translation$/', '', $vars['name']);
21
-
22
- return $vars;
23
- }
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php DELETED
@@ -1,14 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
-
5
- class OsclassInstaller extends BaseInstaller
6
- {
7
-
8
- protected $locations = array(
9
- 'plugin' => 'oc-content/plugins/{$name}/',
10
- 'theme' => 'oc-content/themes/{$name}/',
11
- 'language' => 'oc-content/languages/{$name}/',
12
- );
13
-
14
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/OxidInstaller.php DELETED
@@ -1,59 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- use Composer\Package\PackageInterface;
5
-
6
- class OxidInstaller extends BaseInstaller
7
- {
8
- const VENDOR_PATTERN = '/^modules\/(?P<vendor>.+)\/.+/';
9
-
10
- protected $locations = array(
11
- 'module' => 'modules/{$name}/',
12
- 'theme' => 'application/views/{$name}/',
13
- 'out' => 'out/{$name}/',
14
- );
15
-
16
- /**
17
- * getInstallPath
18
- *
19
- * @param PackageInterface $package
20
- * @param string $frameworkType
21
- * @return void
22
- */
23
- public function getInstallPath(PackageInterface $package, $frameworkType = '')
24
- {
25
- $installPath = parent::getInstallPath($package, $frameworkType);
26
- $type = $this->package->getType();
27
- if ($type === 'oxid-module') {
28
- $this->prepareVendorDirectory($installPath);
29
- }
30
- return $installPath;
31
- }
32
-
33
- /**
34
- * prepareVendorDirectory
35
- *
36
- * Makes sure there is a vendormetadata.php file inside
37
- * the vendor folder if there is a vendor folder.
38
- *
39
- * @param string $installPath
40
- * @return void
41
- */
42
- protected function prepareVendorDirectory($installPath)
43
- {
44
- $matches = '';
45
- $hasVendorDirectory = preg_match(self::VENDOR_PATTERN, $installPath, $matches);
46
- if (!$hasVendorDirectory) {
47
- return;
48
- }
49
-
50
- $vendorDirectory = $matches['vendor'];
51
- $vendorPath = getcwd() . '/modules/' . $vendorDirectory;
52
- if (!file_exists($vendorPath)) {
53
- mkdir($vendorPath, 0755, true);
54
- }
55
-
56
- $vendorMetaDataPath = $vendorPath . '/vendormetadata.php';
57
- touch($vendorMetaDataPath);
58
- }
59
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/PPIInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class PPIInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'modules/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class PhiftyInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'bundle' => 'bundles/{$name}/',
8
- 'library' => 'libraries/{$name}/',
9
- 'framework' => 'frameworks/{$name}/',
10
- );
11
- }
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class PhpBBInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'extension' => 'ext/{$vendor}/{$name}/',
8
- 'language' => 'language/{$name}/',
9
- 'style' => 'styles/{$name}/',
10
- );
11
- }
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/PimcoreInstaller.php DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class PimcoreInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'plugins/{$name}/',
8
- );
9
-
10
- /**
11
- * Format package name to CamelCase
12
- */
13
- public function inflectPackageVars($vars)
14
- {
15
- $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
16
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
17
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
18
-
19
- return $vars;
20
- }
21
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- * Class PiwikInstaller
6
- *
7
- * @package Composer\Installers
8
- */
9
- class PiwikInstaller extends BaseInstaller
10
- {
11
- /**
12
- * @var array
13
- */
14
- protected $locations = array(
15
- 'plugin' => 'plugins/{$name}/',
16
- );
17
-
18
- /**
19
- * Format package name to CamelCase
20
- * @param array $vars
21
- *
22
- * @return array
23
- */
24
- public function inflectPackageVars($vars)
25
- {
26
- $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
27
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
28
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
29
-
30
- return $vars;
31
- }
32
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class PlentymarketsInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => '{$name}/'
8
- );
9
-
10
- /**
11
- * Remove hyphen, "plugin" and format to camelcase
12
- * @param array $vars
13
- *
14
- * @return array
15
- */
16
- public function inflectPackageVars($vars)
17
- {
18
- $vars['name'] = explode("-", $vars['name']);
19
- foreach ($vars['name'] as $key => $name) {
20
- $vars['name'][$key] = ucfirst($vars['name'][$key]);
21
- if (strcasecmp($name, "Plugin") == 0) {
22
- unset($vars['name'][$key]);
23
- }
24
- }
25
- $vars['name'] = implode("",$vars['name']);
26
-
27
- return $vars;
28
- }
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/Plugin.php DELETED
@@ -1,17 +0,0 @@
1
- <?php
2
-
3
- namespace Composer\Installers;
4
-
5
- use Composer\Composer;
6
- use Composer\IO\IOInterface;
7
- use Composer\Plugin\PluginInterface;
8
-
9
- class Plugin implements PluginInterface
10
- {
11
-
12
- public function activate(Composer $composer, IOInterface $io)
13
- {
14
- $installer = new Installer($io, $composer);
15
- $composer->getInstallationManager()->addInstaller($installer);
16
- }
17
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/PortoInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class PortoInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'container' => 'app/Containers/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class PrestashopInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'modules/{$name}/',
8
- 'theme' => 'themes/{$name}/',
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
-
3
- namespace Composer\Installers;
4
-
5
- class PuppetInstaller extends BaseInstaller
6
- {
7
-
8
- protected $locations = array(
9
- 'module' => 'modules/{$name}/',
10
- );
11
- }
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php DELETED
@@ -1,63 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class PxcmsInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'app/Modules/{$name}/',
8
- 'theme' => 'themes/{$name}/',
9
- );
10
-
11
- /**
12
- * Format package name.
13
- *
14
- * @param array $vars
15
- *
16
- * @return array
17
- */
18
- public function inflectPackageVars($vars)
19
- {
20
- if ($vars['type'] === 'pxcms-module') {
21
- return $this->inflectModuleVars($vars);
22
- }
23
-
24
- if ($vars['type'] === 'pxcms-theme') {
25
- return $this->inflectThemeVars($vars);
26
- }
27
-
28
- return $vars;
29
- }
30
-
31
- /**
32
- * For package type pxcms-module, cut off a trailing '-plugin' if present.
33
- *
34
- * return string
35
- */
36
- protected function inflectModuleVars($vars)
37
- {
38
- $vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy)
39
- $vars['name'] = str_replace('module-', '', $vars['name']); // strip out module-
40
- $vars['name'] = preg_replace('/-module$/', '', $vars['name']); // strip out -module
41
- $vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s
42
- $vars['name'] = ucwords($vars['name']); // make module name camelcased
43
-
44
- return $vars;
45
- }
46
-
47
-
48
- /**
49
- * For package type pxcms-module, cut off a trailing '-plugin' if present.
50
- *
51
- * return string
52
- */
53
- protected function inflectThemeVars($vars)
54
- {
55
- $vars['name'] = str_replace('pxcms-', '', $vars['name']); // strip out pxcms- just incase (legacy)
56
- $vars['name'] = str_replace('theme-', '', $vars['name']); // strip out theme-
57
- $vars['name'] = preg_replace('/-theme$/', '', $vars['name']); // strip out -theme
58
- $vars['name'] = str_replace('-', '_', $vars['name']); // make -'s be _'s
59
- $vars['name'] = ucwords($vars['name']); // make module name camelcased
60
-
61
- return $vars;
62
- }
63
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class RadPHPInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'bundle' => 'src/{$name}/'
8
- );
9
-
10
- /**
11
- * Format package name to CamelCase
12
- */
13
- public function inflectPackageVars($vars)
14
- {
15
- $nameParts = explode('/', $vars['name']);
16
- foreach ($nameParts as &$value) {
17
- $value = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $value));
18
- $value = str_replace(array('-', '_'), ' ', $value);
19
- $value = str_replace(' ', '', ucwords($value));
20
- }
21
- $vars['name'] = implode('/', $nameParts);
22
- return $vars;
23
- }
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class ReIndexInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'theme' => 'themes/{$name}/',
8
- 'plugin' => 'plugins/{$name}/'
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class RedaxoInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'addon' => 'redaxo/include/addons/{$name}/',
8
- 'bestyle-plugin' => 'redaxo/include/addons/be_style/plugins/{$name}/'
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php DELETED
@@ -1,22 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class RoundcubeInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'plugins/{$name}/',
8
- );
9
-
10
- /**
11
- * Lowercase name and changes the name to a underscores
12
- *
13
- * @param array $vars
14
- * @return array
15
- */
16
- public function inflectPackageVars($vars)
17
- {
18
- $vars['name'] = strtolower(str_replace('-', '_', $vars['name']));
19
-
20
- return $vars;
21
- }
22
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/SMFInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class SMFInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'Sources/{$name}/',
8
- 'theme' => 'Themes/{$name}/',
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php DELETED
@@ -1,60 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- * Plugin/theme installer for shopware
6
- * @author Benjamin Boit
7
- */
8
- class ShopwareInstaller extends BaseInstaller
9
- {
10
- protected $locations = array(
11
- 'backend-plugin' => 'engine/Shopware/Plugins/Local/Backend/{$name}/',
12
- 'core-plugin' => 'engine/Shopware/Plugins/Local/Core/{$name}/',
13
- 'frontend-plugin' => 'engine/Shopware/Plugins/Local/Frontend/{$name}/',
14
- 'theme' => 'templates/{$name}/',
15
- 'plugin' => 'custom/plugins/{$name}/',
16
- 'frontend-theme' => 'themes/Frontend/{$name}/',
17
- );
18
-
19
- /**
20
- * Transforms the names
21
- * @param array $vars
22
- * @return array
23
- */
24
- public function inflectPackageVars($vars)
25
- {
26
- if ($vars['type'] === 'shopware-theme') {
27
- return $this->correctThemeName($vars);
28
- }
29
-
30
- return $this->correctPluginName($vars);
31
- }
32
-
33
- /**
34
- * Changes the name to a camelcased combination of vendor and name
35
- * @param array $vars
36
- * @return array
37
- */
38
- private function correctPluginName($vars)
39
- {
40
- $camelCasedName = preg_replace_callback('/(-[a-z])/', function ($matches) {
41
- return strtoupper($matches[0][1]);
42
- }, $vars['name']);
43
-
44
- $vars['name'] = ucfirst($vars['vendor']) . ucfirst($camelCasedName);
45
-
46
- return $vars;
47
- }
48
-
49
- /**
50
- * Changes the name to a underscore separated name
51
- * @param array $vars
52
- * @return array
53
- */
54
- private function correctThemeName($vars)
55
- {
56
- $vars['name'] = str_replace('-', '_', $vars['name']);
57
-
58
- return $vars;
59
- }
60
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php DELETED
@@ -1,35 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- use Composer\Package\PackageInterface;
5
-
6
- class SilverStripeInstaller extends BaseInstaller
7
- {
8
- protected $locations = array(
9
- 'module' => '{$name}/',
10
- 'theme' => 'themes/{$name}/',
11
- );
12
-
13
- /**
14
- * Return the install path based on package type.
15
- *
16
- * Relies on built-in BaseInstaller behaviour with one exception: silverstripe/framework
17
- * must be installed to 'sapphire' and not 'framework' if the version is <3.0.0
18
- *
19
- * @param PackageInterface $package
20
- * @param string $frameworkType
21
- * @return string
22
- */
23
- public function getInstallPath(PackageInterface $package, $frameworkType = '')
24
- {
25
- if (
26
- $package->getName() == 'silverstripe/framework'
27
- && preg_match('/^\d+\.\d+\.\d+/', $package->getVersion())
28
- && version_compare($package->getVersion(), '2.999.999') < 0
29
- ) {
30
- return $this->templatePath($this->locations['module'], array('name' => 'sapphire'));
31
- }
32
-
33
- return parent::getInstallPath($package, $frameworkType);
34
- }
35
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php DELETED
@@ -1,25 +0,0 @@
1
- <?php
2
-
3
- namespace Composer\Installers;
4
-
5
- class SiteDirectInstaller extends BaseInstaller
6
- {
7
- protected $locations = array(
8
- 'module' => 'modules/{$vendor}/{$name}/',
9
- 'plugin' => 'plugins/{$vendor}/{$name}/'
10
- );
11
-
12
- public function inflectPackageVars($vars)
13
- {
14
- return $this->parseVars($vars);
15
- }
16
-
17
- protected function parseVars($vars)
18
- {
19
- $vars['vendor'] = strtolower($vars['vendor']) == 'sitedirect' ? 'SiteDirect' : $vars['vendor'];
20
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
21
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
22
-
23
- return $vars;
24
- }
25
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php DELETED
@@ -1,49 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class SyDESInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'app/modules/{$name}/',
8
- 'theme' => 'themes/{$name}/',
9
- );
10
-
11
- /**
12
- * Format module name.
13
- *
14
- * Strip `sydes-` prefix and a trailing '-theme' or '-module' from package name if present.
15
- *
16
- * @param array @vars
17
- *
18
- * @return array
19
- */
20
- public function inflectPackageVars($vars)
21
- {
22
- if ($vars['type'] == 'sydes-module') {
23
- return $this->inflectModuleVars($vars);
24
- }
25
-
26
- if ($vars['type'] === 'sydes-theme') {
27
- return $this->inflectThemeVars($vars);
28
- }
29
-
30
- return $vars;
31
- }
32
-
33
- public function inflectModuleVars($vars)
34
- {
35
- $vars['name'] = preg_replace('/(^sydes-|-module$)/i', '', $vars['name']);
36
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
37
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
38
-
39
- return $vars;
40
- }
41
-
42
- protected function inflectThemeVars($vars)
43
- {
44
- $vars['name'] = preg_replace('/(^sydes-|-theme$)/', '', $vars['name']);
45
- $vars['name'] = strtolower($vars['name']);
46
-
47
- return $vars;
48
- }
49
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/Symfony1Installer.php DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- * Plugin installer for symfony 1.x
6
- *
7
- * @author Jérôme Tamarelle <jerome@tamarelle.net>
8
- */
9
- class Symfony1Installer extends BaseInstaller
10
- {
11
- protected $locations = array(
12
- 'plugin' => 'plugins/{$name}/',
13
- );
14
-
15
- /**
16
- * Format package name to CamelCase
17
- */
18
- public function inflectPackageVars($vars)
19
- {
20
- $vars['name'] = preg_replace_callback('/(-[a-z])/', function ($matches) {
21
- return strtoupper($matches[0][1]);
22
- }, $vars['name']);
23
-
24
- return $vars;
25
- }
26
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/TYPO3CmsInstaller.php DELETED
@@ -1,16 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- * Extension installer for TYPO3 CMS
6
- *
7
- * @deprecated since 1.0.25, use https://packagist.org/packages/typo3/cms-composer-installers instead
8
- *
9
- * @author Sascha Egerer <sascha.egerer@dkd.de>
10
- */
11
- class TYPO3CmsInstaller extends BaseInstaller
12
- {
13
- protected $locations = array(
14
- 'extension' => 'typo3conf/ext/{$name}/',
15
- );
16
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/TYPO3FlowInstaller.php DELETED
@@ -1,38 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- /**
5
- * An installer to handle TYPO3 Flow specifics when installing packages.
6
- */
7
- class TYPO3FlowInstaller extends BaseInstaller
8
- {
9
- protected $locations = array(
10
- 'package' => 'Packages/Application/{$name}/',
11
- 'framework' => 'Packages/Framework/{$name}/',
12
- 'plugin' => 'Packages/Plugins/{$name}/',
13
- 'site' => 'Packages/Sites/{$name}/',
14
- 'boilerplate' => 'Packages/Boilerplates/{$name}/',
15
- 'build' => 'Build/{$name}/',
16
- );
17
-
18
- /**
19
- * Modify the package name to be a TYPO3 Flow style key.
20
- *
21
- * @param array $vars
22
- * @return array
23
- */
24
- public function inflectPackageVars($vars)
25
- {
26
- $autoload = $this->package->getAutoload();
27
- if (isset($autoload['psr-0']) && is_array($autoload['psr-0'])) {
28
- $namespace = key($autoload['psr-0']);
29
- $vars['name'] = str_replace('\\', '.', $namespace);
30
- }
31
- if (isset($autoload['psr-4']) && is_array($autoload['psr-4'])) {
32
- $namespace = key($autoload['psr-4']);
33
- $vars['name'] = rtrim(str_replace('\\', '.', $namespace), '.');
34
- }
35
-
36
- return $vars;
37
- }
38
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php DELETED
@@ -1,12 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class TheliaInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'local/modules/{$name}/',
8
- 'frontoffice-template' => 'templates/frontOffice/{$name}/',
9
- 'backoffice-template' => 'templates/backOffice/{$name}/',
10
- 'email-template' => 'templates/email/{$name}/',
11
- );
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/TuskInstaller.php DELETED
@@ -1,14 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
- /**
4
- * Composer installer for 3rd party Tusk utilities
5
- * @author Drew Ewing <drew@phenocode.com>
6
- */
7
- class TuskInstaller extends BaseInstaller
8
- {
9
- protected $locations = array(
10
- 'task' => '.tusk/tasks/{$name}/',
11
- 'command' => '.tusk/commands/{$name}/',
12
- 'asset' => 'assets/tusk/{$name}/',
13
- );
14
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class UserFrostingInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'sprinkle' => 'app/sprinkles/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class VanillaInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'plugins/{$name}/',
8
- 'theme' => 'themes/{$name}/',
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php DELETED
@@ -1,49 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class VgmcpInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'bundle' => 'src/{$vendor}/{$name}/',
8
- 'theme' => 'themes/{$name}/'
9
- );
10
-
11
- /**
12
- * Format package name.
13
- *
14
- * For package type vgmcp-bundle, cut off a trailing '-bundle' if present.
15
- *
16
- * For package type vgmcp-theme, cut off a trailing '-theme' if present.
17
- *
18
- */
19
- public function inflectPackageVars($vars)
20
- {
21
- if ($vars['type'] === 'vgmcp-bundle') {
22
- return $this->inflectPluginVars($vars);
23
- }
24
-
25
- if ($vars['type'] === 'vgmcp-theme') {
26
- return $this->inflectThemeVars($vars);
27
- }
28
-
29
- return $vars;
30
- }
31
-
32
- protected function inflectPluginVars($vars)
33
- {
34
- $vars['name'] = preg_replace('/-bundle$/', '', $vars['name']);
35
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
36
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
37
-
38
- return $vars;
39
- }
40
-
41
- protected function inflectThemeVars($vars)
42
- {
43
- $vars['name'] = preg_replace('/-theme$/', '', $vars['name']);
44
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
45
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
46
-
47
- return $vars;
48
- }
49
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
-
3
- namespace Composer\Installers;
4
-
5
- class WHMCSInstaller extends BaseInstaller
6
- {
7
- protected $locations = array(
8
- 'gateway' => 'modules/gateways/{$name}/',
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php DELETED
@@ -1,9 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class WolfCMSInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'wolf/plugins/{$name}/',
8
- );
9
- }
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php DELETED
@@ -1,12 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class WordPressInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'plugin' => 'wp-content/plugins/{$name}/',
8
- 'theme' => 'wp-content/themes/{$name}/',
9
- 'muplugin' => 'wp-content/mu-plugins/{$name}/',
10
- 'dropin' => 'wp-content/{$name}/',
11
- );
12
- }
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/YawikInstaller.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
- /**
3
- * Created by PhpStorm.
4
- * User: cbleek
5
- * Date: 25.03.16
6
- * Time: 20:55
7
- */
8
-
9
- namespace Composer\Installers;
10
-
11
-
12
- class YawikInstaller extends BaseInstaller
13
- {
14
- protected $locations = array(
15
- 'module' => 'module/{$name}/',
16
- );
17
-
18
- /**
19
- * Format package name to CamelCase
20
- * @param array $vars
21
- *
22
- * @return array
23
- */
24
- public function inflectPackageVars($vars)
25
- {
26
- $vars['name'] = strtolower(preg_replace('/(?<=\\w)([A-Z])/', '_\\1', $vars['name']));
27
- $vars['name'] = str_replace(array('-', '_'), ' ', $vars['name']);
28
- $vars['name'] = str_replace(' ', '', ucwords($vars['name']));
29
-
30
- return $vars;
31
- }
32
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ZendInstaller.php DELETED
@@ -1,11 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class ZendInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'library' => 'library/{$name}/',
8
- 'extra' => 'extras/library/{$name}/',
9
- 'module' => 'module/{$name}/',
10
- );
11
- }
 
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- namespace Composer\Installers;
3
-
4
- class ZikulaInstaller extends BaseInstaller
5
- {
6
- protected $locations = array(
7
- 'module' => 'modules/{$vendor}-{$name}/',
8
- 'theme' => 'themes/{$vendor}-{$name}/'
9
- );
10
- }
 
 
 
 
 
 
 
 
 
 
vendor/composer/installers/src/bootstrap.php DELETED
@@ -1,13 +0,0 @@
1
- <?php
2
- function includeIfExists($file)
3
- {
4
- if (file_exists($file)) {
5
- return include $file;
6
- }
7
- }
8
- if ((!$loader = includeIfExists(__DIR__ . '/../vendor/autoload.php')) && (!$loader = includeIfExists(__DIR__ . '/../../../autoload.php'))) {
9
- die('You must set up the project dependencies, run the following commands:'.PHP_EOL.
10
- 'curl -s http://getcomposer.org/installer | php'.PHP_EOL.
11
- 'php composer.phar install'.PHP_EOL);
12
- }
13
- return $loader;