WooCommerce PayPal Payments - Version 1.3.0

Version Description

  • Add - Client-side vaulting and allow WooCommerce Subscriptions product renewals through payment tokens. #134
  • Add - Send transaction ids to woocommerce. #125
  • Fix - Validate checkout form before sending request to PayPal #137
  • Fix - Duplicate Invoice Id error. #143
  • Fix - Unblock UI if Credit Card payment failed. #122
  • Fix - Detected container element removed from DOM. #123
  • Fix - Remove disabling credit for UK. #127
  • Fix - Show WC message on account creating error. #136
Download this release

Release Info

Developer woothemes
Plugin Icon 128x128 WooCommerce PayPal Payments
Version 1.3.0
Comparing to
See all releases

Code changes from version 1.2.1 to 1.3.0

Files changed (60) hide show
  1. changelog.txt +10 -0
  2. modules/ppcp-api-client/src/Endpoint/class-orderendpoint.php +17 -4
  3. modules/ppcp-api-client/src/Entity/class-paymenttoken.php +26 -7
  4. modules/ppcp-api-client/src/Factory/class-paymenttokenfactory.php +3 -1
  5. modules/ppcp-api-client/src/Repository/class-cartrepository.php +0 -1
  6. modules/ppcp-button/assets/js/button.js +1 -1
  7. modules/ppcp-button/assets/js/button.js.map +1 -1
  8. modules/ppcp-button/resources/js/modules/ActionHandler/CheckoutActionHandler.js +12 -1
  9. modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js +41 -11
  10. modules/ppcp-button/resources/js/modules/ContextBootstrap/PayNowBootstrap.js +5 -0
  11. modules/ppcp-button/resources/js/modules/DataClientIdAttributeHandler.js +3 -4
  12. modules/ppcp-button/resources/js/modules/ErrorHandler.js +40 -2
  13. modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js +5 -7
  14. modules/ppcp-button/services.php +3 -3
  15. modules/ppcp-button/src/Assets/class-smartbutton.php +102 -71
  16. modules/ppcp-button/src/Endpoint/class-approveorderendpoint.php +1 -1
  17. modules/ppcp-button/src/Endpoint/class-createorderendpoint.php +65 -32
  18. modules/ppcp-button/src/Endpoint/class-dataclientidendpoint.php +1 -1
  19. modules/ppcp-button/src/Helper/class-messagesapply.php +2 -0
  20. modules/ppcp-button/src/Helper/class-messagesdisclaimers.php +53 -0
  21. modules/ppcp-subscription/src/Repository/class-paymenttokenrepository.php +16 -0
  22. modules/ppcp-subscription/src/class-renewalhandler.php +25 -18
  23. modules/ppcp-subscription/src/class-subscriptionmodule.php +30 -6
  24. modules/ppcp-wc-gateway/assets/js/gateway-settings.js +2 -0
  25. modules/ppcp-wc-gateway/assets/js/gateway-settings.js.map +1 -0
  26. modules/ppcp-wc-gateway/package.json +21 -0
  27. modules/ppcp-wc-gateway/resources/js/gateway-settings.js +34 -0
  28. modules/ppcp-wc-gateway/services.php +77 -50
  29. modules/ppcp-wc-gateway/src/Assets/class-settingspageassets.php +99 -0
  30. modules/ppcp-wc-gateway/src/Checkout/class-disablegateways.php +4 -1
  31. modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php +71 -5
  32. modules/ppcp-wc-gateway/src/Gateway/class-paypalgateway.php +39 -16
  33. modules/ppcp-wc-gateway/src/Gateway/class-processpaymenttrait.php +96 -7
  34. modules/ppcp-wc-gateway/src/Gateway/class-transactionurlprovider.php +59 -0
  35. modules/ppcp-wc-gateway/src/Gateway/class-wcgatewayinterface.php +0 -18
  36. modules/ppcp-wc-gateway/src/Processor/class-orderprocessor.php +84 -27
  37. modules/ppcp-wc-gateway/src/Settings/class-settingslistener.php +28 -0
  38. modules/ppcp-wc-gateway/src/Settings/class-settingsrenderer.php +100 -15
  39. modules/ppcp-wc-gateway/src/class-wcgatewaymodule.php +10 -0
  40. modules/ppcp-wc-gateway/webpack.config.js +22 -0
  41. modules/ppcp-wc-gateway/yarn.lock +3908 -0
  42. package-lock.json +0 -13
  43. patchwork.json +0 -5
  44. readme.txt +15 -5
  45. vendor/autoload.php +1 -1
  46. vendor/composer/ClassLoader.php +36 -2
  47. vendor/composer/InstalledVersions.php +402 -0
  48. vendor/composer/autoload_classmap.php +4 -1
  49. vendor/composer/autoload_real.php +11 -9
  50. vendor/composer/autoload_static.php +8 -5
  51. vendor/composer/installed.json +714 -646
  52. vendor/composer/installed.php +141 -0
  53. vendor/composer/platform_check.php +26 -0
  54. vendor/dhii/collections-interface/.env.example +2 -0
  55. vendor/dhii/collections-interface/CHANGELOG.md +8 -0
  56. vendor/dhii/collections-interface/README.md +3 -5
  57. vendor/dhii/collections-interface/docker-compose.yml +2 -0
  58. vendor/dhii/collections-interface/docker/Dockerfile +1 -1
  59. vendor/dhii/collections-interface/src/ContainerInterface.php +2 -2
  60. woocommerce-paypal-payments.php +15 -2
changelog.txt CHANGED
@@ -1,5 +1,15 @@
1
  *** Changelog ***
2
 
 
 
 
 
 
 
 
 
 
 
3
  = 1.2.1 - 2021-03-08 =
4
  * Fix - Address compatibility issue with Jetpack.
5
 
1
  *** Changelog ***
2
 
3
+ = 1.3.0 - 2021-04-28 =
4
+ * Add - Client-side vaulting and allow WooCommerce Subscriptions product renewals through payment tokens. #134
5
+ * Add - Send transaction ids to woocommerce. #125
6
+ * Fix - Validate checkout form before sending request to PayPal #137
7
+ * Fix - Duplicate Invoice Id error. #143
8
+ * Fix - Unblock UI if Credit Card payment failed. #122
9
+ * Fix - Detected container element removed from DOM. #123
10
+ * Fix - Remove disabling credit for UK. #127
11
+ * Fix - Show WC message on account creating error. #136
12
+
13
  = 1.2.1 - 2021-03-08 =
14
  * Fix - Address compatibility issue with Jetpack.
15
 
modules/ppcp-api-client/src/Endpoint/class-orderendpoint.php CHANGED
@@ -231,7 +231,11 @@ class OrderEndpoint {
231
  $response = $this->request( $url, $args );
232
  if ( is_wp_error( $response ) ) {
233
  $error = new RuntimeException(
234
- __( 'Could not create order.', 'woocommerce-paypal-payments' )
 
 
 
 
235
  );
236
  $this->logger->log(
237
  'warning',
@@ -252,7 +256,10 @@ class OrderEndpoint {
252
  );
253
  $this->logger->log(
254
  'warning',
255
- $error->getMessage(),
 
 
 
256
  array(
257
  'args' => $args,
258
  'response' => $response,
@@ -321,7 +328,10 @@ class OrderEndpoint {
321
  }
322
  $this->logger->log(
323
  'warning',
324
- $error->getMessage(),
 
 
 
325
  array(
326
  'args' => $args,
327
  'response' => $response,
@@ -394,7 +404,10 @@ class OrderEndpoint {
394
  );
395
  $this->logger->log(
396
  'warning',
397
- $error->getMessage(),
 
 
 
398
  array(
399
  'args' => $args,
400
  'response' => $response,
231
  $response = $this->request( $url, $args );
232
  if ( is_wp_error( $response ) ) {
233
  $error = new RuntimeException(
234
+ sprintf(
235
+ // translators: %s is the error message.
236
+ __( 'Could not create order: %s', 'woocommerce-paypal-payments' ),
237
+ $response->get_error_message()
238
+ )
239
  );
240
  $this->logger->log(
241
  'warning',
256
  );
257
  $this->logger->log(
258
  'warning',
259
+ sprintf(
260
+ 'Failed to create order. PayPal API response: %1$s',
261
+ $error->getMessage()
262
+ ),
263
  array(
264
  'args' => $args,
265
  'response' => $response,
328
  }
329
  $this->logger->log(
330
  'warning',
331
+ sprintf(
332
+ 'Failed to capture order. PayPal API response: %1$s',
333
+ $error->getMessage()
334
+ ),
335
  array(
336
  'args' => $args,
337
  'response' => $response,
404
  );
405
  $this->logger->log(
406
  'warning',
407
+ sprintf(
408
+ 'Failed to authorize order. PayPal API response: %1$s',
409
+ $error->getMessage()
410
+ ),
411
  array(
412
  'args' => $args,
413
  'response' => $response,
modules/ppcp-api-client/src/Entity/class-paymenttoken.php CHANGED
@@ -36,21 +36,30 @@ class PaymentToken {
36
  */
37
  private $type;
38
 
 
 
 
 
 
 
 
39
  /**
40
  * PaymentToken constructor.
41
  *
42
- * @param string $id The Id.
43
- * @param string $type The type.
 
44
  * @throws RuntimeException When the type is not valid.
45
  */
46
- public function __construct( string $id, string $type = self::TYPE_PAYMENT_METHOD_TOKEN ) {
47
  if ( ! in_array( $type, self::VALID_TYPES, true ) ) {
48
  throw new RuntimeException(
49
  __( 'Not a valid payment source type.', 'woocommerce-paypal-payments' )
50
  );
51
  }
52
- $this->id = $id;
53
- $this->type = $type;
 
54
  }
55
 
56
  /**
@@ -71,6 +80,15 @@ class PaymentToken {
71
  return $this->type;
72
  }
73
 
 
 
 
 
 
 
 
 
 
74
  /**
75
  * Returns the object as array.
76
  *
@@ -78,8 +96,9 @@ class PaymentToken {
78
  */
79
  public function to_array(): array {
80
  return array(
81
- 'id' => $this->id(),
82
- 'type' => $this->type(),
 
83
  );
84
  }
85
  }
36
  */
37
  private $type;
38
 
39
+ /**
40
+ * The payment source.
41
+ *
42
+ * @var \stdClass
43
+ */
44
+ private $source;
45
+
46
  /**
47
  * PaymentToken constructor.
48
  *
49
+ * @param string $id The Id.
50
+ * @param string $type The type.
51
+ * @param \stdClass $source The source.
52
  * @throws RuntimeException When the type is not valid.
53
  */
54
+ public function __construct( string $id, string $type = self::TYPE_PAYMENT_METHOD_TOKEN, \stdClass $source ) {
55
  if ( ! in_array( $type, self::VALID_TYPES, true ) ) {
56
  throw new RuntimeException(
57
  __( 'Not a valid payment source type.', 'woocommerce-paypal-payments' )
58
  );
59
  }
60
+ $this->id = $id;
61
+ $this->type = $type;
62
+ $this->source = $source;
63
  }
64
 
65
  /**
80
  return $this->type;
81
  }
82
 
83
+ /**
84
+ * Returns the source.
85
+ *
86
+ * @return \stdClass
87
+ */
88
+ public function source(): \stdClass {
89
+ return $this->source;
90
+ }
91
+
92
  /**
93
  * Returns the object as array.
94
  *
96
  */
97
  public function to_array(): array {
98
  return array(
99
+ 'id' => $this->id(),
100
+ 'type' => $this->type(),
101
+ 'source' => $this->source(),
102
  );
103
  }
104
  }
modules/ppcp-api-client/src/Factory/class-paymenttokenfactory.php CHANGED
@@ -31,9 +31,11 @@ class PaymentTokenFactory {
31
  __( 'No id for payment token given', 'woocommerce-paypal-payments' )
32
  );
33
  }
 
34
  return new PaymentToken(
35
  $data->id,
36
- ( isset( $data->type ) ) ? $data->type : PaymentToken::TYPE_PAYMENT_METHOD_TOKEN
 
37
  );
38
  }
39
 
31
  __( 'No id for payment token given', 'woocommerce-paypal-payments' )
32
  );
33
  }
34
+
35
  return new PaymentToken(
36
  $data->id,
37
+ ( isset( $data->type ) ) ? $data->type : PaymentToken::TYPE_PAYMENT_METHOD_TOKEN,
38
+ $data->source
39
  );
40
  }
41
 
modules/ppcp-api-client/src/Repository/class-cartrepository.php CHANGED
@@ -9,7 +9,6 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\ApiClient\Repository;
11
 
12
- use WooCommerce\PayPalCommerce\ApiClient\Entity\Item;
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
14
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
15
 
9
 
10
  namespace WooCommerce\PayPalCommerce\ApiClient\Repository;
11
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
13
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
14
 
modules/ppcp-button/assets/js/button.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([,function(e,t,r){"use strict";r.r(t);var n=class{constructor(e){this.genericErrorText=e,this.wrapper=document.querySelector(".woocommerce-notices-wrapper")}genericError(){this.wrapper.classList.contains("ppcp-persist")||(this.clear(),this.message(this.genericErrorText))}message(e,t=!1){this.wrapper.classList.add("woocommerce-error"),t?this.wrapper.classList.add("ppcp-persist"):this.wrapper.classList.remove("ppcp-persist"),this.wrapper.innerHTML=this.sanitize(e),jQuery.scroll_to_notices(jQuery(".woocommerce-notices-wrapper"))}sanitize(e){const t=document.createElement("textarea");return t.innerHTML=e,t.value.replace("Error: ","")}clear(){this.wrapper.classList.contains("woocommerce-error")&&(this.wrapper.classList.remove("woocommerce-error"),this.wrapper.innerText="")}};var a=(e,t)=>(r,n)=>fetch(e.config.ajax.approve_order.endpoint,{method:"POST",body:JSON.stringify({nonce:e.config.ajax.approve_order.nonce,order_id:r.orderID})}).then(e=>e.json()).then(r=>{if(!r.success)return t.genericError(),n.restart().catch(e=>{t.genericError()});location.href=e.config.redirect});const o=()=>{const e=PayPalCommerceGateway.payer;if(!e)return null;const t=document.querySelector("#billing_phone")||void 0!==e.phone?{phone_type:"HOME",phone_number:{national_number:document.querySelector("#billing_phone")?document.querySelector("#billing_phone").value:e.phone.phone_number.national_number}}:null,r={email_address:document.querySelector("#billing_email")?document.querySelector("#billing_email").value:e.email_address,name:{surname:document.querySelector("#billing_last_name")?document.querySelector("#billing_last_name").value:e.name.surname,given_name:document.querySelector("#billing_first_name")?document.querySelector("#billing_first_name").value:e.name.given_name},address:{country_code:document.querySelector("#billing_country")?document.querySelector("#billing_country").value:e.address.country_code,address_line_1:document.querySelector("#billing_address_1")?document.querySelector("#billing_address_1").value:e.address.address_line_1,address_line_2:document.querySelector("#billing_address_2")?document.querySelector("#billing_address_2").value:e.address.address_line_2,admin_area_1:document.querySelector("#billing_state")?document.querySelector("#billing_state").value:e.address.admin_area_1,admin_area_2:document.querySelector("#billing_city")?document.querySelector("#billing_city").value:e.address.admin_area_2,postal_code:document.querySelector("#billing_postcode")?document.querySelector("#billing_postcode").value:e.address.postal_code}};return t&&(r.phone=t),r};var s=class{constructor(e,t){this.config=e,this.errorHandler=t}configuration(){return{createOrder:(e,t)=>{const r=o(),n=void 0!==this.config.bn_codes[this.config.context]?this.config.bn_codes[this.config.context]:"";return fetch(this.config.ajax.create_order.endpoint,{method:"POST",body:JSON.stringify({nonce:this.config.ajax.create_order.nonce,purchase_units:[],bn_code:n,payer:r,context:this.config.context})}).then((function(e){return e.json()})).then((function(e){if(!e.success)throw console.error(e),Error(e.data.message);return e.data.id}))},onApprove:a(this,this.errorHandler),onError:e=>{this.errorHandler.genericError()}}}};var i=class{constructor(e,t){this.gateway=e,this.renderer=t,this.actionHandler=null}init(){this.actionHandler=new s(PayPalCommerceGateway,new n(this.gateway.labels.error.generic)),this.render(),jQuery(document.body).on("wc_fragments_loaded wc_fragments_refreshed",()=>{this.render()})}shouldRender(){return null!==document.querySelector(this.gateway.button.mini_cart_wrapper)||null!==document.querySelector(this.gateway.hosted_fields.mini_cart_wrapper)}render(){this.shouldRender()&&this.renderer.render(this.gateway.button.mini_cart_wrapper,this.gateway.hosted_fields.mini_cart_wrapper,this.actionHandler.configuration())}};var c=class{constructor(e,t,r){this.id=e,this.quantity=t,this.variations=r}data(){return{id:this.id,quantity:this.quantity,variations:this.variations}}};var d=class{constructor(e,t){this.endpoint=e,this.nonce=t}update(e,t){return new Promise((r,n)=>{fetch(this.endpoint,{method:"POST",body:JSON.stringify({nonce:this.nonce,products:t})}).then(e=>e.json()).then(t=>{if(!t.success)return void n(t.data);const a=e(t.data);r(a)})})}};var u=class{constructor(e,t,r){this.element=e,this.showCallback=t,this.hideCallback=r,this.observer=null}init(){const e=()=>{this.element.classList.contains("disabled")?this.hideCallback():this.showCallback()};this.observer=new MutationObserver(e),this.observer.observe(this.element,{attributes:!0}),e()}disconnect(){this.observer.disconnect()}};var l=class{constructor(e,t,r,n,a,o){this.config=e,this.updateCart=t,this.showButtonCallback=r,this.hideButtonCallback=n,this.formElement=a,this.errorHandler=o}configuration(){if(this.hasVariations()){new u(this.formElement.querySelector(".single_add_to_cart_button"),this.showButtonCallback,this.hideButtonCallback).init()}return{createOrder:this.createOrder(),onApprove:a(this,this.errorHandler),onError:e=>{this.errorHandler.genericError()}}}createOrder(){var e=null;e=this.isGroupedProduct()?()=>{const e=[];return this.formElement.querySelectorAll('input[type="number"]').forEach(t=>{if(!t.value)return;const r=t.getAttribute("name").match(/quantity\[([\d]*)\]/);if(2!==r.length)return;const n=parseInt(r[1]),a=parseInt(t.value);e.push(new c(n,a,null))}),e}:()=>{const e=document.querySelector('[name="add-to-cart"]').value,t=document.querySelector('[name="quantity"]').value,r=this.variations();return[new c(e,t,r)]};return(t,r)=>{this.errorHandler.clear();return this.updateCart.update(e=>{const t=o(),r=void 0!==this.config.bn_codes[this.config.context]?this.config.bn_codes[this.config.context]:"";return fetch(this.config.ajax.create_order.endpoint,{method:"POST",body:JSON.stringify({nonce:this.config.ajax.create_order.nonce,purchase_units:e,payer:t,bn_code:r,context:this.config.context})}).then((function(e){return e.json()})).then((function(e){if(!e.success)throw console.error(e),Error(e.data.message);return e.data.id}))},e())}}variations(){if(!this.hasVariations())return null;return[...this.formElement.querySelectorAll("[name^='attribute_']")].map(e=>({value:e.value,name:e.name}))}hasVariations(){return this.formElement.classList.contains("variations_form")}isGroupedProduct(){return this.formElement.classList.contains("grouped_form")}};var h=class{constructor(e,t,r){this.gateway=e,this.renderer=t,this.messages=r}init(){this.shouldRender()?this.render():this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)}shouldRender(){return null!==document.querySelector("form.cart")}render(){const e=new l(this.gateway,new d(this.gateway.ajax.change_cart.endpoint,this.gateway.ajax.change_cart.nonce),()=>{this.renderer.showButtons(this.gateway.button.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper);let e="0";document.querySelector("form.cart ins .woocommerce-Price-amount")?e=document.querySelector("form.cart ins .woocommerce-Price-amount").innerText:document.querySelector("form.cart .woocommerce-Price-amount")&&(e=document.querySelector("form.cart .woocommerce-Price-amount").innerText);const t=parseInt(e.replace(/([^\d,\.\s]*)/g,""));this.messages.renderWithAmount(t)},()=>{this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)},document.querySelector("form.cart"),new n(this.gateway.labels.error.generic));this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}};var p=class{constructor(e,t){this.gateway=e,this.renderer=t}init(){this.shouldRender()&&(this.render(),jQuery(document.body).on("updated_cart_totals updated_checkout",()=>{this.render()}))}shouldRender(){return null!==document.querySelector(this.gateway.button.wrapper)||null!==document.querySelector(this.gateway.hosted_fields.wrapper)}render(){const e=new s(PayPalCommerceGateway,new n(this.gateway.labels.error.generic));this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}};var y=(e,t,r)=>(n,a)=>(r.block(),fetch(e.config.ajax.approve_order.endpoint,{method:"POST",body:JSON.stringify({nonce:e.config.ajax.approve_order.nonce,order_id:n.orderID})}).then(e=>e.json()).then(e=>{if(r.unblock(),!e.success){if(100===e.data.code?t.message(e.data.message):t.genericError(),void 0!==a&&void 0!==a.restart)return a.restart();throw new Error(e.data.message)}document.querySelector("#place_order").click()}));var m=class{constructor(e,t,r){this.config=e,this.errorHandler=t,this.spinner=r}configuration(){const e=this.spinner;return{createOrder:(t,r)=>{const n=o(),a=void 0!==this.config.bn_codes[this.config.context]?this.config.bn_codes[this.config.context]:"",s=this.errorHandler,i="checkout"===this.config.context?"form.checkout":"form#order_review",c=jQuery(i).serialize();return fetch(this.config.ajax.create_order.endpoint,{method:"POST",body:JSON.stringify({nonce:this.config.ajax.create_order.nonce,payer:n,bn_code:a,context:this.config.context,order_id:this.config.order_id,form:c})}).then((function(e){return e.json()})).then((function(t){if(!t.success)return e.unblock(),void s.message(t.data.message,!0);const r=document.createElement("input");return r.setAttribute("type","hidden"),r.setAttribute("name","ppcp-resume-order"),r.setAttribute("value",t.data.purchase_units[0].custom_id),document.querySelector(i).append(r),t.data.id}))},onApprove:y(this,this.errorHandler,this.spinner),onCancel:()=>{e.unblock()},onError:()=>{this.errorHandler.genericError(),e.unblock()}}}};var g=class{constructor(e,t,r,n){this.gateway=e,this.renderer=t,this.messages=r,this.spinner=n}init(){this.render(),jQuery(document.body).on("updated_checkout",()=>{this.render()}),jQuery(document.body).on("updated_checkout payment_method_selected",()=>{this.switchBetweenPayPalandOrderButton()}),this.switchBetweenPayPalandOrderButton()}shouldRender(){return!document.querySelector(this.gateway.button.cancel_wrapper)&&(null!==document.querySelector(this.gateway.button.wrapper)||null!==document.querySelector(this.gateway.hosted_fields.wrapper))}render(){if(!this.shouldRender())return;document.querySelector(this.gateway.hosted_fields.wrapper+">div")&&document.querySelector(this.gateway.hosted_fields.wrapper+">div").setAttribute("style","");const e=new m(PayPalCommerceGateway,new n(this.gateway.labels.error.generic),this.spinner);this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}switchBetweenPayPalandOrderButton(){const e=jQuery('input[name="payment_method"]:checked').val();"ppcp-gateway"!==e&&"ppcp-credit-card-gateway"!==e?(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper),jQuery("#place_order").show()):(jQuery("#place_order").hide(),"ppcp-gateway"===e&&(this.renderer.showButtons(this.gateway.button.wrapper),this.renderer.showButtons(this.gateway.messages.wrapper),this.messages.render(),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)),"ppcp-credit-card-gateway"===e&&(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper)))}};var w=class{constructor(e,t,r,n){this.gateway=e,this.renderer=t,this.messages=r,this.spinner=n}init(){this.render(),jQuery(document.body).on("updated_checkout",()=>{this.render()}),jQuery(document.body).on("updated_checkout payment_method_selected",()=>{this.switchBetweenPayPalandOrderButton()}),this.switchBetweenPayPalandOrderButton()}shouldRender(){return!document.querySelector(this.gateway.button.cancel_wrapper)&&(null!==document.querySelector(this.gateway.button.wrapper)||null!==document.querySelector(this.gateway.hosted_fields.wrapper))}render(){if(!this.shouldRender())return;document.querySelector(this.gateway.hosted_fields.wrapper+">div")&&document.querySelector(this.gateway.hosted_fields.wrapper+">div").setAttribute("style","");const e=new m(PayPalCommerceGateway,new n(this.gateway.labels.error.generic),this.spinner);this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}switchBetweenPayPalandOrderButton(){const e=jQuery('input[name="payment_method"]:checked').val();"ppcp-gateway"!==e&&"ppcp-credit-card-gateway"!==e?(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper),jQuery("#place_order").show()):(jQuery("#place_order").hide(),"ppcp-gateway"===e&&(this.renderer.showButtons(this.gateway.button.wrapper),this.renderer.showButtons(this.gateway.messages.wrapper),this.messages.render(),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)),"ppcp-credit-card-gateway"===e&&(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper)))}};var f=class{constructor(e,t){this.defaultConfig=t,this.creditCardRenderer=e}render(e,t,r){this.renderButtons(e,r),this.creditCardRenderer.render(t,r)}renderButtons(e,t){if(!document.querySelector(e)||this.isAlreadyRendered(e)||void 0===paypal.Buttons)return;const r=e===this.defaultConfig.button.wrapper?this.defaultConfig.button.style:this.defaultConfig.button.mini_cart_style;paypal.Buttons({style:r,...t}).render(e)}isAlreadyRendered(e){return document.querySelector(e).hasChildNodes()}hideButtons(e){const t=document.querySelector(e);return!!t&&(t.style.display="none",!0)}showButtons(e){const t=document.querySelector(e);return!!t&&(t.style.display="block",!0)}};var _=e=>{const t=window.getComputedStyle(e),r=document.createElement("span");return r.setAttribute("id",e.id),Object.values(t).forEach(e=>{t[e]&&isNaN(e)&&r.style.setProperty(e,""+t[e])}),r};var b=class{constructor(e,t,r){this.defaultConfig=e,this.errorHandler=t,this.spinner=r,this.cardValid=!1}render(e,t){if("checkout"!==this.defaultConfig.context&&"pay-now"!==this.defaultConfig.context||null===e||null===document.querySelector(e))return;if(void 0===paypal.HostedFields||!paypal.HostedFields.isEligible()){const t=document.querySelector(e);return void t.parentNode.removeChild(t)}const r=document.querySelector(".payment_box.payment_method_ppcp-credit-card-gateway"),n=r.style.display;r.style.display="block";const a=document.querySelector("#ppcp-hide-dcc");a&&a.parentNode.removeChild(a);const o=document.querySelector("#ppcp-credit-card-gateway-card-number"),s=window.getComputedStyle(o);let i={};Object.values(s).forEach(e=>{s[e]&&(i[e]=""+s[e])});const c=_(o);o.parentNode.replaceChild(c,o);const d=document.querySelector("#ppcp-credit-card-gateway-card-expiry"),u=_(d);d.parentNode.replaceChild(u,d);const l=document.querySelector("#ppcp-credit-card-gateway-card-cvc"),h=_(l);l.parentNode.replaceChild(h,l),r.style.display=n;const p=".payment_box payment_method_ppcp-credit-card-gateway";this.defaultConfig.enforce_vault&&document.querySelector(p+" .ppcp-credit-card-vault")&&(document.querySelector(p+" .ppcp-credit-card-vault").checked=!0,document.querySelector(p+" .ppcp-credit-card-vault").setAttribute("disabled",!0)),paypal.HostedFields.render({createOrder:t.createOrder,styles:{input:i},fields:{number:{selector:"#ppcp-credit-card-gateway-card-number",placeholder:this.defaultConfig.hosted_fields.labels.credit_card_number},cvv:{selector:"#ppcp-credit-card-gateway-card-cvc",placeholder:this.defaultConfig.hosted_fields.labels.cvv},expirationDate:{selector:"#ppcp-credit-card-gateway-card-expiry",placeholder:this.defaultConfig.hosted_fields.labels.mm_yyyy}}}).then(r=>{const n=n=>{this.spinner.block(),n&&n.preventDefault(),this.errorHandler.clear();const a=r.getState();if(Object.keys(a.fields).every((function(e){return a.fields[e].isValid}))&&this.cardValid){let n=!!document.querySelector(e+" .ppcp-credit-card-vault")&&document.querySelector(e+" .ppcp-credit-card-vault").checked;n=this.defaultConfig.enforce_vault||n,r.submit({contingencies:["3D_SECURE"],vault:n}).then(e=>(e.orderID=e.orderId,this.spinner.unblock(),t.onApprove(e))).catch(()=>{this.spinner.unblock(),this.errorHandler.genericError()})}else{this.spinner.unblock();const e=this.cardValid?this.defaultConfig.hosted_fields.labels.fields_not_valid:this.defaultConfig.hosted_fields.labels.card_not_supported;this.errorHandler.message(e)}};r.on("inputSubmitRequest",(function(){n(null)})),r.on("cardTypeChange",e=>{if(!e.cards.length)return void(this.cardValid=!1);const t=this.defaultConfig.hosted_fields.valid_cards;this.cardValid=-1!==t.indexOf(e.cards[0].type)}),document.querySelector(e+" button").addEventListener("click",n)}),document.querySelector("#payment_method_ppcp-credit-card-gateway").addEventListener("click",()=>{document.querySelector("label[for=ppcp-credit-card-gateway-card-number]").click()})}};const v=(e,t)=>{if(!e)return!1;if(e.user!==t)return!1;return!((new Date).getTime()>=1e3*e.expiration)};var S=(e,t)=>{const r=(e=>{const t=JSON.parse(sessionStorage.getItem("ppcp-data-client-id"));return v(t,e)?t.token:null})(t.user);if(r)return e.setAttribute("data-client-token",r),void document.body.append(e);fetch(t.endpoint,{method:"POST",body:JSON.stringify({nonce:t.nonce})}).then(e=>e.json()).then(r=>{v(r,t.user)&&((e=>{sessionStorage.setItem("ppcp-data-client-id",JSON.stringify(e))})(r),e.setAttribute("data-client-token",r.token),document.body.append(e))})};var q=class{constructor(e){this.config=e}render(){this.shouldRender()&&paypal.Messages({amount:this.config.amount,placement:this.config.placement,style:this.config.style}).render(this.config.wrapper)}renderWithAmount(e){if(!this.shouldRender())return;const t=document.createElement("div");t.setAttribute("id",this.config.wrapper.replace("#",""));const r=document.querySelector(this.config.wrapper).nextSibling;document.querySelector(this.config.wrapper).parentElement.removeChild(document.querySelector(this.config.wrapper)),r.parentElement.insertBefore(t,r),paypal.Messages({amount:e,placement:this.config.placement,style:this.config.style}).render(this.config.wrapper)}shouldRender(){return void 0!==paypal.Messages&&void 0!==this.config.wrapper&&!!document.querySelector(this.config.wrapper)}};var P=class{constructor(){this.target="form.woocommerce-checkout"}setTarget(e){this.target=e}block(){jQuery(this.target).block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}unblock(){jQuery(this.target).unblock()}};document.addEventListener("DOMContentLoaded",()=>{const e=document.createElement("script");e.addEventListener("load",e=>{(()=>{const e=new n(PayPalCommerceGateway.labels.error.generic),t=new P,r=new b(PayPalCommerceGateway,e,t),a=new f(r,PayPalCommerceGateway),o=new q(PayPalCommerceGateway.messages),s=PayPalCommerceGateway.context;if("mini-cart"===s||"product"===s){new i(PayPalCommerceGateway,a).init()}if("product"===s){new h(PayPalCommerceGateway,a,o).init()}if("cart"===s){new p(PayPalCommerceGateway,a).init()}if("checkout"===s){new g(PayPalCommerceGateway,a,o,t).init()}if("pay-now"===s){new w(PayPalCommerceGateway,a,o,t).init()}"checkout"!==s&&o.render()})()}),e.setAttribute("src",PayPalCommerceGateway.button.url),Object.entries(PayPalCommerceGateway.script_attributes).forEach(t=>{e.setAttribute(t[0],t[1])}),PayPalCommerceGateway.data_client_id.set_attribute?S(e,PayPalCommerceGateway.data_client_id):document.body.append(e)})}]);
2
  //# sourceMappingURL=button.js.map
1
+ !function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([,function(e,t,r){"use strict";r.r(t);var n=class{constructor(e){this.genericErrorText=e,this.wrapper=document.querySelector(".woocommerce-notices-wrapper"),this.messagesList=document.querySelector("ul.woocommerce-error")}genericError(){this.wrapper.classList.contains("ppcp-persist")||(this.clear(),this.message(this.genericErrorText))}appendPreparedErrorMessageElement(e){null===this.messagesList&&this.prepareMessagesList(),this.messagesList.replaceWith(e)}message(e,t=!1){if(0===e.length)throw new Error("A new message text must be a non-empty string.");null===this.messagesList&&this.prepareMessagesList(),t?this.wrapper.classList.add("ppcp-persist"):this.wrapper.classList.remove("ppcp-persist");let r=this.prepareMessagesListItem(e);this.messagesList.appendChild(r),jQuery.scroll_to_notices(jQuery(".woocommerce-notices-wrapper"))}prepareMessagesList(){null===this.messagesList&&(this.messagesList=document.createElement("ul"),this.messagesList.setAttribute("class","woocommerce-error"),this.messagesList.setAttribute("role","alert"),this.wrapper.appendChild(this.messagesList))}prepareMessagesListItem(e){const t=document.createElement("li");return t.innerHTML=e,t}sanitize(e){const t=document.createElement("textarea");return t.innerHTML=e,t.value.replace("Error: ","")}clear(){this.wrapper.classList.contains("woocommerce-error")&&(this.wrapper.classList.remove("woocommerce-error"),this.wrapper.innerText="")}};var a=(e,t)=>(r,n)=>fetch(e.config.ajax.approve_order.endpoint,{method:"POST",body:JSON.stringify({nonce:e.config.ajax.approve_order.nonce,order_id:r.orderID})}).then(e=>e.json()).then(r=>{if(!r.success)return t.genericError(),n.restart().catch(e=>{t.genericError()});location.href=e.config.redirect});const s=()=>{const e=PayPalCommerceGateway.payer;if(!e)return null;const t=document.querySelector("#billing_phone")||void 0!==e.phone?{phone_type:"HOME",phone_number:{national_number:document.querySelector("#billing_phone")?document.querySelector("#billing_phone").value:e.phone.phone_number.national_number}}:null,r={email_address:document.querySelector("#billing_email")?document.querySelector("#billing_email").value:e.email_address,name:{surname:document.querySelector("#billing_last_name")?document.querySelector("#billing_last_name").value:e.name.surname,given_name:document.querySelector("#billing_first_name")?document.querySelector("#billing_first_name").value:e.name.given_name},address:{country_code:document.querySelector("#billing_country")?document.querySelector("#billing_country").value:e.address.country_code,address_line_1:document.querySelector("#billing_address_1")?document.querySelector("#billing_address_1").value:e.address.address_line_1,address_line_2:document.querySelector("#billing_address_2")?document.querySelector("#billing_address_2").value:e.address.address_line_2,admin_area_1:document.querySelector("#billing_state")?document.querySelector("#billing_state").value:e.address.admin_area_1,admin_area_2:document.querySelector("#billing_city")?document.querySelector("#billing_city").value:e.address.admin_area_2,postal_code:document.querySelector("#billing_postcode")?document.querySelector("#billing_postcode").value:e.address.postal_code}};return t&&(r.phone=t),r};var o=class{constructor(e,t){this.config=e,this.errorHandler=t}configuration(){return{createOrder:(e,t)=>{const r=s(),n=void 0!==this.config.bn_codes[this.config.context]?this.config.bn_codes[this.config.context]:"";return fetch(this.config.ajax.create_order.endpoint,{method:"POST",body:JSON.stringify({nonce:this.config.ajax.create_order.nonce,purchase_units:[],bn_code:n,payer:r,context:this.config.context})}).then((function(e){return e.json()})).then((function(e){if(!e.success)throw console.error(e),Error(e.data.message);return e.data.id}))},onApprove:a(this,this.errorHandler),onError:e=>{this.errorHandler.genericError()}}}};var i=class{constructor(e,t){this.gateway=e,this.renderer=t,this.actionHandler=null}init(){this.actionHandler=new o(PayPalCommerceGateway,new n(this.gateway.labels.error.generic)),this.render(),jQuery(document.body).on("wc_fragments_loaded wc_fragments_refreshed",()=>{this.render()})}shouldRender(){return null!==document.querySelector(this.gateway.button.mini_cart_wrapper)||null!==document.querySelector(this.gateway.hosted_fields.mini_cart_wrapper)}render(){this.shouldRender()&&this.renderer.render(this.gateway.button.mini_cart_wrapper,this.gateway.hosted_fields.mini_cart_wrapper,this.actionHandler.configuration())}};var c=class{constructor(e,t,r){this.id=e,this.quantity=t,this.variations=r}data(){return{id:this.id,quantity:this.quantity,variations:this.variations}}};var d=class{constructor(e,t){this.endpoint=e,this.nonce=t}update(e,t){return new Promise((r,n)=>{fetch(this.endpoint,{method:"POST",body:JSON.stringify({nonce:this.nonce,products:t})}).then(e=>e.json()).then(t=>{if(!t.success)return void n(t.data);const a=e(t.data);r(a)})})}};var u=class{constructor(e,t,r){this.element=e,this.showCallback=t,this.hideCallback=r,this.observer=null}init(){const e=()=>{this.element.classList.contains("disabled")?this.hideCallback():this.showCallback()};this.observer=new MutationObserver(e),this.observer.observe(this.element,{attributes:!0}),e()}disconnect(){this.observer.disconnect()}};var l=class{constructor(e,t,r,n,a,s){this.config=e,this.updateCart=t,this.showButtonCallback=r,this.hideButtonCallback=n,this.formElement=a,this.errorHandler=s}configuration(){if(this.hasVariations()){new u(this.formElement.querySelector(".single_add_to_cart_button"),this.showButtonCallback,this.hideButtonCallback).init()}return{createOrder:this.createOrder(),onApprove:a(this,this.errorHandler),onError:e=>{this.errorHandler.genericError()}}}createOrder(){var e=null;e=this.isGroupedProduct()?()=>{const e=[];return this.formElement.querySelectorAll('input[type="number"]').forEach(t=>{if(!t.value)return;const r=t.getAttribute("name").match(/quantity\[([\d]*)\]/);if(2!==r.length)return;const n=parseInt(r[1]),a=parseInt(t.value);e.push(new c(n,a,null))}),e}:()=>{const e=document.querySelector('[name="add-to-cart"]').value,t=document.querySelector('[name="quantity"]').value,r=this.variations();return[new c(e,t,r)]};return(t,r)=>{this.errorHandler.clear();return this.updateCart.update(e=>{const t=s(),r=void 0!==this.config.bn_codes[this.config.context]?this.config.bn_codes[this.config.context]:"";return fetch(this.config.ajax.create_order.endpoint,{method:"POST",body:JSON.stringify({nonce:this.config.ajax.create_order.nonce,purchase_units:e,payer:t,bn_code:r,context:this.config.context})}).then((function(e){return e.json()})).then((function(e){if(!e.success)throw console.error(e),Error(e.data.message);return e.data.id}))},e())}}variations(){if(!this.hasVariations())return null;return[...this.formElement.querySelectorAll("[name^='attribute_']")].map(e=>({value:e.value,name:e.name}))}hasVariations(){return this.formElement.classList.contains("variations_form")}isGroupedProduct(){return this.formElement.classList.contains("grouped_form")}};var h=class{constructor(e,t,r){this.gateway=e,this.renderer=t,this.messages=r}init(){this.shouldRender()?this.render():this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)}shouldRender(){return null!==document.querySelector("form.cart")}render(){const e=new l(this.gateway,new d(this.gateway.ajax.change_cart.endpoint,this.gateway.ajax.change_cart.nonce),()=>{this.renderer.showButtons(this.gateway.button.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper);let e="0";document.querySelector("form.cart ins .woocommerce-Price-amount")?e=document.querySelector("form.cart ins .woocommerce-Price-amount").innerText:document.querySelector("form.cart .woocommerce-Price-amount")&&(e=document.querySelector("form.cart .woocommerce-Price-amount").innerText);const t=parseInt(e.replace(/([^\d,\.\s]*)/g,""));this.messages.renderWithAmount(t)},()=>{this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)},document.querySelector("form.cart"),new n(this.gateway.labels.error.generic));this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}};var p=class{constructor(e,t){this.gateway=e,this.renderer=t}init(){this.shouldRender()&&(this.render(),jQuery(document.body).on("updated_cart_totals updated_checkout",()=>{this.render()}))}shouldRender(){return null!==document.querySelector(this.gateway.button.wrapper)||null!==document.querySelector(this.gateway.hosted_fields.wrapper)}render(){const e=new o(PayPalCommerceGateway,new n(this.gateway.labels.error.generic));this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}};var y=(e,t,r)=>(n,a)=>(r.block(),fetch(e.config.ajax.approve_order.endpoint,{method:"POST",body:JSON.stringify({nonce:e.config.ajax.approve_order.nonce,order_id:n.orderID})}).then(e=>e.json()).then(e=>{if(r.unblock(),!e.success){if(100===e.data.code?t.message(e.data.message):t.genericError(),void 0!==a&&void 0!==a.restart)return a.restart();throw new Error(e.data.message)}document.querySelector("#place_order").click()}));var m=class{constructor(e,t,r){this.config=e,this.errorHandler=t,this.spinner=r}configuration(){const e=this.spinner;return{createOrder:(t,r)=>{const n=s(),a=void 0!==this.config.bn_codes[this.config.context]?this.config.bn_codes[this.config.context]:"",o=this.errorHandler,i="checkout"===this.config.context?"form.checkout":"form#order_review",c=jQuery(i).serialize();return fetch(this.config.ajax.create_order.endpoint,{method:"POST",body:JSON.stringify({nonce:this.config.ajax.create_order.nonce,payer:n,bn_code:a,context:this.config.context,order_id:this.config.order_id,form:c})}).then((function(e){return e.json()})).then((function(t){if(!t.success){if(e.unblock(),void 0!==t.messages){const e=new DOMParser;o.appendPreparedErrorMessageElement(e.parseFromString(t.messages,"text/html").querySelector("ul"))}else o.message(t.data.message,!0);return}const r=document.createElement("input");return r.setAttribute("type","hidden"),r.setAttribute("name","ppcp-resume-order"),r.setAttribute("value",t.data.purchase_units[0].custom_id),document.querySelector(i).append(r),t.data.id}))},onApprove:y(this,this.errorHandler,this.spinner),onCancel:()=>{e.unblock()},onError:()=>{this.errorHandler.genericError(),e.unblock()}}}};var g=class{constructor(e,t,r,n){this.gateway=e,this.renderer=t,this.messages=r,this.spinner=n}init(){this.render(),jQuery(document.body).on("updated_checkout",()=>{this.render()}),jQuery(document.body).on("updated_checkout payment_method_selected",()=>{this.switchBetweenPayPalandOrderButton(),this.displayPlaceOrderButtonForSavedCreditCards()}),jQuery("#saved-credit-card").on("change",()=>{this.displayPlaceOrderButtonForSavedCreditCards()}),this.switchBetweenPayPalandOrderButton(),this.displayPlaceOrderButtonForSavedCreditCards()}shouldRender(){return!document.querySelector(this.gateway.button.cancel_wrapper)&&(null!==document.querySelector(this.gateway.button.wrapper)||null!==document.querySelector(this.gateway.hosted_fields.wrapper))}render(){if(!this.shouldRender())return;document.querySelector(this.gateway.hosted_fields.wrapper+">div")&&document.querySelector(this.gateway.hosted_fields.wrapper+">div").setAttribute("style","");const e=new m(PayPalCommerceGateway,new n(this.gateway.labels.error.generic),this.spinner);this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}switchBetweenPayPalandOrderButton(){jQuery("#saved-credit-card").val(jQuery("#saved-credit-card option:first").val());const e=jQuery('input[name="payment_method"]:checked').val();"ppcp-gateway"!==e&&"ppcp-credit-card-gateway"!==e?(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper),jQuery("#place_order").show()):(jQuery("#place_order").hide(),"ppcp-gateway"===e&&(this.renderer.showButtons(this.gateway.button.wrapper),this.renderer.showButtons(this.gateway.messages.wrapper),this.messages.render(),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)),"ppcp-credit-card-gateway"===e&&(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper)))}displayPlaceOrderButtonForSavedCreditCards(){"ppcp-credit-card-gateway"===jQuery('input[name="payment_method"]:checked').val()&&(jQuery("#saved-credit-card").length&&""!==jQuery("#saved-credit-card").val()?(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper),jQuery("#place_order").show()):(jQuery("#place_order").hide(),this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper)))}};var w=class{constructor(e,t,r,n){this.gateway=e,this.renderer=t,this.messages=r,this.spinner=n}init(){this.render(),jQuery(document.body).on("updated_checkout",()=>{this.render()}),jQuery(document.body).on("updated_checkout payment_method_selected",()=>{this.switchBetweenPayPalandOrderButton()}),this.switchBetweenPayPalandOrderButton()}shouldRender(){return!document.querySelector(this.gateway.button.cancel_wrapper)&&(null!==document.querySelector(this.gateway.button.wrapper)||null!==document.querySelector(this.gateway.hosted_fields.wrapper))}render(){if(!this.shouldRender())return;document.querySelector(this.gateway.hosted_fields.wrapper+">div")&&document.querySelector(this.gateway.hosted_fields.wrapper+">div").setAttribute("style","");const e=new m(PayPalCommerceGateway,new n(this.gateway.labels.error.generic),this.spinner);this.renderer.render(this.gateway.button.wrapper,this.gateway.hosted_fields.wrapper,e.configuration())}switchBetweenPayPalandOrderButton(){if(new URLSearchParams(window.location.search).has("change_payment_method"))return;const e=jQuery('input[name="payment_method"]:checked').val();"ppcp-gateway"!==e&&"ppcp-credit-card-gateway"!==e?(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper),jQuery("#place_order").show()):(jQuery("#place_order").hide(),"ppcp-gateway"===e&&(this.renderer.showButtons(this.gateway.button.wrapper),this.renderer.showButtons(this.gateway.messages.wrapper),this.messages.render(),this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)),"ppcp-credit-card-gateway"===e&&(this.renderer.hideButtons(this.gateway.button.wrapper),this.renderer.hideButtons(this.gateway.messages.wrapper),this.renderer.showButtons(this.gateway.hosted_fields.wrapper)))}};var f=class{constructor(e,t){this.defaultConfig=t,this.creditCardRenderer=e}render(e,t,r){this.renderButtons(e,r),this.creditCardRenderer.render(t,r)}renderButtons(e,t){if(!document.querySelector(e)||this.isAlreadyRendered(e)||void 0===paypal.Buttons)return;const r=e===this.defaultConfig.button.wrapper?this.defaultConfig.button.style:this.defaultConfig.button.mini_cart_style;paypal.Buttons({style:r,...t}).render(e)}isAlreadyRendered(e){return document.querySelector(e).hasChildNodes()}hideButtons(e){const t=document.querySelector(e);return!!t&&(t.style.display="none",!0)}showButtons(e){const t=document.querySelector(e);return!!t&&(t.style.display="block",!0)}};var _=e=>{const t=window.getComputedStyle(e),r=document.createElement("span");return r.setAttribute("id",e.id),Object.values(t).forEach(e=>{t[e]&&isNaN(e)&&r.style.setProperty(e,""+t[e])}),r};var b=class{constructor(e,t,r){this.defaultConfig=e,this.errorHandler=t,this.spinner=r,this.cardValid=!1}render(e,t){if("checkout"!==this.defaultConfig.context&&"pay-now"!==this.defaultConfig.context||null===e||null===document.querySelector(e))return;if(void 0===paypal.HostedFields||!paypal.HostedFields.isEligible()){const t=document.querySelector(e);return void t.parentNode.removeChild(t)}const r=document.querySelector(".payment_box.payment_method_ppcp-credit-card-gateway"),n=r.style.display;r.style.display="block";const a=document.querySelector("#ppcp-hide-dcc");a&&a.parentNode.removeChild(a);const s=document.querySelector("#ppcp-credit-card-gateway-card-number"),o=window.getComputedStyle(s);let i={};Object.values(o).forEach(e=>{o[e]&&(i[e]=""+o[e])});const c=_(s);s.parentNode.replaceChild(c,s);const d=document.querySelector("#ppcp-credit-card-gateway-card-expiry"),u=_(d);d.parentNode.replaceChild(u,d);const l=document.querySelector("#ppcp-credit-card-gateway-card-cvc"),h=_(l);l.parentNode.replaceChild(h,l),r.style.display=n;const p=".payment_box payment_method_ppcp-credit-card-gateway";this.defaultConfig.enforce_vault&&document.querySelector(p+" .ppcp-credit-card-vault")&&(document.querySelector(p+" .ppcp-credit-card-vault").checked=!0,document.querySelector(p+" .ppcp-credit-card-vault").setAttribute("disabled",!0)),paypal.HostedFields.render({createOrder:t.createOrder,styles:{input:i},fields:{number:{selector:"#ppcp-credit-card-gateway-card-number",placeholder:this.defaultConfig.hosted_fields.labels.credit_card_number},cvv:{selector:"#ppcp-credit-card-gateway-card-cvc",placeholder:this.defaultConfig.hosted_fields.labels.cvv},expirationDate:{selector:"#ppcp-credit-card-gateway-card-expiry",placeholder:this.defaultConfig.hosted_fields.labels.mm_yyyy}}}).then(r=>{const n=e=>{this.spinner.block(),e&&e.preventDefault(),this.errorHandler.clear();const n=r.getState();if(Object.keys(n.fields).every((function(e){return n.fields[e].isValid}))&&this.cardValid){const e=!!this.defaultConfig.save_card,n=document.getElementById("ppcp-credit-card-vault")?document.getElementById("ppcp-credit-card-vault").checked:e;r.submit({contingencies:["3D_SECURE"],vault:n}).then(e=>(e.orderID=e.orderId,this.spinner.unblock(),t.onApprove(e))).catch(()=>{this.errorHandler.genericError(),this.spinner.unblock()})}else{this.spinner.unblock();const e=this.cardValid?this.defaultConfig.hosted_fields.labels.fields_not_valid:this.defaultConfig.hosted_fields.labels.card_not_supported;this.errorHandler.message(e)}};r.on("inputSubmitRequest",(function(){n(null)})),r.on("cardTypeChange",e=>{if(!e.cards.length)return void(this.cardValid=!1);const t=this.defaultConfig.hosted_fields.valid_cards;this.cardValid=-1!==t.indexOf(e.cards[0].type)}),document.querySelector(e+" button").addEventListener("click",n)}),document.querySelector("#payment_method_ppcp-credit-card-gateway").addEventListener("click",()=>{document.querySelector("label[for=ppcp-credit-card-gateway-card-number]").click()})}};const v=(e,t)=>{if(!e)return!1;if(e.user!==t)return!1;return!((new Date).getTime()>=1e3*e.expiration)};var S=(e,t)=>{0!==t.user?fetch(t.endpoint,{method:"POST",body:JSON.stringify({nonce:t.nonce})}).then(e=>e.json()).then(r=>{var n;v(r,t.user)&&(n=r,sessionStorage.setItem("ppcp-data-client-id",JSON.stringify(n)),e.setAttribute("data-client-token",r.token),document.body.append(e))}):document.body.append(e)};var q=class{constructor(e){this.config=e}render(){this.shouldRender()&&paypal.Messages({amount:this.config.amount,placement:this.config.placement,style:this.config.style}).render(this.config.wrapper)}renderWithAmount(e){if(!this.shouldRender())return;const t=document.createElement("div");t.setAttribute("id",this.config.wrapper.replace("#",""));const r=document.querySelector(this.config.wrapper).nextSibling;document.querySelector(this.config.wrapper).parentElement.removeChild(document.querySelector(this.config.wrapper)),r.parentElement.insertBefore(t,r),paypal.Messages({amount:e,placement:this.config.placement,style:this.config.style}).render(this.config.wrapper)}shouldRender(){return void 0!==paypal.Messages&&void 0!==this.config.wrapper&&!!document.querySelector(this.config.wrapper)}};var P=class{constructor(){this.target="form.woocommerce-checkout"}setTarget(e){this.target=e}block(){jQuery(this.target).block({message:null,overlayCSS:{background:"#fff",opacity:.6}})}unblock(){jQuery(this.target).unblock()}};document.addEventListener("DOMContentLoaded",()=>{const e=document.createElement("script");e.addEventListener("load",e=>{(()=>{const e=new n(PayPalCommerceGateway.labels.error.generic),t=new P,r=new b(PayPalCommerceGateway,e,t),a=new f(r,PayPalCommerceGateway),s=new q(PayPalCommerceGateway.messages),o=PayPalCommerceGateway.context;if("mini-cart"===o||"product"===o){new i(PayPalCommerceGateway,a).init()}if("product"===o){new h(PayPalCommerceGateway,a,s).init()}if("cart"===o){new p(PayPalCommerceGateway,a).init()}if("checkout"===o){new g(PayPalCommerceGateway,a,s,t).init()}if("pay-now"===o){new w(PayPalCommerceGateway,a,s,t).init()}"checkout"!==o&&s.render()})()}),e.setAttribute("src",PayPalCommerceGateway.button.url),Object.entries(PayPalCommerceGateway.script_attributes).forEach(t=>{e.setAttribute(t[0],t[1])}),PayPalCommerceGateway.data_client_id.set_attribute?S(e,PayPalCommerceGateway.data_client_id):document.body.append(e)})}]);
2
  //# sourceMappingURL=button.js.map
modules/ppcp-button/assets/js/button.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./resources/js/modules/ErrorHandler.js","webpack:///./resources/js/modules/OnApproveHandler/onApproveForContinue.js","webpack:///./resources/js/modules/Helper/PayerData.js","webpack:///./resources/js/modules/ActionHandler/CartActionHandler.js","webpack:///./resources/js/modules/ContextBootstrap/MiniCartBootstap.js","webpack:///./resources/js/modules/Entity/Product.js","webpack:///./resources/js/modules/Helper/UpdateCart.js","webpack:///./resources/js/modules/Helper/ButtonsToggleListener.js","webpack:///./resources/js/modules/ActionHandler/SingleProductActionHandler.js","webpack:///./resources/js/modules/ContextBootstrap/SingleProductBootstap.js","webpack:///./resources/js/modules/ContextBootstrap/CartBootstap.js","webpack:///./resources/js/modules/OnApproveHandler/onApproveForPayNow.js","webpack:///./resources/js/modules/ActionHandler/CheckoutActionHandler.js","webpack:///./resources/js/modules/ContextBootstrap/CheckoutBootstap.js","webpack:///./resources/js/modules/ContextBootstrap/PayNowBootstrap.js","webpack:///./resources/js/modules/Renderer/Renderer.js","webpack:///./resources/js/modules/Helper/DccInputFactory.js","webpack:///./resources/js/modules/Renderer/CreditCardRenderer.js","webpack:///./resources/js/modules/DataClientIdAttributeHandler.js","webpack:///./resources/js/modules/Renderer/MessageRenderer.js","webpack:///./resources/js/modules/Helper/Spinner.js","webpack:///./resources/js/button.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ErrorHandler","constructor","genericErrorText","this","wrapper","document","querySelector","genericError","classList","contains","clear","message","text","persist","add","remove","innerHTML","sanitize","jQuery","scroll_to_notices","textarea","createElement","replace","innerText","onApprove","context","errorHandler","data","actions","fetch","config","ajax","approve_order","endpoint","method","body","JSON","stringify","nonce","order_id","orderID","then","res","json","success","restart","catch","err","location","href","redirect","payerData","payer","PayPalCommerceGateway","phone","phone_type","phone_number","national_number","email_address","surname","given_name","address","country_code","address_line_1","address_line_2","admin_area_1","admin_area_2","postal_code","CartActionHandler","configuration","createOrder","bnCode","bn_codes","create_order","purchase_units","bn_code","console","error","Error","id","onError","MiniCartBootstap","gateway","renderer","actionHandler","init","labels","generic","render","on","shouldRender","button","mini_cart_wrapper","hosted_fields","Product","quantity","variations","UpdateCart","update","onResolve","products","Promise","resolve","reject","result","resolved","ButtonsToggleListener","element","showCallback","hideCallback","observer","callback","MutationObserver","observe","attributes","disconnect","SingleProductActionHandler","updateCart","showButtonCallback","hideButtonCallback","formElement","hasVariations","getProducts","isGroupedProduct","querySelectorAll","forEach","elementName","getAttribute","match","length","parseInt","push","qty","map","SingleProductBootstap","messages","hideButtons","change_cart","showButtons","priceText","amount","renderWithAmount","CartBootstrap","spinner","block","unblock","code","click","CheckoutActionHandler","formSelector","formValues","serialize","form","input","setAttribute","custom_id","append","onCancel","CheckoutBootstap","switchBetweenPayPalandOrderButton","cancel_wrapper","currentPaymentMethod","val","show","hide","PayNowBootstrap","Renderer","creditCardRenderer","defaultConfig","hostedFieldsWrapper","contextConfig","renderButtons","isAlreadyRendered","paypal","Buttons","style","mini_cart_style","hasChildNodes","domElement","display","dccInputFactory","original","styles","window","getComputedStyle","newElement","values","prop","isNaN","setProperty","CreditCardRenderer","cardValid","HostedFields","isEligible","wrapperElement","parentNode","removeChild","gateWayBox","oldDisplayStyle","hideDccGateway","cardNumberField","stylesRaw","cardNumber","replaceChild","cardExpiryField","cardExpiry","cardCodeField","cardCode","formWrapper","enforce_vault","checked","fields","number","selector","placeholder","credit_card_number","cvv","expirationDate","mm_yyyy","hostedFields","submitEvent","event","preventDefault","state","getState","keys","every","isValid","vault","submit","contingencies","payload","orderId","fields_not_valid","card_not_supported","cards","validCards","valid_cards","indexOf","type","addEventListener","validateToken","token","user","Date","getTime","expiration","dataClientIdAttributeHandler","script","parse","sessionStorage","getItem","storedTokenForUser","setItem","storeToken","MessageRenderer","Messages","placement","newWrapper","sibling","nextSibling","parentElement","insertBefore","Spinner","target","setTarget","overlayCSS","background","opacity","messageRenderer","bootstrap","url","entries","script_attributes","keyValue","data_client_id","set_attribute"],"mappings":"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","file":"js/button.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","class ErrorHandler {\n\n constructor(genericErrorText)\n {\n this.genericErrorText = genericErrorText;\n this.wrapper = document.querySelector('.woocommerce-notices-wrapper');\n }\n\n genericError() {\n if (this.wrapper.classList.contains('ppcp-persist')) {\n return;\n }\n this.clear();\n this.message(this.genericErrorText)\n }\n\n message(text, persist = false)\n {\n this.wrapper.classList.add('woocommerce-error');\n if (persist) {\n this.wrapper.classList.add('ppcp-persist');\n } else {\n this.wrapper.classList.remove('ppcp-persist');\n }\n this.wrapper.innerHTML = this.sanitize(text);\n jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'))\n }\n\n sanitize(text)\n {\n const textarea = document.createElement('textarea');\n textarea.innerHTML = text;\n return textarea.value.replace('Error: ', '');\n }\n\n clear()\n {\n if (! this.wrapper.classList.contains('woocommerce-error')) {\n return;\n }\n this.wrapper.classList.remove('woocommerce-error');\n this.wrapper.innerText = '';\n }\n}\n\nexport default ErrorHandler;\n","const onApprove = (context, errorHandler) => {\n return (data, actions) => {\n return fetch(context.config.ajax.approve_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: context.config.ajax.approve_order.nonce,\n order_id:data.orderID\n })\n }).then((res)=>{\n return res.json();\n }).then((data)=>{\n if (!data.success) {\n errorHandler.genericError();\n return actions.restart().catch(err => {\n errorHandler.genericError();\n });;\n }\n location.href = context.config.redirect;\n });\n\n }\n}\n\nexport default onApprove;\n","export const payerData = () => {\n const payer = PayPalCommerceGateway.payer;\n if (! payer) {\n return null;\n }\n\n const phone = (document.querySelector('#billing_phone') || typeof payer.phone !== 'undefined') ?\n {\n phone_type:\"HOME\",\n phone_number:{\n national_number : (document.querySelector('#billing_phone')) ? document.querySelector('#billing_phone').value : payer.phone.phone_number.national_number\n }\n } : null;\n const payerData = {\n email_address:(document.querySelector('#billing_email')) ? document.querySelector('#billing_email').value : payer.email_address,\n name : {\n surname: (document.querySelector('#billing_last_name')) ? document.querySelector('#billing_last_name').value : payer.name.surname,\n given_name: (document.querySelector('#billing_first_name')) ? document.querySelector('#billing_first_name').value : payer.name.given_name\n },\n address : {\n country_code : (document.querySelector('#billing_country')) ? document.querySelector('#billing_country').value : payer.address.country_code,\n address_line_1 : (document.querySelector('#billing_address_1')) ? document.querySelector('#billing_address_1').value : payer.address.address_line_1,\n address_line_2 : (document.querySelector('#billing_address_2')) ? document.querySelector('#billing_address_2').value : payer.address.address_line_2,\n admin_area_1 : (document.querySelector('#billing_state')) ? document.querySelector('#billing_state').value : payer.address.admin_area_1,\n admin_area_2 : (document.querySelector('#billing_city')) ? document.querySelector('#billing_city').value : payer.address.admin_area_2,\n postal_code : (document.querySelector('#billing_postcode')) ? document.querySelector('#billing_postcode').value : payer.address.postal_code\n }\n };\n\n if (phone) {\n payerData.phone = phone;\n }\n return payerData;\n}\n","import onApprove from '../OnApproveHandler/onApproveForContinue.js';\nimport {payerData} from \"../Helper/PayerData\";\n\nclass CartActionHandler {\n\n constructor(config, errorHandler) {\n this.config = config;\n this.errorHandler = errorHandler;\n }\n\n configuration() {\n const createOrder = (data, actions) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ?\n this.config.bn_codes[this.config.context] : '';\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n purchase_units: [],\n bn_code:bnCode,\n payer,\n context:this.config.context\n }),\n }).then(function(res) {\n return res.json();\n }).then(function(data) {\n if (!data.success) {\n console.error(data);\n throw Error(data.data.message);\n }\n return data.data.id;\n });\n };\n\n return {\n createOrder,\n onApprove: onApprove(this, this.errorHandler),\n onError: (error) => {\n this.errorHandler.genericError();\n }\n };\n }\n}\n\nexport default CartActionHandler;\n","import ErrorHandler from '../ErrorHandler';\nimport CartActionHandler from '../ActionHandler/CartActionHandler';\n\nclass MiniCartBootstap {\n constructor(gateway, renderer) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.actionHandler = null;\n }\n\n init() {\n\n this.actionHandler = new CartActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n );\n this.render();\n\n jQuery(document.body).on('wc_fragments_loaded wc_fragments_refreshed', () => {\n this.render();\n });\n }\n\n shouldRender() {\n return document.querySelector(this.gateway.button.mini_cart_wrapper) !==\n null || document.querySelector(this.gateway.hosted_fields.mini_cart_wrapper) !==\n null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n\n this.renderer.render(\n this.gateway.button.mini_cart_wrapper,\n this.gateway.hosted_fields.mini_cart_wrapper,\n this.actionHandler.configuration()\n );\n }\n}\n\nexport default MiniCartBootstap;","class Product {\n\n constructor(id, quantity, variations) {\n this.id = id;\n this.quantity = quantity;\n this.variations = variations;\n }\n\n data() {\n return {\n id:this.id,\n quantity:this.quantity,\n variations:this.variations\n }\n }\n}\n\nexport default Product;","import Product from \"../Entity/Product\";\nclass UpdateCart {\n\n constructor(endpoint, nonce)\n {\n this.endpoint = endpoint;\n this.nonce = nonce;\n }\n\n /**\n *\n * @param onResolve\n * @param {Product[]} products\n * @returns {Promise<unknown>}\n */\n update(onResolve, products)\n {\n return new Promise((resolve, reject) => {\n fetch(\n this.endpoint,\n {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.nonce,\n products,\n })\n }\n ).then(\n (result) => {\n return result.json();\n }\n ).then((result) => {\n if (! result.success) {\n reject(result.data);\n return;\n }\n\n const resolved = onResolve(result.data);\n resolve(resolved);\n })\n });\n }\n}\n\nexport default UpdateCart;","/**\n * When you can't add something to the cart, the PayPal buttons should not show.\n * Therefore we listen for changes on the add to cart button and show/hide the buttons accordingly.\n */\n\nclass ButtonsToggleListener {\n constructor(element, showCallback, hideCallback)\n {\n this.element = element;\n this.showCallback = showCallback;\n this.hideCallback = hideCallback;\n this.observer = null;\n }\n\n init()\n {\n const config = { attributes : true };\n const callback = () => {\n if (this.element.classList.contains('disabled')) {\n this.hideCallback();\n return;\n }\n this.showCallback();\n }\n this.observer = new MutationObserver(callback);\n this.observer.observe(this.element, config);\n callback();\n }\n\n disconnect()\n {\n this.observer.disconnect();\n }\n}\n\nexport default ButtonsToggleListener;","import ButtonsToggleListener from '../Helper/ButtonsToggleListener';\nimport Product from '../Entity/Product';\nimport onApprove from '../OnApproveHandler/onApproveForContinue';\nimport {payerData} from \"../Helper/PayerData\";\n\nclass SingleProductActionHandler {\n\n constructor(\n config,\n updateCart,\n showButtonCallback,\n hideButtonCallback,\n formElement,\n errorHandler\n ) {\n this.config = config;\n this.updateCart = updateCart;\n this.showButtonCallback = showButtonCallback;\n this.hideButtonCallback = hideButtonCallback;\n this.formElement = formElement;\n this.errorHandler = errorHandler;\n }\n\n configuration()\n {\n\n if ( this.hasVariations() ) {\n const observer = new ButtonsToggleListener(\n this.formElement.querySelector('.single_add_to_cart_button'),\n this.showButtonCallback,\n this.hideButtonCallback\n );\n observer.init();\n }\n\n return {\n createOrder: this.createOrder(),\n onApprove: onApprove(this, this.errorHandler),\n onError: (error) => {\n this.errorHandler.genericError();\n }\n }\n }\n\n createOrder()\n {\n var getProducts = null;\n if (! this.isGroupedProduct() ) {\n getProducts = () => {\n const id = document.querySelector('[name=\"add-to-cart\"]').value;\n const qty = document.querySelector('[name=\"quantity\"]').value;\n const variations = this.variations();\n return [new Product(id, qty, variations)];\n }\n } else {\n getProducts = () => {\n const products = [];\n this.formElement.querySelectorAll('input[type=\"number\"]').forEach((element) => {\n if (! element.value) {\n return;\n }\n const elementName = element.getAttribute('name').match(/quantity\\[([\\d]*)\\]/);\n if (elementName.length !== 2) {\n return;\n }\n const id = parseInt(elementName[1]);\n const quantity = parseInt(element.value);\n products.push(new Product(id, quantity, null));\n })\n return products;\n }\n }\n const createOrder = (data, actions) => {\n this.errorHandler.clear();\n\n const onResolve = (purchase_units) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ?\n this.config.bn_codes[this.config.context] : '';\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n purchase_units,\n payer,\n bn_code:bnCode,\n context:this.config.context\n })\n }).then(function (res) {\n return res.json();\n }).then(function (data) {\n if (!data.success) {\n console.error(data);\n throw Error(data.data.message);\n }\n return data.data.id;\n });\n };\n\n const promise = this.updateCart.update(onResolve, getProducts());\n return promise;\n };\n return createOrder;\n }\n\n variations()\n {\n\n if (! this.hasVariations()) {\n return null;\n }\n const attributes = [...this.formElement.querySelectorAll(\"[name^='attribute_']\")].map(\n (element) => {\n return {\n value:element.value,\n name:element.name\n }\n }\n );\n return attributes;\n }\n\n hasVariations()\n {\n return this.formElement.classList.contains('variations_form');\n }\n\n isGroupedProduct()\n {\n return this.formElement.classList.contains('grouped_form');\n }\n}\nexport default SingleProductActionHandler;\n","import ErrorHandler from '../ErrorHandler';\nimport UpdateCart from \"../Helper/UpdateCart\";\nimport SingleProductActionHandler from \"../ActionHandler/SingleProductActionHandler\";\n\nclass SingleProductBootstap {\n constructor(gateway, renderer, messages) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n }\n\n init() {\n if (!this.shouldRender()) {\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n return;\n }\n\n this.render();\n }\n\n shouldRender() {\n if (document.querySelector('form.cart') === null) {\n return false;\n }\n\n return true;\n }\n\n render() {\n const actionHandler = new SingleProductActionHandler(\n this.gateway,\n new UpdateCart(\n this.gateway.ajax.change_cart.endpoint,\n this.gateway.ajax.change_cart.nonce,\n ),\n () => {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n let priceText = \"0\";\n if (document.querySelector('form.cart ins .woocommerce-Price-amount')) {\n priceText = document.querySelector('form.cart ins .woocommerce-Price-amount').innerText;\n }\n else if (document.querySelector('form.cart .woocommerce-Price-amount')) {\n priceText = document.querySelector('form.cart .woocommerce-Price-amount').innerText;\n }\n const amount = parseInt(priceText.replace(/([^\\d,\\.\\s]*)/g, ''));\n this.messages.renderWithAmount(amount)\n },\n () => {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n },\n document.querySelector('form.cart'),\n new ErrorHandler(this.gateway.labels.error.generic),\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n}\n\nexport default SingleProductBootstap;","import CartActionHandler from '../ActionHandler/CartActionHandler';\nimport ErrorHandler from '../ErrorHandler';\n\nclass CartBootstrap {\n constructor(gateway, renderer) {\n this.gateway = gateway;\n this.renderer = renderer;\n }\n\n init() {\n if (!this.shouldRender()) {\n return;\n }\n\n this.render();\n\n jQuery(document.body).on('updated_cart_totals updated_checkout', () => {\n this.render();\n });\n }\n\n shouldRender() {\n return document.querySelector(this.gateway.button.wrapper) !==\n null || document.querySelector(this.gateway.hosted_fields.wrapper) !==\n null;\n }\n\n render() {\n const actionHandler = new CartActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n}\n\nexport default CartBootstrap;","const onApprove = (context, errorHandler, spinner) => {\n return (data, actions) => {\n spinner.block();\n return fetch(context.config.ajax.approve_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: context.config.ajax.approve_order.nonce,\n order_id:data.orderID\n })\n }).then((res)=>{\n return res.json();\n }).then((data)=>{\n spinner.unblock();\n if (!data.success) {\n if (data.data.code === 100) {\n errorHandler.message(data.data.message);\n } else {\n errorHandler.genericError();\n }\n if (typeof actions !== 'undefined' && typeof actions.restart !== 'undefined') {\n return actions.restart();\n }\n throw new Error(data.data.message);\n }\n document.querySelector('#place_order').click()\n });\n\n }\n}\n\nexport default onApprove;\n","import onApprove from '../OnApproveHandler/onApproveForPayNow.js';\nimport {payerData} from \"../Helper/PayerData\";\n\nclass CheckoutActionHandler {\n\n constructor(config, errorHandler, spinner) {\n this.config = config;\n this.errorHandler = errorHandler;\n this.spinner = spinner;\n }\n\n configuration() {\n const spinner = this.spinner;\n const createOrder = (data, actions) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ?\n this.config.bn_codes[this.config.context] : '';\n\n const errorHandler = this.errorHandler;\n\n const formSelector = this.config.context === 'checkout' ? 'form.checkout' : 'form#order_review';\n const formValues = jQuery(formSelector).serialize();\n\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n payer,\n bn_code:bnCode,\n context:this.config.context,\n order_id:this.config.order_id,\n form:formValues\n })\n }).then(function (res) {\n return res.json();\n }).then(function (data) {\n if (!data.success) {\n spinner.unblock();\n errorHandler.message(data.data.message, true);\n return;\n }\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', 'ppcp-resume-order');\n input.setAttribute('value', data.data.purchase_units[0].custom_id);\n document.querySelector(formSelector).append(input);\n return data.data.id;\n });\n }\n return {\n createOrder,\n onApprove:onApprove(this, this.errorHandler, this.spinner),\n onCancel: () => {\n spinner.unblock();\n },\n onError: () => {\n this.errorHandler.genericError();\n spinner.unblock();\n }\n }\n }\n}\n\nexport default CheckoutActionHandler;\n","import ErrorHandler from '../ErrorHandler';\nimport CheckoutActionHandler from '../ActionHandler/CheckoutActionHandler';\n\nclass CheckoutBootstap {\n constructor(gateway, renderer, messages, spinner) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n this.spinner = spinner;\n }\n\n init() {\n\n this.render();\n\n jQuery(document.body).on('updated_checkout', () => {\n this.render();\n });\n\n jQuery(document.body).\n on('updated_checkout payment_method_selected', () => {\n this.switchBetweenPayPalandOrderButton();\n });\n this.switchBetweenPayPalandOrderButton();\n }\n\n shouldRender() {\n if (document.querySelector(this.gateway.button.cancel_wrapper)) {\n return false;\n }\n\n return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n if (document.querySelector(this.gateway.hosted_fields.wrapper + '>div')) {\n document.querySelector(this.gateway.hosted_fields.wrapper + '>div').setAttribute('style', '');\n }\n const actionHandler = new CheckoutActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n this.spinner\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n\n switchBetweenPayPalandOrderButton() {\n const currentPaymentMethod = jQuery(\n 'input[name=\"payment_method\"]:checked').val();\n\n if (currentPaymentMethod !== 'ppcp-gateway' && currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n jQuery('#place_order').show();\n }\n else {\n jQuery('#place_order').hide();\n if (currentPaymentMethod === 'ppcp-gateway') {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.messages.wrapper);\n this.messages.render();\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n }\n if (currentPaymentMethod === 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n }\n }\n }\n}\n\nexport default CheckoutBootstap;","import ErrorHandler from '../ErrorHandler';\nimport CheckoutActionHandler from '../ActionHandler/CheckoutActionHandler';\n\nclass PayNowBootstrap {\n constructor(gateway, renderer, messages, spinner) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n this.spinner = spinner;\n }\n\n init() {\n\n this.render();\n\n jQuery(document.body).on('updated_checkout', () => {\n this.render();\n });\n\n jQuery(document.body).\n on('updated_checkout payment_method_selected', () => {\n this.switchBetweenPayPalandOrderButton();\n });\n this.switchBetweenPayPalandOrderButton();\n }\n\n shouldRender() {\n if (document.querySelector(this.gateway.button.cancel_wrapper)) {\n return false;\n }\n\n return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n if (document.querySelector(this.gateway.hosted_fields.wrapper + '>div')) {\n document.querySelector(this.gateway.hosted_fields.wrapper + '>div').setAttribute('style', '');\n }\n const actionHandler = new CheckoutActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n this.spinner\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n\n switchBetweenPayPalandOrderButton() {\n const currentPaymentMethod = jQuery(\n 'input[name=\"payment_method\"]:checked').val();\n\n if (currentPaymentMethod !== 'ppcp-gateway' && currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n jQuery('#place_order').show();\n }\n else {\n jQuery('#place_order').hide();\n if (currentPaymentMethod === 'ppcp-gateway') {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.messages.wrapper);\n this.messages.render();\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n }\n if (currentPaymentMethod === 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n }\n }\n }\n}\n\nexport default PayNowBootstrap;\n","class Renderer {\n constructor(creditCardRenderer, defaultConfig) {\n this.defaultConfig = defaultConfig;\n this.creditCardRenderer = creditCardRenderer;\n }\n\n render(wrapper, hostedFieldsWrapper, contextConfig) {\n\n this.renderButtons(wrapper, contextConfig);\n this.creditCardRenderer.render(hostedFieldsWrapper, contextConfig);\n }\n\n renderButtons(wrapper, contextConfig) {\n if (! document.querySelector(wrapper) || this.isAlreadyRendered(wrapper) || 'undefined' === typeof paypal.Buttons ) {\n return;\n }\n\n const style = wrapper === this.defaultConfig.button.wrapper ? this.defaultConfig.button.style : this.defaultConfig.button.mini_cart_style;\n paypal.Buttons({\n style,\n ...contextConfig,\n }).render(wrapper);\n }\n\n isAlreadyRendered(wrapper) {\n return document.querySelector(wrapper).hasChildNodes();\n }\n\n hideButtons(element) {\n const domElement = document.querySelector(element);\n if (! domElement ) {\n return false;\n }\n domElement.style.display = 'none';\n return true;\n }\n\n showButtons(element) {\n const domElement = document.querySelector(element);\n if (! domElement ) {\n return false;\n }\n domElement.style.display = 'block';\n return true;\n }\n}\n\nexport default Renderer;","const dccInputFactory = (original) => {\n const styles = window.getComputedStyle(original);\n const newElement = document.createElement('span');\n newElement.setAttribute('id', original.id);\n Object.values(styles).forEach( (prop) => {\n if (! styles[prop] || ! isNaN(prop) ) {\n return;\n }\n newElement.style.setProperty(prop,'' + styles[prop]);\n });\n return newElement;\n}\n\nexport default dccInputFactory;","import dccInputFactory from \"../Helper/DccInputFactory\";\n\nclass CreditCardRenderer {\n\n constructor(defaultConfig, errorHandler, spinner) {\n this.defaultConfig = defaultConfig;\n this.errorHandler = errorHandler;\n this.spinner = spinner;\n this.cardValid = false;\n }\n\n render(wrapper, contextConfig) {\n\n if (\n (\n this.defaultConfig.context !== 'checkout'\n && this.defaultConfig.context !== 'pay-now'\n )\n || wrapper === null\n || document.querySelector(wrapper) === null\n ) {\n return;\n }\n if (\n typeof paypal.HostedFields === 'undefined'\n || ! paypal.HostedFields.isEligible()\n ) {\n const wrapperElement = document.querySelector(wrapper);\n wrapperElement.parentNode.removeChild(wrapperElement);\n return;\n }\n\n const gateWayBox = document.querySelector('.payment_box.payment_method_ppcp-credit-card-gateway');\n const oldDisplayStyle = gateWayBox.style.display;\n gateWayBox.style.display = 'block';\n\n const hideDccGateway = document.querySelector('#ppcp-hide-dcc');\n if (hideDccGateway) {\n hideDccGateway.parentNode.removeChild(hideDccGateway);\n }\n\n const cardNumberField = document.querySelector('#ppcp-credit-card-gateway-card-number');\n\n const stylesRaw = window.getComputedStyle(cardNumberField);\n let styles = {};\n Object.values(stylesRaw).forEach( (prop) => {\n if (! stylesRaw[prop]) {\n return;\n }\n styles[prop] = '' + stylesRaw[prop];\n });\n\n const cardNumber = dccInputFactory(cardNumberField);\n cardNumberField.parentNode.replaceChild(cardNumber, cardNumberField);\n\n const cardExpiryField = document.querySelector('#ppcp-credit-card-gateway-card-expiry');\n const cardExpiry = dccInputFactory(cardExpiryField);\n cardExpiryField.parentNode.replaceChild(cardExpiry, cardExpiryField);\n\n const cardCodeField = document.querySelector('#ppcp-credit-card-gateway-card-cvc');\n const cardCode = dccInputFactory(cardCodeField);\n cardCodeField.parentNode.replaceChild(cardCode, cardCodeField);\n\n gateWayBox.style.display = oldDisplayStyle;\n\n const formWrapper = '.payment_box payment_method_ppcp-credit-card-gateway';\n if (\n this.defaultConfig.enforce_vault\n && document.querySelector(formWrapper + ' .ppcp-credit-card-vault')\n ) {\n document.querySelector(formWrapper + ' .ppcp-credit-card-vault').checked = true;\n document.querySelector(formWrapper + ' .ppcp-credit-card-vault').setAttribute('disabled', true);\n }\n paypal.HostedFields.render({\n createOrder: contextConfig.createOrder,\n styles: {\n 'input': styles\n },\n fields: {\n number: {\n selector: '#ppcp-credit-card-gateway-card-number',\n placeholder: this.defaultConfig.hosted_fields.labels.credit_card_number,\n },\n cvv: {\n selector: '#ppcp-credit-card-gateway-card-cvc',\n placeholder: this.defaultConfig.hosted_fields.labels.cvv,\n },\n expirationDate: {\n selector: '#ppcp-credit-card-gateway-card-expiry',\n placeholder: this.defaultConfig.hosted_fields.labels.mm_yyyy,\n }\n }\n }).then(hostedFields => {\n const submitEvent = (event) => {\n this.spinner.block();\n if (event) {\n event.preventDefault();\n }\n this.errorHandler.clear();\n const state = hostedFields.getState();\n const formValid = Object.keys(state.fields).every(function (key) {\n return state.fields[key].isValid;\n });\n\n if (formValid && this.cardValid) {\n\n let vault = document.querySelector(wrapper + ' .ppcp-credit-card-vault') ?\n document.querySelector(wrapper + ' .ppcp-credit-card-vault').checked : false;\n vault = this.defaultConfig.enforce_vault || vault;\n\n hostedFields.submit({\n contingencies: ['3D_SECURE'],\n vault\n }).then((payload) => {\n payload.orderID = payload.orderId;\n this.spinner.unblock();\n return contextConfig.onApprove(payload);\n }).catch(() => {\n this.spinner.unblock();\n this.errorHandler.genericError()\n });\n } else {\n this.spinner.unblock();\n const message = ! this.cardValid ? this.defaultConfig.hosted_fields.labels.card_not_supported : this.defaultConfig.hosted_fields.labels.fields_not_valid;\n this.errorHandler.message(message);\n }\n }\n hostedFields.on('inputSubmitRequest', function () {\n submitEvent(null);\n });\n hostedFields.on('cardTypeChange', (event) => {\n if ( ! event.cards.length ) {\n this.cardValid = false;\n return;\n }\n const validCards = this.defaultConfig.hosted_fields.valid_cards;\n this.cardValid = validCards.indexOf(event.cards[0].type) !== -1;\n })\n document.querySelector(wrapper + ' button').addEventListener(\n 'click',\n submitEvent\n );\n });\n\n document.querySelector('#payment_method_ppcp-credit-card-gateway').addEventListener(\n 'click',\n () => {\n document.querySelector('label[for=ppcp-credit-card-gateway-card-number]').click();\n }\n )\n }\n}\nexport default CreditCardRenderer;\n","const storageKey = 'ppcp-data-client-id';\n\nconst validateToken = (token, user) => {\n if (! token) {\n return false;\n }\n if (token.user !== user) {\n return false;\n }\n const currentTime = new Date().getTime();\n const isExpired = currentTime >= token.expiration * 1000;\n return ! isExpired;\n}\n\nconst storedTokenForUser = (user) => {\n const token = JSON.parse(sessionStorage.getItem(storageKey));\n if (validateToken(token, user)) {\n return token.token;\n }\n return null;\n}\n\nconst storeToken = (token) => {\n sessionStorage.setItem(storageKey, JSON.stringify(token));\n}\n\nconst dataClientIdAttributeHandler = (script, config) => {\n const token = storedTokenForUser(config.user);\n if (token) {\n script.setAttribute('data-client-token', token);\n document.body.append(script);\n return;\n }\n fetch(config.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: config.nonce\n })\n }).then((res)=>{\n return res.json();\n }).then((data)=>{\n const isValid = validateToken(data, config.user);\n if (!isValid) {\n return;\n }\n storeToken(data);\n script.setAttribute('data-client-token', data.token);\n document.body.append(script);\n });\n}\n\nexport default dataClientIdAttributeHandler;","class MessageRenderer {\n\n constructor(config) {\n this.config = config;\n }\n\n render() {\n if (! this.shouldRender()) {\n return;\n }\n\n paypal.Messages({\n amount: this.config.amount,\n placement: this.config.placement,\n style: this.config.style\n }).render(this.config.wrapper);\n }\n\n renderWithAmount(amount) {\n\n if (! this.shouldRender()) {\n return;\n }\n\n const newWrapper = document.createElement('div');\n newWrapper.setAttribute('id', this.config.wrapper.replace('#', ''));\n\n const sibling = document.querySelector(this.config.wrapper).nextSibling;\n document.querySelector(this.config.wrapper).parentElement.removeChild(document.querySelector(this.config.wrapper));\n sibling.parentElement.insertBefore(newWrapper, sibling);\n paypal.Messages({\n amount,\n placement: this.config.placement,\n style: this.config.style\n }).render(this.config.wrapper);\n }\n\n shouldRender() {\n\n if (typeof paypal.Messages === 'undefined' || typeof this.config.wrapper === 'undefined' ) {\n return false;\n }\n if (! document.querySelector(this.config.wrapper)) {\n return false;\n }\n return true;\n }\n}\nexport default MessageRenderer;","class Spinner {\n\n constructor() {\n this.target = 'form.woocommerce-checkout';\n }\n\n setTarget(target) {\n this.target = target;\n }\n\n block() {\n\n jQuery( this.target ).block({\n message: null,\n overlayCSS: {\n background: '#fff',\n opacity: 0.6\n }\n });\n }\n\n unblock() {\n\n jQuery( this.target ).unblock();\n }\n}\n\nexport default Spinner;\n","import MiniCartBootstap from './modules/ContextBootstrap/MiniCartBootstap';\nimport SingleProductBootstap from './modules/ContextBootstrap/SingleProductBootstap';\nimport CartBootstrap from './modules/ContextBootstrap/CartBootstap';\nimport CheckoutBootstap from './modules/ContextBootstrap/CheckoutBootstap';\nimport PayNowBootstrap from \"./modules/ContextBootstrap/PayNowBootstrap\";\nimport Renderer from './modules/Renderer/Renderer';\nimport ErrorHandler from './modules/ErrorHandler';\nimport CreditCardRenderer from \"./modules/Renderer/CreditCardRenderer\";\nimport dataClientIdAttributeHandler from \"./modules/DataClientIdAttributeHandler\";\nimport MessageRenderer from \"./modules/Renderer/MessageRenderer\";\nimport Spinner from \"./modules/Helper/Spinner\";\n\nconst bootstrap = () => {\n const errorHandler = new ErrorHandler(PayPalCommerceGateway.labels.error.generic);\n const spinner = new Spinner();\n const creditCardRenderer = new CreditCardRenderer(PayPalCommerceGateway, errorHandler, spinner);\n const renderer = new Renderer(creditCardRenderer, PayPalCommerceGateway);\n const messageRenderer = new MessageRenderer(PayPalCommerceGateway.messages);\n const context = PayPalCommerceGateway.context;\n if (context === 'mini-cart' || context === 'product') {\n const miniCartBootstrap = new MiniCartBootstap(\n PayPalCommerceGateway,\n renderer\n );\n\n miniCartBootstrap.init();\n }\n\n if (context === 'product') {\n const singleProductBootstrap = new SingleProductBootstap(\n PayPalCommerceGateway,\n renderer,\n messageRenderer,\n );\n\n singleProductBootstrap.init();\n }\n\n if (context === 'cart') {\n const cartBootstrap = new CartBootstrap(\n PayPalCommerceGateway,\n renderer,\n );\n\n cartBootstrap.init();\n }\n\n if (context === 'checkout') {\n const checkoutBootstap = new CheckoutBootstap(\n PayPalCommerceGateway,\n renderer,\n messageRenderer,\n spinner\n );\n\n checkoutBootstap.init();\n }\n\n if (context === 'pay-now' ) {\n const payNowBootstrap = new PayNowBootstrap(\n PayPalCommerceGateway,\n renderer,\n messageRenderer,\n spinner\n );\n payNowBootstrap.init();\n }\n\n if (context !== 'checkout') {\n messageRenderer.render();\n }\n};\ndocument.addEventListener(\n 'DOMContentLoaded',\n () => {\n if (!typeof (PayPalCommerceGateway)) {\n console.error('PayPal button could not be configured.');\n return;\n }\n const script = document.createElement('script');\n\n script.addEventListener('load', (event) => {\n bootstrap();\n });\n script.setAttribute('src', PayPalCommerceGateway.button.url);\n Object.entries(PayPalCommerceGateway.script_attributes).forEach(\n (keyValue) => {\n script.setAttribute(keyValue[0], keyValue[1]);\n }\n );\n\n if (PayPalCommerceGateway.data_client_id.set_attribute) {\n dataClientIdAttributeHandler(script, PayPalCommerceGateway.data_client_id);\n return;\n }\n\n document.body.append(script);\n },\n);\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./resources/js/modules/ErrorHandler.js","webpack:///./resources/js/modules/OnApproveHandler/onApproveForContinue.js","webpack:///./resources/js/modules/Helper/PayerData.js","webpack:///./resources/js/modules/ActionHandler/CartActionHandler.js","webpack:///./resources/js/modules/ContextBootstrap/MiniCartBootstap.js","webpack:///./resources/js/modules/Entity/Product.js","webpack:///./resources/js/modules/Helper/UpdateCart.js","webpack:///./resources/js/modules/Helper/ButtonsToggleListener.js","webpack:///./resources/js/modules/ActionHandler/SingleProductActionHandler.js","webpack:///./resources/js/modules/ContextBootstrap/SingleProductBootstap.js","webpack:///./resources/js/modules/ContextBootstrap/CartBootstap.js","webpack:///./resources/js/modules/OnApproveHandler/onApproveForPayNow.js","webpack:///./resources/js/modules/ActionHandler/CheckoutActionHandler.js","webpack:///./resources/js/modules/ContextBootstrap/CheckoutBootstap.js","webpack:///./resources/js/modules/ContextBootstrap/PayNowBootstrap.js","webpack:///./resources/js/modules/Renderer/Renderer.js","webpack:///./resources/js/modules/Helper/DccInputFactory.js","webpack:///./resources/js/modules/Renderer/CreditCardRenderer.js","webpack:///./resources/js/modules/DataClientIdAttributeHandler.js","webpack:///./resources/js/modules/Renderer/MessageRenderer.js","webpack:///./resources/js/modules/Helper/Spinner.js","webpack:///./resources/js/button.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ErrorHandler","constructor","genericErrorText","this","wrapper","document","querySelector","messagesList","genericError","classList","contains","clear","message","appendPreparedErrorMessageElement","errorMessageElement","prepareMessagesList","replaceWith","text","persist","length","Error","add","remove","messageNode","prepareMessagesListItem","appendChild","jQuery","scroll_to_notices","createElement","setAttribute","li","innerHTML","sanitize","textarea","replace","innerText","onApprove","context","errorHandler","data","actions","fetch","config","ajax","approve_order","endpoint","method","body","JSON","stringify","nonce","order_id","orderID","then","res","json","success","restart","catch","err","location","href","redirect","payerData","payer","PayPalCommerceGateway","phone","phone_type","phone_number","national_number","email_address","surname","given_name","address","country_code","address_line_1","address_line_2","admin_area_1","admin_area_2","postal_code","CartActionHandler","configuration","createOrder","bnCode","bn_codes","create_order","purchase_units","bn_code","console","error","id","onError","MiniCartBootstap","gateway","renderer","actionHandler","init","labels","generic","render","on","shouldRender","button","mini_cart_wrapper","hosted_fields","Product","quantity","variations","UpdateCart","update","onResolve","products","Promise","resolve","reject","result","resolved","ButtonsToggleListener","element","showCallback","hideCallback","observer","callback","MutationObserver","observe","attributes","disconnect","SingleProductActionHandler","updateCart","showButtonCallback","hideButtonCallback","formElement","hasVariations","getProducts","isGroupedProduct","querySelectorAll","forEach","elementName","getAttribute","match","parseInt","push","qty","map","SingleProductBootstap","messages","hideButtons","change_cart","showButtons","priceText","amount","renderWithAmount","CartBootstrap","spinner","block","unblock","code","click","CheckoutActionHandler","formSelector","formValues","serialize","form","domParser","DOMParser","parseFromString","input","custom_id","append","onCancel","CheckoutBootstap","switchBetweenPayPalandOrderButton","displayPlaceOrderButtonForSavedCreditCards","cancel_wrapper","val","currentPaymentMethod","show","hide","PayNowBootstrap","URLSearchParams","window","search","has","Renderer","creditCardRenderer","defaultConfig","hostedFieldsWrapper","contextConfig","renderButtons","isAlreadyRendered","paypal","Buttons","style","mini_cart_style","hasChildNodes","domElement","display","dccInputFactory","original","styles","getComputedStyle","newElement","values","prop","isNaN","setProperty","CreditCardRenderer","cardValid","HostedFields","isEligible","wrapperElement","parentNode","removeChild","gateWayBox","oldDisplayStyle","hideDccGateway","cardNumberField","stylesRaw","cardNumber","replaceChild","cardExpiryField","cardExpiry","cardCodeField","cardCode","formWrapper","enforce_vault","checked","fields","number","selector","placeholder","credit_card_number","cvv","expirationDate","mm_yyyy","hostedFields","submitEvent","event","preventDefault","state","getState","keys","every","isValid","save_card","vault","getElementById","submit","contingencies","payload","orderId","fields_not_valid","card_not_supported","cards","validCards","valid_cards","indexOf","type","addEventListener","validateToken","token","user","Date","getTime","expiration","dataClientIdAttributeHandler","script","sessionStorage","setItem","MessageRenderer","Messages","placement","newWrapper","sibling","nextSibling","parentElement","insertBefore","Spinner","target","setTarget","overlayCSS","background","opacity","messageRenderer","bootstrap","url","entries","script_attributes","keyValue","data_client_id","set_attribute"],"mappings":"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","file":"js/button.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","class ErrorHandler {\n\n constructor(genericErrorText)\n {\n this.genericErrorText = genericErrorText;\n this.wrapper = document.querySelector('.woocommerce-notices-wrapper');\n this.messagesList = document.querySelector('ul.woocommerce-error');\n }\n\n genericError() {\n if (this.wrapper.classList.contains('ppcp-persist')) {\n return;\n }\n this.clear();\n this.message(this.genericErrorText)\n }\n\n appendPreparedErrorMessageElement(errorMessageElement)\n {\n if(this.messagesList === null) {\n this.prepareMessagesList();\n }\n\n this.messagesList.replaceWith(errorMessageElement);\n }\n\n message(text, persist = false)\n {\n if(! typeof String || text.length === 0){\n throw new Error('A new message text must be a non-empty string.');\n }\n\n if(this.messagesList === null){\n this.prepareMessagesList();\n }\n\n if (persist) {\n this.wrapper.classList.add('ppcp-persist');\n } else {\n this.wrapper.classList.remove('ppcp-persist');\n }\n\n let messageNode = this.prepareMessagesListItem(text);\n this.messagesList.appendChild(messageNode);\n\n jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'))\n }\n\n prepareMessagesList()\n {\n if(this.messagesList === null){\n this.messagesList = document.createElement('ul');\n this.messagesList.setAttribute('class', 'woocommerce-error');\n this.messagesList.setAttribute('role', 'alert');\n this.wrapper.appendChild(this.messagesList);\n }\n }\n\n prepareMessagesListItem(message)\n {\n const li = document.createElement('li');\n li.innerHTML = message;\n\n return li;\n }\n\n sanitize(text)\n {\n const textarea = document.createElement('textarea');\n textarea.innerHTML = text;\n return textarea.value.replace('Error: ', '');\n }\n\n clear()\n {\n if (! this.wrapper.classList.contains('woocommerce-error')) {\n return;\n }\n this.wrapper.classList.remove('woocommerce-error');\n this.wrapper.innerText = '';\n }\n}\n\nexport default ErrorHandler;\n","const onApprove = (context, errorHandler) => {\n return (data, actions) => {\n return fetch(context.config.ajax.approve_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: context.config.ajax.approve_order.nonce,\n order_id:data.orderID\n })\n }).then((res)=>{\n return res.json();\n }).then((data)=>{\n if (!data.success) {\n errorHandler.genericError();\n return actions.restart().catch(err => {\n errorHandler.genericError();\n });;\n }\n location.href = context.config.redirect;\n });\n\n }\n}\n\nexport default onApprove;\n","export const payerData = () => {\n const payer = PayPalCommerceGateway.payer;\n if (! payer) {\n return null;\n }\n\n const phone = (document.querySelector('#billing_phone') || typeof payer.phone !== 'undefined') ?\n {\n phone_type:\"HOME\",\n phone_number:{\n national_number : (document.querySelector('#billing_phone')) ? document.querySelector('#billing_phone').value : payer.phone.phone_number.national_number\n }\n } : null;\n const payerData = {\n email_address:(document.querySelector('#billing_email')) ? document.querySelector('#billing_email').value : payer.email_address,\n name : {\n surname: (document.querySelector('#billing_last_name')) ? document.querySelector('#billing_last_name').value : payer.name.surname,\n given_name: (document.querySelector('#billing_first_name')) ? document.querySelector('#billing_first_name').value : payer.name.given_name\n },\n address : {\n country_code : (document.querySelector('#billing_country')) ? document.querySelector('#billing_country').value : payer.address.country_code,\n address_line_1 : (document.querySelector('#billing_address_1')) ? document.querySelector('#billing_address_1').value : payer.address.address_line_1,\n address_line_2 : (document.querySelector('#billing_address_2')) ? document.querySelector('#billing_address_2').value : payer.address.address_line_2,\n admin_area_1 : (document.querySelector('#billing_state')) ? document.querySelector('#billing_state').value : payer.address.admin_area_1,\n admin_area_2 : (document.querySelector('#billing_city')) ? document.querySelector('#billing_city').value : payer.address.admin_area_2,\n postal_code : (document.querySelector('#billing_postcode')) ? document.querySelector('#billing_postcode').value : payer.address.postal_code\n }\n };\n\n if (phone) {\n payerData.phone = phone;\n }\n return payerData;\n}\n","import onApprove from '../OnApproveHandler/onApproveForContinue.js';\nimport {payerData} from \"../Helper/PayerData\";\n\nclass CartActionHandler {\n\n constructor(config, errorHandler) {\n this.config = config;\n this.errorHandler = errorHandler;\n }\n\n configuration() {\n const createOrder = (data, actions) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ?\n this.config.bn_codes[this.config.context] : '';\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n purchase_units: [],\n bn_code:bnCode,\n payer,\n context:this.config.context\n }),\n }).then(function(res) {\n return res.json();\n }).then(function(data) {\n if (!data.success) {\n console.error(data);\n throw Error(data.data.message);\n }\n return data.data.id;\n });\n };\n\n return {\n createOrder,\n onApprove: onApprove(this, this.errorHandler),\n onError: (error) => {\n this.errorHandler.genericError();\n }\n };\n }\n}\n\nexport default CartActionHandler;\n","import ErrorHandler from '../ErrorHandler';\nimport CartActionHandler from '../ActionHandler/CartActionHandler';\n\nclass MiniCartBootstap {\n constructor(gateway, renderer) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.actionHandler = null;\n }\n\n init() {\n\n this.actionHandler = new CartActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n );\n this.render();\n\n jQuery(document.body).on('wc_fragments_loaded wc_fragments_refreshed', () => {\n this.render();\n });\n }\n\n shouldRender() {\n return document.querySelector(this.gateway.button.mini_cart_wrapper) !==\n null || document.querySelector(this.gateway.hosted_fields.mini_cart_wrapper) !==\n null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n\n this.renderer.render(\n this.gateway.button.mini_cart_wrapper,\n this.gateway.hosted_fields.mini_cart_wrapper,\n this.actionHandler.configuration()\n );\n }\n}\n\nexport default MiniCartBootstap;","class Product {\n\n constructor(id, quantity, variations) {\n this.id = id;\n this.quantity = quantity;\n this.variations = variations;\n }\n\n data() {\n return {\n id:this.id,\n quantity:this.quantity,\n variations:this.variations\n }\n }\n}\n\nexport default Product;","import Product from \"../Entity/Product\";\nclass UpdateCart {\n\n constructor(endpoint, nonce)\n {\n this.endpoint = endpoint;\n this.nonce = nonce;\n }\n\n /**\n *\n * @param onResolve\n * @param {Product[]} products\n * @returns {Promise<unknown>}\n */\n update(onResolve, products)\n {\n return new Promise((resolve, reject) => {\n fetch(\n this.endpoint,\n {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.nonce,\n products,\n })\n }\n ).then(\n (result) => {\n return result.json();\n }\n ).then((result) => {\n if (! result.success) {\n reject(result.data);\n return;\n }\n\n const resolved = onResolve(result.data);\n resolve(resolved);\n })\n });\n }\n}\n\nexport default UpdateCart;","/**\n * When you can't add something to the cart, the PayPal buttons should not show.\n * Therefore we listen for changes on the add to cart button and show/hide the buttons accordingly.\n */\n\nclass ButtonsToggleListener {\n constructor(element, showCallback, hideCallback)\n {\n this.element = element;\n this.showCallback = showCallback;\n this.hideCallback = hideCallback;\n this.observer = null;\n }\n\n init()\n {\n const config = { attributes : true };\n const callback = () => {\n if (this.element.classList.contains('disabled')) {\n this.hideCallback();\n return;\n }\n this.showCallback();\n }\n this.observer = new MutationObserver(callback);\n this.observer.observe(this.element, config);\n callback();\n }\n\n disconnect()\n {\n this.observer.disconnect();\n }\n}\n\nexport default ButtonsToggleListener;","import ButtonsToggleListener from '../Helper/ButtonsToggleListener';\nimport Product from '../Entity/Product';\nimport onApprove from '../OnApproveHandler/onApproveForContinue';\nimport {payerData} from \"../Helper/PayerData\";\n\nclass SingleProductActionHandler {\n\n constructor(\n config,\n updateCart,\n showButtonCallback,\n hideButtonCallback,\n formElement,\n errorHandler\n ) {\n this.config = config;\n this.updateCart = updateCart;\n this.showButtonCallback = showButtonCallback;\n this.hideButtonCallback = hideButtonCallback;\n this.formElement = formElement;\n this.errorHandler = errorHandler;\n }\n\n configuration()\n {\n\n if ( this.hasVariations() ) {\n const observer = new ButtonsToggleListener(\n this.formElement.querySelector('.single_add_to_cart_button'),\n this.showButtonCallback,\n this.hideButtonCallback\n );\n observer.init();\n }\n\n return {\n createOrder: this.createOrder(),\n onApprove: onApprove(this, this.errorHandler),\n onError: (error) => {\n this.errorHandler.genericError();\n }\n }\n }\n\n createOrder()\n {\n var getProducts = null;\n if (! this.isGroupedProduct() ) {\n getProducts = () => {\n const id = document.querySelector('[name=\"add-to-cart\"]').value;\n const qty = document.querySelector('[name=\"quantity\"]').value;\n const variations = this.variations();\n return [new Product(id, qty, variations)];\n }\n } else {\n getProducts = () => {\n const products = [];\n this.formElement.querySelectorAll('input[type=\"number\"]').forEach((element) => {\n if (! element.value) {\n return;\n }\n const elementName = element.getAttribute('name').match(/quantity\\[([\\d]*)\\]/);\n if (elementName.length !== 2) {\n return;\n }\n const id = parseInt(elementName[1]);\n const quantity = parseInt(element.value);\n products.push(new Product(id, quantity, null));\n })\n return products;\n }\n }\n const createOrder = (data, actions) => {\n this.errorHandler.clear();\n\n const onResolve = (purchase_units) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ?\n this.config.bn_codes[this.config.context] : '';\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n purchase_units,\n payer,\n bn_code:bnCode,\n context:this.config.context\n })\n }).then(function (res) {\n return res.json();\n }).then(function (data) {\n if (!data.success) {\n console.error(data);\n throw Error(data.data.message);\n }\n return data.data.id;\n });\n };\n\n const promise = this.updateCart.update(onResolve, getProducts());\n return promise;\n };\n return createOrder;\n }\n\n variations()\n {\n\n if (! this.hasVariations()) {\n return null;\n }\n const attributes = [...this.formElement.querySelectorAll(\"[name^='attribute_']\")].map(\n (element) => {\n return {\n value:element.value,\n name:element.name\n }\n }\n );\n return attributes;\n }\n\n hasVariations()\n {\n return this.formElement.classList.contains('variations_form');\n }\n\n isGroupedProduct()\n {\n return this.formElement.classList.contains('grouped_form');\n }\n}\nexport default SingleProductActionHandler;\n","import ErrorHandler from '../ErrorHandler';\nimport UpdateCart from \"../Helper/UpdateCart\";\nimport SingleProductActionHandler from \"../ActionHandler/SingleProductActionHandler\";\n\nclass SingleProductBootstap {\n constructor(gateway, renderer, messages) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n }\n\n init() {\n if (!this.shouldRender()) {\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n return;\n }\n\n this.render();\n }\n\n shouldRender() {\n if (document.querySelector('form.cart') === null) {\n return false;\n }\n\n return true;\n }\n\n render() {\n const actionHandler = new SingleProductActionHandler(\n this.gateway,\n new UpdateCart(\n this.gateway.ajax.change_cart.endpoint,\n this.gateway.ajax.change_cart.nonce,\n ),\n () => {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n let priceText = \"0\";\n if (document.querySelector('form.cart ins .woocommerce-Price-amount')) {\n priceText = document.querySelector('form.cart ins .woocommerce-Price-amount').innerText;\n }\n else if (document.querySelector('form.cart .woocommerce-Price-amount')) {\n priceText = document.querySelector('form.cart .woocommerce-Price-amount').innerText;\n }\n const amount = parseInt(priceText.replace(/([^\\d,\\.\\s]*)/g, ''));\n this.messages.renderWithAmount(amount)\n },\n () => {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n },\n document.querySelector('form.cart'),\n new ErrorHandler(this.gateway.labels.error.generic),\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n}\n\nexport default SingleProductBootstap;","import CartActionHandler from '../ActionHandler/CartActionHandler';\nimport ErrorHandler from '../ErrorHandler';\n\nclass CartBootstrap {\n constructor(gateway, renderer) {\n this.gateway = gateway;\n this.renderer = renderer;\n }\n\n init() {\n if (!this.shouldRender()) {\n return;\n }\n\n this.render();\n\n jQuery(document.body).on('updated_cart_totals updated_checkout', () => {\n this.render();\n });\n }\n\n shouldRender() {\n return document.querySelector(this.gateway.button.wrapper) !==\n null || document.querySelector(this.gateway.hosted_fields.wrapper) !==\n null;\n }\n\n render() {\n const actionHandler = new CartActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n}\n\nexport default CartBootstrap;","const onApprove = (context, errorHandler, spinner) => {\n return (data, actions) => {\n spinner.block();\n return fetch(context.config.ajax.approve_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: context.config.ajax.approve_order.nonce,\n order_id:data.orderID\n })\n }).then((res)=>{\n return res.json();\n }).then((data)=>{\n spinner.unblock();\n if (!data.success) {\n if (data.data.code === 100) {\n errorHandler.message(data.data.message);\n } else {\n errorHandler.genericError();\n }\n if (typeof actions !== 'undefined' && typeof actions.restart !== 'undefined') {\n return actions.restart();\n }\n throw new Error(data.data.message);\n }\n document.querySelector('#place_order').click()\n });\n\n }\n}\n\nexport default onApprove;\n","import onApprove from '../OnApproveHandler/onApproveForPayNow.js';\nimport {payerData} from \"../Helper/PayerData\";\n\nclass CheckoutActionHandler {\n\n constructor(config, errorHandler, spinner) {\n this.config = config;\n this.errorHandler = errorHandler;\n this.spinner = spinner;\n }\n\n configuration() {\n const spinner = this.spinner;\n const createOrder = (data, actions) => {\n const payer = payerData();\n const bnCode = typeof this.config.bn_codes[this.config.context] !== 'undefined' ?\n this.config.bn_codes[this.config.context] : '';\n\n const errorHandler = this.errorHandler;\n\n const formSelector = this.config.context === 'checkout' ? 'form.checkout' : 'form#order_review';\n const formValues = jQuery(formSelector).serialize();\n\n return fetch(this.config.ajax.create_order.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: this.config.ajax.create_order.nonce,\n payer,\n bn_code:bnCode,\n context:this.config.context,\n order_id:this.config.order_id,\n form:formValues\n })\n }).then(function (res) {\n return res.json();\n }).then(function (data) {\n if (!data.success) {\n spinner.unblock();\n //handle both messages sent from Woocommerce (data.messages) and this plugin (data.data.message)\n if (typeof(data.messages) !== 'undefined' )\n {\n const domParser = new DOMParser();\n errorHandler.appendPreparedErrorMessageElement(\n domParser.parseFromString(data.messages, 'text/html')\n .querySelector('ul')\n );\n } else {\n errorHandler.message(data.data.message, true);\n }\n\n return;\n }\n const input = document.createElement('input');\n input.setAttribute('type', 'hidden');\n input.setAttribute('name', 'ppcp-resume-order');\n input.setAttribute('value', data.data.purchase_units[0].custom_id);\n document.querySelector(formSelector).append(input);\n return data.data.id;\n });\n }\n return {\n createOrder,\n onApprove:onApprove(this, this.errorHandler, this.spinner),\n onCancel: () => {\n spinner.unblock();\n },\n onError: () => {\n this.errorHandler.genericError();\n spinner.unblock();\n }\n }\n }\n}\n\nexport default CheckoutActionHandler;\n","import ErrorHandler from '../ErrorHandler';\nimport CheckoutActionHandler from '../ActionHandler/CheckoutActionHandler';\n\nclass CheckoutBootstap {\n constructor(gateway, renderer, messages, spinner) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n this.spinner = spinner;\n }\n\n init() {\n\n this.render();\n\n jQuery(document.body).on('updated_checkout', () => {\n this.render()\n });\n\n jQuery(document.body).\n on('updated_checkout payment_method_selected', () => {\n this.switchBetweenPayPalandOrderButton()\n this.displayPlaceOrderButtonForSavedCreditCards()\n\n })\n\n jQuery('#saved-credit-card').on('change', () => {\n this.displayPlaceOrderButtonForSavedCreditCards()\n })\n\n this.switchBetweenPayPalandOrderButton()\n this.displayPlaceOrderButtonForSavedCreditCards()\n }\n\n shouldRender() {\n if (document.querySelector(this.gateway.button.cancel_wrapper)) {\n return false;\n }\n\n return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n if (document.querySelector(this.gateway.hosted_fields.wrapper + '>div')) {\n document.querySelector(this.gateway.hosted_fields.wrapper + '>div').setAttribute('style', '');\n }\n const actionHandler = new CheckoutActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n this.spinner\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n\n switchBetweenPayPalandOrderButton() {\n jQuery('#saved-credit-card').val(jQuery('#saved-credit-card option:first').val());\n\n const currentPaymentMethod = jQuery(\n 'input[name=\"payment_method\"]:checked').val();\n\n if (currentPaymentMethod !== 'ppcp-gateway' && currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n jQuery('#place_order').show();\n }\n else {\n jQuery('#place_order').hide();\n if (currentPaymentMethod === 'ppcp-gateway') {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.messages.wrapper);\n this.messages.render()\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)\n }\n if (currentPaymentMethod === 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper)\n this.renderer.hideButtons(this.gateway.messages.wrapper)\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper)\n }\n }\n }\n\n displayPlaceOrderButtonForSavedCreditCards() {\n const currentPaymentMethod = jQuery(\n 'input[name=\"payment_method\"]:checked').val();\n if (currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n return;\n }\n\n if (jQuery('#saved-credit-card').length && jQuery('#saved-credit-card').val() !== '') {\n this.renderer.hideButtons(this.gateway.button.wrapper)\n this.renderer.hideButtons(this.gateway.messages.wrapper)\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)\n jQuery('#place_order').show()\n } else {\n jQuery('#place_order').hide()\n this.renderer.hideButtons(this.gateway.button.wrapper)\n this.renderer.hideButtons(this.gateway.messages.wrapper)\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper)\n }\n }\n}\n\nexport default CheckoutBootstap\n","import ErrorHandler from '../ErrorHandler';\nimport CheckoutActionHandler from '../ActionHandler/CheckoutActionHandler';\n\nclass PayNowBootstrap {\n constructor(gateway, renderer, messages, spinner) {\n this.gateway = gateway;\n this.renderer = renderer;\n this.messages = messages;\n this.spinner = spinner;\n }\n\n init() {\n\n this.render();\n\n jQuery(document.body).on('updated_checkout', () => {\n this.render();\n });\n\n jQuery(document.body).\n on('updated_checkout payment_method_selected', () => {\n this.switchBetweenPayPalandOrderButton();\n });\n this.switchBetweenPayPalandOrderButton();\n }\n\n shouldRender() {\n if (document.querySelector(this.gateway.button.cancel_wrapper)) {\n return false;\n }\n\n return document.querySelector(this.gateway.button.wrapper) !== null || document.querySelector(this.gateway.hosted_fields.wrapper) !== null;\n }\n\n render() {\n if (!this.shouldRender()) {\n return;\n }\n if (document.querySelector(this.gateway.hosted_fields.wrapper + '>div')) {\n document.querySelector(this.gateway.hosted_fields.wrapper + '>div').setAttribute('style', '');\n }\n const actionHandler = new CheckoutActionHandler(\n PayPalCommerceGateway,\n new ErrorHandler(this.gateway.labels.error.generic),\n this.spinner\n );\n\n this.renderer.render(\n this.gateway.button.wrapper,\n this.gateway.hosted_fields.wrapper,\n actionHandler.configuration(),\n );\n }\n\n switchBetweenPayPalandOrderButton() {\n const urlParams = new URLSearchParams(window.location.search)\n if (urlParams.has('change_payment_method')) {\n return\n }\n\n const currentPaymentMethod = jQuery(\n 'input[name=\"payment_method\"]:checked').val();\n\n if (currentPaymentMethod !== 'ppcp-gateway' && currentPaymentMethod !== 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n jQuery('#place_order').show();\n }\n else {\n jQuery('#place_order').hide();\n if (currentPaymentMethod === 'ppcp-gateway') {\n this.renderer.showButtons(this.gateway.button.wrapper);\n this.renderer.showButtons(this.gateway.messages.wrapper);\n this.messages.render();\n this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);\n }\n if (currentPaymentMethod === 'ppcp-credit-card-gateway') {\n this.renderer.hideButtons(this.gateway.button.wrapper);\n this.renderer.hideButtons(this.gateway.messages.wrapper);\n this.renderer.showButtons(this.gateway.hosted_fields.wrapper);\n }\n }\n }\n}\n\nexport default PayNowBootstrap;\n","class Renderer {\n constructor(creditCardRenderer, defaultConfig) {\n this.defaultConfig = defaultConfig;\n this.creditCardRenderer = creditCardRenderer;\n }\n\n render(wrapper, hostedFieldsWrapper, contextConfig) {\n\n this.renderButtons(wrapper, contextConfig);\n this.creditCardRenderer.render(hostedFieldsWrapper, contextConfig);\n }\n\n renderButtons(wrapper, contextConfig) {\n if (! document.querySelector(wrapper) || this.isAlreadyRendered(wrapper) || 'undefined' === typeof paypal.Buttons ) {\n return;\n }\n\n const style = wrapper === this.defaultConfig.button.wrapper ? this.defaultConfig.button.style : this.defaultConfig.button.mini_cart_style;\n paypal.Buttons({\n style,\n ...contextConfig,\n }).render(wrapper);\n }\n\n isAlreadyRendered(wrapper) {\n return document.querySelector(wrapper).hasChildNodes();\n }\n\n hideButtons(element) {\n const domElement = document.querySelector(element);\n if (! domElement ) {\n return false;\n }\n domElement.style.display = 'none';\n return true;\n }\n\n showButtons(element) {\n const domElement = document.querySelector(element);\n if (! domElement ) {\n return false;\n }\n domElement.style.display = 'block';\n return true;\n }\n}\n\nexport default Renderer;","const dccInputFactory = (original) => {\n const styles = window.getComputedStyle(original);\n const newElement = document.createElement('span');\n newElement.setAttribute('id', original.id);\n Object.values(styles).forEach( (prop) => {\n if (! styles[prop] || ! isNaN(prop) ) {\n return;\n }\n newElement.style.setProperty(prop,'' + styles[prop]);\n });\n return newElement;\n}\n\nexport default dccInputFactory;","import dccInputFactory from \"../Helper/DccInputFactory\";\n\nclass CreditCardRenderer {\n\n constructor(defaultConfig, errorHandler, spinner) {\n this.defaultConfig = defaultConfig;\n this.errorHandler = errorHandler;\n this.spinner = spinner;\n this.cardValid = false;\n }\n\n render(wrapper, contextConfig) {\n\n if (\n (\n this.defaultConfig.context !== 'checkout'\n && this.defaultConfig.context !== 'pay-now'\n )\n || wrapper === null\n || document.querySelector(wrapper) === null\n ) {\n return;\n }\n if (\n typeof paypal.HostedFields === 'undefined'\n || ! paypal.HostedFields.isEligible()\n ) {\n const wrapperElement = document.querySelector(wrapper);\n wrapperElement.parentNode.removeChild(wrapperElement);\n return;\n }\n\n const gateWayBox = document.querySelector('.payment_box.payment_method_ppcp-credit-card-gateway');\n const oldDisplayStyle = gateWayBox.style.display;\n gateWayBox.style.display = 'block';\n\n const hideDccGateway = document.querySelector('#ppcp-hide-dcc');\n if (hideDccGateway) {\n hideDccGateway.parentNode.removeChild(hideDccGateway);\n }\n\n const cardNumberField = document.querySelector('#ppcp-credit-card-gateway-card-number');\n\n const stylesRaw = window.getComputedStyle(cardNumberField);\n let styles = {};\n Object.values(stylesRaw).forEach( (prop) => {\n if (! stylesRaw[prop]) {\n return;\n }\n styles[prop] = '' + stylesRaw[prop];\n });\n\n const cardNumber = dccInputFactory(cardNumberField);\n cardNumberField.parentNode.replaceChild(cardNumber, cardNumberField);\n\n const cardExpiryField = document.querySelector('#ppcp-credit-card-gateway-card-expiry');\n const cardExpiry = dccInputFactory(cardExpiryField);\n cardExpiryField.parentNode.replaceChild(cardExpiry, cardExpiryField);\n\n const cardCodeField = document.querySelector('#ppcp-credit-card-gateway-card-cvc');\n const cardCode = dccInputFactory(cardCodeField);\n cardCodeField.parentNode.replaceChild(cardCode, cardCodeField);\n\n gateWayBox.style.display = oldDisplayStyle;\n\n const formWrapper = '.payment_box payment_method_ppcp-credit-card-gateway';\n if (\n this.defaultConfig.enforce_vault\n && document.querySelector(formWrapper + ' .ppcp-credit-card-vault')\n ) {\n document.querySelector(formWrapper + ' .ppcp-credit-card-vault').checked = true;\n document.querySelector(formWrapper + ' .ppcp-credit-card-vault').setAttribute('disabled', true);\n }\n paypal.HostedFields.render({\n createOrder: contextConfig.createOrder,\n styles: {\n 'input': styles\n },\n fields: {\n number: {\n selector: '#ppcp-credit-card-gateway-card-number',\n placeholder: this.defaultConfig.hosted_fields.labels.credit_card_number,\n },\n cvv: {\n selector: '#ppcp-credit-card-gateway-card-cvc',\n placeholder: this.defaultConfig.hosted_fields.labels.cvv,\n },\n expirationDate: {\n selector: '#ppcp-credit-card-gateway-card-expiry',\n placeholder: this.defaultConfig.hosted_fields.labels.mm_yyyy,\n }\n }\n }).then(hostedFields => {\n const submitEvent = (event) => {\n this.spinner.block();\n if (event) {\n event.preventDefault();\n }\n this.errorHandler.clear();\n const state = hostedFields.getState();\n const formValid = Object.keys(state.fields).every(function (key) {\n return state.fields[key].isValid;\n });\n\n if (formValid && this.cardValid) {\n const save_card = this.defaultConfig.save_card ? true : false;\n const vault = document.getElementById('ppcp-credit-card-vault') ?\n document.getElementById('ppcp-credit-card-vault').checked : save_card;\n hostedFields.submit({\n contingencies: ['3D_SECURE'],\n vault: vault\n }).then((payload) => {\n payload.orderID = payload.orderId;\n this.spinner.unblock();\n return contextConfig.onApprove(payload);\n }).catch(() => {\n this.errorHandler.genericError();\n this.spinner.unblock();\n });\n } else {\n this.spinner.unblock();\n const message = ! this.cardValid ? this.defaultConfig.hosted_fields.labels.card_not_supported : this.defaultConfig.hosted_fields.labels.fields_not_valid;\n this.errorHandler.message(message);\n }\n }\n hostedFields.on('inputSubmitRequest', function () {\n submitEvent(null);\n });\n hostedFields.on('cardTypeChange', (event) => {\n if ( ! event.cards.length ) {\n this.cardValid = false;\n return;\n }\n const validCards = this.defaultConfig.hosted_fields.valid_cards;\n this.cardValid = validCards.indexOf(event.cards[0].type) !== -1;\n })\n document.querySelector(wrapper + ' button').addEventListener(\n 'click',\n submitEvent\n );\n });\n\n document.querySelector('#payment_method_ppcp-credit-card-gateway').addEventListener(\n 'click',\n () => {\n document.querySelector('label[for=ppcp-credit-card-gateway-card-number]').click();\n }\n )\n }\n}\nexport default CreditCardRenderer;\n","const storageKey = 'ppcp-data-client-id';\n\nconst validateToken = (token, user) => {\n if (! token) {\n return false;\n }\n if (token.user !== user) {\n return false;\n }\n const currentTime = new Date().getTime();\n const isExpired = currentTime >= token.expiration * 1000;\n return ! isExpired;\n}\n\nconst storedTokenForUser = (user) => {\n const token = JSON.parse(sessionStorage.getItem(storageKey));\n if (validateToken(token, user)) {\n return token.token;\n }\n return null;\n}\n\nconst storeToken = (token) => {\n sessionStorage.setItem(storageKey, JSON.stringify(token));\n}\n\nconst dataClientIdAttributeHandler = (script, config) => {\n if(config.user === 0) {\n document.body.append(script);\n return;\n }\n\n fetch(config.endpoint, {\n method: 'POST',\n body: JSON.stringify({\n nonce: config.nonce\n })\n }).then((res)=>{\n return res.json();\n }).then((data)=>{\n const isValid = validateToken(data, config.user);\n if (!isValid) {\n return;\n }\n storeToken(data);\n script.setAttribute('data-client-token', data.token);\n document.body.append(script);\n });\n}\n\nexport default dataClientIdAttributeHandler;\n","class MessageRenderer {\n\n constructor(config) {\n this.config = config;\n }\n\n render() {\n if (! this.shouldRender()) {\n return;\n }\n\n paypal.Messages({\n amount: this.config.amount,\n placement: this.config.placement,\n style: this.config.style\n }).render(this.config.wrapper);\n }\n\n renderWithAmount(amount) {\n\n if (! this.shouldRender()) {\n return;\n }\n\n const newWrapper = document.createElement('div');\n newWrapper.setAttribute('id', this.config.wrapper.replace('#', ''));\n\n const sibling = document.querySelector(this.config.wrapper).nextSibling;\n document.querySelector(this.config.wrapper).parentElement.removeChild(document.querySelector(this.config.wrapper));\n sibling.parentElement.insertBefore(newWrapper, sibling);\n paypal.Messages({\n amount,\n placement: this.config.placement,\n style: this.config.style\n }).render(this.config.wrapper);\n }\n\n shouldRender() {\n\n if (typeof paypal.Messages === 'undefined' || typeof this.config.wrapper === 'undefined' ) {\n return false;\n }\n if (! document.querySelector(this.config.wrapper)) {\n return false;\n }\n return true;\n }\n}\nexport default MessageRenderer;","class Spinner {\n\n constructor() {\n this.target = 'form.woocommerce-checkout';\n }\n\n setTarget(target) {\n this.target = target;\n }\n\n block() {\n\n jQuery( this.target ).block({\n message: null,\n overlayCSS: {\n background: '#fff',\n opacity: 0.6\n }\n });\n }\n\n unblock() {\n\n jQuery( this.target ).unblock();\n }\n}\n\nexport default Spinner;\n","import MiniCartBootstap from './modules/ContextBootstrap/MiniCartBootstap';\nimport SingleProductBootstap from './modules/ContextBootstrap/SingleProductBootstap';\nimport CartBootstrap from './modules/ContextBootstrap/CartBootstap';\nimport CheckoutBootstap from './modules/ContextBootstrap/CheckoutBootstap';\nimport PayNowBootstrap from \"./modules/ContextBootstrap/PayNowBootstrap\";\nimport Renderer from './modules/Renderer/Renderer';\nimport ErrorHandler from './modules/ErrorHandler';\nimport CreditCardRenderer from \"./modules/Renderer/CreditCardRenderer\";\nimport dataClientIdAttributeHandler from \"./modules/DataClientIdAttributeHandler\";\nimport MessageRenderer from \"./modules/Renderer/MessageRenderer\";\nimport Spinner from \"./modules/Helper/Spinner\";\n\nconst bootstrap = () => {\n const errorHandler = new ErrorHandler(PayPalCommerceGateway.labels.error.generic);\n const spinner = new Spinner();\n const creditCardRenderer = new CreditCardRenderer(PayPalCommerceGateway, errorHandler, spinner);\n const renderer = new Renderer(creditCardRenderer, PayPalCommerceGateway);\n const messageRenderer = new MessageRenderer(PayPalCommerceGateway.messages);\n const context = PayPalCommerceGateway.context;\n if (context === 'mini-cart' || context === 'product') {\n const miniCartBootstrap = new MiniCartBootstap(\n PayPalCommerceGateway,\n renderer\n );\n\n miniCartBootstrap.init();\n }\n\n if (context === 'product') {\n const singleProductBootstrap = new SingleProductBootstap(\n PayPalCommerceGateway,\n renderer,\n messageRenderer,\n );\n\n singleProductBootstrap.init();\n }\n\n if (context === 'cart') {\n const cartBootstrap = new CartBootstrap(\n PayPalCommerceGateway,\n renderer,\n );\n\n cartBootstrap.init();\n }\n\n if (context === 'checkout') {\n const checkoutBootstap = new CheckoutBootstap(\n PayPalCommerceGateway,\n renderer,\n messageRenderer,\n spinner\n );\n\n checkoutBootstap.init();\n }\n\n if (context === 'pay-now' ) {\n const payNowBootstrap = new PayNowBootstrap(\n PayPalCommerceGateway,\n renderer,\n messageRenderer,\n spinner\n );\n payNowBootstrap.init();\n }\n\n if (context !== 'checkout') {\n messageRenderer.render();\n }\n};\ndocument.addEventListener(\n 'DOMContentLoaded',\n () => {\n if (!typeof (PayPalCommerceGateway)) {\n console.error('PayPal button could not be configured.');\n return;\n }\n const script = document.createElement('script');\n\n script.addEventListener('load', (event) => {\n bootstrap();\n });\n script.setAttribute('src', PayPalCommerceGateway.button.url);\n Object.entries(PayPalCommerceGateway.script_attributes).forEach(\n (keyValue) => {\n script.setAttribute(keyValue[0], keyValue[1]);\n }\n );\n\n if (PayPalCommerceGateway.data_client_id.set_attribute) {\n dataClientIdAttributeHandler(script, PayPalCommerceGateway.data_client_id);\n return;\n }\n\n document.body.append(script);\n },\n);\n"],"sourceRoot":""}
modules/ppcp-button/resources/js/modules/ActionHandler/CheckoutActionHandler.js CHANGED
@@ -36,7 +36,18 @@ class CheckoutActionHandler {
36
  }).then(function (data) {
37
  if (!data.success) {
38
  spinner.unblock();
39
- errorHandler.message(data.data.message, true);
 
 
 
 
 
 
 
 
 
 
 
40
  return;
41
  }
42
  const input = document.createElement('input');
36
  }).then(function (data) {
37
  if (!data.success) {
38
  spinner.unblock();
39
+ //handle both messages sent from Woocommerce (data.messages) and this plugin (data.data.message)
40
+ if (typeof(data.messages) !== 'undefined' )
41
+ {
42
+ const domParser = new DOMParser();
43
+ errorHandler.appendPreparedErrorMessageElement(
44
+ domParser.parseFromString(data.messages, 'text/html')
45
+ .querySelector('ul')
46
+ );
47
+ } else {
48
+ errorHandler.message(data.data.message, true);
49
+ }
50
+
51
  return;
52
  }
53
  const input = document.createElement('input');
modules/ppcp-button/resources/js/modules/ContextBootstrap/CheckoutBootstap.js CHANGED
@@ -14,14 +14,22 @@ class CheckoutBootstap {
14
  this.render();
15
 
16
  jQuery(document.body).on('updated_checkout', () => {
17
- this.render();
18
  });
19
 
20
  jQuery(document.body).
21
- on('updated_checkout payment_method_selected', () => {
22
- this.switchBetweenPayPalandOrderButton();
23
- });
24
- this.switchBetweenPayPalandOrderButton();
 
 
 
 
 
 
 
 
25
  }
26
 
27
  shouldRender() {
@@ -53,6 +61,8 @@ class CheckoutBootstap {
53
  }
54
 
55
  switchBetweenPayPalandOrderButton() {
 
 
56
  const currentPaymentMethod = jQuery(
57
  'input[name="payment_method"]:checked').val();
58
 
@@ -67,16 +77,36 @@ class CheckoutBootstap {
67
  if (currentPaymentMethod === 'ppcp-gateway') {
68
  this.renderer.showButtons(this.gateway.button.wrapper);
69
  this.renderer.showButtons(this.gateway.messages.wrapper);
70
- this.messages.render();
71
- this.renderer.hideButtons(this.gateway.hosted_fields.wrapper);
72
  }
73
  if (currentPaymentMethod === 'ppcp-credit-card-gateway') {
74
- this.renderer.hideButtons(this.gateway.button.wrapper);
75
- this.renderer.hideButtons(this.gateway.messages.wrapper);
76
- this.renderer.showButtons(this.gateway.hosted_fields.wrapper);
77
  }
78
  }
79
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  }
81
 
82
- export default CheckoutBootstap;
14
  this.render();
15
 
16
  jQuery(document.body).on('updated_checkout', () => {
17
+ this.render()
18
  });
19
 
20
  jQuery(document.body).
21
+ on('updated_checkout payment_method_selected', () => {
22
+ this.switchBetweenPayPalandOrderButton()
23
+ this.displayPlaceOrderButtonForSavedCreditCards()
24
+
25
+ })
26
+
27
+ jQuery('#saved-credit-card').on('change', () => {
28
+ this.displayPlaceOrderButtonForSavedCreditCards()
29
+ })
30
+
31
+ this.switchBetweenPayPalandOrderButton()
32
+ this.displayPlaceOrderButtonForSavedCreditCards()
33
  }
34
 
35
  shouldRender() {
61
  }
62
 
63
  switchBetweenPayPalandOrderButton() {
64
+ jQuery('#saved-credit-card').val(jQuery('#saved-credit-card option:first').val());
65
+
66
  const currentPaymentMethod = jQuery(
67
  'input[name="payment_method"]:checked').val();
68
 
77
  if (currentPaymentMethod === 'ppcp-gateway') {
78
  this.renderer.showButtons(this.gateway.button.wrapper);
79
  this.renderer.showButtons(this.gateway.messages.wrapper);
80
+ this.messages.render()
81
+ this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)
82
  }
83
  if (currentPaymentMethod === 'ppcp-credit-card-gateway') {
84
+ this.renderer.hideButtons(this.gateway.button.wrapper)
85
+ this.renderer.hideButtons(this.gateway.messages.wrapper)
86
+ this.renderer.showButtons(this.gateway.hosted_fields.wrapper)
87
  }
88
  }
89
  }
90
+
91
+ displayPlaceOrderButtonForSavedCreditCards() {
92
+ const currentPaymentMethod = jQuery(
93
+ 'input[name="payment_method"]:checked').val();
94
+ if (currentPaymentMethod !== 'ppcp-credit-card-gateway') {
95
+ return;
96
+ }
97
+
98
+ if (jQuery('#saved-credit-card').length && jQuery('#saved-credit-card').val() !== '') {
99
+ this.renderer.hideButtons(this.gateway.button.wrapper)
100
+ this.renderer.hideButtons(this.gateway.messages.wrapper)
101
+ this.renderer.hideButtons(this.gateway.hosted_fields.wrapper)
102
+ jQuery('#place_order').show()
103
+ } else {
104
+ jQuery('#place_order').hide()
105
+ this.renderer.hideButtons(this.gateway.button.wrapper)
106
+ this.renderer.hideButtons(this.gateway.messages.wrapper)
107
+ this.renderer.showButtons(this.gateway.hosted_fields.wrapper)
108
+ }
109
+ }
110
  }
111
 
112
+ export default CheckoutBootstap
modules/ppcp-button/resources/js/modules/ContextBootstrap/PayNowBootstrap.js CHANGED
@@ -53,6 +53,11 @@ class PayNowBootstrap {
53
  }
54
 
55
  switchBetweenPayPalandOrderButton() {
 
 
 
 
 
56
  const currentPaymentMethod = jQuery(
57
  'input[name="payment_method"]:checked').val();
58
 
53
  }
54
 
55
  switchBetweenPayPalandOrderButton() {
56
+ const urlParams = new URLSearchParams(window.location.search)
57
+ if (urlParams.has('change_payment_method')) {
58
+ return
59
+ }
60
+
61
  const currentPaymentMethod = jQuery(
62
  'input[name="payment_method"]:checked').val();
63
 
modules/ppcp-button/resources/js/modules/DataClientIdAttributeHandler.js CHANGED
@@ -25,12 +25,11 @@ const storeToken = (token) => {
25
  }
26
 
27
  const dataClientIdAttributeHandler = (script, config) => {
28
- const token = storedTokenForUser(config.user);
29
- if (token) {
30
- script.setAttribute('data-client-token', token);
31
  document.body.append(script);
32
  return;
33
  }
 
34
  fetch(config.endpoint, {
35
  method: 'POST',
36
  body: JSON.stringify({
@@ -49,4 +48,4 @@ const dataClientIdAttributeHandler = (script, config) => {
49
  });
50
  }
51
 
52
- export default dataClientIdAttributeHandler;
25
  }
26
 
27
  const dataClientIdAttributeHandler = (script, config) => {
28
+ if(config.user === 0) {
 
 
29
  document.body.append(script);
30
  return;
31
  }
32
+
33
  fetch(config.endpoint, {
34
  method: 'POST',
35
  body: JSON.stringify({
48
  });
49
  }
50
 
51
+ export default dataClientIdAttributeHandler;
modules/ppcp-button/resources/js/modules/ErrorHandler.js CHANGED
@@ -4,6 +4,7 @@ class ErrorHandler {
4
  {
5
  this.genericErrorText = genericErrorText;
6
  this.wrapper = document.querySelector('.woocommerce-notices-wrapper');
 
7
  }
8
 
9
  genericError() {
@@ -14,18 +15,55 @@ class ErrorHandler {
14
  this.message(this.genericErrorText)
15
  }
16
 
 
 
 
 
 
 
 
 
 
17
  message(text, persist = false)
18
  {
19
- this.wrapper.classList.add('woocommerce-error');
 
 
 
 
 
 
 
20
  if (persist) {
21
  this.wrapper.classList.add('ppcp-persist');
22
  } else {
23
  this.wrapper.classList.remove('ppcp-persist');
24
  }
25
- this.wrapper.innerHTML = this.sanitize(text);
 
 
 
26
  jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'))
27
  }
28
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  sanitize(text)
30
  {
31
  const textarea = document.createElement('textarea');
4
  {
5
  this.genericErrorText = genericErrorText;
6
  this.wrapper = document.querySelector('.woocommerce-notices-wrapper');
7
+ this.messagesList = document.querySelector('ul.woocommerce-error');
8
  }
9
 
10
  genericError() {
15
  this.message(this.genericErrorText)
16
  }
17
 
18
+ appendPreparedErrorMessageElement(errorMessageElement)
19
+ {
20
+ if(this.messagesList === null) {
21
+ this.prepareMessagesList();
22
+ }
23
+
24
+ this.messagesList.replaceWith(errorMessageElement);
25
+ }
26
+
27
  message(text, persist = false)
28
  {
29
+ if(! typeof String || text.length === 0){
30
+ throw new Error('A new message text must be a non-empty string.');
31
+ }
32
+
33
+ if(this.messagesList === null){
34
+ this.prepareMessagesList();
35
+ }
36
+
37
  if (persist) {
38
  this.wrapper.classList.add('ppcp-persist');
39
  } else {
40
  this.wrapper.classList.remove('ppcp-persist');
41
  }
42
+
43
+ let messageNode = this.prepareMessagesListItem(text);
44
+ this.messagesList.appendChild(messageNode);
45
+
46
  jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'))
47
  }
48
 
49
+ prepareMessagesList()
50
+ {
51
+ if(this.messagesList === null){
52
+ this.messagesList = document.createElement('ul');
53
+ this.messagesList.setAttribute('class', 'woocommerce-error');
54
+ this.messagesList.setAttribute('role', 'alert');
55
+ this.wrapper.appendChild(this.messagesList);
56
+ }
57
+ }
58
+
59
+ prepareMessagesListItem(message)
60
+ {
61
+ const li = document.createElement('li');
62
+ li.innerHTML = message;
63
+
64
+ return li;
65
+ }
66
+
67
  sanitize(text)
68
  {
69
  const textarea = document.createElement('textarea');
modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js CHANGED
@@ -103,21 +103,19 @@ class CreditCardRenderer {
103
  });
104
 
105
  if (formValid && this.cardValid) {
106
-
107
- let vault = document.querySelector(wrapper + ' .ppcp-credit-card-vault') ?
108
- document.querySelector(wrapper + ' .ppcp-credit-card-vault').checked : false;
109
- vault = this.defaultConfig.enforce_vault || vault;
110
-
111
  hostedFields.submit({
112
  contingencies: ['3D_SECURE'],
113
- vault
114
  }).then((payload) => {
115
  payload.orderID = payload.orderId;
116
  this.spinner.unblock();
117
  return contextConfig.onApprove(payload);
118
  }).catch(() => {
 
119
  this.spinner.unblock();
120
- this.errorHandler.genericError()
121
  });
122
  } else {
123
  this.spinner.unblock();
103
  });
104
 
105
  if (formValid && this.cardValid) {
106
+ const save_card = this.defaultConfig.save_card ? true : false;
107
+ const vault = document.getElementById('ppcp-credit-card-vault') ?
108
+ document.getElementById('ppcp-credit-card-vault').checked : save_card;
 
 
109
  hostedFields.submit({
110
  contingencies: ['3D_SECURE'],
111
+ vault: vault
112
  }).then((payload) => {
113
  payload.orderID = payload.orderId;
114
  this.spinner.unblock();
115
  return contextConfig.onApprove(payload);
116
  }).catch(() => {
117
+ this.errorHandler.genericError();
118
  this.spinner.unblock();
 
119
  });
120
  } else {
121
  this.spinner.unblock();
modules/ppcp-button/services.php CHANGED
@@ -60,7 +60,6 @@ return array(
60
  return new DisabledSmartButton();
61
  }
62
  $payee_repository = $container->get( 'api.repository.payee' );
63
- $identity_token = $container->get( 'api.endpoint.identity-token' );
64
  $payer_factory = $container->get( 'api.factory.payer' );
65
  $request_data = $container->get( 'button.request-data' );
66
 
@@ -69,19 +68,20 @@ return array(
69
  $subscription_helper = $container->get( 'subscription.helper' );
70
  $messages_apply = $container->get( 'button.helper.messages-apply' );
71
  $environment = $container->get( 'onboarding.environment' );
 
72
  return new SmartButton(
73
  $container->get( 'button.url' ),
74
  $container->get( 'session.handler' ),
75
  $settings,
76
  $payee_repository,
77
- $identity_token,
78
  $payer_factory,
79
  $client_id,
80
  $request_data,
81
  $dcc_applies,
82
  $subscription_helper,
83
  $messages_apply,
84
- $environment
 
85
  );
86
  },
87
  'button.url' => static function ( $container ): string {
60
  return new DisabledSmartButton();
61
  }
62
  $payee_repository = $container->get( 'api.repository.payee' );
 
63
  $payer_factory = $container->get( 'api.factory.payer' );
64
  $request_data = $container->get( 'button.request-data' );
65
 
68
  $subscription_helper = $container->get( 'subscription.helper' );
69
  $messages_apply = $container->get( 'button.helper.messages-apply' );
70
  $environment = $container->get( 'onboarding.environment' );
71
+ $payment_token_repository = $container->get( 'subscription.repository.payment-token' );
72
  return new SmartButton(
73
  $container->get( 'button.url' ),
74
  $container->get( 'session.handler' ),
75
  $settings,
76
  $payee_repository,
 
77
  $payer_factory,
78
  $client_id,
79
  $request_data,
80
  $dcc_applies,
81
  $subscription_helper,
82
  $messages_apply,
83
+ $environment,
84
+ $payment_token_repository
85
  );
86
  },
87
  'button.url' => static function ( $container ): string {
modules/ppcp-button/src/Assets/class-smartbutton.php CHANGED
@@ -9,7 +9,7 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\Button\Assets;
11
 
12
- use WooCommerce\PayPalCommerce\ApiClient\Endpoint\IdentityToken;
13
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
14
  use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
15
  use WooCommerce\PayPalCommerce\ApiClient\Repository\PayeeRepository;
@@ -22,6 +22,8 @@ use WooCommerce\PayPalCommerce\Button\Helper\MessagesApply;
22
  use WooCommerce\PayPalCommerce\Onboarding\Environment;
23
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
24
  use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
 
 
25
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
26
 
27
  /**
@@ -57,13 +59,6 @@ class SmartButton implements SmartButtonInterface {
57
  */
58
  private $payee_repository;
59
 
60
- /**
61
- * The Identity Token.
62
- *
63
- * @var IdentityToken
64
- */
65
- private $identity_token;
66
-
67
  /**
68
  * The Payer Factory.
69
  *
@@ -113,49 +108,56 @@ class SmartButton implements SmartButtonInterface {
113
  */
114
  private $environment;
115
 
 
 
 
 
 
 
 
116
  /**
117
  * SmartButton constructor.
118
  *
119
- * @param string $module_url The URL to the module.
120
- * @param SessionHandler $session_handler The Session Handler.
121
- * @param Settings $settings The Settings.
122
- * @param PayeeRepository $payee_repository The Payee Repository.
123
- * @param IdentityToken $identity_token The Identity Token.
124
- * @param PayerFactory $payer_factory The Payer factory.
125
- * @param string $client_id The client ID.
126
- * @param RequestData $request_data The Request Data helper.
127
- * @param DccApplies $dcc_applies The DCC applies helper.
128
- * @param SubscriptionHelper $subscription_helper The subscription helper.
129
- * @param MessagesApply $messages_apply The Messages apply helper.
130
- * @param Environment $environment The environment object.
131
  */
132
  public function __construct(
133
  string $module_url,
134
  SessionHandler $session_handler,
135
  Settings $settings,
136
  PayeeRepository $payee_repository,
137
- IdentityToken $identity_token,
138
  PayerFactory $payer_factory,
139
  string $client_id,
140
  RequestData $request_data,
141
  DccApplies $dcc_applies,
142
  SubscriptionHelper $subscription_helper,
143
  MessagesApply $messages_apply,
144
- Environment $environment
 
145
  ) {
146
 
147
- $this->module_url = $module_url;
148
- $this->session_handler = $session_handler;
149
- $this->settings = $settings;
150
- $this->payee_repository = $payee_repository;
151
- $this->identity_token = $identity_token;
152
- $this->payer_factory = $payer_factory;
153
- $this->client_id = $client_id;
154
- $this->request_data = $request_data;
155
- $this->dcc_applies = $dcc_applies;
156
- $this->subscription_helper = $subscription_helper;
157
- $this->messages_apply = $messages_apply;
158
- $this->environment = $environment;
159
  }
160
 
161
  /**
@@ -197,6 +199,45 @@ class SmartButton implements SmartButtonInterface {
197
  ),
198
  11
199
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
200
  }
201
  return true;
202
  }
@@ -321,7 +362,7 @@ class SmartButton implements SmartButtonInterface {
321
  );
322
  }
323
 
324
- add_action( 'woocommerce_review_order_after_submit', array( $this, 'button_renderer' ), 10 );
325
  add_action( 'woocommerce_pay_order_after_submit', array( $this, 'button_renderer' ), 10 );
326
 
327
  return true;
@@ -517,33 +558,13 @@ class SmartButton implements SmartButtonInterface {
517
  return;
518
  }
519
 
520
- $save_card = $this->can_save_vault_token() ? sprintf(
521
- '<div>
522
-
523
- <label for="ppcp-vault-%1$s">%2$s</label>
524
- <input
525
- type="checkbox"
526
- id="ppcp-vault-%1$s"
527
- class="ppcp-credit-card-vault"
528
- name="vault"
529
- >
530
- </div>',
531
- esc_attr( $id ),
532
- esc_html__( 'Save your card', 'woocommerce-paypal-payments' )
533
- ) : '';
534
-
535
  $label = 'checkout' === $this->context() ? __( 'Place order', 'woocommerce-paypal-payments' ) : __( 'Pay for order', 'woocommerce-paypal-payments' );
536
 
537
  printf(
538
  '<div id="%1$s" style="display:none;">
539
- <button class="button alt">%6$s</button>
540
  </div><div id="payments-sdk__contingency-lightbox"></div><style id="ppcp-hide-dcc">.payment_method_ppcp-credit-card-gateway {display:none;}</style>',
541
  esc_attr( $id ),
542
- esc_html__( 'Credit Card number', 'woocommerce-paypal-payments' ),
543
- esc_html__( 'Expiration', 'woocommerce-paypal-payments' ),
544
- esc_html__( 'CVV', 'woocommerce-paypal-payments' ),
545
- //phpcs:ignore
546
- $save_card,
547
  esc_html( $label )
548
  );
549
  }
@@ -552,16 +573,18 @@ class SmartButton implements SmartButtonInterface {
552
  * Whether we can store vault tokens or not.
553
  *
554
  * @return bool
555
- * @throws \WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException If a setting hasnt been found.
556
  */
557
  public function can_save_vault_token(): bool {
558
 
559
  if ( ! $this->settings->has( 'client_id' ) || ! $this->settings->get( 'client_id' ) ) {
560
  return false;
561
  }
 
562
  if ( ! $this->settings->has( 'vault_enabled' ) || ! $this->settings->get( 'vault_enabled' ) ) {
563
  return false;
564
  }
 
565
  return is_user_logged_in();
566
  }
567
 
@@ -593,8 +616,7 @@ class SmartButton implements SmartButtonInterface {
593
  $localize = array(
594
  'script_attributes' => $this->attributes(),
595
  'data_client_id' => array(
596
- 'set_attribute' => ( is_checkout() && $this->dcc_is_enabled() )
597
- || $this->can_save_vault_token(),
598
  'endpoint' => home_url( \WC_AJAX::get_endpoint( DataClientIdEndpoint::ENDPOINT ) ),
599
  'nonce' => wp_create_nonce( DataClientIdEndpoint::nonce() ),
600
  'user' => get_current_user_id(),
@@ -616,6 +638,7 @@ class SmartButton implements SmartButtonInterface {
616
  ),
617
  ),
618
  'enforce_vault' => $this->has_subscriptions(),
 
619
  'bn_codes' => $this->bn_codes(),
620
  'payer' => $this->payerData(),
621
  'button' => array(
@@ -646,11 +669,11 @@ class SmartButton implements SmartButtonInterface {
646
  'cvv' => '',
647
  'mm_yyyy' => __( 'MM/YYYY', 'woocommerce-paypal-payments' ),
648
  'fields_not_valid' => __(
649
- 'Unfortunatly, your credit card details are not valid.',
650
  'woocommerce-paypal-payments'
651
  ),
652
  'card_not_supported' => __(
653
- 'Unfortunatly, we do not support your credit card.',
654
  'woocommerce-paypal-payments'
655
  ),
656
  ),
@@ -724,22 +747,15 @@ class SmartButton implements SmartButtonInterface {
724
  if ( $payee->merchant_id() ) {
725
  $params['merchant-id'] = $payee->merchant_id();
726
  }
727
- $disable_funding = $this->settings->has( 'disable_funding' ) ?
728
  $this->settings->get( 'disable_funding' ) : array();
729
- $disable_funding[] = 'venmo';
730
  if ( ! is_checkout() ) {
731
  $disable_funding[] = 'card';
732
  }
733
 
734
- /**
735
- * Disable card for UK.
736
- */
737
- $region = wc_get_base_location();
738
- $country = $region['country'];
739
- if ( 'GB' === $country ) {
740
- $disable_funding[] = 'credit';
741
  }
742
- $params['disable-funding'] = implode( ',', array_unique( $disable_funding ) );
743
 
744
  $smart_button_url = add_query_arg( $params, 'https://www.paypal.com/sdk/js' );
745
  return $smart_button_url;
@@ -926,4 +942,19 @@ class SmartButton implements SmartButtonInterface {
926
  }
927
  return (string) $value;
928
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
929
  }
9
 
10
  namespace WooCommerce\PayPalCommerce\Button\Assets;
11
 
12
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
13
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
14
  use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
15
  use WooCommerce\PayPalCommerce\ApiClient\Repository\PayeeRepository;
22
  use WooCommerce\PayPalCommerce\Onboarding\Environment;
23
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
24
  use WooCommerce\PayPalCommerce\Subscription\Helper\SubscriptionHelper;
25
+ use WooCommerce\PayPalCommerce\Subscription\Repository\PaymentTokenRepository;
26
+ use WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException;
27
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
28
 
29
  /**
59
  */
60
  private $payee_repository;
61
 
 
 
 
 
 
 
 
62
  /**
63
  * The Payer Factory.
64
  *
108
  */
109
  private $environment;
110
 
111
+ /**
112
+ * The payment token repository.
113
+ *
114
+ * @var PaymentTokenRepository
115
+ */
116
+ private $payment_token_repository;
117
+
118
  /**
119
  * SmartButton constructor.
120
  *
121
+ * @param string $module_url The URL to the module.
122
+ * @param SessionHandler $session_handler The Session Handler.
123
+ * @param Settings $settings The Settings.
124
+ * @param PayeeRepository $payee_repository The Payee Repository.
125
+ * @param PayerFactory $payer_factory The Payer factory.
126
+ * @param string $client_id The client ID.
127
+ * @param RequestData $request_data The Request Data helper.
128
+ * @param DccApplies $dcc_applies The DCC applies helper.
129
+ * @param SubscriptionHelper $subscription_helper The subscription helper.
130
+ * @param MessagesApply $messages_apply The Messages apply helper.
131
+ * @param Environment $environment The environment object.
132
+ * @param PaymentTokenRepository $payment_token_repository The payment token repository.
133
  */
134
  public function __construct(
135
  string $module_url,
136
  SessionHandler $session_handler,
137
  Settings $settings,
138
  PayeeRepository $payee_repository,
 
139
  PayerFactory $payer_factory,
140
  string $client_id,
141
  RequestData $request_data,
142
  DccApplies $dcc_applies,
143
  SubscriptionHelper $subscription_helper,
144
  MessagesApply $messages_apply,
145
+ Environment $environment,
146
+ PaymentTokenRepository $payment_token_repository
147
  ) {
148
 
149
+ $this->module_url = $module_url;
150
+ $this->session_handler = $session_handler;
151
+ $this->settings = $settings;
152
+ $this->payee_repository = $payee_repository;
153
+ $this->payer_factory = $payer_factory;
154
+ $this->client_id = $client_id;
155
+ $this->request_data = $request_data;
156
+ $this->dcc_applies = $dcc_applies;
157
+ $this->subscription_helper = $subscription_helper;
158
+ $this->messages_apply = $messages_apply;
159
+ $this->environment = $environment;
160
+ $this->payment_token_repository = $payment_token_repository;
161
  }
162
 
163
  /**
199
  ),
200
  11
201
  );
202
+
203
+ $payment_token_repository = $this->payment_token_repository;
204
+ add_filter(
205
+ 'woocommerce_credit_card_form_fields',
206
+ function ( $default_fields, $id ) use ( $payment_token_repository ) {
207
+ if ( $this->settings->has( 'vault_enabled' ) && $this->settings->get( 'vault_enabled' ) ) {
208
+ $default_fields['card-vault'] = sprintf(
209
+ '<p class="form-row form-row-wide"><label for="vault"><input class="ppcp-credit-card-vault" type="checkbox" id="ppcp-credit-card-vault" name="vault">%s</label></p>',
210
+ esc_html__( 'Save your Credit Card', 'woocommerce-paypal-payments' )
211
+ );
212
+
213
+ $tokens = $payment_token_repository->all_for_user_id( get_current_user_id() );
214
+ if ( $tokens && $this->tokens_contains_card( $tokens ) ) {
215
+ $output = sprintf(
216
+ '<p class="form-row form-row-wide"><label>%1$s</label><select id="saved-credit-card" name="saved_credit_card"><option value="">%2$s</option>',
217
+ esc_html__( 'Or select a saved Credit Card payment', 'woocommerce-paypal-payments' ),
218
+ esc_html__( 'Choose a saved payment', 'woocommerce-paypal-payments' )
219
+ );
220
+ foreach ( $tokens as $token ) {
221
+ if ( isset( $token->source()->card ) ) {
222
+ $output .= sprintf(
223
+ '<option value="%1$s">%2$s ...%3$s</option>',
224
+ $token->id(),
225
+ $token->source()->card->brand,
226
+ $token->source()->card->last_digits
227
+ );
228
+ }
229
+ }
230
+ $output .= '</select></p>';
231
+
232
+ $default_fields['saved-credit-card'] = $output;
233
+ }
234
+ }
235
+
236
+ return $default_fields;
237
+ },
238
+ 10,
239
+ 2
240
+ );
241
  }
242
  return true;
243
  }
362
  );
363
  }
364
 
365
+ add_action( 'woocommerce_review_order_after_payment', array( $this, 'button_renderer' ), 10 );
366
  add_action( 'woocommerce_pay_order_after_submit', array( $this, 'button_renderer' ), 10 );
367
 
368
  return true;
558
  return;
559
  }
560
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
561
  $label = 'checkout' === $this->context() ? __( 'Place order', 'woocommerce-paypal-payments' ) : __( 'Pay for order', 'woocommerce-paypal-payments' );
562
 
563
  printf(
564
  '<div id="%1$s" style="display:none;">
565
+ <button class="button alt">%2$s</button>
566
  </div><div id="payments-sdk__contingency-lightbox"></div><style id="ppcp-hide-dcc">.payment_method_ppcp-credit-card-gateway {display:none;}</style>',
567
  esc_attr( $id ),
 
 
 
 
 
568
  esc_html( $label )
569
  );
570
  }
573
  * Whether we can store vault tokens or not.
574
  *
575
  * @return bool
576
+ * @throws \WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException If a setting hasn't been found.
577
  */
578
  public function can_save_vault_token(): bool {
579
 
580
  if ( ! $this->settings->has( 'client_id' ) || ! $this->settings->get( 'client_id' ) ) {
581
  return false;
582
  }
583
+
584
  if ( ! $this->settings->has( 'vault_enabled' ) || ! $this->settings->get( 'vault_enabled' ) ) {
585
  return false;
586
  }
587
+
588
  return is_user_logged_in();
589
  }
590
 
616
  $localize = array(
617
  'script_attributes' => $this->attributes(),
618
  'data_client_id' => array(
619
+ 'set_attribute' => ( is_checkout() && $this->dcc_is_enabled() ) || $this->can_save_vault_token(),
 
620
  'endpoint' => home_url( \WC_AJAX::get_endpoint( DataClientIdEndpoint::ENDPOINT ) ),
621
  'nonce' => wp_create_nonce( DataClientIdEndpoint::nonce() ),
622
  'user' => get_current_user_id(),
638
  ),
639
  ),
640
  'enforce_vault' => $this->has_subscriptions(),
641
+ 'save_card' => $this->can_save_vault_token(),
642
  'bn_codes' => $this->bn_codes(),
643
  'payer' => $this->payerData(),
644
  'button' => array(
669
  'cvv' => '',
670
  'mm_yyyy' => __( 'MM/YYYY', 'woocommerce-paypal-payments' ),
671
  'fields_not_valid' => __(
672
+ 'Unfortunately, your credit card details are not valid.',
673
  'woocommerce-paypal-payments'
674
  ),
675
  'card_not_supported' => __(
676
+ 'Unfortunately, we do not support your credit card.',
677
  'woocommerce-paypal-payments'
678
  ),
679
  ),
747
  if ( $payee->merchant_id() ) {
748
  $params['merchant-id'] = $payee->merchant_id();
749
  }
750
+ $disable_funding = $this->settings->has( 'disable_funding' ) ?
751
  $this->settings->get( 'disable_funding' ) : array();
 
752
  if ( ! is_checkout() ) {
753
  $disable_funding[] = 'card';
754
  }
755
 
756
+ if ( count( $disable_funding ) > 0 ) {
757
+ $params['disable-funding'] = implode( ',', array_unique( $disable_funding ) );
 
 
 
 
 
758
  }
 
759
 
760
  $smart_button_url = add_query_arg( $params, 'https://www.paypal.com/sdk/js' );
761
  return $smart_button_url;
942
  }
943
  return (string) $value;
944
  }
945
+
946
+ /**
947
+ * Check if tokens has card source.
948
+ *
949
+ * @param PaymentToken[] $tokens The tokens.
950
+ * @return bool Wether tokens contains card or not.
951
+ */
952
+ protected function tokens_contains_card( $tokens ) {
953
+ foreach ( $tokens as $token ) {
954
+ if ( isset( $token->source()->card ) ) {
955
+ return true;
956
+ }
957
+ }
958
+ return false;
959
+ }
960
  }
modules/ppcp-button/src/Endpoint/class-approveorderendpoint.php CHANGED
@@ -161,7 +161,7 @@ class ApproveOrderEndpoint implements EndpointInterface {
161
  if ( ThreeDSecure::REJECT === $proceed ) {
162
  throw new RuntimeException(
163
  __(
164
- 'Unfortunatly, we can\'t accept your card. Please choose a different payment method.',
165
  'woocommerce-paypal-payments'
166
  )
167
  );
161
  if ( ThreeDSecure::REJECT === $proceed ) {
162
  throw new RuntimeException(
163
  __(
164
+ 'Unfortunately, we can\'t accept your card. Please choose a different payment method.',
165
  'woocommerce-paypal-payments'
166
  )
167
  );
modules/ppcp-button/src/Endpoint/class-createorderendpoint.php CHANGED
@@ -13,12 +13,15 @@ use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
14
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
15
  use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentMethod;
 
16
  use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
 
17
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
18
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
19
  use WooCommerce\PayPalCommerce\ApiClient\Repository\CartRepository;
20
  use WooCommerce\PayPalCommerce\Button\Helper\EarlyOrderHandler;
21
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
 
22
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
23
 
24
  /**
@@ -86,11 +89,18 @@ class CreateOrderEndpoint implements EndpointInterface {
86
  private $early_order_handler;
87
 
88
  /**
89
- * The current PayPal order in a process.
90
  *
91
- * @var Order|null
92
  */
93
- private $order;
 
 
 
 
 
 
 
94
 
95
  /**
96
  * CreateOrderEndpoint constructor.
@@ -138,12 +148,12 @@ class CreateOrderEndpoint implements EndpointInterface {
138
  * Handles the request.
139
  *
140
  * @return bool
141
- * @throws \WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException In case a setting was not found.
142
  */
143
  public function handle_request(): bool {
144
  try {
145
- $data = $this->request_data->read_request( $this->nonce() );
146
- $wc_order = null;
 
147
  if ( 'pay-now' === $data['context'] ) {
148
  $wc_order = wc_get_order( (int) $data['order_id'] );
149
  if ( ! is_a( $wc_order, \WC_Order::class ) ) {
@@ -156,28 +166,23 @@ class CreateOrderEndpoint implements EndpointInterface {
156
  )
157
  );
158
  }
159
- $purchase_units = array( $this->purchase_unit_factory->from_wc_order( $wc_order ) );
160
  } else {
161
- $purchase_units = $this->cart_repository->all();
162
  }
163
 
164
  $this->set_bn_code( $data );
165
- $needs_shipping = WC()->cart && WC()->cart->needs_shipping();
166
- $shipping_address_is_fix = $needs_shipping && 'checkout' === $data['context'] ? true : false;
167
- $order = $this->api_endpoint->create(
168
- $purchase_units,
169
- $this->payer( $data, $wc_order ),
170
- null,
171
- $this->payment_method(),
172
- '',
173
- $shipping_address_is_fix
174
- );
175
  if ( 'checkout' === $data['context'] ) {
176
- $this->validate_checkout_form( $data['form'], $order );
177
  }
178
  if ( 'pay-now' === $data['context'] && get_option( 'woocommerce_terms_page_id', '' ) !== '' ) {
179
  $this->validate_paynow_form( $data['form'] );
180
  }
 
 
 
 
181
  wp_send_json_success( $order->to_array() );
182
  return true;
183
  } catch ( \RuntimeException $error ) {
@@ -189,15 +194,41 @@ class CreateOrderEndpoint implements EndpointInterface {
189
  'details' => is_a( $error, PayPalApiException::class ) ? $error->details() : array(),
190
  )
191
  );
192
- return false;
 
193
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  }
195
 
196
  /**
197
  * Returns the Payer entity based on the request data.
198
  *
199
- * @param array $data The request data.
200
- * @param \WC_Order $wc_order The order.
201
  *
202
  * @return Payer|null
203
  */
@@ -245,13 +276,17 @@ class CreateOrderEndpoint implements EndpointInterface {
245
  * Returns the PaymentMethod object for the order.
246
  *
247
  * @return PaymentMethod
248
- * @throws \WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException In case a setting would not be found.
249
  */
250
  private function payment_method() : PaymentMethod {
251
- $payee_preferred = $this->settings->has( 'payee_preferred' ) && $this->settings->get( 'payee_preferred' ) ?
252
- PaymentMethod::PAYEE_PREFERRED_IMMEDIATE_PAYMENT_REQUIRED
253
- : PaymentMethod::PAYEE_PREFERRED_UNRESTRICTED;
254
- $payment_method = new PaymentMethod( $payee_preferred );
 
 
 
 
 
255
  return $payment_method;
256
  }
257
 
@@ -259,12 +294,10 @@ class CreateOrderEndpoint implements EndpointInterface {
259
  * Prepare the Request parameter and process the checkout form and validate it.
260
  *
261
  * @param string $form_values The values of the form.
262
- * @param Order $order The Order.
263
  *
264
  * @throws \Exception On Error.
265
  */
266
- private function validate_checkout_form( string $form_values, Order $order ) {
267
- $this->order = $order;
268
  $form_values = explode( '&', $form_values );
269
 
270
  $parsed_values = array();
@@ -316,10 +349,10 @@ class CreateOrderEndpoint implements EndpointInterface {
316
  * @return array
317
  */
318
  public function after_checkout_validation( array $data, \WP_Error $errors ): array {
319
-
320
- $order = $this->order;
321
  if ( ! $errors->errors ) {
322
 
 
 
323
  /**
324
  * In case we are onboarded and everything is fine with the \WC_Order
325
  * we want this order to be created. We will intercept it and leave it
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
14
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
15
  use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentMethod;
16
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
17
  use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
18
+ use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
19
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
20
  use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
21
  use WooCommerce\PayPalCommerce\ApiClient\Repository\CartRepository;
22
  use WooCommerce\PayPalCommerce\Button\Helper\EarlyOrderHandler;
23
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
24
+ use WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException;
25
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
26
 
27
  /**
89
  private $early_order_handler;
90
 
91
  /**
92
+ * Data from the request.
93
  *
94
+ * @var array
95
  */
96
+ private $parsed_request_data;
97
+
98
+ /**
99
+ * The array of purchase units for order.
100
+ *
101
+ * @var PurchaseUnit[]
102
+ */
103
+ private $purchase_units;
104
 
105
  /**
106
  * CreateOrderEndpoint constructor.
148
  * Handles the request.
149
  *
150
  * @return bool
 
151
  */
152
  public function handle_request(): bool {
153
  try {
154
+ $data = $this->request_data->read_request( $this->nonce() );
155
+ $this->parsed_request_data = $data;
156
+ $wc_order = null;
157
  if ( 'pay-now' === $data['context'] ) {
158
  $wc_order = wc_get_order( (int) $data['order_id'] );
159
  if ( ! is_a( $wc_order, \WC_Order::class ) ) {
166
  )
167
  );
168
  }
169
+ $this->purchase_units = array( $this->purchase_unit_factory->from_wc_order( $wc_order ) );
170
  } else {
171
+ $this->purchase_units = $this->cart_repository->all();
172
  }
173
 
174
  $this->set_bn_code( $data );
175
+
 
 
 
 
 
 
 
 
 
176
  if ( 'checkout' === $data['context'] ) {
177
+ $this->process_checkout_form( $data['form'] );
178
  }
179
  if ( 'pay-now' === $data['context'] && get_option( 'woocommerce_terms_page_id', '' ) !== '' ) {
180
  $this->validate_paynow_form( $data['form'] );
181
  }
182
+
183
+ // if we are here so the context is not 'checkout' as it exits before. Therefore, a PayPal order is not created yet.
184
+ // It would be a good idea to refactor the checkout process in the future.
185
+ $order = $this->create_paypal_order( $wc_order );
186
  wp_send_json_success( $order->to_array() );
187
  return true;
188
  } catch ( \RuntimeException $error ) {
194
  'details' => is_a( $error, PayPalApiException::class ) ? $error->details() : array(),
195
  )
196
  );
197
+ } catch ( \Exception $exception ) {
198
+ wc_add_notice( $exception->getMessage(), 'error' );
199
  }
200
+
201
+ return false;
202
+ }
203
+
204
+ /**
205
+ * Creates the order in the PayPal, uses data from WC order if provided.
206
+ *
207
+ * @param \WC_Order|null $wc_order WC order to get data from.
208
+ *
209
+ * @return Order Created PayPal order.
210
+ *
211
+ * @throws RuntimeException If create order request fails.
212
+ */
213
+ private function create_paypal_order( \WC_Order $wc_order = null ): Order {
214
+ $needs_shipping = WC()->cart && WC()->cart->needs_shipping();
215
+ $shipping_address_is_fix = $needs_shipping && 'checkout' === $this->parsed_request_data['context'];
216
+
217
+ return $this->api_endpoint->create(
218
+ $this->purchase_units,
219
+ $this->payer( $this->parsed_request_data, $wc_order ),
220
+ null,
221
+ $this->payment_method(),
222
+ '',
223
+ $shipping_address_is_fix
224
+ );
225
  }
226
 
227
  /**
228
  * Returns the Payer entity based on the request data.
229
  *
230
+ * @param array $data The request data.
231
+ * @param \WC_Order|null $wc_order The order.
232
  *
233
  * @return Payer|null
234
  */
276
  * Returns the PaymentMethod object for the order.
277
  *
278
  * @return PaymentMethod
 
279
  */
280
  private function payment_method() : PaymentMethod {
281
+ try {
282
+ $payee_preferred = $this->settings->has( 'payee_preferred' ) && $this->settings->get( 'payee_preferred' ) ?
283
+ PaymentMethod::PAYEE_PREFERRED_IMMEDIATE_PAYMENT_REQUIRED
284
+ : PaymentMethod::PAYEE_PREFERRED_UNRESTRICTED;
285
+ } catch ( NotFoundException $exception ) {
286
+ $payee_preferred = PaymentMethod::PAYEE_PREFERRED_UNRESTRICTED;
287
+ }
288
+
289
+ $payment_method = new PaymentMethod( $payee_preferred );
290
  return $payment_method;
291
  }
292
 
294
  * Prepare the Request parameter and process the checkout form and validate it.
295
  *
296
  * @param string $form_values The values of the form.
 
297
  *
298
  * @throws \Exception On Error.
299
  */
300
+ private function process_checkout_form( string $form_values ) {
 
301
  $form_values = explode( '&', $form_values );
302
 
303
  $parsed_values = array();
349
  * @return array
350
  */
351
  public function after_checkout_validation( array $data, \WP_Error $errors ): array {
 
 
352
  if ( ! $errors->errors ) {
353
 
354
+ $order = $this->create_paypal_order();
355
+
356
  /**
357
  * In case we are onboarded and everything is fine with the \WC_Order
358
  * we want this order to be created. We will intercept it and leave it
modules/ppcp-button/src/Endpoint/class-dataclientidendpoint.php CHANGED
@@ -73,7 +73,7 @@ class DataClientIdEndpoint implements EndpointInterface {
73
  array(
74
  'token' => $token->token(),
75
  'expiration' => $token->expiration_timestamp(),
76
- 'user' => get_current_user_id(),
77
  )
78
  );
79
  return true;
73
  array(
74
  'token' => $token->token(),
75
  'expiration' => $token->expiration_timestamp(),
76
+ 'user' => $user_id,
77
  )
78
  );
79
  return true;
modules/ppcp-button/src/Helper/class-messagesapply.php CHANGED
@@ -24,6 +24,8 @@ class MessagesApply {
24
  'US',
25
  'DE',
26
  'GB',
 
 
27
  );
28
 
29
  /**
24
  'US',
25
  'DE',
26
  'GB',
27
+ 'FR',
28
+ 'AU',
29
  );
30
 
31
  /**
modules/ppcp-button/src/Helper/class-messagesdisclaimers.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Helper class to determine which disclaimer content should display based on shop location country.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\Button\Helper
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\Button\Helper;
11
+
12
+ /**
13
+ * Class MessagesDisclaimers
14
+ *
15
+ * @package WooCommerce\PayPalCommerce\Button\Helper
16
+ */
17
+ class MessagesDisclaimers {
18
+
19
+ /**
20
+ * Disclainers content by country.
21
+ *
22
+ * @var array
23
+ */
24
+ private $disclaimers = array(
25
+ 'US' => array(
26
+ 'link' => 'https://developer.paypal.com/docs/commerce-platforms/admin-panel/woocommerce/us/',
27
+ ),
28
+ 'GB' => array(
29
+ 'link' => 'https://developer.paypal.com/docs/commerce-platforms/admin-panel/woocommerce/uk/',
30
+ ),
31
+ 'DE' => array(
32
+ 'link' => 'https://developer.paypal.com/docs/commerce-platforms/admin-panel/woocommerce/de/',
33
+ ),
34
+ 'AU' => array(
35
+ 'link' => 'https://developer.paypal.com/docs/commerce-platforms/admin-panel/woocommerce/au/',
36
+ ),
37
+ 'FR' => array(
38
+ 'link' => 'https://developer.paypal.com/docs/commerce-platforms/admin-panel/woocommerce/fr/',
39
+ ),
40
+ );
41
+
42
+ /**
43
+ * Returns a disclaimer link based on country.
44
+ *
45
+ * @return string
46
+ */
47
+ public function link_for_country(): string {
48
+ $region = wc_get_base_location();
49
+ $country = $region['country'];
50
+
51
+ return $this->disclaimers[ $country ]['link'] ?? '';
52
+ }
53
+ }
modules/ppcp-subscription/src/Repository/class-paymenttokenrepository.php CHANGED
@@ -72,6 +72,22 @@ class PaymentTokenRepository {
72
  }
73
  }
74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  /**
76
  * Delete a token for a user.
77
  *
72
  }
73
  }
74
 
75
+ /**
76
+ * Return all tokens for a user.
77
+ *
78
+ * @param int $id The user id.
79
+ * @return PaymentToken[]
80
+ */
81
+ public function all_for_user_id( int $id ) {
82
+ try {
83
+ $tokens = $this->endpoint->for_user( $id );
84
+ update_user_meta( $id, self::USER_META, $tokens );
85
+ return $tokens;
86
+ } catch ( RuntimeException $exception ) {
87
+ return array();
88
+ }
89
+ }
90
+
91
  /**
92
  * Delete a token for a user.
93
  *
modules/ppcp-subscription/src/class-renewalhandler.php CHANGED
@@ -120,7 +120,7 @@ class RenewalHandler {
120
  'order' => $wc_order,
121
  )
122
  );
123
- \WC_Subscriptions_Manager::process_subscription_payment_failure_on_order( $wc_order );
124
  return;
125
  }
126
  $this->logger->log(
@@ -156,12 +156,13 @@ class RenewalHandler {
156
  }
157
  $purchase_unit = $this->purchase_unit_factory->from_wc_order( $wc_order );
158
  $payer = $this->payer_factory->from_customer( $customer );
159
- $order = $this->order_endpoint->create(
 
160
  array( $purchase_unit ),
161
  $payer,
162
- $token,
163
- (string) $wc_order->get_id()
164
  );
 
165
  $this->capture_order( $order, $wc_order );
166
  }
167
 
@@ -175,26 +176,34 @@ class RenewalHandler {
175
  */
176
  private function get_token_for_customer( \WC_Customer $customer, \WC_Order $wc_order ) {
177
 
178
- $token = $this->repository->for_user_id( (int) $customer->get_id() );
179
- if ( ! $token ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  $this->logger->log(
181
  'error',
182
- sprintf(
183
- // translators: %d is the customer id.
184
- __(
185
- 'No payment token found for customer %d',
186
- 'woocommerce-paypal-payments'
187
- ),
188
- (int) $customer->get_id()
189
- ),
190
  array(
191
  'customer' => $customer,
192
  'order' => $wc_order,
193
  )
194
  );
195
- \WC_Subscriptions_Manager::process_subscription_payment_failure_on_order( $wc_order );
196
  }
197
- return $token;
 
198
  }
199
 
200
  /**
@@ -210,13 +219,11 @@ class RenewalHandler {
210
  'processing',
211
  __( 'Payment received.', 'woocommerce-paypal-payments' )
212
  );
213
- \WC_Subscriptions_Manager::process_subscription_payments_on_order( $wc_order );
214
  }
215
 
216
  if ( $order->intent() === 'AUTHORIZE' ) {
217
  $this->order_endpoint->authorize( $order );
218
  $wc_order->update_meta_data( PayPalGateway::CAPTURED_META_KEY, 'false' );
219
- \WC_Subscriptions_Manager::process_subscription_payments_on_order( $wc_order );
220
  }
221
  }
222
  }
120
  'order' => $wc_order,
121
  )
122
  );
123
+
124
  return;
125
  }
126
  $this->logger->log(
156
  }
157
  $purchase_unit = $this->purchase_unit_factory->from_wc_order( $wc_order );
158
  $payer = $this->payer_factory->from_customer( $customer );
159
+
160
+ $order = $this->order_endpoint->create(
161
  array( $purchase_unit ),
162
  $payer,
163
+ $token
 
164
  );
165
+
166
  $this->capture_order( $order, $wc_order );
167
  }
168
 
176
  */
177
  private function get_token_for_customer( \WC_Customer $customer, \WC_Order $wc_order ) {
178
 
179
+ $tokens = $this->repository->all_for_user_id( (int) $customer->get_id() );
180
+ if ( ! $tokens ) {
181
+
182
+ $error_message = sprintf(
183
+ // translators: %d is the customer id.
184
+ __(
185
+ 'Payment failed. No payment tokens found for customer %d.',
186
+ 'woocommerce-paypal-payments'
187
+ ),
188
+ (int) $customer->get_id()
189
+ );
190
+
191
+ $wc_order->update_status(
192
+ 'failed',
193
+ $error_message
194
+ );
195
+
196
  $this->logger->log(
197
  'error',
198
+ $error_message,
 
 
 
 
 
 
 
199
  array(
200
  'customer' => $customer,
201
  'order' => $wc_order,
202
  )
203
  );
 
204
  }
205
+
206
+ return current( $tokens );
207
  }
208
 
209
  /**
219
  'processing',
220
  __( 'Payment received.', 'woocommerce-paypal-payments' )
221
  );
 
222
  }
223
 
224
  if ( $order->intent() === 'AUTHORIZE' ) {
225
  $this->order_endpoint->authorize( $order );
226
  $wc_order->update_meta_data( PayPalGateway::CAPTURED_META_KEY, 'false' );
 
227
  }
228
  }
229
  }
modules/ppcp-subscription/src/class-subscriptionmodule.php CHANGED
@@ -11,7 +11,10 @@ namespace WooCommerce\PayPalCommerce\Subscription;
11
 
12
  use Dhii\Container\ServiceProvider;
13
  use Dhii\Modular\Module\ModuleInterface;
 
 
14
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
 
15
  use Interop\Container\ServiceProviderInterface;
16
  use Psr\Container\ContainerInterface;
17
 
@@ -40,16 +43,37 @@ class SubscriptionModule implements ModuleInterface {
40
  public function run( ContainerInterface $container = null ) {
41
  add_action(
42
  'woocommerce_scheduled_subscription_payment_' . PayPalGateway::ID,
43
- static function ( $amount, $order ) use ( $container ) {
44
- if ( ! is_a( $order, \WC_Order::class ) ) {
45
- return;
46
- }
47
- $handler = $container->get( 'subscription.renewal-handler' );
48
- $handler->renew( $order );
49
  },
50
  10,
51
  2
52
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  }
54
 
55
  /**
11
 
12
  use Dhii\Container\ServiceProvider;
13
  use Dhii\Modular\Module\ModuleInterface;
14
+ use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentTokenEndpoint;
15
+ use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
16
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
17
+ use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
18
  use Interop\Container\ServiceProviderInterface;
19
  use Psr\Container\ContainerInterface;
20
 
43
  public function run( ContainerInterface $container = null ) {
44
  add_action(
45
  'woocommerce_scheduled_subscription_payment_' . PayPalGateway::ID,
46
+ function ( $amount, $order ) use ( $container ) {
47
+ $this->renew( $order, $container );
 
 
 
 
48
  },
49
  10,
50
  2
51
  );
52
+
53
+ add_action(
54
+ 'woocommerce_scheduled_subscription_payment_' . CreditCardGateway::ID,
55
+ function ( $amount, $order ) use ( $container ) {
56
+ $this->renew( $order, $container );
57
+ },
58
+ 10,
59
+ 2
60
+ );
61
+ }
62
+
63
+ /**
64
+ * Handles a Subscription product renewal.
65
+ *
66
+ * @param \WC_Order $order WooCommerce order.
67
+ * @param ContainerInterface|null $container The container.
68
+ * @return void
69
+ */
70
+ protected function renew( $order, $container ) {
71
+ if ( ! is_a( $order, \WC_Order::class ) ) {
72
+ return;
73
+ }
74
+
75
+ $handler = $container->get( 'subscription.renewal-handler' );
76
+ $handler->renew( $order );
77
  }
78
 
79
  /**
modules/ppcp-wc-gateway/assets/js/gateway-settings.js ADDED
@@ -0,0 +1,2 @@
 
 
1
+ !function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t){document.addEventListener("DOMContentLoaded",()=>{const e=document.querySelectorAll("#ppcp-message_enabled, #ppcp-message_cart_enabled, #ppcp-message_product_enabled"),t=document.querySelectorAll("#ppcp-vault_enabled");function n(e){return Array.prototype.slice.call(e).filter(e=>!e.disabled&&e.checked).length>0}function r(e){e.forEach(e=>e.setAttribute("disabled","true"))}function o(e){e.forEach(e=>e.removeAttribute("disabled"))}function u(){n(e)?r(t):o(t),n(t)?r(e):o(e)}u(),e.forEach(e=>e.addEventListener("change",u)),t.forEach(e=>e.addEventListener("change",u))})}]);
2
+ //# sourceMappingURL=gateway-settings.js.map
modules/ppcp-wc-gateway/assets/js/gateway-settings.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./resources/js/gateway-settings.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","document","addEventListener","payLaterMessagingCheckboxes","querySelectorAll","vaultingCheckboxes","atLeastOneChecked","checkboxesNodeList","Array","slice","filter","node","disabled","checked","length","disableAll","nodeList","forEach","setAttribute","enableAll","removeAttribute","updateCheckboxes"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,gBClFpDC,SAASC,iBACN,mBACA,KACI,MAAMC,EAA8BF,SAASG,iBACzC,oFAGEC,EAAqBJ,SAASG,iBAChC,uBAGJ,SAASE,EAAkBC,GACvB,OAAOC,MAAMX,UAAUY,MAAMrC,KAAKmC,GAAoBG,OAAOC,IAASA,EAAKC,UAAYD,EAAKE,SAASC,OAAS,EAGlH,SAASC,EAAWC,GAChBA,EAASC,QAAQN,GAAQA,EAAKO,aAAa,WAAY,SAG3D,SAASC,EAAUH,GACfA,EAASC,QAAQN,GAAQA,EAAKS,gBAAgB,aAGlD,SAASC,IACLf,EAAkBH,GAA+BY,EAAWV,GAAsBc,EAAUd,GAC5FC,EAAkBD,GAAsBU,EAAWZ,GAA+BgB,EAAUhB,GAGhGkB,IAEAlB,EAA4Bc,QAAQN,GAAQA,EAAKT,iBAAiB,SAAUmB,IAC5EhB,EAAmBY,QAAQN,GAAQA,EAAKT,iBAAiB,SAAUmB","file":"js/gateway-settings.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n",";document.addEventListener(\n 'DOMContentLoaded',\n () => {\n const payLaterMessagingCheckboxes = document.querySelectorAll(\n \"#ppcp-message_enabled, #ppcp-message_cart_enabled, #ppcp-message_product_enabled\"\n )\n\n const vaultingCheckboxes = document.querySelectorAll(\n \"#ppcp-vault_enabled\"\n )\n\n function atLeastOneChecked(checkboxesNodeList) {\n return Array.prototype.slice.call(checkboxesNodeList).filter(node => !node.disabled && node.checked).length > 0\n }\n\n function disableAll(nodeList){\n nodeList.forEach(node => node.setAttribute('disabled', 'true'))\n }\n\n function enableAll(nodeList){\n nodeList.forEach(node => node.removeAttribute('disabled'))\n }\n\n function updateCheckboxes() {\n atLeastOneChecked(payLaterMessagingCheckboxes) ? disableAll(vaultingCheckboxes) : enableAll(vaultingCheckboxes)\n atLeastOneChecked(vaultingCheckboxes) ? disableAll(payLaterMessagingCheckboxes) : enableAll(payLaterMessagingCheckboxes)\n }\n\n updateCheckboxes()\n\n payLaterMessagingCheckboxes.forEach(node => node.addEventListener('change', updateCheckboxes))\n vaultingCheckboxes.forEach(node => node.addEventListener('change', updateCheckboxes));\n }\n);\n"],"sourceRoot":""}
modules/ppcp-wc-gateway/package.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "ppcp-wc-gateway",
3
+ "version": "1.0.0",
4
+ "license": "GPL-3.0-or-later",
5
+ "main": "resources/js/gateway-settings.js",
6
+ "devDependencies": {
7
+ "@babel/core": "^7.9.0",
8
+ "@babel/preset-env": "^7.9.5",
9
+ "babel-loader": "^8.1.0",
10
+ "cross-env": "^5.0.1",
11
+ "file-loader": "^4.2.0",
12
+ "webpack": "^4.42.1",
13
+ "webpack-cli": "^3.1.2",
14
+ "babel-plugin-transform-object-rest-spread": "^6.26.0"
15
+ },
16
+ "scripts": {
17
+ "build": "cross-env BABEL_ENV=default NODE_ENV=production webpack",
18
+ "watch": "cross-env BABEL_ENV=default NODE_ENV=production webpack --watch",
19
+ "dev": "cross-env BABEL_ENV=default webpack --watch"
20
+ }
21
+ }
modules/ppcp-wc-gateway/resources/js/gateway-settings.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ;document.addEventListener(
2
+ 'DOMContentLoaded',
3
+ () => {
4
+ const payLaterMessagingCheckboxes = document.querySelectorAll(
5
+ "#ppcp-message_enabled, #ppcp-message_cart_enabled, #ppcp-message_product_enabled"
6
+ )
7
+
8
+ const vaultingCheckboxes = document.querySelectorAll(
9
+ "#ppcp-vault_enabled"
10
+ )
11
+
12
+ function atLeastOneChecked(checkboxesNodeList) {
13
+ return Array.prototype.slice.call(checkboxesNodeList).filter(node => !node.disabled && node.checked).length > 0
14
+ }
15
+
16
+ function disableAll(nodeList){
17
+ nodeList.forEach(node => node.setAttribute('disabled', 'true'))
18
+ }
19
+
20
+ function enableAll(nodeList){
21
+ nodeList.forEach(node => node.removeAttribute('disabled'))
22
+ }
23
+
24
+ function updateCheckboxes() {
25
+ atLeastOneChecked(payLaterMessagingCheckboxes) ? disableAll(vaultingCheckboxes) : enableAll(vaultingCheckboxes)
26
+ atLeastOneChecked(vaultingCheckboxes) ? disableAll(payLaterMessagingCheckboxes) : enableAll(payLaterMessagingCheckboxes)
27
+ }
28
+
29
+ updateCheckboxes()
30
+
31
+ payLaterMessagingCheckboxes.forEach(node => node.addEventListener('change', updateCheckboxes))
32
+ vaultingCheckboxes.forEach(node => node.addEventListener('change', updateCheckboxes));
33
+ }
34
+ );
modules/ppcp-wc-gateway/services.php CHANGED
@@ -9,10 +9,11 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway;
11
 
12
- use Dhii\Data\Container\ContainerInterface;
13
  use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
14
  use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache;
15
  use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
 
 
16
  use WooCommerce\PayPalCommerce\Onboarding\State;
17
  use WooCommerce\PayPalCommerce\WcGateway\Admin\OrderTablePaymentStatusColumn;
18
  use WooCommerce\PayPalCommerce\WcGateway\Admin\PaymentStatusOrderDetail;
@@ -22,6 +23,7 @@ use WooCommerce\PayPalCommerce\WcGateway\Checkout\DisableGateways;
22
  use WooCommerce\PayPalCommerce\WcGateway\Endpoint\ReturnUrlEndpoint;
23
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
24
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
 
25
  use Woocommerce\PayPalCommerce\WcGateway\Helper\DccProductStatus;
26
  use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
27
  use WooCommerce\PayPalCommerce\WcGateway\Notice\ConnectAdminNotice;
@@ -32,7 +34,6 @@ use WooCommerce\PayPalCommerce\WcGateway\Settings\SectionsRenderer;
32
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
33
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsListener;
34
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsRenderer;
35
- use WpOop\TransientCache\CachePoolFactory;
36
 
37
  return array(
38
  'wcgateway.paypal-gateway' => static function ( $container ): PayPalGateway {
@@ -44,6 +45,7 @@ return array(
44
  $session_handler = $container->get( 'session.handler' );
45
  $refund_processor = $container->get( 'wcgateway.processor.refunds' );
46
  $state = $container->get( 'onboarding.state' );
 
47
 
48
  return new PayPalGateway(
49
  $settings_renderer,
@@ -53,7 +55,8 @@ return array(
53
  $settings,
54
  $session_handler,
55
  $refund_processor,
56
- $state
 
57
  );
58
  },
59
  'wcgateway.credit-card-gateway' => static function ( $container ): CreditCardGateway {
@@ -66,6 +69,11 @@ return array(
66
  $session_handler = $container->get( 'session.handler' );
67
  $refund_processor = $container->get( 'wcgateway.processor.refunds' );
68
  $state = $container->get( 'onboarding.state' );
 
 
 
 
 
69
  return new CreditCardGateway(
70
  $settings_renderer,
71
  $order_processor,
@@ -75,7 +83,12 @@ return array(
75
  $module_url,
76
  $session_handler,
77
  $refund_processor,
78
- $state
 
 
 
 
 
79
  );
80
  },
81
  'wcgateway.disabler' => static function ( $container ): DisableGateways {
@@ -125,22 +138,23 @@ return array(
125
  'wcgateway.order-processor' => static function ( $container ): OrderProcessor {
126
 
127
  $session_handler = $container->get( 'session.handler' );
128
- $cart_repository = $container->get( 'api.repository.cart' );
129
  $order_endpoint = $container->get( 'api.endpoint.order' );
130
- $payments_endpoint = $container->get( 'api.endpoint.payments' );
131
  $order_factory = $container->get( 'api.factory.order' );
132
  $threed_secure = $container->get( 'button.helper.three-d-secure' );
133
  $authorized_payments_processor = $container->get( 'wcgateway.processor.authorized-payments' );
134
- $settings = $container->get( 'wcgateway.settings' );
 
 
 
135
  return new OrderProcessor(
136
  $session_handler,
137
- $cart_repository,
138
  $order_endpoint,
139
- $payments_endpoint,
140
  $order_factory,
141
  $threed_secure,
142
  $authorized_payments_processor,
143
- $settings
 
 
144
  );
145
  },
146
  'wcgateway.processor.refunds' => static function ( $container ): RefundProcessor {
@@ -168,13 +182,8 @@ return array(
168
  'wcgateway.settings.fields' => static function ( $container ): array {
169
 
170
  $state = $container->get( 'onboarding.state' );
171
- /**
172
- * The state.
173
- *
174
- * @var State $state
175
- */
176
-
177
  $settings = $container->get( 'wcgateway.settings' );
 
178
 
179
  $fields = array(
180
  'sandbox_on' => array(
@@ -612,6 +621,7 @@ return array(
612
  'mybank' => _x( 'MyBank', 'Name of payment method', 'woocommerce-paypal-payments' ),
613
  'p24' => _x( 'Przelewy24', 'Name of payment method', 'woocommerce-paypal-payments' ),
614
  'sofort' => _x( 'Sofort', 'Name of payment method', 'woocommerce-paypal-payments' ),
 
615
  ),
616
  'screens' => array(
617
  State::STATE_PROGRESSIVE,
@@ -624,16 +634,22 @@ return array(
624
  'title' => __( 'Vaulting', 'woocommerce-paypal-payments' ),
625
  'type' => 'checkbox',
626
  'desc_tip' => true,
627
- 'label' => __( 'Enable vaulting', 'woocommerce-paypal-payments' ),
628
- 'description' => __( 'Enables you to store payment tokens for subscriptions.', 'woocommerce-paypal-payments' ),
629
- 'default' => true,
 
 
 
 
 
 
 
630
  'screens' => array(
631
  State::STATE_ONBOARDED,
632
  ),
633
  'requirements' => array(),
634
- 'gateway' => 'paypal',
635
  ),
636
-
637
  'logging_enabled' => array(
638
  'title' => __( 'Logging', 'woocommerce-paypal-payments' ),
639
  'type' => 'checkbox',
@@ -652,8 +668,13 @@ return array(
652
  'title' => __( 'Invoice prefix', 'woocommerce-paypal-payments' ),
653
  'type' => 'text',
654
  'desc_tip' => true,
655
- 'description' => __( 'If you use your PayPal account with more than one installation, please use a distinct prefix to seperate those installations. Please do not use numbers in your prefix.', 'woocommerce-paypal-payments' ),
656
- 'default' => 'WC-',
 
 
 
 
 
657
  'screens' => array(
658
  State::STATE_PROGRESSIVE,
659
  State::STATE_ONBOARDED,
@@ -804,7 +825,7 @@ return array(
804
  ),
805
  'requirements' => array( 'messages' ),
806
  'gateway' => 'paypal',
807
- 'description' => str_replace( '<a>', '<a href="https://www.paypal.com/us/business/buy-now-pay-later">', __( 'Customize the appearance of <a>Pay Later messages</a> on checkout to promote special financing offers, which help increase sales.', 'woocommerce-paypal-payments' ) ),
808
  'class' => array( 'ppcp-subheading' ),
809
  ),
810
  'message_enabled' => array(
@@ -1107,7 +1128,7 @@ return array(
1107
  ),
1108
  'requirements' => array( 'messages' ),
1109
  'gateway' => 'paypal',
1110
- 'description' => str_replace( '<a>', '<a href="https://www.paypal.com/us/business/buy-now-pay-later">', __( 'Customize the appearance of <a>Pay Later messages</a> on product pages to promote special financing offers, which help increase sales.', 'woocommerce-paypal-payments' ) ),
1111
  'class' => array( 'ppcp-subheading' ),
1112
  ),
1113
  'message_product_enabled' => array(
@@ -1410,7 +1431,7 @@ return array(
1410
  ),
1411
  'requirements' => array( 'messages' ),
1412
  'gateway' => 'paypal',
1413
- 'description' => str_replace( '<a>', '<a href="https://www.paypal.com/us/business/buy-now-pay-later">', __( 'Customize the appearance of <a>Pay Later messages</a> on your cart page to promote special financing offers, which help increase sales.', 'woocommerce-paypal-payments' ) ),
1414
  'class' => array( 'ppcp-subheading' ),
1415
  ),
1416
  'message_cart_enabled' => array(
@@ -1785,29 +1806,6 @@ return array(
1785
  unset( $fields['disable_funding']['options']['card'] );
1786
  }
1787
 
1788
- /**
1789
- * Set Pay in 3 heading and description for UK.
1790
- */
1791
- if ( 'GB' === $country ) {
1792
- $fields['message_heading']['heading'] = __( 'Pay Later Messaging on Checkout', 'woocommerce-paypal-payments' );
1793
- $fields['message_heading']['description'] = __( 'Display pay later messaging on your site for offers like Pay in 3, which lets customers pay with 3 interest-free monthly payments. We’ll show messages on your site to promote this feature for you. You may not promote pay later offers with any other content, marketing, or materials.', 'woocommerce-paypal-payments' );
1794
-
1795
- $fields['message_product_heading']['heading'] = __( 'Pay Later Messaging on Single Product Page', 'woocommerce-paypal-payments' );
1796
- $fields['message_product_heading']['description'] = __( 'Display pay later messaging on your site for offers like Pay in 3, which lets customers pay with 3 interest-free monthly payments. We’ll show messages on your site to promote this feature for you. You may not promote pay later offers with any other content, marketing, or materials.', 'woocommerce-paypal-payments' );
1797
-
1798
- $fields['message_cart_heading']['heading'] = __( 'Pay Later Messaging on Cart', 'woocommerce-paypal-payments' );
1799
- $fields['message_cart_heading']['description'] = __( 'Display pay later messaging on your site for offers like Pay in 3, which lets customers pay with 3 interest-free monthly payments. We’ll show messages on your site to promote this feature for you. You may not promote pay later offers with any other content, marketing, or materials.', 'woocommerce-paypal-payments' );
1800
- }
1801
-
1802
- /**
1803
- * Set Pay Later link for DE
1804
- */
1805
- if ( 'DE' === $country ) {
1806
- $fields['message_heading']['description'] = str_replace( '<a>', '<a href="https://www.paypal.com/de/webapps/mpp/installments">', __( 'Customize the appearance of <a>Pay Later messages</a> on checkout to promote special financing offers, which help increase sales.', 'woocommerce-paypal-payments' ) );
1807
- $fields['message_product_heading']['description'] = str_replace( '<a>', '<a href="https://www.paypal.com/de/webapps/mpp/installments">', __( 'Customize the appearance of <a>Pay Later messages</a> on checkout to promote special financing offers, which help increase sales.', 'woocommerce-paypal-payments' ) );
1808
- $fields['message_cart_heading']['description'] = str_replace( '<a>', '<a href="https://www.paypal.com/de/webapps/mpp/installments">', __( 'Customize the appearance of <a>Pay Later messages</a> on checkout to promote special financing offers, which help increase sales.', 'woocommerce-paypal-payments' ) );
1809
- }
1810
-
1811
  $dcc_applies = $container->get( 'api.helpers.dccapplies' );
1812
  /**
1813
  * Depending on your store location, some credit cards can't be used.
@@ -1837,10 +1835,19 @@ return array(
1837
  },
1838
  'wcgateway.url' => static function ( $container ): string {
1839
  return plugins_url(
1840
- '/modules/ppcp-wc-gateway/',
1841
  dirname( __FILE__, 3 ) . '/woocommerce-paypal-payments.php'
1842
  );
1843
  },
 
 
 
 
 
 
 
 
 
1844
  'wcgateway.endpoint.return-url' => static function ( $container ) : ReturnUrlEndpoint {
1845
  $gateway = $container->get( 'wcgateway.paypal-gateway' );
1846
  $endpoint = $container->get( 'api.endpoint.order' );
@@ -1851,10 +1858,30 @@ return array(
1851
  $prefix
1852
  );
1853
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1854
  'wcgateway.helper.dcc-product-status' => static function ( $container ) : DccProductStatus {
1855
 
1856
  $settings = $container->get( 'wcgateway.settings' );
1857
  $partner_endpoint = $container->get( 'api.endpoint.partners' );
1858
  return new DccProductStatus( $settings, $partner_endpoint );
1859
  },
 
 
 
 
1860
  );
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway;
11
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
13
  use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache;
14
  use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
15
+ use WooCommerce\PayPalCommerce\Button\Helper\MessagesDisclaimers;
16
+ use WooCommerce\PayPalCommerce\Onboarding\Environment;
17
  use WooCommerce\PayPalCommerce\Onboarding\State;
18
  use WooCommerce\PayPalCommerce\WcGateway\Admin\OrderTablePaymentStatusColumn;
19
  use WooCommerce\PayPalCommerce\WcGateway\Admin\PaymentStatusOrderDetail;
23
  use WooCommerce\PayPalCommerce\WcGateway\Endpoint\ReturnUrlEndpoint;
24
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
25
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
26
+ use WooCommerce\PayPalCommerce\WcGateway\Gateway\TransactionUrlProvider;
27
  use Woocommerce\PayPalCommerce\WcGateway\Helper\DccProductStatus;
28
  use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
29
  use WooCommerce\PayPalCommerce\WcGateway\Notice\ConnectAdminNotice;
34
  use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
35
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsListener;
36
  use WooCommerce\PayPalCommerce\WcGateway\Settings\SettingsRenderer;
 
37
 
38
  return array(
39
  'wcgateway.paypal-gateway' => static function ( $container ): PayPalGateway {
45
  $session_handler = $container->get( 'session.handler' );
46
  $refund_processor = $container->get( 'wcgateway.processor.refunds' );
47
  $state = $container->get( 'onboarding.state' );
48
+ $transaction_url_provider = $container->get( 'wcgateway.transaction-url-provider' );
49
 
50
  return new PayPalGateway(
51
  $settings_renderer,
55
  $settings,
56
  $session_handler,
57
  $refund_processor,
58
+ $state,
59
+ $transaction_url_provider
60
  );
61
  },
62
  'wcgateway.credit-card-gateway' => static function ( $container ): CreditCardGateway {
69
  $session_handler = $container->get( 'session.handler' );
70
  $refund_processor = $container->get( 'wcgateway.processor.refunds' );
71
  $state = $container->get( 'onboarding.state' );
72
+ $transaction_url_provider = $container->get( 'wcgateway.transaction-url-provider' );
73
+ $payment_token_repository = $container->get( 'subscription.repository.payment-token' );
74
+ $purchase_unit_factory = $container->get( 'api.factory.purchase-unit' );
75
+ $payer_factory = $container->get( 'api.factory.payer' );
76
+ $order_endpoint = $container->get( 'api.endpoint.order' );
77
  return new CreditCardGateway(
78
  $settings_renderer,
79
  $order_processor,
83
  $module_url,
84
  $session_handler,
85
  $refund_processor,
86
+ $state,
87
+ $transaction_url_provider,
88
+ $payment_token_repository,
89
+ $purchase_unit_factory,
90
+ $payer_factory,
91
+ $order_endpoint
92
  );
93
  },
94
  'wcgateway.disabler' => static function ( $container ): DisableGateways {
138
  'wcgateway.order-processor' => static function ( $container ): OrderProcessor {
139
 
140
  $session_handler = $container->get( 'session.handler' );
 
141
  $order_endpoint = $container->get( 'api.endpoint.order' );
 
142
  $order_factory = $container->get( 'api.factory.order' );
143
  $threed_secure = $container->get( 'button.helper.three-d-secure' );
144
  $authorized_payments_processor = $container->get( 'wcgateway.processor.authorized-payments' );
145
+ $settings = $container->get( 'wcgateway.settings' );
146
+ $environment = $container->get( 'onboarding.environment' );
147
+ $logger = $container->get( 'woocommerce.logger.woocommerce' );
148
+
149
  return new OrderProcessor(
150
  $session_handler,
 
151
  $order_endpoint,
 
152
  $order_factory,
153
  $threed_secure,
154
  $authorized_payments_processor,
155
+ $settings,
156
+ $logger,
157
+ $environment->current_environment_is( Environment::SANDBOX )
158
  );
159
  },
160
  'wcgateway.processor.refunds' => static function ( $container ): RefundProcessor {
182
  'wcgateway.settings.fields' => static function ( $container ): array {
183
 
184
  $state = $container->get( 'onboarding.state' );
 
 
 
 
 
 
185
  $settings = $container->get( 'wcgateway.settings' );
186
+ $messages_disclaimers = $container->get( 'button.helper.messages-disclaimers' );
187
 
188
  $fields = array(
189
  'sandbox_on' => array(
621
  'mybank' => _x( 'MyBank', 'Name of payment method', 'woocommerce-paypal-payments' ),
622
  'p24' => _x( 'Przelewy24', 'Name of payment method', 'woocommerce-paypal-payments' ),
623
  'sofort' => _x( 'Sofort', 'Name of payment method', 'woocommerce-paypal-payments' ),
624
+ 'venmo' => _x( 'Venmo', 'Name of payment method', 'woocommerce-paypal-payments' ),
625
  ),
626
  'screens' => array(
627
  State::STATE_PROGRESSIVE,
634
  'title' => __( 'Vaulting', 'woocommerce-paypal-payments' ),
635
  'type' => 'checkbox',
636
  'desc_tip' => true,
637
+ 'label' => sprintf(
638
+ __('To use vaulting features, you must %1$senable vaulting on your account%2$s.', 'woocommerce-paypal-payments'),
639
+ '<a
640
+ href="https://docs.woocommerce.com/document/woocommerce-paypal-payments/#enable-vaulting-on-your-live-account"
641
+ target="_blank"
642
+ >',
643
+ '</a>'
644
+ ),
645
+ 'description' => __( 'Allow registered buyers to save PayPal and Credit Card accounts. Allow Subscription renewals.', 'woocommerce-paypal-payments' ),
646
+ 'default' => false,
647
  'screens' => array(
648
  State::STATE_ONBOARDED,
649
  ),
650
  'requirements' => array(),
651
+ 'gateway' => 'all',
652
  ),
 
653
  'logging_enabled' => array(
654
  'title' => __( 'Logging', 'woocommerce-paypal-payments' ),
655
  'type' => 'checkbox',
668
  'title' => __( 'Invoice prefix', 'woocommerce-paypal-payments' ),
669
  'type' => 'text',
670
  'desc_tip' => true,
671
+ 'description' => __( 'If you use your PayPal account with more than one installation, please use a distinct prefix to separate those installations. Please do not use numbers in your prefix.', 'woocommerce-paypal-payments' ),
672
+ 'default' => ( static function (): string {
673
+ $site_url = get_site_url( get_current_blog_id() );
674
+ $hash = md5( $site_url );
675
+ $letters = preg_replace( '~\d~', '', $hash );
676
+ return substr( $letters, 0, 6 ) . '-';
677
+ } )(),
678
  'screens' => array(
679
  State::STATE_PROGRESSIVE,
680
  State::STATE_ONBOARDED,
825
  ),
826
  'requirements' => array( 'messages' ),
827
  'gateway' => 'paypal',
828
+ 'description' => str_replace( '<a>', '<a href="' . $messages_disclaimers->link_for_country() . '" target="_blank">', __( 'Displays Pay Later messaging for available offers. Restrictions apply. <a>Click here to learn more.</a>', 'woocommerce-paypal-payments' ) ),
829
  'class' => array( 'ppcp-subheading' ),
830
  ),
831
  'message_enabled' => array(
1128
  ),
1129
  'requirements' => array( 'messages' ),
1130
  'gateway' => 'paypal',
1131
+ 'description' => str_replace( '<a>', '<a href="' . $messages_disclaimers->link_for_country() . '" target="_blank">', __( 'Displays Pay Later messaging for available offers. Restrictions apply. <a>Click here to learn more.</a>', 'woocommerce-paypal-payments' ) ),
1132
  'class' => array( 'ppcp-subheading' ),
1133
  ),
1134
  'message_product_enabled' => array(
1431
  ),
1432
  'requirements' => array( 'messages' ),
1433
  'gateway' => 'paypal',
1434
+ 'description' => str_replace( '<a>', '<a href="' . $messages_disclaimers->link_for_country() . '" target="_blank">', __( 'Displays Pay Later messaging for available offers. Restrictions apply. <a>Click here to learn more.</a>', 'woocommerce-paypal-payments' ) ),
1435
  'class' => array( 'ppcp-subheading' ),
1436
  ),
1437
  'message_cart_enabled' => array(
1806
  unset( $fields['disable_funding']['options']['card'] );
1807
  }
1808
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1809
  $dcc_applies = $container->get( 'api.helpers.dccapplies' );
1810
  /**
1811
  * Depending on your store location, some credit cards can't be used.
1835
  },
1836
  'wcgateway.url' => static function ( $container ): string {
1837
  return plugins_url(
1838
+ $container->get( 'wcgateway.relative-path' ),
1839
  dirname( __FILE__, 3 ) . '/woocommerce-paypal-payments.php'
1840
  );
1841
  },
1842
+ 'wcgateway.relative-path' => static function( $container ): string {
1843
+ return 'modules/ppcp-wc-gateway/';
1844
+ },
1845
+ 'wcgateway.absolute-path' => static function( $container ): string {
1846
+ return plugin_dir_path(
1847
+ dirname( __FILE__, 3 ) . '/woocommerce-paypal-payments.php'
1848
+ ) .
1849
+ $container->get( 'wcgateway.relative-path' );
1850
+ },
1851
  'wcgateway.endpoint.return-url' => static function ( $container ) : ReturnUrlEndpoint {
1852
  $gateway = $container->get( 'wcgateway.paypal-gateway' );
1853
  $endpoint = $container->get( 'api.endpoint.order' );
1858
  $prefix
1859
  );
1860
  },
1861
+
1862
+ 'wcgateway.transaction-url-sandbox' => static function ( $container ): string {
1863
+ return 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_view-a-trans&id=%s';
1864
+ },
1865
+
1866
+ 'wcgateway.transaction-url-live' => static function ( $container ): string {
1867
+ return 'https://www.paypal.com/cgi-bin/webscr?cmd=_view-a-trans&id=%s';
1868
+ },
1869
+
1870
+ 'wcgateway.transaction-url-provider' => static function ( $container ): TransactionUrlProvider {
1871
+ $sandbox_url_base = $container->get( 'wcgateway.transaction-url-sandbox' );
1872
+ $live_url_base = $container->get( 'wcgateway.transaction-url-live' );
1873
+
1874
+ return new TransactionUrlProvider( $sandbox_url_base, $live_url_base );
1875
+ },
1876
+
1877
  'wcgateway.helper.dcc-product-status' => static function ( $container ) : DccProductStatus {
1878
 
1879
  $settings = $container->get( 'wcgateway.settings' );
1880
  $partner_endpoint = $container->get( 'api.endpoint.partners' );
1881
  return new DccProductStatus( $settings, $partner_endpoint );
1882
  },
1883
+
1884
+ 'button.helper.messages-disclaimers' => static function ( $container ): MessagesDisclaimers {
1885
+ return new MessagesDisclaimers();
1886
+ },
1887
  );
modules/ppcp-wc-gateway/src/Assets/class-settingspageassets.php ADDED
@@ -0,0 +1,99 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Register and configure assets provided by this module.
4
+ *
5
+ * @package WooCommerce\PayPalCommerce\WcGateway\Assets
6
+ */
7
+
8
+ declare(strict_types=1);
9
+
10
+ namespace WooCommerce\PayPalCommerce\WcGateway\Assets;
11
+
12
+ /**
13
+ * Class SettingsPageAssets
14
+ */
15
+ class SettingsPageAssets {
16
+
17
+ /**
18
+ * The URL of this module.
19
+ *
20
+ * @var string
21
+ */
22
+ private $module_url;
23
+ /**
24
+ * The filesystem path to the module dir.
25
+ *
26
+ * @var string
27
+ */
28
+ private $module_path;
29
+
30
+ /**
31
+ * Assets constructor.
32
+ *
33
+ * @param string $module_url The url of this module.
34
+ * @param string $module_path The filesystem path to this module.
35
+ */
36
+ public function __construct( string $module_url, string $module_path ) {
37
+ $this->module_url = $module_url;
38
+ $this->module_path = $module_path;
39
+ }
40
+
41
+ /**
42
+ * Register assets provided by this module.
43
+ */
44
+ public function register_assets() {
45
+ add_action(
46
+ 'admin_enqueue_scripts',
47
+ function() {
48
+ if ( ! is_admin() || is_ajax() ) {
49
+ return;
50
+ }
51
+
52
+ if ( ! $this->is_paypal_payment_method_page() ) {
53
+ return;
54
+ }
55
+
56
+ $this->register_admin_assets();
57
+ }
58
+ );
59
+
60
+ }
61
+
62
+ /**
63
+ * Check whether the current page is PayPal payment method settings.
64
+ *
65
+ * @return bool
66
+ */
67
+ private function is_paypal_payment_method_page(): bool {
68
+
69
+ if ( ! function_exists( 'get_current_screen' ) ) {
70
+ return false;
71
+ }
72
+
73
+ $screen = get_current_screen();
74
+
75
+ $tab = filter_input( INPUT_GET, 'tab', FILTER_SANITIZE_STRING );
76
+ $section = filter_input( INPUT_GET, 'section', FILTER_SANITIZE_STRING );
77
+
78
+ if ( ! 'woocommerce_page_wc-settings' === $screen->id ) {
79
+ return false;
80
+ }
81
+
82
+ return 'checkout' === $tab && 'ppcp-gateway' === $section;
83
+ }
84
+
85
+ /**
86
+ * Register assets for admin pages.
87
+ */
88
+ private function register_admin_assets() {
89
+ $gateway_settings_script_path = trailingslashit( $this->module_path ) . 'assets/js/gateway-settings.js';
90
+
91
+ wp_enqueue_script(
92
+ 'ppcp-gateway-settings',
93
+ trailingslashit( $this->module_url ) . 'assets/js/gateway-settings.js',
94
+ array(),
95
+ file_exists( $gateway_settings_script_path ) ? (string) filemtime( $gateway_settings_script_path ) : null,
96
+ true
97
+ );
98
+ }
99
+ }
modules/ppcp-wc-gateway/src/Checkout/class-disablegateways.php CHANGED
@@ -79,7 +79,10 @@ class DisableGateways {
79
  }
80
 
81
  if ( $this->is_credit_card() ) {
82
- return array( CreditCardGateway::ID => $methods[ CreditCardGateway::ID ] );
 
 
 
83
  }
84
  return array( PayPalGateway::ID => $methods[ PayPalGateway::ID ] );
85
  }
79
  }
80
 
81
  if ( $this->is_credit_card() ) {
82
+ return array(
83
+ CreditCardGateway::ID => $methods[ CreditCardGateway::ID ],
84
+ PayPalGateway::ID => $methods[ PayPalGateway::ID ],
85
+ );
86
  }
87
  return array( PayPalGateway::ID => $methods[ PayPalGateway::ID ] );
88
  }
modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php CHANGED
@@ -9,8 +9,12 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
11
 
 
 
 
12
  use WooCommerce\PayPalCommerce\Onboarding\State;
13
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
 
14
  use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
15
  use WooCommerce\PayPalCommerce\WcGateway\Processor\AuthorizedPaymentsProcessor;
16
  use WooCommerce\PayPalCommerce\WcGateway\Processor\OrderProcessor;
@@ -27,6 +31,13 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
27
 
28
  const ID = 'ppcp-credit-card-gateway';
29
 
 
 
 
 
 
 
 
30
  /**
31
  * The URL to the module.
32
  *
@@ -41,6 +52,34 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
41
  */
42
  private $refund_processor;
43
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  /**
45
  * CreditCardGateway constructor.
46
  *
@@ -53,6 +92,11 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
53
  * @param SessionHandler $session_handler The Session Handler.
54
  * @param RefundProcessor $refund_processor The refund processor.
55
  * @param State $state The state.
 
 
 
 
 
56
  */
57
  public function __construct(
58
  SettingsRenderer $settings_renderer,
@@ -63,7 +107,12 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
63
  string $module_url,
64
  SessionHandler $session_handler,
65
  RefundProcessor $refund_processor,
66
- State $state
 
 
 
 
 
67
  ) {
68
 
69
  $this->id = self::ID;
@@ -81,8 +130,8 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
81
  if (
82
  defined( 'PPCP_FLAG_SUBSCRIPTION' )
83
  && PPCP_FLAG_SUBSCRIPTION
84
- && $this->config->has( 'vault_enabled' )
85
- && $this->config->get( 'vault_enabled' )
86
  ) {
87
  $this->supports = array(
88
  'refunds',
@@ -97,7 +146,6 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
97
  'subscription_payment_method_change_customer',
98
  'subscription_payment_method_change_admin',
99
  'multiple_subscriptions',
100
- 'credit_card_form_cvc_on_saved_method',
101
  );
102
  }
103
 
@@ -125,7 +173,12 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
125
  )
126
  );
127
 
128
- $this->module_url = $module_url;
 
 
 
 
 
129
  }
130
 
131
  /**
@@ -250,4 +303,17 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC {
250
  }
251
  return $this->refund_processor->process( $order, (float) $amount, (string) $reason );
252
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
253
  }
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
11
 
12
+ use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
13
+ use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
14
+ use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
15
  use WooCommerce\PayPalCommerce\Onboarding\State;
16
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
17
+ use WooCommerce\PayPalCommerce\Subscription\Repository\PaymentTokenRepository;
18
  use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
19
  use WooCommerce\PayPalCommerce\WcGateway\Processor\AuthorizedPaymentsProcessor;
20
  use WooCommerce\PayPalCommerce\WcGateway\Processor\OrderProcessor;
31
 
32
  const ID = 'ppcp-credit-card-gateway';
33
 
34
+ /**
35
+ * Service to get transaction url for an order.
36
+ *
37
+ * @var TransactionUrlProvider
38
+ */
39
+ protected $transaction_url_provider;
40
+
41
  /**
42
  * The URL to the module.
43
  *
52
  */
53
  private $refund_processor;
54
 
55
+ /**
56
+ * The payment token repository.
57
+ *
58
+ * @var PaymentTokenRepository
59
+ */
60
+ private $payment_token_repository;
61
+
62
+ /**
63
+ * The purchase unit factory.
64
+ *
65
+ * @var PurchaseUnitFactory
66
+ */
67
+ private $purchase_unit_factory;
68
+
69
+ /**
70
+ * The payer factory.
71
+ *
72
+ * @var PayerFactory
73
+ */
74
+ private $payer_factory;
75
+
76
+ /**
77
+ * The order endpoint.
78
+ *
79
+ * @var OrderEndpoint
80
+ */
81
+ private $order_endpoint;
82
+
83
  /**
84
  * CreditCardGateway constructor.
85
  *
92
  * @param SessionHandler $session_handler The Session Handler.
93
  * @param RefundProcessor $refund_processor The refund processor.
94
  * @param State $state The state.
95
+ * @param TransactionUrlProvider $transaction_url_provider Service able to provide view transaction url base.
96
+ * @param PaymentTokenRepository $payment_token_repository The payment token repository.
97
+ * @param PurchaseUnitFactory $purchase_unit_factory The purchase unit factory.
98
+ * @param PayerFactory $payer_factory The payer factory.
99
+ * @param OrderEndpoint $order_endpoint The order endpoint.
100
  */
101
  public function __construct(
102
  SettingsRenderer $settings_renderer,
107
  string $module_url,
108
  SessionHandler $session_handler,
109
  RefundProcessor $refund_processor,
110
+ State $state,
111
+ TransactionUrlProvider $transaction_url_provider,
112
+ PaymentTokenRepository $payment_token_repository,
113
+ PurchaseUnitFactory $purchase_unit_factory,
114
+ PayerFactory $payer_factory,
115
+ OrderEndpoint $order_endpoint
116
  ) {
117
 
118
  $this->id = self::ID;
130
  if (
131
  defined( 'PPCP_FLAG_SUBSCRIPTION' )
132
  && PPCP_FLAG_SUBSCRIPTION
133
+ && $this->gateways_enabled()
134
+ && $this->vault_setting_enabled()
135
  ) {
136
  $this->supports = array(
137
  'refunds',
146
  'subscription_payment_method_change_customer',
147
  'subscription_payment_method_change_admin',
148
  'multiple_subscriptions',
 
149
  );
150
  }
151
 
173
  )
174
  );
175
 
176
+ $this->module_url = $module_url;
177
+ $this->payment_token_repository = $payment_token_repository;
178
+ $this->purchase_unit_factory = $purchase_unit_factory;
179
+ $this->payer_factory = $payer_factory;
180
+ $this->order_endpoint = $order_endpoint;
181
+ $this->transaction_url_provider = $transaction_url_provider;
182
  }
183
 
184
  /**
303
  }
304
  return $this->refund_processor->process( $order, (float) $amount, (string) $reason );
305
  }
306
+
307
+ /**
308
+ * Set the class property then call parent function.
309
+ *
310
+ * @param \WC_Order $order WC Order to get transaction url for.
311
+ *
312
+ * @inheritDoc
313
+ */
314
+ public function get_transaction_url( $order ): string {
315
+ $this->view_transaction_url = $this->transaction_url_provider->get_transaction_url_base( $order );
316
+
317
+ return parent::get_transaction_url( $order );
318
+ }
319
  }
modules/ppcp-wc-gateway/src/Gateway/class-paypalgateway.php CHANGED
@@ -9,7 +9,6 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
11
 
12
- use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
13
  use WooCommerce\PayPalCommerce\Onboarding\State;
14
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
15
  use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
@@ -27,10 +26,11 @@ class PayPalGateway extends \WC_Payment_Gateway {
27
 
28
  use ProcessPaymentTrait;
29
 
30
- const ID = 'ppcp-gateway';
31
- const CAPTURED_META_KEY = '_ppcp_paypal_captured';
32
- const INTENT_META_KEY = '_ppcp_paypal_intent';
33
- const ORDER_ID_META_KEY = '_ppcp_paypal_order_id';
 
34
 
35
  /**
36
  * The Settings Renderer.
@@ -74,6 +74,13 @@ class PayPalGateway extends \WC_Payment_Gateway {
74
  */
75
  protected $session_handler;
76
 
 
 
 
 
 
 
 
77
  /**
78
  * The Refund Processor.
79
  *
@@ -92,6 +99,7 @@ class PayPalGateway extends \WC_Payment_Gateway {
92
  * @param SessionHandler $session_handler The Session Handler.
93
  * @param RefundProcessor $refund_processor The Refund Processor.
94
  * @param State $state The state.
 
95
  */
96
  public function __construct(
97
  SettingsRenderer $settings_renderer,
@@ -101,17 +109,19 @@ class PayPalGateway extends \WC_Payment_Gateway {
101
  ContainerInterface $config,
102
  SessionHandler $session_handler,
103
  RefundProcessor $refund_processor,
104
- State $state
 
105
  ) {
106
 
107
- $this->id = self::ID;
108
- $this->order_processor = $order_processor;
109
- $this->authorized_payments = $authorized_payments_processor;
110
- $this->notice = $notice;
111
- $this->settings_renderer = $settings_renderer;
112
- $this->config = $config;
113
- $this->session_handler = $session_handler;
114
- $this->refund_processor = $refund_processor;
 
115
 
116
  if ( $state->current_state() === State::STATE_ONBOARDED ) {
117
  $this->supports = array( 'refunds' );
@@ -119,8 +129,8 @@ class PayPalGateway extends \WC_Payment_Gateway {
119
  if (
120
  defined( 'PPCP_FLAG_SUBSCRIPTION' )
121
  && PPCP_FLAG_SUBSCRIPTION
122
- && $this->config->has( 'vault_enabled' )
123
- && $this->config->get( 'vault_enabled' )
124
  ) {
125
  $this->supports = array(
126
  'refunds',
@@ -340,4 +350,17 @@ class PayPalGateway extends \WC_Payment_Gateway {
340
  }
341
  return $this->refund_processor->process( $order, (float) $amount, (string) $reason );
342
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  }
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
11
 
 
12
  use WooCommerce\PayPalCommerce\Onboarding\State;
13
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
14
  use WooCommerce\PayPalCommerce\WcGateway\Notice\AuthorizeOrderActionNotice;
26
 
27
  use ProcessPaymentTrait;
28
 
29
+ const ID = 'ppcp-gateway';
30
+ const CAPTURED_META_KEY = '_ppcp_paypal_captured';
31
+ const INTENT_META_KEY = '_ppcp_paypal_intent';
32
+ const ORDER_ID_META_KEY = '_ppcp_paypal_order_id';
33
+ const ORDER_PAYMENT_MODE_META_KEY = '_ppcp_paypal_payment_mode';
34
 
35
  /**
36
  * The Settings Renderer.
74
  */
75
  protected $session_handler;
76
 
77
+ /**
78
+ * Service able to provide transaction url for an order.
79
+ *
80
+ * @var TransactionUrlProvider
81
+ */
82
+ protected $transaction_url_provider;
83
+
84
  /**
85
  * The Refund Processor.
86
  *
99
  * @param SessionHandler $session_handler The Session Handler.
100
  * @param RefundProcessor $refund_processor The Refund Processor.
101
  * @param State $state The state.
102
+ * @param TransactionUrlProvider $transaction_url_provider Service providing transaction view URL based on order.
103
  */
104
  public function __construct(
105
  SettingsRenderer $settings_renderer,
109
  ContainerInterface $config,
110
  SessionHandler $session_handler,
111
  RefundProcessor $refund_processor,
112
+ State $state,
113
+ TransactionUrlProvider $transaction_url_provider
114
  ) {
115
 
116
+ $this->id = self::ID;
117
+ $this->order_processor = $order_processor;
118
+ $this->authorized_payments = $authorized_payments_processor;
119
+ $this->notice = $notice;
120
+ $this->settings_renderer = $settings_renderer;
121
+ $this->config = $config;
122
+ $this->session_handler = $session_handler;
123
+ $this->refund_processor = $refund_processor;
124
+ $this->transaction_url_provider = $transaction_url_provider;
125
 
126
  if ( $state->current_state() === State::STATE_ONBOARDED ) {
127
  $this->supports = array( 'refunds' );
129
  if (
130
  defined( 'PPCP_FLAG_SUBSCRIPTION' )
131
  && PPCP_FLAG_SUBSCRIPTION
132
+ && $this->gateways_enabled()
133
+ && $this->vault_setting_enabled()
134
  ) {
135
  $this->supports = array(
136
  'refunds',
350
  }
351
  return $this->refund_processor->process( $order, (float) $amount, (string) $reason );
352
  }
353
+
354
+ /**
355
+ * Return transaction url for this gateway and given order.
356
+ *
357
+ * @param \WC_Order $order WC order to get transaction url by.
358
+ *
359
+ * @return string
360
+ */
361
+ public function get_transaction_url( $order ): string {
362
+ $this->view_transaction_url = $this->transaction_url_provider->get_transaction_url_base( $order );
363
+
364
+ return parent::get_transaction_url( $order );
365
+ }
366
  }
modules/ppcp-wc-gateway/src/Gateway/class-processpaymenttrait.php CHANGED
@@ -9,6 +9,7 @@ declare( strict_types=1 );
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
11
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
13
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
14
 
@@ -21,13 +22,73 @@ trait ProcessPaymentTrait {
21
  *
22
  * @param int $order_id The WooCommerce order id.
23
  *
24
- * @return array|null
25
  */
26
  public function process_payment( $order_id ) {
27
- global $woocommerce;
 
 
 
 
 
28
  $wc_order = wc_get_order( $order_id );
29
  if ( ! is_a( $wc_order, \WC_Order::class ) ) {
30
- return null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  }
32
 
33
  /**
@@ -44,7 +105,7 @@ trait ProcessPaymentTrait {
44
  //phpcs:enable WordPress.Security.NonceVerification.Recommended
45
 
46
  try {
47
- if ( $this->order_processor->process( $wc_order, $woocommerce ) ) {
48
  $this->session_handler->destroy_session_data();
49
  return array(
50
  'result' => 'success',
@@ -63,7 +124,7 @@ trait ProcessPaymentTrait {
63
  __( 'Please use a different payment method.', 'woocommerce-paypal-payments' ),
64
  'error'
65
  );
66
- return null;
67
  }
68
  return array(
69
  'result' => 'success',
@@ -75,7 +136,7 @@ trait ProcessPaymentTrait {
75
  } catch ( RuntimeException $error ) {
76
  $this->session_handler->destroy_session_data();
77
  wc_add_notice( $error->getMessage(), 'error' );
78
- return null;
79
  }
80
 
81
  wc_add_notice(
@@ -83,6 +144,34 @@ trait ProcessPaymentTrait {
83
  'error'
84
  );
85
 
86
- return null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
88
  }
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
11
 
12
+ use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
13
  use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
14
  use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
15
 
22
  *
23
  * @param int $order_id The WooCommerce order id.
24
  *
25
+ * @return array
26
  */
27
  public function process_payment( $order_id ) {
28
+
29
+ $failure_data = array(
30
+ 'result' => 'failure',
31
+ 'redirect' => wc_get_checkout_url(),
32
+ );
33
+
34
  $wc_order = wc_get_order( $order_id );
35
  if ( ! is_a( $wc_order, \WC_Order::class ) ) {
36
+ wc_add_notice(
37
+ __( 'Couldn\'t find order to process', 'woocommerce-paypal-payments' ),
38
+ 'error'
39
+ );
40
+
41
+ return $failure_data;
42
+ }
43
+
44
+ /**
45
+ * If customer has chosed a saved credit card payment.
46
+ */
47
+ $saved_credit_card = filter_input( INPUT_POST, 'saved_credit_card', FILTER_SANITIZE_STRING );
48
+ if ( $saved_credit_card ) {
49
+
50
+ $user_id = (int) $wc_order->get_customer_id();
51
+ $customer = new \WC_Customer( $user_id );
52
+ $tokens = $this->payment_token_repository->all_for_user_id( (int) $customer->get_id() );
53
+
54
+ $selected_token = null;
55
+ foreach ( $tokens as $token ) {
56
+ if ( $token->id() === $saved_credit_card ) {
57
+ $selected_token = $token;
58
+ break;
59
+ }
60
+ }
61
+
62
+ if ( ! $selected_token ) {
63
+ return null;
64
+ }
65
+
66
+ $purchase_unit = $this->purchase_unit_factory->from_wc_order( $wc_order );
67
+ $payer = $this->payer_factory->from_customer( $customer );
68
+ try {
69
+ $order = $this->order_endpoint->create(
70
+ array( $purchase_unit ),
71
+ $payer,
72
+ $selected_token
73
+ );
74
+
75
+ if ( $order->status()->is( OrderStatus::COMPLETED ) && $order->intent() === 'CAPTURE' ) {
76
+ $wc_order->update_status(
77
+ 'processing',
78
+ __( 'Payment received.', 'woocommerce-paypal-payments' )
79
+ );
80
+
81
+ $this->session_handler->destroy_session_data();
82
+ return array(
83
+ 'result' => 'success',
84
+ 'redirect' => $this->get_return_url( $wc_order ),
85
+ );
86
+ }
87
+ } catch ( RuntimeException $error ) {
88
+ $this->session_handler->destroy_session_data();
89
+ wc_add_notice( $error->getMessage(), 'error' );
90
+ return null;
91
+ }
92
  }
93
 
94
  /**
105
  //phpcs:enable WordPress.Security.NonceVerification.Recommended
106
 
107
  try {
108
+ if ( $this->order_processor->process( $wc_order ) ) {
109
  $this->session_handler->destroy_session_data();
110
  return array(
111
  'result' => 'success',
124
  __( 'Please use a different payment method.', 'woocommerce-paypal-payments' ),
125
  'error'
126
  );
127
+ return $failure_data;
128
  }
129
  return array(
130
  'result' => 'success',
136
  } catch ( RuntimeException $error ) {
137
  $this->session_handler->destroy_session_data();
138
  wc_add_notice( $error->getMessage(), 'error' );
139
+ return $failure_data;
140
  }
141
 
142
  wc_add_notice(
144
  'error'
145
  );
146
 
147
+ return $failure_data;
148
+ }
149
+
150
+ /**
151
+ * Checks if PayPal or Credit Card gateways are enabled.
152
+ *
153
+ * @return bool Whether any of the gateways is enabled.
154
+ */
155
+ protected function gateways_enabled(): bool {
156
+ if ( $this->config->has( 'enabled' ) && $this->config->get( 'enabled' ) ) {
157
+ return true;
158
+ }
159
+ if ( $this->config->has( 'dcc_enabled' ) && $this->config->get( 'dcc_enabled' ) ) {
160
+ return true;
161
+ }
162
+ return false;
163
+ }
164
+
165
+ /**
166
+ * Checks if vault setting is enabled.
167
+ *
168
+ * @return bool Whether vault settings are enabled or not.
169
+ * @throws \WooCommerce\PayPalCommerce\WcGateway\Exception\NotFoundException When a setting hasn't been found.
170
+ */
171
+ protected function vault_setting_enabled(): bool {
172
+ if ( $this->config->has( 'vault_enabled' ) && $this->config->get( 'vault_enabled' ) ) {
173
+ return true;
174
+ }
175
+ return false;
176
  }
177
  }
modules/ppcp-wc-gateway/src/Gateway/class-transactionurlprovider.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Service able to provide transaction url base (URL with the placeholder instead of an actual transaction id)
4
+ * based on the given WC Order.
5
+ *
6
+ * @package WooCommerce\PayPalCommerce\WcGateway\Gateway
7
+ */
8
+
9
+ declare(strict_types=1);
10
+
11
+ namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
12
+
13
+ /**
14
+ * Class TransactionUrlProvider
15
+ */
16
+ class TransactionUrlProvider {
17
+
18
+ /**
19
+ * Transaction URL base used for sandbox payments.
20
+ *
21
+ * @var string
22
+ */
23
+ protected $transaction_url_base_sandbox;
24
+
25
+ /**
26
+ * Transaction URL base used for live payments.
27
+ *
28
+ * @var string
29
+ */
30
+ protected $transaction_url_base_live;
31
+
32
+ /**
33
+ * TransactionUrlProvider constructor.
34
+ *
35
+ * @param string $transaction_url_base_sandbox URL for sandbox orders.
36
+ * @param string $transaction_url_base_live URL for live orders.
37
+ */
38
+ public function __construct(
39
+ string $transaction_url_base_sandbox,
40
+ string $transaction_url_base_live
41
+ ) {
42
+
43
+ $this->transaction_url_base_sandbox = $transaction_url_base_sandbox;
44
+ $this->transaction_url_base_live = $transaction_url_base_live;
45
+ }
46
+
47
+ /**
48
+ * Return transaction url base
49
+ *
50
+ * @param \WC_Order $order WC order to get payment type from.
51
+ *
52
+ * @return string
53
+ */
54
+ public function get_transaction_url_base( \WC_Order $order ): string {
55
+ $order_payment_mode = $order->get_meta( PayPalGateway::ORDER_PAYMENT_MODE_META_KEY, true );
56
+
57
+ return 'sandbox' === $order_payment_mode ? $this->transaction_url_base_sandbox : $this->transaction_url_base_live;
58
+ }
59
+ }
modules/ppcp-wc-gateway/src/Gateway/class-wcgatewayinterface.php DELETED
@@ -1,18 +0,0 @@
1
- <?php
2
- /**
3
- * The WcGateway interface.
4
- *
5
- * @package WooCommerce\PayPalCommerce\WcGateway\Gateway
6
- */
7
-
8
- declare(strict_types=1);
9
-
10
- namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
11
-
12
- /**
13
- * Interface WcGatewayInterface
14
- */
15
- interface WcGatewayInterface {
16
-
17
-
18
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
modules/ppcp-wc-gateway/src/Processor/class-orderprocessor.php CHANGED
@@ -9,12 +9,11 @@ declare(strict_types=1);
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Processor;
11
 
 
12
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
13
- use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentsEndpoint;
14
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
15
  use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
16
  use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
17
- use WooCommerce\PayPalCommerce\ApiClient\Repository\CartRepository;
18
  use WooCommerce\PayPalCommerce\Button\Helper\ThreeDSecure;
19
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
20
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
@@ -26,18 +25,18 @@ use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
26
  class OrderProcessor {
27
 
28
  /**
29
- * The Session Handler.
30
  *
31
- * @var SessionHandler
32
  */
33
- private $session_handler;
34
 
35
  /**
36
- * The Cart Repository.
37
  *
38
- * @var CartRepository
39
  */
40
- private $cart_repository;
41
 
42
  /**
43
  * The Order Endpoint.
@@ -46,13 +45,6 @@ class OrderProcessor {
46
  */
47
  private $order_endpoint;
48
 
49
- /**
50
- * The Payments Endpoint.
51
- *
52
- * @var PaymentsEndpoint
53
- */
54
- private $payments_endpoint;
55
-
56
  /**
57
  * The Order Factory.
58
  *
@@ -88,57 +80,67 @@ class OrderProcessor {
88
  */
89
  private $last_error = '';
90
 
 
 
 
 
 
 
 
91
  /**
92
  * OrderProcessor constructor.
93
  *
94
  * @param SessionHandler $session_handler The Session Handler.
95
- * @param CartRepository $cart_repository The Cart Repository.
96
  * @param OrderEndpoint $order_endpoint The Order Endpoint.
97
- * @param PaymentsEndpoint $payments_endpoint The Payments Endpoint.
98
  * @param OrderFactory $order_factory The Order Factory.
99
  * @param ThreeDSecure $three_d_secure The ThreeDSecure Helper.
100
  * @param AuthorizedPaymentsProcessor $authorized_payments_processor The Authorized Payments Processor.
101
  * @param Settings $settings The Settings.
 
 
102
  */
103
  public function __construct(
104
  SessionHandler $session_handler,
105
- CartRepository $cart_repository,
106
  OrderEndpoint $order_endpoint,
107
- PaymentsEndpoint $payments_endpoint,
108
  OrderFactory $order_factory,
109
  ThreeDSecure $three_d_secure,
110
  AuthorizedPaymentsProcessor $authorized_payments_processor,
111
- Settings $settings
 
 
112
  ) {
113
 
114
  $this->session_handler = $session_handler;
115
- $this->cart_repository = $cart_repository;
116
  $this->order_endpoint = $order_endpoint;
117
- $this->payments_endpoint = $payments_endpoint;
118
  $this->order_factory = $order_factory;
119
  $this->threed_secure = $three_d_secure;
120
  $this->authorized_payments_processor = $authorized_payments_processor;
121
  $this->settings = $settings;
 
 
122
  }
123
 
124
  /**
125
  * Processes a given WooCommerce order and captured/authorizes the connected PayPal orders.
126
  *
127
- * @param \WC_Order $wc_order The WooCommerce order.
128
- * @param \WooCommerce $woocommerce The WooCommerce object.
129
  *
130
  * @return bool
131
  */
132
- public function process( \WC_Order $wc_order, \WooCommerce $woocommerce ): bool {
133
  $order = $this->session_handler->order();
134
  if ( ! $order ) {
135
  return false;
136
  }
137
  $wc_order->update_meta_data( PayPalGateway::ORDER_ID_META_KEY, $order->id() );
138
  $wc_order->update_meta_data( PayPalGateway::INTENT_META_KEY, $order->intent() );
 
 
 
 
139
 
140
  $error_message = null;
141
- if ( ! $order || ! $this->order_is_approved( $order ) ) {
142
  $error_message = __(
143
  'The payment has not been approved yet.',
144
  'woocommerce-paypal-payments'
@@ -163,6 +165,12 @@ class OrderProcessor {
163
  $wc_order->update_meta_data( PayPalGateway::CAPTURED_META_KEY, 'false' );
164
  }
165
 
 
 
 
 
 
 
166
  $wc_order->update_status(
167
  'on-hold',
168
  __( 'Awaiting payment.', 'woocommerce-paypal-payments' )
@@ -181,12 +189,61 @@ class OrderProcessor {
181
  $wc_order->update_meta_data( PayPalGateway::CAPTURED_META_KEY, 'true' );
182
  $wc_order->update_status( 'processing' );
183
  }
184
- $woocommerce->cart->empty_cart();
185
  $this->session_handler->destroy_session_data();
186
  $this->last_error = '';
187
  return true;
188
  }
189
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
190
  /**
191
  * Returns if an order should be captured immediately.
192
  *
9
 
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Processor;
11
 
12
+ use Psr\Log\LoggerInterface;
13
  use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
 
14
  use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
15
  use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
16
  use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
 
17
  use WooCommerce\PayPalCommerce\Button\Helper\ThreeDSecure;
18
  use WooCommerce\PayPalCommerce\Session\SessionHandler;
19
  use WooCommerce\PayPalCommerce\WcGateway\Gateway\PayPalGateway;
25
  class OrderProcessor {
26
 
27
  /**
28
+ * Whether current payment mode is sandbox.
29
  *
30
+ * @var bool
31
  */
32
+ protected $sandbox_mode;
33
 
34
  /**
35
+ * The Session Handler.
36
  *
37
+ * @var SessionHandler
38
  */
39
+ private $session_handler;
40
 
41
  /**
42
  * The Order Endpoint.
45
  */
46
  private $order_endpoint;
47
 
 
 
 
 
 
 
 
48
  /**
49
  * The Order Factory.
50
  *
80
  */
81
  private $last_error = '';
82
 
83
+ /**
84
+ * A logger.
85
+ *
86
+ * @var LoggerInterface
87
+ */
88
+ private $logger;
89
+
90
  /**
91
  * OrderProcessor constructor.
92
  *
93
  * @param SessionHandler $session_handler The Session Handler.
 
94
  * @param OrderEndpoint $order_endpoint The Order Endpoint.
 
95
  * @param OrderFactory $order_factory The Order Factory.
96
  * @param ThreeDSecure $three_d_secure The ThreeDSecure Helper.
97
  * @param AuthorizedPaymentsProcessor $authorized_payments_processor The Authorized Payments Processor.
98
  * @param Settings $settings The Settings.
99
+ * @param LoggerInterface $logger A logger service.
100
+ * @param bool $sandbox_mode Whether sandbox mode enabled.
101
  */
102
  public function __construct(
103
  SessionHandler $session_handler,
 
104
  OrderEndpoint $order_endpoint,
 
105
  OrderFactory $order_factory,
106
  ThreeDSecure $three_d_secure,
107
  AuthorizedPaymentsProcessor $authorized_payments_processor,
108
+ Settings $settings,
109
+ LoggerInterface $logger,
110
+ bool $sandbox_mode
111
  ) {
112
 
113
  $this->session_handler = $session_handler;
 
114
  $this->order_endpoint = $order_endpoint;
 
115
  $this->order_factory = $order_factory;
116
  $this->threed_secure = $three_d_secure;
117
  $this->authorized_payments_processor = $authorized_payments_processor;
118
  $this->settings = $settings;
119
+ $this->sandbox_mode = $sandbox_mode;
120
+ $this->logger = $logger;
121
  }
122
 
123
  /**
124
  * Processes a given WooCommerce order and captured/authorizes the connected PayPal orders.
125
  *
126
+ * @param \WC_Order $wc_order The WooCommerce order.
 
127
  *
128
  * @return bool
129
  */
130
+ public function process( \WC_Order $wc_order ): bool {
131
  $order = $this->session_handler->order();
132
  if ( ! $order ) {
133
  return false;
134
  }
135
  $wc_order->update_meta_data( PayPalGateway::ORDER_ID_META_KEY, $order->id() );
136
  $wc_order->update_meta_data( PayPalGateway::INTENT_META_KEY, $order->intent() );
137
+ $wc_order->update_meta_data(
138
+ PayPalGateway::ORDER_PAYMENT_MODE_META_KEY,
139
+ $this->sandbox_mode ? 'sandbox' : 'live'
140
+ );
141
 
142
  $error_message = null;
143
+ if ( ! $this->order_is_approved( $order ) ) {
144
  $error_message = __(
145
  'The payment has not been approved yet.',
146
  'woocommerce-paypal-payments'
165
  $wc_order->update_meta_data( PayPalGateway::CAPTURED_META_KEY, 'false' );
166
  }
167
 
168
+ $transaction_id = $this->get_paypal_order_transaction_id( $order );
169
+
170
+ if ( '' !== $transaction_id ) {
171
+ $this->set_order_transaction_id( $transaction_id, $wc_order );
172
+ }
173
+
174
  $wc_order->update_status(
175
  'on-hold',
176
  __( 'Awaiting payment.', 'woocommerce-paypal-payments' )
189
  $wc_order->update_meta_data( PayPalGateway::CAPTURED_META_KEY, 'true' );
190
  $wc_order->update_status( 'processing' );
191
  }
192
+ WC()->cart->empty_cart();
193
  $this->session_handler->destroy_session_data();
194
  $this->last_error = '';
195
  return true;
196
  }
197
 
198
+ /**
199
+ * Set transaction id to WC order meta data.
200
+ *
201
+ * @param string $transaction_id Transaction id to set.
202
+ * @param \WC_Order $wc_order Order to set transaction ID to.
203
+ */
204
+ public function set_order_transaction_id( string $transaction_id, \WC_Order $wc_order ) {
205
+ try {
206
+ $wc_order->set_transaction_id( $transaction_id );
207
+ } catch ( \WC_Data_Exception $exception ) {
208
+ $this->logger->log(
209
+ 'warning',
210
+ sprintf(
211
+ 'Failed to set transaction ID. Exception caught when tried: %1$s',
212
+ $exception->getMessage()
213
+ )
214
+ );
215
+ }
216
+ }
217
+
218
+ /**
219
+ * Retrieve transaction id from PayPal order.
220
+ *
221
+ * @param Order $order Order to get transaction id from.
222
+ *
223
+ * @return string
224
+ */
225
+ private function get_paypal_order_transaction_id( Order $order ): string {
226
+ $purchase_units = $order->purchase_units();
227
+
228
+ if ( ! isset( $purchase_units[0] ) ) {
229
+ return '';
230
+ }
231
+
232
+ $payments = $purchase_units[0]->payments();
233
+
234
+ if ( null === $payments ) {
235
+ return '';
236
+ }
237
+
238
+ $captures = $payments->captures();
239
+
240
+ if ( isset( $captures[0] ) ) {
241
+ return $captures[0]->id();
242
+ }
243
+
244
+ return '';
245
+ }
246
+
247
  /**
248
  * Returns if an order should be captured immediately.
249
  *
modules/ppcp-wc-gateway/src/Settings/class-settingslistener.php CHANGED
@@ -129,6 +129,34 @@ class SettingsListener {
129
  exit;
130
  }
131
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  /**
133
  * Listens to the request.
134
  *
129
  exit;
130
  }
131
 
132
+ /**
133
+ * Prevent enabling both Pay Later messaging and PayPal vaulting
134
+ */
135
+ public function listen_for_vaulting_enabled() {
136
+ if ( ! $this->is_valid_site_request() ) {
137
+ return;
138
+ }
139
+
140
+ /**
141
+ * No need to verify nonce here.
142
+ *
143
+ * phpcs:disable WordPress.Security.NonceVerification.Missing
144
+ * phpcs:disable WordPress.Security.NonceVerification.Recommended
145
+ */
146
+ if ( ! isset( $_POST['ppcp']['vault_enabled'] ) ) {
147
+ return;
148
+ }
149
+
150
+ $this->settings->set( 'message_enabled', false );
151
+ $this->settings->set( 'message_product_enabled', false );
152
+ $this->settings->set( 'message_cart_enabled', false );
153
+ $this->settings->persist();
154
+
155
+ $redirect_url = admin_url( 'admin.php?page=wc-settings&tab=checkout&section=ppcp-gateway' );
156
+ wp_safe_redirect( $redirect_url, 302 );
157
+ exit;
158
+ }
159
+
160
  /**
161
  * Listens to the request.
162
  *
modules/ppcp-wc-gateway/src/Settings/class-settingsrenderer.php CHANGED
@@ -10,7 +10,6 @@ declare(strict_types=1);
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Settings;
11
 
12
  use WooCommerce\PayPalCommerce\AdminNotices\Entity\Message;
13
- use WooCommerce\PayPalCommerce\AdminNotices\Repository\Repository;
14
  use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
15
  use WooCommerce\PayPalCommerce\Button\Helper\MessagesApply;
16
  use WooCommerce\PayPalCommerce\Onboarding\State;
@@ -93,33 +92,106 @@ class SettingsRenderer {
93
  }
94
 
95
  /**
96
- * Returns the notice, when onboarding failed.
97
  *
98
  * @return array
99
  */
100
  public function messages() : array {
101
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  //phpcs:disable WordPress.Security.NonceVerification.Recommended
103
  //phpcs:disable WordPress.Security.NonceVerification.Missing
104
  if ( ! isset( $_GET['ppcp-onboarding-error'] ) || ! empty( $_POST ) ) {
105
- return array();
106
  }
107
  //phpcs:enable WordPress.Security.NonceVerification.Recommended
108
  //phpcs:enable WordPress.Security.NonceVerification.Missing
109
 
110
- $messages = array(
111
- new Message(
112
- __(
113
- 'We could not complete the onboarding process. Some features, such as card processing, will not be available. To fix this, please try again.',
114
- 'woocommerce-paypal-payments'
115
- ),
116
- 'error',
117
- false
118
  ),
 
 
119
  );
 
120
  return $messages;
121
  }
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  /**
124
  * Renders the multiselect field.
125
  *
@@ -295,7 +367,6 @@ class SettingsRenderer {
295
  $key = 'ppcp[' . $field . ']';
296
  $id = 'ppcp-' . $field;
297
  $config['id'] = $id;
298
- $th_td = 'ppcp-heading' !== $config['type'] ? 'td' : 'td';
299
  $colspan = 'ppcp-heading' !== $config['type'] ? 1 : 2;
300
  $classes = isset( $config['classes'] ) ? $config['classes'] : array();
301
  $classes[] = sprintf( 'ppcp-settings-field-%s', str_replace( 'ppcp-', '', $config['type'] ) );
@@ -319,7 +390,7 @@ class SettingsRenderer {
319
  ?>
320
  </th>
321
  <?php endif; ?>
322
- <<?php echo esc_attr( $th_td ); ?> colspan="<?php echo (int) $colspan; ?>">
323
  <?php
324
  'ppcp-text' === $config['type'] ?
325
  $this->render_text( $config )
@@ -329,7 +400,7 @@ class SettingsRenderer {
329
  <?php if ( $description ) : ?>
330
  <p class="<?php echo 'ppcp-heading' === $config['type'] ? '' : 'description'; ?>"><?php echo wp_kses_post( $description ); ?></p>
331
  <?php endif; ?>
332
- </<?php echo esc_attr( $th_td ); ?>>
333
  </tr>
334
  <?php
335
  endforeach;
@@ -465,7 +536,7 @@ class SettingsRenderer {
465
  <p>
466
  <?php
467
  esc_html_e(
468
- 'Unfortunatly, the card processing option is not yet available in your country.',
469
  'woocommerce-paypal-payments'
470
  );
471
  ?>
@@ -474,4 +545,18 @@ class SettingsRenderer {
474
  </tr>
475
  <?php
476
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
477
  }
10
  namespace WooCommerce\PayPalCommerce\WcGateway\Settings;
11
 
12
  use WooCommerce\PayPalCommerce\AdminNotices\Entity\Message;
 
13
  use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
14
  use WooCommerce\PayPalCommerce\Button\Helper\MessagesApply;
15
  use WooCommerce\PayPalCommerce\Onboarding\State;
92
  }
93
 
94
  /**
95
+ * Returns notices list.
96
  *
97
  * @return array
98
  */
99
  public function messages() : array {
100
 
101
+ $messages = array();
102
+
103
+ if ( $this->can_display_vaulting_admin_message() ) {
104
+
105
+ $vaulting_title = __( 'PayPal vaulting', 'woocommerce-paypal-payments' );
106
+ $pay_later_messages_title = __( 'Pay Later Messaging', 'woocommerce-paypal-payments' );
107
+
108
+ $enabled = $this->paypal_vaulting_is_enabled() ? $vaulting_title : $pay_later_messages_title;
109
+ $disabled = $this->pay_later_messaging_is_enabled() ? $vaulting_title : $pay_later_messages_title;
110
+
111
+ $pay_later_messages_or_vaulting_text = sprintf(
112
+ // translators: %1$s and %2$s is translated PayPal vaulting and Pay Later Messaging strings.
113
+ __(
114
+ 'You have %1$s enabled, that\'s why %2$s options are unavailable now. You cannot use both features at the same time.',
115
+ 'woocommerce-paypal-payments'
116
+ ),
117
+ $enabled,
118
+ $disabled
119
+ );
120
+ $messages[] = new Message( $pay_later_messages_or_vaulting_text, 'warning' );
121
+ }
122
+
123
  //phpcs:disable WordPress.Security.NonceVerification.Recommended
124
  //phpcs:disable WordPress.Security.NonceVerification.Missing
125
  if ( ! isset( $_GET['ppcp-onboarding-error'] ) || ! empty( $_POST ) ) {
126
+ return $messages;
127
  }
128
  //phpcs:enable WordPress.Security.NonceVerification.Recommended
129
  //phpcs:enable WordPress.Security.NonceVerification.Missing
130
 
131
+ $messages[] = new Message(
132
+ __(
133
+ 'We could not complete the onboarding process. Some features, such as card processing, will not be available. To fix this, please try again.',
134
+ 'woocommerce-paypal-payments'
 
 
 
 
135
  ),
136
+ 'error',
137
+ false
138
  );
139
+
140
  return $messages;
141
  }
142
 
143
+ /**
144
+ * Check whether vaulting is enabled.
145
+ *
146
+ * @return bool
147
+ */
148
+ private function paypal_vaulting_is_enabled(): bool {
149
+ return $this->settings->has( 'vault_enabled' ) && (bool) $this->settings->get( 'vault_enabled' );
150
+ }
151
+
152
+ /**
153
+ * Check whether Pay Later message is enabled either for checkout, cart or product page.
154
+ *
155
+ * @return bool
156
+ */
157
+ private function pay_later_messaging_is_enabled(): bool {
158
+ $pay_later_message_enabled_for_checkout = $this->settings->has( 'message_enabled' )
159
+ && (bool) $this->settings->get( 'message_enabled' );
160
+
161
+ $pay_later_message_enabled_for_cart = $this->settings->has( 'message_cart_enabled' )
162
+ && (bool) $this->settings->get( 'message_cart_enabled' );
163
+
164
+ $pay_later_message_enabled_for_product = $this->settings->has( 'message_product_enabled' )
165
+ && (bool) $this->settings->get( 'message_product_enabled' );
166
+
167
+ return $pay_later_message_enabled_for_checkout ||
168
+ $pay_later_message_enabled_for_cart ||
169
+ $pay_later_message_enabled_for_product;
170
+ }
171
+
172
+ /**
173
+ * Check if current screen is PayPal checkout settings screen.
174
+ *
175
+ * @return bool Whether is PayPal checkout screen or not.
176
+ */
177
+ private function is_paypal_checkout_screen(): bool {
178
+ $current_screen = get_current_screen();
179
+ //phpcs:disable WordPress.Security.NonceVerification.Recommended
180
+ //phpcs:disable WordPress.Security.NonceVerification.Missing
181
+ if ( isset( $current_screen->id ) && 'woocommerce_page_wc-settings' === $current_screen->id
182
+ && isset( $_GET['section'] ) && 'ppcp-gateway' === $_GET['section'] ) {
183
+
184
+ if ( isset( $_GET['ppcp-tab'] ) && 'ppcp-gateway' !== $_GET['ppcp-tab'] ) {
185
+ return false;
186
+ }
187
+
188
+ return true;
189
+ }
190
+ //phpcs:enable
191
+
192
+ return false;
193
+ }
194
+
195
  /**
196
  * Renders the multiselect field.
197
  *
367
  $key = 'ppcp[' . $field . ']';
368
  $id = 'ppcp-' . $field;
369
  $config['id'] = $id;
 
370
  $colspan = 'ppcp-heading' !== $config['type'] ? 1 : 2;
371
  $classes = isset( $config['classes'] ) ? $config['classes'] : array();
372
  $classes[] = sprintf( 'ppcp-settings-field-%s', str_replace( 'ppcp-', '', $config['type'] ) );
390
  ?>
391
  </th>
392
  <?php endif; ?>
393
+ <td colspan="<?php echo (int) $colspan; ?>">
394
  <?php
395
  'ppcp-text' === $config['type'] ?
396
  $this->render_text( $config )
400
  <?php if ( $description ) : ?>
401
  <p class="<?php echo 'ppcp-heading' === $config['type'] ? '' : 'description'; ?>"><?php echo wp_kses_post( $description ); ?></p>
402
  <?php endif; ?>
403
+ </td>
404
  </tr>
405
  <?php
406
  endforeach;
536
  <p>
537
  <?php
538
  esc_html_e(
539
+ 'Unfortunately, the card processing option is not yet available in your country.',
540
  'woocommerce-paypal-payments'
541
  );
542
  ?>
545
  </tr>
546
  <?php
547
  }
548
+
549
+ /**
550
+ * Checks if vaulting admin message can be displayed.
551
+ *
552
+ * @return bool Whether the message can be displayed or not.
553
+ */
554
+ private function can_display_vaulting_admin_message(): bool {
555
+ if ( State::STATE_ONBOARDED !== $this->state->current_state() ) {
556
+ return false;
557
+ }
558
+
559
+ return $this->is_paypal_checkout_screen() && $this->paypal_vaulting_is_enabled()
560
+ || $this->is_paypal_checkout_screen() && $this->pay_later_messaging_is_enabled();
561
+ }
562
  }
modules/ppcp-wc-gateway/src/class-wcgatewaymodule.php CHANGED
@@ -17,6 +17,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Repository\PayPalRequestIdRepository;
17
  use WooCommerce\PayPalCommerce\WcGateway\Admin\OrderTablePaymentStatusColumn;
18
  use WooCommerce\PayPalCommerce\WcGateway\Admin\PaymentStatusOrderDetail;
19
  use WooCommerce\PayPalCommerce\WcGateway\Admin\RenderAuthorizeAction;
 
20
  use WooCommerce\PayPalCommerce\WcGateway\Checkout\CheckoutPayPalAddressPreset;
21
  use WooCommerce\PayPalCommerce\WcGateway\Checkout\DisableGateways;
22
  use WooCommerce\PayPalCommerce\WcGateway\Endpoint\ReturnUrlEndpoint;
@@ -72,6 +73,14 @@ class WcGatewayModule implements ModuleInterface {
72
  }
73
  );
74
 
 
 
 
 
 
 
 
 
75
  add_filter(
76
  Repository::NOTICES_FILTER,
77
  static function ( $notices ) use ( $container ): array {
@@ -223,6 +232,7 @@ class WcGatewayModule implements ModuleInterface {
223
  * @var SettingsListener $listener
224
  */
225
  $listener->listen_for_merchant_id();
 
226
  }
227
  );
228
 
17
  use WooCommerce\PayPalCommerce\WcGateway\Admin\OrderTablePaymentStatusColumn;
18
  use WooCommerce\PayPalCommerce\WcGateway\Admin\PaymentStatusOrderDetail;
19
  use WooCommerce\PayPalCommerce\WcGateway\Admin\RenderAuthorizeAction;
20
+ use WooCommerce\PayPalCommerce\WcGateway\Assets\SettingsPageAssets;
21
  use WooCommerce\PayPalCommerce\WcGateway\Checkout\CheckoutPayPalAddressPreset;
22
  use WooCommerce\PayPalCommerce\WcGateway\Checkout\DisableGateways;
23
  use WooCommerce\PayPalCommerce\WcGateway\Endpoint\ReturnUrlEndpoint;
73
  }
74
  );
75
 
76
+ if ( $container->has( 'wcgateway.url' ) ) {
77
+ $assets = new SettingsPageAssets(
78
+ $container->get( 'wcgateway.url' ),
79
+ $container->get( 'wcgateway.absolute-path' )
80
+ );
81
+ $assets->register_assets();
82
+ }
83
+
84
  add_filter(
85
  Repository::NOTICES_FILTER,
86
  static function ( $notices ) use ( $container ): array {
232
  * @var SettingsListener $listener
233
  */
234
  $listener->listen_for_merchant_id();
235
+ $listener->listen_for_vaulting_enabled();
236
  }
237
  );
238
 
modules/ppcp-wc-gateway/webpack.config.js ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const path = require('path');
2
+ const isProduction = process.env.NODE_ENV === 'production';
3
+
4
+ module.exports = {
5
+ devtool: 'sourcemap',
6
+ mode: isProduction ? 'production' : 'development',
7
+ target: 'web',
8
+ entry: {
9
+ 'gateway-settings': path.resolve('./resources/js/gateway-settings.js'),
10
+ },
11
+ output: {
12
+ path: path.resolve(__dirname, 'assets/'),
13
+ filename: 'js/[name].js',
14
+ },
15
+ module: {
16
+ rules: [{
17
+ test: /\.js?$/,
18
+ exclude: /node_modules/,
19
+ loader: 'babel-loader',
20
+ }]
21
+ }
22
+ };
modules/ppcp-wc-gateway/yarn.lock ADDED
@@ -0,0 +1,3908 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
+ # yarn lockfile v1
3
+
4
+
5
+ "@babel/code-frame@^7.12.13":
6
+ version "7.12.13"
7
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
8
+ integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
9
+ dependencies:
10
+ "@babel/highlight" "^7.12.13"
11
+
12
+ "@babel/compat-data@^7.13.0", "@babel/compat-data@^7.13.12", "@babel/compat-data@^7.13.8":
13
+ version "7.13.12"
14
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.12.tgz#a8a5ccac19c200f9dd49624cac6e19d7be1236a1"
15
+ integrity sha512-3eJJ841uKxeV8dcN/2yGEUy+RfgQspPEgQat85umsE1rotuquQ2AbIub4S6j7c50a2d+4myc+zSlnXeIHrOnhQ==
16
+
17
+ "@babel/core@^7.9.0":
18
+ version "7.13.13"
19
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.13.13.tgz#bc44c4a2be2288ec4ddf56b66fc718019c76ac29"
20
+ integrity sha512-1xEs9jZAyKIouOoCmpsgk/I26PoKyvzQ2ixdRpRzfbcp1fL+ozw7TUgdDgwonbTovqRaTfRh50IXuw4QrWO0GA==
21
+ dependencies:
22
+ "@babel/code-frame" "^7.12.13"
23
+ "@babel/generator" "^7.13.9"
24
+ "@babel/helper-compilation-targets" "^7.13.13"
25
+ "@babel/helper-module-transforms" "^7.13.12"
26
+ "@babel/helpers" "^7.13.10"
27
+ "@babel/parser" "^7.13.13"
28
+ "@babel/template" "^7.12.13"
29
+ "@babel/traverse" "^7.13.13"
30
+ "@babel/types" "^7.13.13"
31
+ convert-source-map "^1.7.0"
32
+ debug "^4.1.0"
33
+ gensync "^1.0.0-beta.2"
34
+ json5 "^2.1.2"
35
+ lodash "^4.17.19"
36
+ semver "^6.3.0"
37
+ source-map "^0.5.0"
38
+
39
+ "@babel/generator@^7.13.9":
40
+ version "7.13.9"
41
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.9.tgz#3a7aa96f9efb8e2be42d38d80e2ceb4c64d8de39"
42
+ integrity sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==
43
+ dependencies:
44
+ "@babel/types" "^7.13.0"
45
+ jsesc "^2.5.1"
46
+ source-map "^0.5.0"
47
+
48
+ "@babel/helper-annotate-as-pure@^7.12.13":
49
+ version "7.12.13"
50
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
51
+ integrity sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==
52
+ dependencies:
53
+ "@babel/types" "^7.12.13"
54
+
55
+ "@babel/helper-builder-binary-assignment-operator-visitor@^7.12.13":
56
+ version "7.12.13"
57
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz#6bc20361c88b0a74d05137a65cac8d3cbf6f61fc"
58
+ integrity sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==
59
+ dependencies:
60
+ "@babel/helper-explode-assignable-expression" "^7.12.13"
61
+ "@babel/types" "^7.12.13"
62
+
63
+ "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.10", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.8":
64
+ version "7.13.13"
65
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz#2b2972a0926474853f41e4adbc69338f520600e5"
66
+ integrity sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==
67
+ dependencies:
68
+ "@babel/compat-data" "^7.13.12"
69
+ "@babel/helper-validator-option" "^7.12.17"
70
+ browserslist "^4.14.5"
71
+ semver "^6.3.0"
72
+
73
+ "@babel/helper-create-class-features-plugin@^7.13.0":
74
+ version "7.13.11"
75
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6"
76
+ integrity sha512-ays0I7XYq9xbjCSvT+EvysLgfc3tOkwCULHjrnscGT3A9qD4sk3wXnJ3of0MAWsWGjdinFvajHU2smYuqXKMrw==
77
+ dependencies:
78
+ "@babel/helper-function-name" "^7.12.13"
79
+ "@babel/helper-member-expression-to-functions" "^7.13.0"
80
+ "@babel/helper-optimise-call-expression" "^7.12.13"
81
+ "@babel/helper-replace-supers" "^7.13.0"
82
+ "@babel/helper-split-export-declaration" "^7.12.13"
83
+
84
+ "@babel/helper-create-regexp-features-plugin@^7.12.13":
85
+ version "7.12.17"
86
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7"
87
+ integrity sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==
88
+ dependencies:
89
+ "@babel/helper-annotate-as-pure" "^7.12.13"
90
+ regexpu-core "^4.7.1"
91
+
92
+ "@babel/helper-define-polyfill-provider@^0.1.5":
93
+ version "0.1.5"
94
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.1.5.tgz#3c2f91b7971b9fc11fe779c945c014065dea340e"
95
+ integrity sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==
96
+ dependencies:
97
+ "@babel/helper-compilation-targets" "^7.13.0"
98
+ "@babel/helper-module-imports" "^7.12.13"
99
+ "@babel/helper-plugin-utils" "^7.13.0"
100
+ "@babel/traverse" "^7.13.0"
101
+ debug "^4.1.1"
102
+ lodash.debounce "^4.0.8"
103
+ resolve "^1.14.2"
104
+ semver "^6.1.2"
105
+
106
+ "@babel/helper-explode-assignable-expression@^7.12.13":
107
+ version "7.13.0"
108
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz#17b5c59ff473d9f956f40ef570cf3a76ca12657f"
109
+ integrity sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==
110
+ dependencies:
111
+ "@babel/types" "^7.13.0"
112
+
113
+ "@babel/helper-function-name@^7.12.13":
114
+ version "7.12.13"
115
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
116
+ integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==
117
+ dependencies:
118
+ "@babel/helper-get-function-arity" "^7.12.13"
119
+ "@babel/template" "^7.12.13"
120
+ "@babel/types" "^7.12.13"
121
+
122
+ "@babel/helper-get-function-arity@^7.12.13":
123
+ version "7.12.13"
124
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
125
+ integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==
126
+ dependencies:
127
+ "@babel/types" "^7.12.13"
128
+
129
+ "@babel/helper-hoist-variables@^7.13.0":
130
+ version "7.13.0"
131
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz#5d5882e855b5c5eda91e0cadc26c6e7a2c8593d8"
132
+ integrity sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==
133
+ dependencies:
134
+ "@babel/traverse" "^7.13.0"
135
+ "@babel/types" "^7.13.0"
136
+
137
+ "@babel/helper-member-expression-to-functions@^7.13.0", "@babel/helper-member-expression-to-functions@^7.13.12":
138
+ version "7.13.12"
139
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72"
140
+ integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==
141
+ dependencies:
142
+ "@babel/types" "^7.13.12"
143
+
144
+ "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.13.12":
145
+ version "7.13.12"
146
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977"
147
+ integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==
148
+ dependencies:
149
+ "@babel/types" "^7.13.12"
150
+
151
+ "@babel/helper-module-transforms@^7.13.0", "@babel/helper-module-transforms@^7.13.12":
152
+ version "7.13.12"
153
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.13.12.tgz#600e58350490828d82282631a1422268e982ba96"
154
+ integrity sha512-7zVQqMO3V+K4JOOj40kxiCrMf6xlQAkewBB0eu2b03OO/Q21ZutOzjpfD79A5gtE/2OWi1nv625MrDlGlkbknQ==
155
+ dependencies:
156
+ "@babel/helper-module-imports" "^7.13.12"
157
+ "@babel/helper-replace-supers" "^7.13.12"
158
+ "@babel/helper-simple-access" "^7.13.12"
159
+ "@babel/helper-split-export-declaration" "^7.12.13"
160
+ "@babel/helper-validator-identifier" "^7.12.11"
161
+ "@babel/template" "^7.12.13"
162
+ "@babel/traverse" "^7.13.0"
163
+ "@babel/types" "^7.13.12"
164
+
165
+ "@babel/helper-optimise-call-expression@^7.12.13":
166
+ version "7.12.13"
167
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea"
168
+ integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==
169
+ dependencies:
170
+ "@babel/types" "^7.12.13"
171
+
172
+ "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
173
+ version "7.13.0"
174
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
175
+ integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==
176
+
177
+ "@babel/helper-remap-async-to-generator@^7.13.0":
178
+ version "7.13.0"
179
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz#376a760d9f7b4b2077a9dd05aa9c3927cadb2209"
180
+ integrity sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==
181
+ dependencies:
182
+ "@babel/helper-annotate-as-pure" "^7.12.13"
183
+ "@babel/helper-wrap-function" "^7.13.0"
184
+ "@babel/types" "^7.13.0"
185
+
186
+ "@babel/helper-replace-supers@^7.12.13", "@babel/helper-replace-supers@^7.13.0", "@babel/helper-replace-supers@^7.13.12":
187
+ version "7.13.12"
188
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804"
189
+ integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==
190
+ dependencies:
191
+ "@babel/helper-member-expression-to-functions" "^7.13.12"
192
+ "@babel/helper-optimise-call-expression" "^7.12.13"
193
+ "@babel/traverse" "^7.13.0"
194
+ "@babel/types" "^7.13.12"
195
+
196
+ "@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12":
197
+ version "7.13.12"
198
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6"
199
+ integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==
200
+ dependencies:
201
+ "@babel/types" "^7.13.12"
202
+
203
+ "@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
204
+ version "7.12.1"
205
+ resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
206
+ integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==
207
+ dependencies:
208
+ "@babel/types" "^7.12.1"
209
+
210
+ "@babel/helper-split-export-declaration@^7.12.13":
211
+ version "7.12.13"
212
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
213
+ integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==
214
+ dependencies:
215
+ "@babel/types" "^7.12.13"
216
+
217
+ "@babel/helper-validator-identifier@^7.12.11":
218
+ version "7.12.11"
219
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
220
+ integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
221
+
222
+ "@babel/helper-validator-option@^7.12.17":
223
+ version "7.12.17"
224
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
225
+ integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
226
+
227
+ "@babel/helper-wrap-function@^7.13.0":
228
+ version "7.13.0"
229
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz#bdb5c66fda8526ec235ab894ad53a1235c79fcc4"
230
+ integrity sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==
231
+ dependencies:
232
+ "@babel/helper-function-name" "^7.12.13"
233
+ "@babel/template" "^7.12.13"
234
+ "@babel/traverse" "^7.13.0"
235
+ "@babel/types" "^7.13.0"
236
+
237
+ "@babel/helpers@^7.13.10":
238
+ version "7.13.10"
239
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.13.10.tgz#fd8e2ba7488533cdeac45cc158e9ebca5e3c7df8"
240
+ integrity sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==
241
+ dependencies:
242
+ "@babel/template" "^7.12.13"
243
+ "@babel/traverse" "^7.13.0"
244
+ "@babel/types" "^7.13.0"
245
+
246
+ "@babel/highlight@^7.12.13":
247
+ version "7.13.10"
248
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1"
249
+ integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==
250
+ dependencies:
251
+ "@babel/helper-validator-identifier" "^7.12.11"
252
+ chalk "^2.0.0"
253
+ js-tokens "^4.0.0"
254
+
255
+ "@babel/parser@^7.12.13", "@babel/parser@^7.13.13":
256
+ version "7.13.13"
257
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df"
258
+ integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==
259
+
260
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12":
261
+ version "7.13.12"
262
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.13.12.tgz#a3484d84d0b549f3fc916b99ee4783f26fabad2a"
263
+ integrity sha512-d0u3zWKcoZf379fOeJdr1a5WPDny4aOFZ6hlfKivgK0LY7ZxNfoaHL2fWwdGtHyVvra38FC+HVYkO+byfSA8AQ==
264
+ dependencies:
265
+ "@babel/helper-plugin-utils" "^7.13.0"
266
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
267
+ "@babel/plugin-proposal-optional-chaining" "^7.13.12"
268
+
269
+ "@babel/plugin-proposal-async-generator-functions@^7.13.8":
270
+ version "7.13.8"
271
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz#87aacb574b3bc4b5603f6fe41458d72a5a2ec4b1"
272
+ integrity sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==
273
+ dependencies:
274
+ "@babel/helper-plugin-utils" "^7.13.0"
275
+ "@babel/helper-remap-async-to-generator" "^7.13.0"
276
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
277
+
278
+ "@babel/plugin-proposal-class-properties@^7.13.0":
279
+ version "7.13.0"
280
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz#146376000b94efd001e57a40a88a525afaab9f37"
281
+ integrity sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==
282
+ dependencies:
283
+ "@babel/helper-create-class-features-plugin" "^7.13.0"
284
+ "@babel/helper-plugin-utils" "^7.13.0"
285
+
286
+ "@babel/plugin-proposal-dynamic-import@^7.13.8":
287
+ version "7.13.8"
288
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d"
289
+ integrity sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==
290
+ dependencies:
291
+ "@babel/helper-plugin-utils" "^7.13.0"
292
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
293
+
294
+ "@babel/plugin-proposal-export-namespace-from@^7.12.13":
295
+ version "7.12.13"
296
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz#393be47a4acd03fa2af6e3cde9b06e33de1b446d"
297
+ integrity sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==
298
+ dependencies:
299
+ "@babel/helper-plugin-utils" "^7.12.13"
300
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
301
+
302
+ "@babel/plugin-proposal-json-strings@^7.13.8":
303
+ version "7.13.8"
304
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz#bf1fb362547075afda3634ed31571c5901afef7b"
305
+ integrity sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==
306
+ dependencies:
307
+ "@babel/helper-plugin-utils" "^7.13.0"
308
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
309
+
310
+ "@babel/plugin-proposal-logical-assignment-operators@^7.13.8":
311
+ version "7.13.8"
312
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz#93fa78d63857c40ce3c8c3315220fd00bfbb4e1a"
313
+ integrity sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==
314
+ dependencies:
315
+ "@babel/helper-plugin-utils" "^7.13.0"
316
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
317
+
318
+ "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8":
319
+ version "7.13.8"
320
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz#3730a31dafd3c10d8ccd10648ed80a2ac5472ef3"
321
+ integrity sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==
322
+ dependencies:
323
+ "@babel/helper-plugin-utils" "^7.13.0"
324
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
325
+
326
+ "@babel/plugin-proposal-numeric-separator@^7.12.13":
327
+ version "7.12.13"
328
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz#bd9da3188e787b5120b4f9d465a8261ce67ed1db"
329
+ integrity sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==
330
+ dependencies:
331
+ "@babel/helper-plugin-utils" "^7.12.13"
332
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
333
+
334
+ "@babel/plugin-proposal-object-rest-spread@^7.13.8":
335
+ version "7.13.8"
336
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz#5d210a4d727d6ce3b18f9de82cc99a3964eed60a"
337
+ integrity sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==
338
+ dependencies:
339
+ "@babel/compat-data" "^7.13.8"
340
+ "@babel/helper-compilation-targets" "^7.13.8"
341
+ "@babel/helper-plugin-utils" "^7.13.0"
342
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
343
+ "@babel/plugin-transform-parameters" "^7.13.0"
344
+
345
+ "@babel/plugin-proposal-optional-catch-binding@^7.13.8":
346
+ version "7.13.8"
347
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz#3ad6bd5901506ea996fc31bdcf3ccfa2bed71107"
348
+ integrity sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==
349
+ dependencies:
350
+ "@babel/helper-plugin-utils" "^7.13.0"
351
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
352
+
353
+ "@babel/plugin-proposal-optional-chaining@^7.13.12":
354
+ version "7.13.12"
355
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.12.tgz#ba9feb601d422e0adea6760c2bd6bbb7bfec4866"
356
+ integrity sha512-fcEdKOkIB7Tf4IxrgEVeFC4zeJSTr78no9wTdBuZZbqF64kzllU0ybo2zrzm7gUQfxGhBgq4E39oRs8Zx/RMYQ==
357
+ dependencies:
358
+ "@babel/helper-plugin-utils" "^7.13.0"
359
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
360
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
361
+
362
+ "@babel/plugin-proposal-private-methods@^7.13.0":
363
+ version "7.13.0"
364
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz#04bd4c6d40f6e6bbfa2f57e2d8094bad900ef787"
365
+ integrity sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==
366
+ dependencies:
367
+ "@babel/helper-create-class-features-plugin" "^7.13.0"
368
+ "@babel/helper-plugin-utils" "^7.13.0"
369
+
370
+ "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
371
+ version "7.12.13"
372
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba"
373
+ integrity sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==
374
+ dependencies:
375
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
376
+ "@babel/helper-plugin-utils" "^7.12.13"
377
+
378
+ "@babel/plugin-syntax-async-generators@^7.8.4":
379
+ version "7.8.4"
380
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
381
+ integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
382
+ dependencies:
383
+ "@babel/helper-plugin-utils" "^7.8.0"
384
+
385
+ "@babel/plugin-syntax-class-properties@^7.12.13":
386
+ version "7.12.13"
387
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
388
+ integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
389
+ dependencies:
390
+ "@babel/helper-plugin-utils" "^7.12.13"
391
+
392
+ "@babel/plugin-syntax-dynamic-import@^7.8.3":
393
+ version "7.8.3"
394
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
395
+ integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
396
+ dependencies:
397
+ "@babel/helper-plugin-utils" "^7.8.0"
398
+
399
+ "@babel/plugin-syntax-export-namespace-from@^7.8.3":
400
+ version "7.8.3"
401
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
402
+ integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
403
+ dependencies:
404
+ "@babel/helper-plugin-utils" "^7.8.3"
405
+
406
+ "@babel/plugin-syntax-json-strings@^7.8.3":
407
+ version "7.8.3"
408
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
409
+ integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
410
+ dependencies:
411
+ "@babel/helper-plugin-utils" "^7.8.0"
412
+
413
+ "@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
414
+ version "7.10.4"
415
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
416
+ integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
417
+ dependencies:
418
+ "@babel/helper-plugin-utils" "^7.10.4"
419
+
420
+ "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
421
+ version "7.8.3"
422
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
423
+ integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
424
+ dependencies:
425
+ "@babel/helper-plugin-utils" "^7.8.0"
426
+
427
+ "@babel/plugin-syntax-numeric-separator@^7.10.4":
428
+ version "7.10.4"
429
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
430
+ integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
431
+ dependencies:
432
+ "@babel/helper-plugin-utils" "^7.10.4"
433
+
434
+ "@babel/plugin-syntax-object-rest-spread@^7.8.3":
435
+ version "7.8.3"
436
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
437
+ integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
438
+ dependencies:
439
+ "@babel/helper-plugin-utils" "^7.8.0"
440
+
441
+ "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
442
+ version "7.8.3"
443
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1"
444
+ integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
445
+ dependencies:
446
+ "@babel/helper-plugin-utils" "^7.8.0"
447
+
448
+ "@babel/plugin-syntax-optional-chaining@^7.8.3":
449
+ version "7.8.3"
450
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a"
451
+ integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
452
+ dependencies:
453
+ "@babel/helper-plugin-utils" "^7.8.0"
454
+
455
+ "@babel/plugin-syntax-top-level-await@^7.12.13":
456
+ version "7.12.13"
457
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178"
458
+ integrity sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==
459
+ dependencies:
460
+ "@babel/helper-plugin-utils" "^7.12.13"
461
+
462
+ "@babel/plugin-transform-arrow-functions@^7.13.0":
463
+ version "7.13.0"
464
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz#10a59bebad52d637a027afa692e8d5ceff5e3dae"
465
+ integrity sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==
466
+ dependencies:
467
+ "@babel/helper-plugin-utils" "^7.13.0"
468
+
469
+ "@babel/plugin-transform-async-to-generator@^7.13.0":
470
+ version "7.13.0"
471
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz#8e112bf6771b82bf1e974e5e26806c5c99aa516f"
472
+ integrity sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==
473
+ dependencies:
474
+ "@babel/helper-module-imports" "^7.12.13"
475
+ "@babel/helper-plugin-utils" "^7.13.0"
476
+ "@babel/helper-remap-async-to-generator" "^7.13.0"
477
+
478
+ "@babel/plugin-transform-block-scoped-functions@^7.12.13":
479
+ version "7.12.13"
480
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz#a9bf1836f2a39b4eb6cf09967739de29ea4bf4c4"
481
+ integrity sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==
482
+ dependencies:
483
+ "@babel/helper-plugin-utils" "^7.12.13"
484
+
485
+ "@babel/plugin-transform-block-scoping@^7.12.13":
486
+ version "7.12.13"
487
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61"
488
+ integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==
489
+ dependencies:
490
+ "@babel/helper-plugin-utils" "^7.12.13"
491
+
492
+ "@babel/plugin-transform-classes@^7.13.0":
493
+ version "7.13.0"
494
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz#0265155075c42918bf4d3a4053134176ad9b533b"
495
+ integrity sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==
496
+ dependencies:
497
+ "@babel/helper-annotate-as-pure" "^7.12.13"
498
+ "@babel/helper-function-name" "^7.12.13"
499
+ "@babel/helper-optimise-call-expression" "^7.12.13"
500
+ "@babel/helper-plugin-utils" "^7.13.0"
501
+ "@babel/helper-replace-supers" "^7.13.0"
502
+ "@babel/helper-split-export-declaration" "^7.12.13"
503
+ globals "^11.1.0"
504
+
505
+ "@babel/plugin-transform-computed-properties@^7.13.0":
506
+ version "7.13.0"
507
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz#845c6e8b9bb55376b1fa0b92ef0bdc8ea06644ed"
508
+ integrity sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==
509
+ dependencies:
510
+ "@babel/helper-plugin-utils" "^7.13.0"
511
+
512
+ "@babel/plugin-transform-destructuring@^7.13.0":
513
+ version "7.13.0"
514
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963"
515
+ integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==
516
+ dependencies:
517
+ "@babel/helper-plugin-utils" "^7.13.0"
518
+
519
+ "@babel/plugin-transform-dotall-regex@^7.12.13", "@babel/plugin-transform-dotall-regex@^7.4.4":
520
+ version "7.12.13"
521
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz#3f1601cc29905bfcb67f53910f197aeafebb25ad"
522
+ integrity sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==
523
+ dependencies:
524
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
525
+ "@babel/helper-plugin-utils" "^7.12.13"
526
+
527
+ "@babel/plugin-transform-duplicate-keys@^7.12.13":
528
+ version "7.12.13"
529
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz#6f06b87a8b803fd928e54b81c258f0a0033904de"
530
+ integrity sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==
531
+ dependencies:
532
+ "@babel/helper-plugin-utils" "^7.12.13"
533
+
534
+ "@babel/plugin-transform-exponentiation-operator@^7.12.13":
535
+ version "7.12.13"
536
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz#4d52390b9a273e651e4aba6aee49ef40e80cd0a1"
537
+ integrity sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==
538
+ dependencies:
539
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.12.13"
540
+ "@babel/helper-plugin-utils" "^7.12.13"
541
+
542
+ "@babel/plugin-transform-for-of@^7.13.0":
543
+ version "7.13.0"
544
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz#c799f881a8091ac26b54867a845c3e97d2696062"
545
+ integrity sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==
546
+ dependencies:
547
+ "@babel/helper-plugin-utils" "^7.13.0"
548
+
549
+ "@babel/plugin-transform-function-name@^7.12.13":
550
+ version "7.12.13"
551
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz#bb024452f9aaed861d374c8e7a24252ce3a50051"
552
+ integrity sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==
553
+ dependencies:
554
+ "@babel/helper-function-name" "^7.12.13"
555
+ "@babel/helper-plugin-utils" "^7.12.13"
556
+
557
+ "@babel/plugin-transform-literals@^7.12.13":
558
+ version "7.12.13"
559
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz#2ca45bafe4a820197cf315794a4d26560fe4bdb9"
560
+ integrity sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==
561
+ dependencies:
562
+ "@babel/helper-plugin-utils" "^7.12.13"
563
+
564
+ "@babel/plugin-transform-member-expression-literals@^7.12.13":
565
+ version "7.12.13"
566
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz#5ffa66cd59b9e191314c9f1f803b938e8c081e40"
567
+ integrity sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==
568
+ dependencies:
569
+ "@babel/helper-plugin-utils" "^7.12.13"
570
+
571
+ "@babel/plugin-transform-modules-amd@^7.13.0":
572
+ version "7.13.0"
573
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3"
574
+ integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==
575
+ dependencies:
576
+ "@babel/helper-module-transforms" "^7.13.0"
577
+ "@babel/helper-plugin-utils" "^7.13.0"
578
+ babel-plugin-dynamic-import-node "^2.3.3"
579
+
580
+ "@babel/plugin-transform-modules-commonjs@^7.13.8":
581
+ version "7.13.8"
582
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b"
583
+ integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==
584
+ dependencies:
585
+ "@babel/helper-module-transforms" "^7.13.0"
586
+ "@babel/helper-plugin-utils" "^7.13.0"
587
+ "@babel/helper-simple-access" "^7.12.13"
588
+ babel-plugin-dynamic-import-node "^2.3.3"
589
+
590
+ "@babel/plugin-transform-modules-systemjs@^7.13.8":
591
+ version "7.13.8"
592
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz#6d066ee2bff3c7b3d60bf28dec169ad993831ae3"
593
+ integrity sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==
594
+ dependencies:
595
+ "@babel/helper-hoist-variables" "^7.13.0"
596
+ "@babel/helper-module-transforms" "^7.13.0"
597
+ "@babel/helper-plugin-utils" "^7.13.0"
598
+ "@babel/helper-validator-identifier" "^7.12.11"
599
+ babel-plugin-dynamic-import-node "^2.3.3"
600
+
601
+ "@babel/plugin-transform-modules-umd@^7.13.0":
602
+ version "7.13.0"
603
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b"
604
+ integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==
605
+ dependencies:
606
+ "@babel/helper-module-transforms" "^7.13.0"
607
+ "@babel/helper-plugin-utils" "^7.13.0"
608
+
609
+ "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13":
610
+ version "7.12.13"
611
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz#2213725a5f5bbbe364b50c3ba5998c9599c5c9d9"
612
+ integrity sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==
613
+ dependencies:
614
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
615
+
616
+ "@babel/plugin-transform-new-target@^7.12.13":
617
+ version "7.12.13"
618
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz#e22d8c3af24b150dd528cbd6e685e799bf1c351c"
619
+ integrity sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==
620
+ dependencies:
621
+ "@babel/helper-plugin-utils" "^7.12.13"
622
+
623
+ "@babel/plugin-transform-object-super@^7.12.13":
624
+ version "7.12.13"
625
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz#b4416a2d63b8f7be314f3d349bd55a9c1b5171f7"
626
+ integrity sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==
627
+ dependencies:
628
+ "@babel/helper-plugin-utils" "^7.12.13"
629
+ "@babel/helper-replace-supers" "^7.12.13"
630
+
631
+ "@babel/plugin-transform-parameters@^7.13.0":
632
+ version "7.13.0"
633
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz#8fa7603e3097f9c0b7ca1a4821bc2fb52e9e5007"
634
+ integrity sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==
635
+ dependencies:
636
+ "@babel/helper-plugin-utils" "^7.13.0"
637
+
638
+ "@babel/plugin-transform-property-literals@^7.12.13":
639
+ version "7.12.13"
640
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz#4e6a9e37864d8f1b3bc0e2dce7bf8857db8b1a81"
641
+ integrity sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==
642
+ dependencies:
643
+ "@babel/helper-plugin-utils" "^7.12.13"
644
+
645
+ "@babel/plugin-transform-regenerator@^7.12.13":
646
+ version "7.12.13"
647
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz#b628bcc9c85260ac1aeb05b45bde25210194a2f5"
648
+ integrity sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==
649
+ dependencies:
650
+ regenerator-transform "^0.14.2"
651
+
652
+ "@babel/plugin-transform-reserved-words@^7.12.13":
653
+ version "7.12.13"
654
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz#7d9988d4f06e0fe697ea1d9803188aa18b472695"
655
+ integrity sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==
656
+ dependencies:
657
+ "@babel/helper-plugin-utils" "^7.12.13"
658
+
659
+ "@babel/plugin-transform-shorthand-properties@^7.12.13":
660
+ version "7.12.13"
661
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz#db755732b70c539d504c6390d9ce90fe64aff7ad"
662
+ integrity sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==
663
+ dependencies:
664
+ "@babel/helper-plugin-utils" "^7.12.13"
665
+
666
+ "@babel/plugin-transform-spread@^7.13.0":
667
+ version "7.13.0"
668
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz#84887710e273c1815ace7ae459f6f42a5d31d5fd"
669
+ integrity sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==
670
+ dependencies:
671
+ "@babel/helper-plugin-utils" "^7.13.0"
672
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1"
673
+
674
+ "@babel/plugin-transform-sticky-regex@^7.12.13":
675
+ version "7.12.13"
676
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz#760ffd936face73f860ae646fb86ee82f3d06d1f"
677
+ integrity sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==
678
+ dependencies:
679
+ "@babel/helper-plugin-utils" "^7.12.13"
680
+
681
+ "@babel/plugin-transform-template-literals@^7.13.0":
682
+ version "7.13.0"
683
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz#a36049127977ad94438dee7443598d1cefdf409d"
684
+ integrity sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==
685
+ dependencies:
686
+ "@babel/helper-plugin-utils" "^7.13.0"
687
+
688
+ "@babel/plugin-transform-typeof-symbol@^7.12.13":
689
+ version "7.12.13"
690
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz#785dd67a1f2ea579d9c2be722de8c84cb85f5a7f"
691
+ integrity sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==
692
+ dependencies:
693
+ "@babel/helper-plugin-utils" "^7.12.13"
694
+
695
+ "@babel/plugin-transform-unicode-escapes@^7.12.13":
696
+ version "7.12.13"
697
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz#840ced3b816d3b5127dd1d12dcedc5dead1a5e74"
698
+ integrity sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==
699
+ dependencies:
700
+ "@babel/helper-plugin-utils" "^7.12.13"
701
+
702
+ "@babel/plugin-transform-unicode-regex@^7.12.13":
703
+ version "7.12.13"
704
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz#b52521685804e155b1202e83fc188d34bb70f5ac"
705
+ integrity sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==
706
+ dependencies:
707
+ "@babel/helper-create-regexp-features-plugin" "^7.12.13"
708
+ "@babel/helper-plugin-utils" "^7.12.13"
709
+
710
+ "@babel/preset-env@^7.9.5":
711
+ version "7.13.12"
712
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.12.tgz#6dff470478290582ac282fb77780eadf32480237"
713
+ integrity sha512-JzElc6jk3Ko6zuZgBtjOd01pf9yYDEIH8BcqVuYIuOkzOwDesoa/Nz4gIo4lBG6K861KTV9TvIgmFuT6ytOaAA==
714
+ dependencies:
715
+ "@babel/compat-data" "^7.13.12"
716
+ "@babel/helper-compilation-targets" "^7.13.10"
717
+ "@babel/helper-plugin-utils" "^7.13.0"
718
+ "@babel/helper-validator-option" "^7.12.17"
719
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12"
720
+ "@babel/plugin-proposal-async-generator-functions" "^7.13.8"
721
+ "@babel/plugin-proposal-class-properties" "^7.13.0"
722
+ "@babel/plugin-proposal-dynamic-import" "^7.13.8"
723
+ "@babel/plugin-proposal-export-namespace-from" "^7.12.13"
724
+ "@babel/plugin-proposal-json-strings" "^7.13.8"
725
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.13.8"
726
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.13.8"
727
+ "@babel/plugin-proposal-numeric-separator" "^7.12.13"
728
+ "@babel/plugin-proposal-object-rest-spread" "^7.13.8"
729
+ "@babel/plugin-proposal-optional-catch-binding" "^7.13.8"
730
+ "@babel/plugin-proposal-optional-chaining" "^7.13.12"
731
+ "@babel/plugin-proposal-private-methods" "^7.13.0"
732
+ "@babel/plugin-proposal-unicode-property-regex" "^7.12.13"
733
+ "@babel/plugin-syntax-async-generators" "^7.8.4"
734
+ "@babel/plugin-syntax-class-properties" "^7.12.13"
735
+ "@babel/plugin-syntax-dynamic-import" "^7.8.3"
736
+ "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
737
+ "@babel/plugin-syntax-json-strings" "^7.8.3"
738
+ "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
739
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
740
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
741
+ "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
742
+ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
743
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
744
+ "@babel/plugin-syntax-top-level-await" "^7.12.13"
745
+ "@babel/plugin-transform-arrow-functions" "^7.13.0"
746
+ "@babel/plugin-transform-async-to-generator" "^7.13.0"
747
+ "@babel/plugin-transform-block-scoped-functions" "^7.12.13"
748
+ "@babel/plugin-transform-block-scoping" "^7.12.13"
749
+ "@babel/plugin-transform-classes" "^7.13.0"
750
+ "@babel/plugin-transform-computed-properties" "^7.13.0"
751
+ "@babel/plugin-transform-destructuring" "^7.13.0"
752
+ "@babel/plugin-transform-dotall-regex" "^7.12.13"
753
+ "@babel/plugin-transform-duplicate-keys" "^7.12.13"
754
+ "@babel/plugin-transform-exponentiation-operator" "^7.12.13"
755
+ "@babel/plugin-transform-for-of" "^7.13.0"
756
+ "@babel/plugin-transform-function-name" "^7.12.13"
757
+ "@babel/plugin-transform-literals" "^7.12.13"
758
+ "@babel/plugin-transform-member-expression-literals" "^7.12.13"
759
+ "@babel/plugin-transform-modules-amd" "^7.13.0"
760
+ "@babel/plugin-transform-modules-commonjs" "^7.13.8"
761
+ "@babel/plugin-transform-modules-systemjs" "^7.13.8"
762
+ "@babel/plugin-transform-modules-umd" "^7.13.0"
763
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13"
764
+ "@babel/plugin-transform-new-target" "^7.12.13"
765
+ "@babel/plugin-transform-object-super" "^7.12.13"
766
+ "@babel/plugin-transform-parameters" "^7.13.0"
767
+ "@babel/plugin-transform-property-literals" "^7.12.13"
768
+ "@babel/plugin-transform-regenerator" "^7.12.13"
769
+ "@babel/plugin-transform-reserved-words" "^7.12.13"
770
+ "@babel/plugin-transform-shorthand-properties" "^7.12.13"
771
+ "@babel/plugin-transform-spread" "^7.13.0"
772
+ "@babel/plugin-transform-sticky-regex" "^7.12.13"
773
+ "@babel/plugin-transform-template-literals" "^7.13.0"
774
+ "@babel/plugin-transform-typeof-symbol" "^7.12.13"
775
+ "@babel/plugin-transform-unicode-escapes" "^7.12.13"
776
+ "@babel/plugin-transform-unicode-regex" "^7.12.13"
777
+ "@babel/preset-modules" "^0.1.4"
778
+ "@babel/types" "^7.13.12"
779
+ babel-plugin-polyfill-corejs2 "^0.1.4"
780
+ babel-plugin-polyfill-corejs3 "^0.1.3"
781
+ babel-plugin-polyfill-regenerator "^0.1.2"
782
+ core-js-compat "^3.9.0"
783
+ semver "^6.3.0"
784
+
785
+ "@babel/preset-modules@^0.1.4":
786
+ version "0.1.4"
787
+ resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e"
788
+ integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==
789
+ dependencies:
790
+ "@babel/helper-plugin-utils" "^7.0.0"
791
+ "@babel/plugin-proposal-unicode-property-regex" "^7.4.4"
792
+ "@babel/plugin-transform-dotall-regex" "^7.4.4"
793
+ "@babel/types" "^7.4.4"
794
+ esutils "^2.0.2"
795
+
796
+ "@babel/runtime@^7.8.4":
797
+ version "7.13.10"
798
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d"
799
+ integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw==
800
+ dependencies:
801
+ regenerator-runtime "^0.13.4"
802
+
803
+ "@babel/template@^7.12.13":
804
+ version "7.12.13"
805
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
806
+ integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==
807
+ dependencies:
808
+ "@babel/code-frame" "^7.12.13"
809
+ "@babel/parser" "^7.12.13"
810
+ "@babel/types" "^7.12.13"
811
+
812
+ "@babel/traverse@^7.13.0", "@babel/traverse@^7.13.13":
813
+ version "7.13.13"
814
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.13.tgz#39aa9c21aab69f74d948a486dd28a2dbdbf5114d"
815
+ integrity sha512-CblEcwmXKR6eP43oQGG++0QMTtCjAsa3frUuzHoiIJWpaIIi8dwMyEFUJoXRLxagGqCK+jALRwIO+o3R9p/uUg==
816
+ dependencies:
817
+ "@babel/code-frame" "^7.12.13"
818
+ "@babel/generator" "^7.13.9"
819
+ "@babel/helper-function-name" "^7.12.13"
820
+ "@babel/helper-split-export-declaration" "^7.12.13"
821
+ "@babel/parser" "^7.13.13"
822
+ "@babel/types" "^7.13.13"
823
+ debug "^4.1.0"
824
+ globals "^11.1.0"
825
+
826
+ "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.13", "@babel/types@^7.4.4":
827
+ version "7.13.13"
828
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.13.tgz#dcd8b815b38f537a3697ce84c8e3cc62197df96f"
829
+ integrity sha512-kt+EpC6qDfIaqlP+DIbIJOclYy/A1YXs9dAf/ljbi+39Bcbc073H6jKVpXEr/EoIh5anGn5xq/yRVzKl+uIc9w==
830
+ dependencies:
831
+ "@babel/helper-validator-identifier" "^7.12.11"
832
+ lodash "^4.17.19"
833
+ to-fast-properties "^2.0.0"
834
+
835
+ "@types/json-schema@^7.0.5":
836
+ version "7.0.7"
837
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad"
838
+ integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==
839
+
840
+ "@webassemblyjs/ast@1.9.0":
841
+ version "1.9.0"
842
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
843
+ integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==
844
+ dependencies:
845
+ "@webassemblyjs/helper-module-context" "1.9.0"
846
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
847
+ "@webassemblyjs/wast-parser" "1.9.0"
848
+
849
+ "@webassemblyjs/floating-point-hex-parser@1.9.0":
850
+ version "1.9.0"
851
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4"
852
+ integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==
853
+
854
+ "@webassemblyjs/helper-api-error@1.9.0":
855
+ version "1.9.0"
856
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2"
857
+ integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==
858
+
859
+ "@webassemblyjs/helper-buffer@1.9.0":
860
+ version "1.9.0"
861
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00"
862
+ integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==
863
+
864
+ "@webassemblyjs/helper-code-frame@1.9.0":
865
+ version "1.9.0"
866
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27"
867
+ integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==
868
+ dependencies:
869
+ "@webassemblyjs/wast-printer" "1.9.0"
870
+
871
+ "@webassemblyjs/helper-fsm@1.9.0":
872
+ version "1.9.0"
873
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8"
874
+ integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==
875
+
876
+ "@webassemblyjs/helper-module-context@1.9.0":
877
+ version "1.9.0"
878
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07"
879
+ integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==
880
+ dependencies:
881
+ "@webassemblyjs/ast" "1.9.0"
882
+
883
+ "@webassemblyjs/helper-wasm-bytecode@1.9.0":
884
+ version "1.9.0"
885
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790"
886
+ integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==
887
+
888
+ "@webassemblyjs/helper-wasm-section@1.9.0":
889
+ version "1.9.0"
890
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346"
891
+ integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==
892
+ dependencies:
893
+ "@webassemblyjs/ast" "1.9.0"
894
+ "@webassemblyjs/helper-buffer" "1.9.0"
895
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
896
+ "@webassemblyjs/wasm-gen" "1.9.0"
897
+
898
+ "@webassemblyjs/ieee754@1.9.0":
899
+ version "1.9.0"
900
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4"
901
+ integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==
902
+ dependencies:
903
+ "@xtuc/ieee754" "^1.2.0"
904
+
905
+ "@webassemblyjs/leb128@1.9.0":
906
+ version "1.9.0"
907
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95"
908
+ integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==
909
+ dependencies:
910
+ "@xtuc/long" "4.2.2"
911
+
912
+ "@webassemblyjs/utf8@1.9.0":
913
+ version "1.9.0"
914
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab"
915
+ integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==
916
+
917
+ "@webassemblyjs/wasm-edit@1.9.0":
918
+ version "1.9.0"
919
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf"
920
+ integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==
921
+ dependencies:
922
+ "@webassemblyjs/ast" "1.9.0"
923
+ "@webassemblyjs/helper-buffer" "1.9.0"
924
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
925
+ "@webassemblyjs/helper-wasm-section" "1.9.0"
926
+ "@webassemblyjs/wasm-gen" "1.9.0"
927
+ "@webassemblyjs/wasm-opt" "1.9.0"
928
+ "@webassemblyjs/wasm-parser" "1.9.0"
929
+ "@webassemblyjs/wast-printer" "1.9.0"
930
+
931
+ "@webassemblyjs/wasm-gen@1.9.0":
932
+ version "1.9.0"
933
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c"
934
+ integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==
935
+ dependencies:
936
+ "@webassemblyjs/ast" "1.9.0"
937
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
938
+ "@webassemblyjs/ieee754" "1.9.0"
939
+ "@webassemblyjs/leb128" "1.9.0"
940
+ "@webassemblyjs/utf8" "1.9.0"
941
+
942
+ "@webassemblyjs/wasm-opt@1.9.0":
943
+ version "1.9.0"
944
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61"
945
+ integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==
946
+ dependencies:
947
+ "@webassemblyjs/ast" "1.9.0"
948
+ "@webassemblyjs/helper-buffer" "1.9.0"
949
+ "@webassemblyjs/wasm-gen" "1.9.0"
950
+ "@webassemblyjs/wasm-parser" "1.9.0"
951
+
952
+ "@webassemblyjs/wasm-parser@1.9.0":
953
+ version "1.9.0"
954
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e"
955
+ integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==
956
+ dependencies:
957
+ "@webassemblyjs/ast" "1.9.0"
958
+ "@webassemblyjs/helper-api-error" "1.9.0"
959
+ "@webassemblyjs/helper-wasm-bytecode" "1.9.0"
960
+ "@webassemblyjs/ieee754" "1.9.0"
961
+ "@webassemblyjs/leb128" "1.9.0"
962
+ "@webassemblyjs/utf8" "1.9.0"
963
+
964
+ "@webassemblyjs/wast-parser@1.9.0":
965
+ version "1.9.0"
966
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914"
967
+ integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==
968
+ dependencies:
969
+ "@webassemblyjs/ast" "1.9.0"
970
+ "@webassemblyjs/floating-point-hex-parser" "1.9.0"
971
+ "@webassemblyjs/helper-api-error" "1.9.0"
972
+ "@webassemblyjs/helper-code-frame" "1.9.0"
973
+ "@webassemblyjs/helper-fsm" "1.9.0"
974
+ "@xtuc/long" "4.2.2"
975
+
976
+ "@webassemblyjs/wast-printer@1.9.0":
977
+ version "1.9.0"
978
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899"
979
+ integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==
980
+ dependencies:
981
+ "@webassemblyjs/ast" "1.9.0"
982
+ "@webassemblyjs/wast-parser" "1.9.0"
983
+ "@xtuc/long" "4.2.2"
984
+
985
+ "@xtuc/ieee754@^1.2.0":
986
+ version "1.2.0"
987
+ resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
988
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
989
+
990
+ "@xtuc/long@4.2.2":
991
+ version "4.2.2"
992
+ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
993
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
994
+
995
+ acorn@^6.4.1:
996
+ version "6.4.2"
997
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
998
+ integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==
999
+
1000
+ ajv-errors@^1.0.0:
1001
+ version "1.0.1"
1002
+ resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
1003
+ integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==
1004
+
1005
+ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
1006
+ version "3.5.2"
1007
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
1008
+ integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
1009
+
1010
+ ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.4:
1011
+ version "6.12.6"
1012
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
1013
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
1014
+ dependencies:
1015
+ fast-deep-equal "^3.1.1"
1016
+ fast-json-stable-stringify "^2.0.0"
1017
+ json-schema-traverse "^0.4.1"
1018
+ uri-js "^4.2.2"
1019
+
1020
+ ansi-regex@^4.1.0:
1021
+ version "4.1.0"
1022
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
1023
+ integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
1024
+
1025
+ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
1026
+ version "3.2.1"
1027
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
1028
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
1029
+ dependencies:
1030
+ color-convert "^1.9.0"
1031
+
1032
+ anymatch@^2.0.0:
1033
+ version "2.0.0"
1034
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
1035
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
1036
+ dependencies:
1037
+ micromatch "^3.1.4"
1038
+ normalize-path "^2.1.1"
1039
+
1040
+ anymatch@~3.1.1:
1041
+ version "3.1.1"
1042
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
1043
+ integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
1044
+ dependencies:
1045
+ normalize-path "^3.0.0"
1046
+ picomatch "^2.0.4"
1047
+
1048
+ aproba@^1.1.1:
1049
+ version "1.2.0"
1050
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
1051
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
1052
+
1053
+ arr-diff@^4.0.0:
1054
+ version "4.0.0"
1055
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
1056
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
1057
+
1058
+ arr-flatten@^1.1.0:
1059
+ version "1.1.0"
1060
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
1061
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
1062
+
1063
+ arr-union@^3.1.0:
1064
+ version "3.1.0"
1065
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
1066
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
1067
+
1068
+ array-unique@^0.3.2:
1069
+ version "0.3.2"
1070
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
1071
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
1072
+
1073
+ asn1.js@^5.2.0:
1074
+ version "5.4.1"
1075
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
1076
+ integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
1077
+ dependencies:
1078
+ bn.js "^4.0.0"
1079
+ inherits "^2.0.1"
1080
+ minimalistic-assert "^1.0.0"
1081
+ safer-buffer "^2.1.0"
1082
+
1083
+ assert@^1.1.1:
1084
+ version "1.5.0"
1085
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb"
1086
+ integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==
1087
+ dependencies:
1088
+ object-assign "^4.1.1"
1089
+ util "0.10.3"
1090
+
1091
+ assign-symbols@^1.0.0:
1092
+ version "1.0.0"
1093
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
1094
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
1095
+
1096
+ async-each@^1.0.1:
1097
+ version "1.0.3"
1098
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf"
1099
+ integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==
1100
+
1101
+ atob@^2.1.2:
1102
+ version "2.1.2"
1103
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
1104
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
1105
+
1106
+ babel-loader@^8.1.0:
1107
+ version "8.2.2"
1108
+ resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81"
1109
+ integrity sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==
1110
+ dependencies:
1111
+ find-cache-dir "^3.3.1"
1112
+ loader-utils "^1.4.0"
1113
+ make-dir "^3.1.0"
1114
+ schema-utils "^2.6.5"
1115
+
1116
+ babel-plugin-dynamic-import-node@^2.3.3:
1117
+ version "2.3.3"
1118
+ resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3"
1119
+ integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==
1120
+ dependencies:
1121
+ object.assign "^4.1.0"
1122
+
1123
+ babel-plugin-polyfill-corejs2@^0.1.4:
1124
+ version "0.1.10"
1125
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.1.10.tgz#a2c5c245f56c0cac3dbddbf0726a46b24f0f81d1"
1126
+ integrity sha512-DO95wD4g0A8KRaHKi0D51NdGXzvpqVLnLu5BTvDlpqUEpTmeEtypgC1xqesORaWmiUOQI14UHKlzNd9iZ2G3ZA==
1127
+ dependencies:
1128
+ "@babel/compat-data" "^7.13.0"
1129
+ "@babel/helper-define-polyfill-provider" "^0.1.5"
1130
+ semver "^6.1.1"
1131
+
1132
+ babel-plugin-polyfill-corejs3@^0.1.3:
1133
+ version "0.1.7"
1134
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.1.7.tgz#80449d9d6f2274912e05d9e182b54816904befd0"
1135
+ integrity sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==
1136
+ dependencies:
1137
+ "@babel/helper-define-polyfill-provider" "^0.1.5"
1138
+ core-js-compat "^3.8.1"
1139
+
1140
+ babel-plugin-polyfill-regenerator@^0.1.2:
1141
+ version "0.1.6"
1142
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.1.6.tgz#0fe06a026fe0faa628ccc8ba3302da0a6ce02f3f"
1143
+ integrity sha512-OUrYG9iKPKz8NxswXbRAdSwF0GhRdIEMTloQATJi4bDuFqrXaXcCUT/VGNrr8pBcjMh1RxZ7Xt9cytVJTJfvMg==
1144
+ dependencies:
1145
+ "@babel/helper-define-polyfill-provider" "^0.1.5"
1146
+
1147
+ babel-plugin-syntax-object-rest-spread@^6.8.0:
1148
+ version "6.13.0"
1149
+ resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
1150
+ integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=
1151
+
1152
+ babel-plugin-transform-object-rest-spread@^6.26.0:
1153
+ version "6.26.0"
1154
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06"
1155
+ integrity sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=
1156
+ dependencies:
1157
+ babel-plugin-syntax-object-rest-spread "^6.8.0"
1158
+ babel-runtime "^6.26.0"
1159
+
1160
+ babel-runtime@^6.26.0:
1161
+ version "6.26.0"
1162
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
1163
+ integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
1164
+ dependencies:
1165
+ core-js "^2.4.0"
1166
+ regenerator-runtime "^0.11.0"
1167
+
1168
+ balanced-match@^1.0.0:
1169
+ version "1.0.0"
1170
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
1171
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
1172
+
1173
+ base64-js@^1.0.2:
1174
+ version "1.5.1"
1175
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
1176
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
1177
+
1178
+ base@^0.11.1:
1179
+ version "0.11.2"
1180
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
1181
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
1182
+ dependencies:
1183
+ cache-base "^1.0.1"
1184
+ class-utils "^0.3.5"
1185
+ component-emitter "^1.2.1"
1186
+ define-property "^1.0.0"
1187
+ isobject "^3.0.1"
1188
+ mixin-deep "^1.2.0"
1189
+ pascalcase "^0.1.1"
1190
+
1191
+ big.js@^5.2.2:
1192
+ version "5.2.2"
1193
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
1194
+ integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
1195
+
1196
+ binary-extensions@^1.0.0:
1197
+ version "1.13.1"
1198
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
1199
+ integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
1200
+
1201
+ binary-extensions@^2.0.0:
1202
+ version "2.2.0"
1203
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
1204
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
1205
+
1206
+ bindings@^1.5.0:
1207
+ version "1.5.0"
1208
+ resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
1209
+ integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
1210
+ dependencies:
1211
+ file-uri-to-path "1.0.0"
1212
+
1213
+ bluebird@^3.5.5:
1214
+ version "3.7.2"
1215
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
1216
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
1217
+
1218
+ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
1219
+ version "4.12.0"
1220
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
1221
+ integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
1222
+
1223
+ bn.js@^5.0.0, bn.js@^5.1.1:
1224
+ version "5.2.0"
1225
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
1226
+ integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
1227
+
1228
+ brace-expansion@^1.1.7:
1229
+ version "1.1.11"
1230
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
1231
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
1232
+ dependencies:
1233
+ balanced-match "^1.0.0"
1234
+ concat-map "0.0.1"
1235
+
1236
+ braces@^2.3.1, braces@^2.3.2:
1237
+ version "2.3.2"
1238
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
1239
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
1240
+ dependencies:
1241
+ arr-flatten "^1.1.0"
1242
+ array-unique "^0.3.2"
1243
+ extend-shallow "^2.0.1"
1244
+ fill-range "^4.0.0"
1245
+ isobject "^3.0.1"
1246
+ repeat-element "^1.1.2"
1247
+ snapdragon "^0.8.1"
1248
+ snapdragon-node "^2.0.1"
1249
+ split-string "^3.0.2"
1250
+ to-regex "^3.0.1"
1251
+
1252
+ braces@~3.0.2:
1253
+ version "3.0.2"
1254
+ resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
1255
+ integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
1256
+ dependencies:
1257
+ fill-range "^7.0.1"
1258
+
1259
+ brorand@^1.0.1, brorand@^1.1.0:
1260
+ version "1.1.0"
1261
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
1262
+ integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
1263
+
1264
+ browserify-aes@^1.0.0, browserify-aes@^1.0.4:
1265
+ version "1.2.0"
1266
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
1267
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
1268
+ dependencies:
1269
+ buffer-xor "^1.0.3"
1270
+ cipher-base "^1.0.0"
1271
+ create-hash "^1.1.0"
1272
+ evp_bytestokey "^1.0.3"
1273
+ inherits "^2.0.1"
1274
+ safe-buffer "^5.0.1"
1275
+
1276
+ browserify-cipher@^1.0.0:
1277
+ version "1.0.1"
1278
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
1279
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
1280
+ dependencies:
1281
+ browserify-aes "^1.0.4"
1282
+ browserify-des "^1.0.0"
1283
+ evp_bytestokey "^1.0.0"
1284
+
1285
+ browserify-des@^1.0.0:
1286
+ version "1.0.2"
1287
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
1288
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
1289
+ dependencies:
1290
+ cipher-base "^1.0.1"
1291
+ des.js "^1.0.0"
1292
+ inherits "^2.0.1"
1293
+ safe-buffer "^5.1.2"
1294
+
1295
+ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1:
1296
+ version "4.1.0"
1297
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
1298
+ integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
1299
+ dependencies:
1300
+ bn.js "^5.0.0"
1301
+ randombytes "^2.0.1"
1302
+
1303
+ browserify-sign@^4.0.0:
1304
+ version "4.2.1"
1305
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3"
1306
+ integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==
1307
+ dependencies:
1308
+ bn.js "^5.1.1"
1309
+ browserify-rsa "^4.0.1"
1310
+ create-hash "^1.2.0"
1311
+ create-hmac "^1.1.7"
1312
+ elliptic "^6.5.3"
1313
+ inherits "^2.0.4"
1314
+ parse-asn1 "^5.1.5"
1315
+ readable-stream "^3.6.0"
1316
+ safe-buffer "^5.2.0"
1317
+
1318
+ browserify-zlib@^0.2.0:
1319
+ version "0.2.0"
1320
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
1321
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
1322
+ dependencies:
1323
+ pako "~1.0.5"
1324
+
1325
+ browserslist@^4.14.5, browserslist@^4.16.3:
1326
+ version "4.16.3"
1327
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717"
1328
+ integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==
1329
+ dependencies:
1330
+ caniuse-lite "^1.0.30001181"
1331
+ colorette "^1.2.1"
1332
+ electron-to-chromium "^1.3.649"
1333
+ escalade "^3.1.1"
1334
+ node-releases "^1.1.70"
1335
+
1336
+ buffer-from@^1.0.0:
1337
+ version "1.1.1"
1338
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
1339
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
1340
+
1341
+ buffer-xor@^1.0.3:
1342
+ version "1.0.3"
1343
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
1344
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
1345
+
1346
+ buffer@^4.3.0:
1347
+ version "4.9.2"
1348
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8"
1349
+ integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==
1350
+ dependencies:
1351
+ base64-js "^1.0.2"
1352
+ ieee754 "^1.1.4"
1353
+ isarray "^1.0.0"
1354
+
1355
+ builtin-status-codes@^3.0.0:
1356
+ version "3.0.0"
1357
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
1358
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
1359
+
1360
+ cacache@^12.0.2:
1361
+ version "12.0.4"
1362
+ resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c"
1363
+ integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==
1364
+ dependencies:
1365
+ bluebird "^3.5.5"
1366
+ chownr "^1.1.1"
1367
+ figgy-pudding "^3.5.1"
1368
+ glob "^7.1.4"
1369
+ graceful-fs "^4.1.15"
1370
+ infer-owner "^1.0.3"
1371
+ lru-cache "^5.1.1"
1372
+ mississippi "^3.0.0"
1373
+ mkdirp "^0.5.1"
1374
+ move-concurrently "^1.0.1"
1375
+ promise-inflight "^1.0.1"
1376
+ rimraf "^2.6.3"
1377
+ ssri "^6.0.1"
1378
+ unique-filename "^1.1.1"
1379
+ y18n "^4.0.0"
1380
+
1381
+ cache-base@^1.0.1:
1382
+ version "1.0.1"
1383
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
1384
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
1385
+ dependencies:
1386
+ collection-visit "^1.0.0"
1387
+ component-emitter "^1.2.1"
1388
+ get-value "^2.0.6"
1389
+ has-value "^1.0.0"
1390
+ isobject "^3.0.1"
1391
+ set-value "^2.0.0"
1392
+ to-object-path "^0.3.0"
1393
+ union-value "^1.0.0"
1394
+ unset-value "^1.0.0"
1395
+
1396
+ call-bind@^1.0.0:
1397
+ version "1.0.2"
1398
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
1399
+ integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
1400
+ dependencies:
1401
+ function-bind "^1.1.1"
1402
+ get-intrinsic "^1.0.2"
1403
+
1404
+ camelcase@^5.0.0:
1405
+ version "5.3.1"
1406
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
1407
+ integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
1408
+
1409
+ caniuse-lite@^1.0.30001181:
1410
+ version "1.0.30001204"
1411
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001204.tgz#256c85709a348ec4d175e847a3b515c66e79f2aa"
1412
+ integrity sha512-JUdjWpcxfJ9IPamy2f5JaRDCaqJOxDzOSKtbdx4rH9VivMd1vIzoPumsJa9LoMIi4Fx2BV2KZOxWhNkBjaYivQ==
1413
+
1414
+ chalk@^2.0.0, chalk@^2.4.2:
1415
+ version "2.4.2"
1416
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
1417
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
1418
+ dependencies:
1419
+ ansi-styles "^3.2.1"
1420
+ escape-string-regexp "^1.0.5"
1421
+ supports-color "^5.3.0"
1422
+
1423
+ chokidar@^2.1.8:
1424
+ version "2.1.8"
1425
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
1426
+ integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
1427
+ dependencies:
1428
+ anymatch "^2.0.0"
1429
+ async-each "^1.0.1"
1430
+ braces "^2.3.2"
1431
+ glob-parent "^3.1.0"
1432
+ inherits "^2.0.3"
1433
+ is-binary-path "^1.0.0"
1434
+ is-glob "^4.0.0"
1435
+ normalize-path "^3.0.0"
1436
+ path-is-absolute "^1.0.0"
1437
+ readdirp "^2.2.1"
1438
+ upath "^1.1.1"
1439
+ optionalDependencies:
1440
+ fsevents "^1.2.7"
1441
+
1442
+ chokidar@^3.4.1:
1443
+ version "3.5.1"
1444
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
1445
+ integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==
1446
+ dependencies:
1447
+ anymatch "~3.1.1"
1448
+ braces "~3.0.2"
1449
+ glob-parent "~5.1.0"
1450
+ is-binary-path "~2.1.0"
1451
+ is-glob "~4.0.1"
1452
+ normalize-path "~3.0.0"
1453
+ readdirp "~3.5.0"
1454
+ optionalDependencies:
1455
+ fsevents "~2.3.1"
1456
+
1457
+ chownr@^1.1.1:
1458
+ version "1.1.4"
1459
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
1460
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
1461
+
1462
+ chrome-trace-event@^1.0.2:
1463
+ version "1.0.2"
1464
+ resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
1465
+ integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==
1466
+ dependencies:
1467
+ tslib "^1.9.0"
1468
+
1469
+ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
1470
+ version "1.0.4"
1471
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
1472
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
1473
+ dependencies:
1474
+ inherits "^2.0.1"
1475
+ safe-buffer "^5.0.1"
1476
+
1477
+ class-utils@^0.3.5:
1478
+ version "0.3.6"
1479
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
1480
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
1481
+ dependencies:
1482
+ arr-union "^3.1.0"
1483
+ define-property "^0.2.5"
1484
+ isobject "^3.0.0"
1485
+ static-extend "^0.1.1"
1486
+
1487
+ cliui@^5.0.0:
1488
+ version "5.0.0"
1489
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
1490
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
1491
+ dependencies:
1492
+ string-width "^3.1.0"
1493
+ strip-ansi "^5.2.0"
1494
+ wrap-ansi "^5.1.0"
1495
+
1496
+ collection-visit@^1.0.0:
1497
+ version "1.0.0"
1498
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
1499
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
1500
+ dependencies:
1501
+ map-visit "^1.0.0"
1502
+ object-visit "^1.0.0"
1503
+
1504
+ color-convert@^1.9.0:
1505
+ version "1.9.3"
1506
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
1507
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
1508
+ dependencies:
1509
+ color-name "1.1.3"
1510
+
1511
+ color-name@1.1.3:
1512
+ version "1.1.3"
1513
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
1514
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
1515
+
1516
+ colorette@^1.2.1:
1517
+ version "1.2.2"
1518
+ resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
1519
+ integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
1520
+
1521
+ commander@^2.20.0:
1522
+ version "2.20.3"
1523
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
1524
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
1525
+
1526
+ commondir@^1.0.1:
1527
+ version "1.0.1"
1528
+ resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
1529
+ integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
1530
+
1531
+ component-emitter@^1.2.1:
1532
+ version "1.3.0"
1533
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
1534
+ integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
1535
+
1536
+ concat-map@0.0.1:
1537
+ version "0.0.1"
1538
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
1539
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
1540
+
1541
+ concat-stream@^1.5.0:
1542
+ version "1.6.2"
1543
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
1544
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
1545
+ dependencies:
1546
+ buffer-from "^1.0.0"
1547
+ inherits "^2.0.3"
1548
+ readable-stream "^2.2.2"
1549
+ typedarray "^0.0.6"
1550
+
1551
+ console-browserify@^1.1.0:
1552
+ version "1.2.0"
1553
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
1554
+ integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
1555
+
1556
+ constants-browserify@^1.0.0:
1557
+ version "1.0.0"
1558
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
1559
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
1560
+
1561
+ convert-source-map@^1.7.0:
1562
+ version "1.7.0"
1563
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442"
1564
+ integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==
1565
+ dependencies:
1566
+ safe-buffer "~5.1.1"
1567
+
1568
+ copy-concurrently@^1.0.0:
1569
+ version "1.0.5"
1570
+ resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0"
1571
+ integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==
1572
+ dependencies:
1573
+ aproba "^1.1.1"
1574
+ fs-write-stream-atomic "^1.0.8"
1575
+ iferr "^0.1.5"
1576
+ mkdirp "^0.5.1"
1577
+ rimraf "^2.5.4"
1578
+ run-queue "^1.0.0"
1579
+
1580
+ copy-descriptor@^0.1.0:
1581
+ version "0.1.1"
1582
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
1583
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
1584
+
1585
+ core-js-compat@^3.8.1, core-js-compat@^3.9.0:
1586
+ version "3.9.1"
1587
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.9.1.tgz#4e572acfe90aff69d76d8c37759d21a5c59bb455"
1588
+ integrity sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==
1589
+ dependencies:
1590
+ browserslist "^4.16.3"
1591
+ semver "7.0.0"
1592
+
1593
+ core-js@^2.4.0:
1594
+ version "2.6.12"
1595
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec"
1596
+ integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
1597
+
1598
+ core-util-is@~1.0.0:
1599
+ version "1.0.2"
1600
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
1601
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
1602
+
1603
+ create-ecdh@^4.0.0:
1604
+ version "4.0.4"
1605
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
1606
+ integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
1607
+ dependencies:
1608
+ bn.js "^4.1.0"
1609
+ elliptic "^6.5.3"
1610
+
1611
+ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
1612
+ version "1.2.0"
1613
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
1614
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
1615
+ dependencies:
1616
+ cipher-base "^1.0.1"
1617
+ inherits "^2.0.1"
1618
+ md5.js "^1.3.4"
1619
+ ripemd160 "^2.0.1"
1620
+ sha.js "^2.4.0"
1621
+
1622
+ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
1623
+ version "1.1.7"
1624
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
1625
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
1626
+ dependencies:
1627
+ cipher-base "^1.0.3"
1628
+ create-hash "^1.1.0"
1629
+ inherits "^2.0.1"
1630
+ ripemd160 "^2.0.0"
1631
+ safe-buffer "^5.0.1"
1632
+ sha.js "^2.4.8"
1633
+
1634
+ cross-env@^5.0.1:
1635
+ version "5.2.1"
1636
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-5.2.1.tgz#b2c76c1ca7add66dc874d11798466094f551b34d"
1637
+ integrity sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==
1638
+ dependencies:
1639
+ cross-spawn "^6.0.5"
1640
+
1641
+ cross-spawn@^6.0.5:
1642
+ version "6.0.5"
1643
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
1644
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
1645
+ dependencies:
1646
+ nice-try "^1.0.4"
1647
+ path-key "^2.0.1"
1648
+ semver "^5.5.0"
1649
+ shebang-command "^1.2.0"
1650
+ which "^1.2.9"
1651
+
1652
+ crypto-browserify@^3.11.0:
1653
+ version "3.12.0"
1654
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
1655
+ integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
1656
+ dependencies:
1657
+ browserify-cipher "^1.0.0"
1658
+ browserify-sign "^4.0.0"
1659
+ create-ecdh "^4.0.0"
1660
+ create-hash "^1.1.0"
1661
+ create-hmac "^1.1.0"
1662
+ diffie-hellman "^5.0.0"
1663
+ inherits "^2.0.1"
1664
+ pbkdf2 "^3.0.3"
1665
+ public-encrypt "^4.0.0"
1666
+ randombytes "^2.0.0"
1667
+ randomfill "^1.0.3"
1668
+
1669
+ cyclist@^1.0.1:
1670
+ version "1.0.1"
1671
+ resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9"
1672
+ integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=
1673
+
1674
+ debug@^2.2.0, debug@^2.3.3:
1675
+ version "2.6.9"
1676
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
1677
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
1678
+ dependencies:
1679
+ ms "2.0.0"
1680
+
1681
+ debug@^4.1.0, debug@^4.1.1:
1682
+ version "4.3.1"
1683
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
1684
+ integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
1685
+ dependencies:
1686
+ ms "2.1.2"
1687
+
1688
+ decamelize@^1.2.0:
1689
+ version "1.2.0"
1690
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
1691
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
1692
+
1693
+ decode-uri-component@^0.2.0:
1694
+ version "0.2.0"
1695
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
1696
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
1697
+
1698
+ define-properties@^1.1.3:
1699
+ version "1.1.3"
1700
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
1701
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
1702
+ dependencies:
1703
+ object-keys "^1.0.12"
1704
+
1705
+ define-property@^0.2.5:
1706
+ version "0.2.5"
1707
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
1708
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
1709
+ dependencies:
1710
+ is-descriptor "^0.1.0"
1711
+
1712
+ define-property@^1.0.0:
1713
+ version "1.0.0"
1714
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
1715
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
1716
+ dependencies:
1717
+ is-descriptor "^1.0.0"
1718
+
1719
+ define-property@^2.0.2:
1720
+ version "2.0.2"
1721
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
1722
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
1723
+ dependencies:
1724
+ is-descriptor "^1.0.2"
1725
+ isobject "^3.0.1"
1726
+
1727
+ des.js@^1.0.0:
1728
+ version "1.0.1"
1729
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843"
1730
+ integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==
1731
+ dependencies:
1732
+ inherits "^2.0.1"
1733
+ minimalistic-assert "^1.0.0"
1734
+
1735
+ detect-file@^1.0.0:
1736
+ version "1.0.0"
1737
+ resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
1738
+ integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
1739
+
1740
+ diffie-hellman@^5.0.0:
1741
+ version "5.0.3"
1742
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
1743
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
1744
+ dependencies:
1745
+ bn.js "^4.1.0"
1746
+ miller-rabin "^4.0.0"
1747
+ randombytes "^2.0.0"
1748
+
1749
+ domain-browser@^1.1.1:
1750
+ version "1.2.0"
1751
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
1752
+ integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
1753
+
1754
+ duplexify@^3.4.2, duplexify@^3.6.0:
1755
+ version "3.7.1"
1756
+ resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
1757
+ integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
1758
+ dependencies:
1759
+ end-of-stream "^1.0.0"
1760
+ inherits "^2.0.1"
1761
+ readable-stream "^2.0.0"
1762
+ stream-shift "^1.0.0"
1763
+
1764
+ electron-to-chromium@^1.3.649:
1765
+ version "1.3.701"
1766
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.701.tgz#5e796ed7ce88cd77bc7bf831cf311ef6b067c389"
1767
+ integrity sha512-Zd9ofdIMYHYhG1gvnejQDvC/kqSeXQvtXF0yRURGxgwGqDZm9F9Fm3dYFnm5gyuA7xpXfBlzVLN1sz0FjxpKfw==
1768
+
1769
+ elliptic@^6.5.3:
1770
+ version "6.5.4"
1771
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
1772
+ integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
1773
+ dependencies:
1774
+ bn.js "^4.11.9"
1775
+ brorand "^1.1.0"
1776
+ hash.js "^1.0.0"
1777
+ hmac-drbg "^1.0.1"
1778
+ inherits "^2.0.4"
1779
+ minimalistic-assert "^1.0.1"
1780
+ minimalistic-crypto-utils "^1.0.1"
1781
+
1782
+ emoji-regex@^7.0.1:
1783
+ version "7.0.3"
1784
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
1785
+ integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
1786
+
1787
+ emojis-list@^3.0.0:
1788
+ version "3.0.0"
1789
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
1790
+ integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
1791
+
1792
+ end-of-stream@^1.0.0, end-of-stream@^1.1.0:
1793
+ version "1.4.4"
1794
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
1795
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
1796
+ dependencies:
1797
+ once "^1.4.0"
1798
+
1799
+ enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0:
1800
+ version "4.5.0"
1801
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz#2f3cfd84dbe3b487f18f2db2ef1e064a571ca5ec"
1802
+ integrity sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==
1803
+ dependencies:
1804
+ graceful-fs "^4.1.2"
1805
+ memory-fs "^0.5.0"
1806
+ tapable "^1.0.0"
1807
+
1808
+ errno@^0.1.3, errno@~0.1.7:
1809
+ version "0.1.8"
1810
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
1811
+ integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
1812
+ dependencies:
1813
+ prr "~1.0.1"
1814
+
1815
+ escalade@^3.1.1:
1816
+ version "3.1.1"
1817
+ resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
1818
+ integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
1819
+
1820
+ escape-string-regexp@^1.0.5:
1821
+ version "1.0.5"
1822
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1823
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
1824
+
1825
+ eslint-scope@^4.0.3:
1826
+ version "4.0.3"
1827
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848"
1828
+ integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==
1829
+ dependencies:
1830
+ esrecurse "^4.1.0"
1831
+ estraverse "^4.1.1"
1832
+
1833
+ esrecurse@^4.1.0:
1834
+ version "4.3.0"
1835
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
1836
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
1837
+ dependencies:
1838
+ estraverse "^5.2.0"
1839
+
1840
+ estraverse@^4.1.1:
1841
+ version "4.3.0"
1842
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
1843
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
1844
+
1845
+ estraverse@^5.2.0:
1846
+ version "5.2.0"
1847
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
1848
+ integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
1849
+
1850
+ esutils@^2.0.2:
1851
+ version "2.0.3"
1852
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
1853
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
1854
+
1855
+ events@^3.0.0:
1856
+ version "3.3.0"
1857
+ resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
1858
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
1859
+
1860
+ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
1861
+ version "1.0.3"
1862
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
1863
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
1864
+ dependencies:
1865
+ md5.js "^1.3.4"
1866
+ safe-buffer "^5.1.1"
1867
+
1868
+ expand-brackets@^2.1.4:
1869
+ version "2.1.4"
1870
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
1871
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
1872
+ dependencies:
1873
+ debug "^2.3.3"
1874
+ define-property "^0.2.5"
1875
+ extend-shallow "^2.0.1"
1876
+ posix-character-classes "^0.1.0"
1877
+ regex-not "^1.0.0"
1878
+ snapdragon "^0.8.1"
1879
+ to-regex "^3.0.1"
1880
+
1881
+ expand-tilde@^2.0.0, expand-tilde@^2.0.2:
1882
+ version "2.0.2"
1883
+ resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502"
1884
+ integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=
1885
+ dependencies:
1886
+ homedir-polyfill "^1.0.1"
1887
+
1888
+ extend-shallow@^2.0.1:
1889
+ version "2.0.1"
1890
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
1891
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
1892
+ dependencies:
1893
+ is-extendable "^0.1.0"
1894
+
1895
+ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
1896
+ version "3.0.2"
1897
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
1898
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
1899
+ dependencies:
1900
+ assign-symbols "^1.0.0"
1901
+ is-extendable "^1.0.1"
1902
+
1903
+ extglob@^2.0.4:
1904
+ version "2.0.4"
1905
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
1906
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
1907
+ dependencies:
1908
+ array-unique "^0.3.2"
1909
+ define-property "^1.0.0"
1910
+ expand-brackets "^2.1.4"
1911
+ extend-shallow "^2.0.1"
1912
+ fragment-cache "^0.2.1"
1913
+ regex-not "^1.0.0"
1914
+ snapdragon "^0.8.1"
1915
+ to-regex "^3.0.1"
1916
+
1917
+ fast-deep-equal@^3.1.1:
1918
+ version "3.1.3"
1919
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
1920
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
1921
+
1922
+ fast-json-stable-stringify@^2.0.0:
1923
+ version "2.1.0"
1924
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
1925
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
1926
+
1927
+ figgy-pudding@^3.5.1:
1928
+ version "3.5.2"
1929
+ resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
1930
+ integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==
1931
+
1932
+ file-loader@^4.2.0:
1933
+ version "4.3.0"
1934
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af"
1935
+ integrity sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==
1936
+ dependencies:
1937
+ loader-utils "^1.2.3"
1938
+ schema-utils "^2.5.0"
1939
+
1940
+ file-uri-to-path@1.0.0:
1941
+ version "1.0.0"
1942
+ resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
1943
+ integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
1944
+
1945
+ fill-range@^4.0.0:
1946
+ version "4.0.0"
1947
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
1948
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
1949
+ dependencies:
1950
+ extend-shallow "^2.0.1"
1951
+ is-number "^3.0.0"
1952
+ repeat-string "^1.6.1"
1953
+ to-regex-range "^2.1.0"
1954
+
1955
+ fill-range@^7.0.1:
1956
+ version "7.0.1"
1957
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
1958
+ integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
1959
+ dependencies:
1960
+ to-regex-range "^5.0.1"
1961
+
1962
+ find-cache-dir@^2.1.0:
1963
+ version "2.1.0"
1964
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
1965
+ integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
1966
+ dependencies:
1967
+ commondir "^1.0.1"
1968
+ make-dir "^2.0.0"
1969
+ pkg-dir "^3.0.0"
1970
+
1971
+ find-cache-dir@^3.3.1:
1972
+ version "3.3.1"
1973
+ resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880"
1974
+ integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==
1975
+ dependencies:
1976
+ commondir "^1.0.1"
1977
+ make-dir "^3.0.2"
1978
+ pkg-dir "^4.1.0"
1979
+
1980
+ find-up@^3.0.0:
1981
+ version "3.0.0"
1982
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
1983
+ integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
1984
+ dependencies:
1985
+ locate-path "^3.0.0"
1986
+
1987
+ find-up@^4.0.0:
1988
+ version "4.1.0"
1989
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
1990
+ integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
1991
+ dependencies:
1992
+ locate-path "^5.0.0"
1993
+ path-exists "^4.0.0"
1994
+
1995
+ findup-sync@^3.0.0:
1996
+ version "3.0.0"
1997
+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
1998
+ integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==
1999
+ dependencies:
2000
+ detect-file "^1.0.0"
2001
+ is-glob "^4.0.0"
2002
+ micromatch "^3.0.4"
2003
+ resolve-dir "^1.0.1"
2004
+
2005
+ flush-write-stream@^1.0.0:
2006
+ version "1.1.1"
2007
+ resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
2008
+ integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==
2009
+ dependencies:
2010
+ inherits "^2.0.3"
2011
+ readable-stream "^2.3.6"
2012
+
2013
+ for-in@^1.0.2:
2014
+ version "1.0.2"
2015
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
2016
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
2017
+
2018
+ fragment-cache@^0.2.1:
2019
+ version "0.2.1"
2020
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
2021
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
2022
+ dependencies:
2023
+ map-cache "^0.2.2"
2024
+
2025
+ from2@^2.1.0:
2026
+ version "2.3.0"
2027
+ resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
2028
+ integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
2029
+ dependencies:
2030
+ inherits "^2.0.1"
2031
+ readable-stream "^2.0.0"
2032
+
2033
+ fs-write-stream-atomic@^1.0.8:
2034
+ version "1.0.10"
2035
+ resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9"
2036
+ integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=
2037
+ dependencies:
2038
+ graceful-fs "^4.1.2"
2039
+ iferr "^0.1.5"
2040
+ imurmurhash "^0.1.4"
2041
+ readable-stream "1 || 2"
2042
+
2043
+ fs.realpath@^1.0.0:
2044
+ version "1.0.0"
2045
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
2046
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
2047
+
2048
+ fsevents@^1.2.7:
2049
+ version "1.2.13"
2050
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
2051
+ integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
2052
+ dependencies:
2053
+ bindings "^1.5.0"
2054
+ nan "^2.12.1"
2055
+
2056
+ fsevents@~2.3.1:
2057
+ version "2.3.2"
2058
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
2059
+ integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
2060
+
2061
+ function-bind@^1.1.1:
2062
+ version "1.1.1"
2063
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
2064
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
2065
+
2066
+ gensync@^1.0.0-beta.2:
2067
+ version "1.0.0-beta.2"
2068
+ resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
2069
+ integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
2070
+
2071
+ get-caller-file@^2.0.1:
2072
+ version "2.0.5"
2073
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
2074
+ integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
2075
+
2076
+ get-intrinsic@^1.0.2:
2077
+ version "1.1.1"
2078
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6"
2079
+ integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==
2080
+ dependencies:
2081
+ function-bind "^1.1.1"
2082
+ has "^1.0.3"
2083
+ has-symbols "^1.0.1"
2084
+
2085
+ get-value@^2.0.3, get-value@^2.0.6:
2086
+ version "2.0.6"
2087
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
2088
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
2089
+
2090
+ glob-parent@^3.1.0:
2091
+ version "3.1.0"
2092
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
2093
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
2094
+ dependencies:
2095
+ is-glob "^3.1.0"
2096
+ path-dirname "^1.0.0"
2097
+
2098
+ glob-parent@~5.1.0:
2099
+ version "5.1.2"
2100
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
2101
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
2102
+ dependencies:
2103
+ is-glob "^4.0.1"
2104
+
2105
+ glob@^7.1.3, glob@^7.1.4:
2106
+ version "7.1.6"
2107
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
2108
+ integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
2109
+ dependencies:
2110
+ fs.realpath "^1.0.0"
2111
+ inflight "^1.0.4"
2112
+ inherits "2"
2113
+ minimatch "^3.0.4"
2114
+ once "^1.3.0"
2115
+ path-is-absolute "^1.0.0"
2116
+
2117
+ global-modules@^1.0.0:
2118
+ version "1.0.0"
2119
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
2120
+ integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
2121
+ dependencies:
2122
+ global-prefix "^1.0.1"
2123
+ is-windows "^1.0.1"
2124
+ resolve-dir "^1.0.0"
2125
+
2126
+ global-modules@^2.0.0:
2127
+ version "2.0.0"
2128
+ resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
2129
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
2130
+ dependencies:
2131
+ global-prefix "^3.0.0"
2132
+
2133
+ global-prefix@^1.0.1:
2134
+ version "1.0.2"
2135
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe"
2136
+ integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=
2137
+ dependencies:
2138
+ expand-tilde "^2.0.2"
2139
+ homedir-polyfill "^1.0.1"
2140
+ ini "^1.3.4"
2141
+ is-windows "^1.0.1"
2142
+ which "^1.2.14"
2143
+
2144
+ global-prefix@^3.0.0:
2145
+ version "3.0.0"
2146
+ resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
2147
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
2148
+ dependencies:
2149
+ ini "^1.3.5"
2150
+ kind-of "^6.0.2"
2151
+ which "^1.3.1"
2152
+
2153
+ globals@^11.1.0:
2154
+ version "11.12.0"
2155
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
2156
+ integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
2157
+
2158
+ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2:
2159
+ version "4.2.6"
2160
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
2161
+ integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
2162
+
2163
+ has-flag@^3.0.0:
2164
+ version "3.0.0"
2165
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
2166
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
2167
+
2168
+ has-symbols@^1.0.1:
2169
+ version "1.0.2"
2170
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
2171
+ integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
2172
+
2173
+ has-value@^0.3.1:
2174
+ version "0.3.1"
2175
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
2176
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
2177
+ dependencies:
2178
+ get-value "^2.0.3"
2179
+ has-values "^0.1.4"
2180
+ isobject "^2.0.0"
2181
+
2182
+ has-value@^1.0.0:
2183
+ version "1.0.0"
2184
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
2185
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
2186
+ dependencies:
2187
+ get-value "^2.0.6"
2188
+ has-values "^1.0.0"
2189
+ isobject "^3.0.0"
2190
+
2191
+ has-values@^0.1.4:
2192
+ version "0.1.4"
2193
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
2194
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
2195
+
2196
+ has-values@^1.0.0:
2197
+ version "1.0.0"
2198
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
2199
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
2200
+ dependencies:
2201
+ is-number "^3.0.0"
2202
+ kind-of "^4.0.0"
2203
+
2204
+ has@^1.0.3:
2205
+ version "1.0.3"
2206
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
2207
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
2208
+ dependencies:
2209
+ function-bind "^1.1.1"
2210
+
2211
+ hash-base@^3.0.0:
2212
+ version "3.1.0"
2213
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
2214
+ integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
2215
+ dependencies:
2216
+ inherits "^2.0.4"
2217
+ readable-stream "^3.6.0"
2218
+ safe-buffer "^5.2.0"
2219
+
2220
+ hash.js@^1.0.0, hash.js@^1.0.3:
2221
+ version "1.1.7"
2222
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
2223
+ integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
2224
+ dependencies:
2225
+ inherits "^2.0.3"
2226
+ minimalistic-assert "^1.0.1"
2227
+
2228
+ hmac-drbg@^1.0.1:
2229
+ version "1.0.1"
2230
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
2231
+ integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
2232
+ dependencies:
2233
+ hash.js "^1.0.3"
2234
+ minimalistic-assert "^1.0.0"
2235
+ minimalistic-crypto-utils "^1.0.1"
2236
+
2237
+ homedir-polyfill@^1.0.1:
2238
+ version "1.0.3"
2239
+ resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8"
2240
+ integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
2241
+ dependencies:
2242
+ parse-passwd "^1.0.0"
2243
+
2244
+ https-browserify@^1.0.0:
2245
+ version "1.0.0"
2246
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
2247
+ integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
2248
+
2249
+ ieee754@^1.1.4:
2250
+ version "1.2.1"
2251
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
2252
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
2253
+
2254
+ iferr@^0.1.5:
2255
+ version "0.1.5"
2256
+ resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
2257
+ integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
2258
+
2259
+ import-local@^2.0.0:
2260
+ version "2.0.0"
2261
+ resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d"
2262
+ integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==
2263
+ dependencies:
2264
+ pkg-dir "^3.0.0"
2265
+ resolve-cwd "^2.0.0"
2266
+
2267
+ imurmurhash@^0.1.4:
2268
+ version "0.1.4"
2269
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
2270
+ integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
2271
+
2272
+ infer-owner@^1.0.3:
2273
+ version "1.0.4"
2274
+ resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467"
2275
+ integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==
2276
+
2277
+ inflight@^1.0.4:
2278
+ version "1.0.6"
2279
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
2280
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
2281
+ dependencies:
2282
+ once "^1.3.0"
2283
+ wrappy "1"
2284
+
2285
+ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
2286
+ version "2.0.4"
2287
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
2288
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
2289
+
2290
+ inherits@2.0.1:
2291
+ version "2.0.1"
2292
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
2293
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
2294
+
2295
+ inherits@2.0.3:
2296
+ version "2.0.3"
2297
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
2298
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
2299
+
2300
+ ini@^1.3.4, ini@^1.3.5:
2301
+ version "1.3.8"
2302
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
2303
+ integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
2304
+
2305
+ interpret@^1.4.0:
2306
+ version "1.4.0"
2307
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e"
2308
+ integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==
2309
+
2310
+ is-accessor-descriptor@^0.1.6:
2311
+ version "0.1.6"
2312
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
2313
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
2314
+ dependencies:
2315
+ kind-of "^3.0.2"
2316
+
2317
+ is-accessor-descriptor@^1.0.0:
2318
+ version "1.0.0"
2319
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
2320
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
2321
+ dependencies:
2322
+ kind-of "^6.0.0"
2323
+
2324
+ is-binary-path@^1.0.0:
2325
+ version "1.0.1"
2326
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
2327
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
2328
+ dependencies:
2329
+ binary-extensions "^1.0.0"
2330
+
2331
+ is-binary-path@~2.1.0:
2332
+ version "2.1.0"
2333
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
2334
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
2335
+ dependencies:
2336
+ binary-extensions "^2.0.0"
2337
+
2338
+ is-buffer@^1.1.5:
2339
+ version "1.1.6"
2340
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
2341
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
2342
+
2343
+ is-core-module@^2.2.0:
2344
+ version "2.2.0"
2345
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
2346
+ integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
2347
+ dependencies:
2348
+ has "^1.0.3"
2349
+
2350
+ is-data-descriptor@^0.1.4:
2351
+ version "0.1.4"
2352
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
2353
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
2354
+ dependencies:
2355
+ kind-of "^3.0.2"
2356
+
2357
+ is-data-descriptor@^1.0.0:
2358
+ version "1.0.0"
2359
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
2360
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
2361
+ dependencies:
2362
+ kind-of "^6.0.0"
2363
+
2364
+ is-descriptor@^0.1.0:
2365
+ version "0.1.6"
2366
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
2367
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
2368
+ dependencies:
2369
+ is-accessor-descriptor "^0.1.6"
2370
+ is-data-descriptor "^0.1.4"
2371
+ kind-of "^5.0.0"
2372
+
2373
+ is-descriptor@^1.0.0, is-descriptor@^1.0.2:
2374
+ version "1.0.2"
2375
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
2376
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
2377
+ dependencies:
2378
+ is-accessor-descriptor "^1.0.0"
2379
+ is-data-descriptor "^1.0.0"
2380
+ kind-of "^6.0.2"
2381
+
2382
+ is-extendable@^0.1.0, is-extendable@^0.1.1:
2383
+ version "0.1.1"
2384
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
2385
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
2386
+
2387
+ is-extendable@^1.0.1:
2388
+ version "1.0.1"
2389
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
2390
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
2391
+ dependencies:
2392
+ is-plain-object "^2.0.4"
2393
+
2394
+ is-extglob@^2.1.0, is-extglob@^2.1.1:
2395
+ version "2.1.1"
2396
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
2397
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
2398
+
2399
+ is-fullwidth-code-point@^2.0.0:
2400
+ version "2.0.0"
2401
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
2402
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
2403
+
2404
+ is-glob@^3.1.0:
2405
+ version "3.1.0"
2406
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
2407
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
2408
+ dependencies:
2409
+ is-extglob "^2.1.0"
2410
+
2411
+ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
2412
+ version "4.0.1"
2413
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
2414
+ integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
2415
+ dependencies:
2416
+ is-extglob "^2.1.1"
2417
+
2418
+ is-number@^3.0.0:
2419
+ version "3.0.0"
2420
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
2421
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
2422
+ dependencies:
2423
+ kind-of "^3.0.2"
2424
+
2425
+ is-number@^7.0.0:
2426
+ version "7.0.0"
2427
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
2428
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
2429
+
2430
+ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
2431
+ version "2.0.4"
2432
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
2433
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
2434
+ dependencies:
2435
+ isobject "^3.0.1"
2436
+
2437
+ is-windows@^1.0.1, is-windows@^1.0.2:
2438
+ version "1.0.2"
2439
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
2440
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
2441
+
2442
+ is-wsl@^1.1.0:
2443
+ version "1.1.0"
2444
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
2445
+ integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
2446
+
2447
+ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
2448
+ version "1.0.0"
2449
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
2450
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
2451
+
2452
+ isexe@^2.0.0:
2453
+ version "2.0.0"
2454
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
2455
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
2456
+
2457
+ isobject@^2.0.0:
2458
+ version "2.1.0"
2459
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
2460
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
2461
+ dependencies:
2462
+ isarray "1.0.0"
2463
+
2464
+ isobject@^3.0.0, isobject@^3.0.1:
2465
+ version "3.0.1"
2466
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
2467
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
2468
+
2469
+ js-tokens@^4.0.0:
2470
+ version "4.0.0"
2471
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
2472
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
2473
+
2474
+ jsesc@^2.5.1:
2475
+ version "2.5.2"
2476
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
2477
+ integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
2478
+
2479
+ jsesc@~0.5.0:
2480
+ version "0.5.0"
2481
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
2482
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
2483
+
2484
+ json-parse-better-errors@^1.0.2:
2485
+ version "1.0.2"
2486
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
2487
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
2488
+
2489
+ json-schema-traverse@^0.4.1:
2490
+ version "0.4.1"
2491
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
2492
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
2493
+
2494
+ json5@^1.0.1:
2495
+ version "1.0.1"
2496
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
2497
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
2498
+ dependencies:
2499
+ minimist "^1.2.0"
2500
+
2501
+ json5@^2.1.2:
2502
+ version "2.2.0"
2503
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3"
2504
+ integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==
2505
+ dependencies:
2506
+ minimist "^1.2.5"
2507
+
2508
+ kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
2509
+ version "3.2.2"
2510
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
2511
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
2512
+ dependencies:
2513
+ is-buffer "^1.1.5"
2514
+
2515
+ kind-of@^4.0.0:
2516
+ version "4.0.0"
2517
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
2518
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
2519
+ dependencies:
2520
+ is-buffer "^1.1.5"
2521
+
2522
+ kind-of@^5.0.0:
2523
+ version "5.1.0"
2524
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
2525
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
2526
+
2527
+ kind-of@^6.0.0, kind-of@^6.0.2:
2528
+ version "6.0.3"
2529
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
2530
+ integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
2531
+
2532
+ loader-runner@^2.4.0:
2533
+ version "2.4.0"
2534
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357"
2535
+ integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==
2536
+
2537
+ loader-utils@^1.2.3, loader-utils@^1.4.0:
2538
+ version "1.4.0"
2539
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
2540
+ integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
2541
+ dependencies:
2542
+ big.js "^5.2.2"
2543
+ emojis-list "^3.0.0"
2544
+ json5 "^1.0.1"
2545
+
2546
+ locate-path@^3.0.0:
2547
+ version "3.0.0"
2548
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
2549
+ integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
2550
+ dependencies:
2551
+ p-locate "^3.0.0"
2552
+ path-exists "^3.0.0"
2553
+
2554
+ locate-path@^5.0.0:
2555
+ version "5.0.0"
2556
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
2557
+ integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
2558
+ dependencies:
2559
+ p-locate "^4.1.0"
2560
+
2561
+ lodash.debounce@^4.0.8:
2562
+ version "4.0.8"
2563
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
2564
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
2565
+
2566
+ lodash@^4.17.19:
2567
+ version "4.17.21"
2568
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
2569
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
2570
+
2571
+ lru-cache@^5.1.1:
2572
+ version "5.1.1"
2573
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
2574
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
2575
+ dependencies:
2576
+ yallist "^3.0.2"
2577
+
2578
+ make-dir@^2.0.0:
2579
+ version "2.1.0"
2580
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
2581
+ integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
2582
+ dependencies:
2583
+ pify "^4.0.1"
2584
+ semver "^5.6.0"
2585
+
2586
+ make-dir@^3.0.2, make-dir@^3.1.0:
2587
+ version "3.1.0"
2588
+ resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
2589
+ integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
2590
+ dependencies:
2591
+ semver "^6.0.0"
2592
+
2593
+ map-cache@^0.2.2:
2594
+ version "0.2.2"
2595
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
2596
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
2597
+
2598
+ map-visit@^1.0.0:
2599
+ version "1.0.0"
2600
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
2601
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
2602
+ dependencies:
2603
+ object-visit "^1.0.0"
2604
+
2605
+ md5.js@^1.3.4:
2606
+ version "1.3.5"
2607
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
2608
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
2609
+ dependencies:
2610
+ hash-base "^3.0.0"
2611
+ inherits "^2.0.1"
2612
+ safe-buffer "^5.1.2"
2613
+
2614
+ memory-fs@^0.4.1:
2615
+ version "0.4.1"
2616
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
2617
+ integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=
2618
+ dependencies:
2619
+ errno "^0.1.3"
2620
+ readable-stream "^2.0.1"
2621
+
2622
+ memory-fs@^0.5.0:
2623
+ version "0.5.0"
2624
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c"
2625
+ integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==
2626
+ dependencies:
2627
+ errno "^0.1.3"
2628
+ readable-stream "^2.0.1"
2629
+
2630
+ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
2631
+ version "3.1.10"
2632
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
2633
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
2634
+ dependencies:
2635
+ arr-diff "^4.0.0"
2636
+ array-unique "^0.3.2"
2637
+ braces "^2.3.1"
2638
+ define-property "^2.0.2"
2639
+ extend-shallow "^3.0.2"
2640
+ extglob "^2.0.4"
2641
+ fragment-cache "^0.2.1"
2642
+ kind-of "^6.0.2"
2643
+ nanomatch "^1.2.9"
2644
+ object.pick "^1.3.0"
2645
+ regex-not "^1.0.0"
2646
+ snapdragon "^0.8.1"
2647
+ to-regex "^3.0.2"
2648
+
2649
+ miller-rabin@^4.0.0:
2650
+ version "4.0.1"
2651
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
2652
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
2653
+ dependencies:
2654
+ bn.js "^4.0.0"
2655
+ brorand "^1.0.1"
2656
+
2657
+ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
2658
+ version "1.0.1"
2659
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
2660
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
2661
+
2662
+ minimalistic-crypto-utils@^1.0.1:
2663
+ version "1.0.1"
2664
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
2665
+ integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
2666
+
2667
+ minimatch@^3.0.4:
2668
+ version "3.0.4"
2669
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
2670
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
2671
+ dependencies:
2672
+ brace-expansion "^1.1.7"
2673
+
2674
+ minimist@^1.2.0, minimist@^1.2.5:
2675
+ version "1.2.5"
2676
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
2677
+ integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
2678
+
2679
+ mississippi@^3.0.0:
2680
+ version "3.0.0"
2681
+ resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022"
2682
+ integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==
2683
+ dependencies:
2684
+ concat-stream "^1.5.0"
2685
+ duplexify "^3.4.2"
2686
+ end-of-stream "^1.1.0"
2687
+ flush-write-stream "^1.0.0"
2688
+ from2 "^2.1.0"
2689
+ parallel-transform "^1.1.0"
2690
+ pump "^3.0.0"
2691
+ pumpify "^1.3.3"
2692
+ stream-each "^1.1.0"
2693
+ through2 "^2.0.0"
2694
+
2695
+ mixin-deep@^1.2.0:
2696
+ version "1.3.2"
2697
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
2698
+ integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
2699
+ dependencies:
2700
+ for-in "^1.0.2"
2701
+ is-extendable "^1.0.1"
2702
+
2703
+ mkdirp@^0.5.1, mkdirp@^0.5.3:
2704
+ version "0.5.5"
2705
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
2706
+ integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
2707
+ dependencies:
2708
+ minimist "^1.2.5"
2709
+
2710
+ move-concurrently@^1.0.1:
2711
+ version "1.0.1"
2712
+ resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
2713
+ integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=
2714
+ dependencies:
2715
+ aproba "^1.1.1"
2716
+ copy-concurrently "^1.0.0"
2717
+ fs-write-stream-atomic "^1.0.8"
2718
+ mkdirp "^0.5.1"
2719
+ rimraf "^2.5.4"
2720
+ run-queue "^1.0.3"
2721
+
2722
+ ms@2.0.0:
2723
+ version "2.0.0"
2724
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
2725
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
2726
+
2727
+ ms@2.1.2:
2728
+ version "2.1.2"
2729
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
2730
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
2731
+
2732
+ nan@^2.12.1:
2733
+ version "2.14.2"
2734
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
2735
+ integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
2736
+
2737
+ nanomatch@^1.2.9:
2738
+ version "1.2.13"
2739
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
2740
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
2741
+ dependencies:
2742
+ arr-diff "^4.0.0"
2743
+ array-unique "^0.3.2"
2744
+ define-property "^2.0.2"
2745
+ extend-shallow "^3.0.2"
2746
+ fragment-cache "^0.2.1"
2747
+ is-windows "^1.0.2"
2748
+ kind-of "^6.0.2"
2749
+ object.pick "^1.3.0"
2750
+ regex-not "^1.0.0"
2751
+ snapdragon "^0.8.1"
2752
+ to-regex "^3.0.1"
2753
+
2754
+ neo-async@^2.5.0, neo-async@^2.6.1:
2755
+ version "2.6.2"
2756
+ resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
2757
+ integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
2758
+
2759
+ nice-try@^1.0.4:
2760
+ version "1.0.5"
2761
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
2762
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
2763
+
2764
+ node-libs-browser@^2.2.1:
2765
+ version "2.2.1"
2766
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
2767
+ integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==
2768
+ dependencies:
2769
+ assert "^1.1.1"
2770
+ browserify-zlib "^0.2.0"
2771
+ buffer "^4.3.0"
2772
+ console-browserify "^1.1.0"
2773
+ constants-browserify "^1.0.0"
2774
+ crypto-browserify "^3.11.0"
2775
+ domain-browser "^1.1.1"
2776
+ events "^3.0.0"
2777
+ https-browserify "^1.0.0"
2778
+ os-browserify "^0.3.0"
2779
+ path-browserify "0.0.1"
2780
+ process "^0.11.10"
2781
+ punycode "^1.2.4"
2782
+ querystring-es3 "^0.2.0"
2783
+ readable-stream "^2.3.3"
2784
+ stream-browserify "^2.0.1"
2785
+ stream-http "^2.7.2"
2786
+ string_decoder "^1.0.0"
2787
+ timers-browserify "^2.0.4"
2788
+ tty-browserify "0.0.0"
2789
+ url "^0.11.0"
2790
+ util "^0.11.0"
2791
+ vm-browserify "^1.0.1"
2792
+
2793
+ node-releases@^1.1.70:
2794
+ version "1.1.71"
2795
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
2796
+ integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==
2797
+
2798
+ normalize-path@^2.1.1:
2799
+ version "2.1.1"
2800
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
2801
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
2802
+ dependencies:
2803
+ remove-trailing-separator "^1.0.1"
2804
+
2805
+ normalize-path@^3.0.0, normalize-path@~3.0.0:
2806
+ version "3.0.0"
2807
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
2808
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
2809
+
2810
+ object-assign@^4.1.1:
2811
+ version "4.1.1"
2812
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
2813
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
2814
+
2815
+ object-copy@^0.1.0:
2816
+ version "0.1.0"
2817
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
2818
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
2819
+ dependencies:
2820
+ copy-descriptor "^0.1.0"
2821
+ define-property "^0.2.5"
2822
+ kind-of "^3.0.3"
2823
+
2824
+ object-keys@^1.0.12, object-keys@^1.1.1:
2825
+ version "1.1.1"
2826
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
2827
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
2828
+
2829
+ object-visit@^1.0.0:
2830
+ version "1.0.1"
2831
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
2832
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
2833
+ dependencies:
2834
+ isobject "^3.0.0"
2835
+
2836
+ object.assign@^4.1.0:
2837
+ version "4.1.2"
2838
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940"
2839
+ integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==
2840
+ dependencies:
2841
+ call-bind "^1.0.0"
2842
+ define-properties "^1.1.3"
2843
+ has-symbols "^1.0.1"
2844
+ object-keys "^1.1.1"
2845
+
2846
+ object.pick@^1.3.0:
2847
+ version "1.3.0"
2848
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
2849
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
2850
+ dependencies:
2851
+ isobject "^3.0.1"
2852
+
2853
+ once@^1.3.0, once@^1.3.1, once@^1.4.0:
2854
+ version "1.4.0"
2855
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
2856
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
2857
+ dependencies:
2858
+ wrappy "1"
2859
+
2860
+ os-browserify@^0.3.0:
2861
+ version "0.3.0"
2862
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
2863
+ integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
2864
+
2865
+ p-limit@^2.0.0, p-limit@^2.2.0:
2866
+ version "2.3.0"
2867
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
2868
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
2869
+ dependencies:
2870
+ p-try "^2.0.0"
2871
+
2872
+ p-locate@^3.0.0:
2873
+ version "3.0.0"
2874
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
2875
+ integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
2876
+ dependencies:
2877
+ p-limit "^2.0.0"
2878
+
2879
+ p-locate@^4.1.0:
2880
+ version "4.1.0"
2881
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
2882
+ integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
2883
+ dependencies:
2884
+ p-limit "^2.2.0"
2885
+
2886
+ p-try@^2.0.0:
2887
+ version "2.2.0"
2888
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
2889
+ integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
2890
+
2891
+ pako@~1.0.5:
2892
+ version "1.0.11"
2893
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
2894
+ integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
2895
+
2896
+ parallel-transform@^1.1.0:
2897
+ version "1.2.0"
2898
+ resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc"
2899
+ integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==
2900
+ dependencies:
2901
+ cyclist "^1.0.1"
2902
+ inherits "^2.0.3"
2903
+ readable-stream "^2.1.5"
2904
+
2905
+ parse-asn1@^5.0.0, parse-asn1@^5.1.5:
2906
+ version "5.1.6"
2907
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
2908
+ integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
2909
+ dependencies:
2910
+ asn1.js "^5.2.0"
2911
+ browserify-aes "^1.0.0"
2912
+ evp_bytestokey "^1.0.0"
2913
+ pbkdf2 "^3.0.3"
2914
+ safe-buffer "^5.1.1"
2915
+
2916
+ parse-passwd@^1.0.0:
2917
+ version "1.0.0"
2918
+ resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
2919
+ integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=
2920
+
2921
+ pascalcase@^0.1.1:
2922
+ version "0.1.1"
2923
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
2924
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
2925
+
2926
+ path-browserify@0.0.1:
2927
+ version "0.0.1"
2928
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
2929
+ integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
2930
+
2931
+ path-dirname@^1.0.0:
2932
+ version "1.0.2"
2933
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
2934
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
2935
+
2936
+ path-exists@^3.0.0:
2937
+ version "3.0.0"
2938
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
2939
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
2940
+
2941
+ path-exists@^4.0.0:
2942
+ version "4.0.0"
2943
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
2944
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
2945
+
2946
+ path-is-absolute@^1.0.0:
2947
+ version "1.0.1"
2948
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
2949
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
2950
+
2951
+ path-key@^2.0.1:
2952
+ version "2.0.1"
2953
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
2954
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
2955
+
2956
+ path-parse@^1.0.6:
2957
+ version "1.0.6"
2958
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
2959
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
2960
+
2961
+ pbkdf2@^3.0.3:
2962
+ version "3.1.1"
2963
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94"
2964
+ integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==
2965
+ dependencies:
2966
+ create-hash "^1.1.2"
2967
+ create-hmac "^1.1.4"
2968
+ ripemd160 "^2.0.1"
2969
+ safe-buffer "^5.0.1"
2970
+ sha.js "^2.4.8"
2971
+
2972
+ picomatch@^2.0.4, picomatch@^2.2.1:
2973
+ version "2.2.2"
2974
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
2975
+ integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
2976
+
2977
+ pify@^4.0.1:
2978
+ version "4.0.1"
2979
+ resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
2980
+ integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
2981
+
2982
+ pkg-dir@^3.0.0:
2983
+ version "3.0.0"
2984
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
2985
+ integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
2986
+ dependencies:
2987
+ find-up "^3.0.0"
2988
+
2989
+ pkg-dir@^4.1.0:
2990
+ version "4.2.0"
2991
+ resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
2992
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
2993
+ dependencies:
2994
+ find-up "^4.0.0"
2995
+
2996
+ posix-character-classes@^0.1.0:
2997
+ version "0.1.1"
2998
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
2999
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
3000
+
3001
+ process-nextick-args@~2.0.0:
3002
+ version "2.0.1"
3003
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
3004
+ integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
3005
+
3006
+ process@^0.11.10:
3007
+ version "0.11.10"
3008
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
3009
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
3010
+
3011
+ promise-inflight@^1.0.1:
3012
+ version "1.0.1"
3013
+ resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
3014
+ integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
3015
+
3016
+ prr@~1.0.1:
3017
+ version "1.0.1"
3018
+ resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
3019
+ integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
3020
+
3021
+ public-encrypt@^4.0.0:
3022
+ version "4.0.3"
3023
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
3024
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
3025
+ dependencies:
3026
+ bn.js "^4.1.0"
3027
+ browserify-rsa "^4.0.0"
3028
+ create-hash "^1.1.0"
3029
+ parse-asn1 "^5.0.0"
3030
+ randombytes "^2.0.1"
3031
+ safe-buffer "^5.1.2"
3032
+
3033
+ pump@^2.0.0:
3034
+ version "2.0.1"
3035
+ resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
3036
+ integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
3037
+ dependencies:
3038
+ end-of-stream "^1.1.0"
3039
+ once "^1.3.1"
3040
+
3041
+ pump@^3.0.0:
3042
+ version "3.0.0"
3043
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
3044
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
3045
+ dependencies:
3046
+ end-of-stream "^1.1.0"
3047
+ once "^1.3.1"
3048
+
3049
+ pumpify@^1.3.3:
3050
+ version "1.5.1"
3051
+ resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
3052
+ integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
3053
+ dependencies:
3054
+ duplexify "^3.6.0"
3055
+ inherits "^2.0.3"
3056
+ pump "^2.0.0"
3057
+
3058
+ punycode@1.3.2:
3059
+ version "1.3.2"
3060
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
3061
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
3062
+
3063
+ punycode@^1.2.4:
3064
+ version "1.4.1"
3065
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
3066
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
3067
+
3068
+ punycode@^2.1.0:
3069
+ version "2.1.1"
3070
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
3071
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
3072
+
3073
+ querystring-es3@^0.2.0:
3074
+ version "0.2.1"
3075
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
3076
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
3077
+
3078
+ querystring@0.2.0:
3079
+ version "0.2.0"
3080
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
3081
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
3082
+
3083
+ randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
3084
+ version "2.1.0"
3085
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
3086
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
3087
+ dependencies:
3088
+ safe-buffer "^5.1.0"
3089
+
3090
+ randomfill@^1.0.3:
3091
+ version "1.0.4"
3092
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
3093
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
3094
+ dependencies:
3095
+ randombytes "^2.0.5"
3096
+ safe-buffer "^5.1.0"
3097
+
3098
+ "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
3099
+ version "2.3.7"
3100
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
3101
+ integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
3102
+ dependencies:
3103
+ core-util-is "~1.0.0"
3104
+ inherits "~2.0.3"
3105
+ isarray "~1.0.0"
3106
+ process-nextick-args "~2.0.0"
3107
+ safe-buffer "~5.1.1"
3108
+ string_decoder "~1.1.1"
3109
+ util-deprecate "~1.0.1"
3110
+
3111
+ readable-stream@^3.6.0:
3112
+ version "3.6.0"
3113
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
3114
+ integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
3115
+ dependencies:
3116
+ inherits "^2.0.3"
3117
+ string_decoder "^1.1.1"
3118
+ util-deprecate "^1.0.1"
3119
+
3120
+ readdirp@^2.2.1:
3121
+ version "2.2.1"
3122
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
3123
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
3124
+ dependencies:
3125
+ graceful-fs "^4.1.11"
3126
+ micromatch "^3.1.10"
3127
+ readable-stream "^2.0.2"
3128
+
3129
+ readdirp@~3.5.0:
3130
+ version "3.5.0"
3131
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e"
3132
+ integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==
3133
+ dependencies:
3134
+ picomatch "^2.2.1"
3135
+
3136
+ regenerate-unicode-properties@^8.2.0:
3137
+ version "8.2.0"
3138
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
3139
+ integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==
3140
+ dependencies:
3141
+ regenerate "^1.4.0"
3142
+
3143
+ regenerate@^1.4.0:
3144
+ version "1.4.2"
3145
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
3146
+ integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
3147
+
3148
+ regenerator-runtime@^0.11.0:
3149
+ version "0.11.1"
3150
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
3151
+ integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
3152
+
3153
+ regenerator-runtime@^0.13.4:
3154
+ version "0.13.7"
3155
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
3156
+ integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
3157
+
3158
+ regenerator-transform@^0.14.2:
3159
+ version "0.14.5"
3160
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4"
3161
+ integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==
3162
+ dependencies:
3163
+ "@babel/runtime" "^7.8.4"
3164
+
3165
+ regex-not@^1.0.0, regex-not@^1.0.2:
3166
+ version "1.0.2"
3167
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
3168
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
3169
+ dependencies:
3170
+ extend-shallow "^3.0.2"
3171
+ safe-regex "^1.1.0"
3172
+
3173
+ regexpu-core@^4.7.1:
3174
+ version "4.7.1"
3175
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6"
3176
+ integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==
3177
+ dependencies:
3178
+ regenerate "^1.4.0"
3179
+ regenerate-unicode-properties "^8.2.0"
3180
+ regjsgen "^0.5.1"
3181
+ regjsparser "^0.6.4"
3182
+ unicode-match-property-ecmascript "^1.0.4"
3183
+ unicode-match-property-value-ecmascript "^1.2.0"
3184
+
3185
+ regjsgen@^0.5.1:
3186
+ version "0.5.2"
3187
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733"
3188
+ integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==
3189
+
3190
+ regjsparser@^0.6.4:
3191
+ version "0.6.9"
3192
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.9.tgz#b489eef7c9a2ce43727627011429cf833a7183e6"
3193
+ integrity sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==
3194
+ dependencies:
3195
+ jsesc "~0.5.0"
3196
+
3197
+ remove-trailing-separator@^1.0.1:
3198
+ version "1.1.0"
3199
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
3200
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
3201
+
3202
+ repeat-element@^1.1.2:
3203
+ version "1.1.3"
3204
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
3205
+ integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
3206
+
3207
+ repeat-string@^1.6.1:
3208
+ version "1.6.1"
3209
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
3210
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
3211
+
3212
+ require-directory@^2.1.1:
3213
+ version "2.1.1"
3214
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
3215
+ integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
3216
+
3217
+ require-main-filename@^2.0.0:
3218
+ version "2.0.0"
3219
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
3220
+ integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
3221
+
3222
+ resolve-cwd@^2.0.0:
3223
+ version "2.0.0"
3224
+ resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
3225
+ integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
3226
+ dependencies:
3227
+ resolve-from "^3.0.0"
3228
+
3229
+ resolve-dir@^1.0.0, resolve-dir@^1.0.1:
3230
+ version "1.0.1"
3231
+ resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43"
3232
+ integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=
3233
+ dependencies:
3234
+ expand-tilde "^2.0.0"
3235
+ global-modules "^1.0.0"
3236
+
3237
+ resolve-from@^3.0.0:
3238
+ version "3.0.0"
3239
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
3240
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
3241
+
3242
+ resolve-url@^0.2.1:
3243
+ version "0.2.1"
3244
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
3245
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
3246
+
3247
+ resolve@^1.14.2:
3248
+ version "1.20.0"
3249
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
3250
+ integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
3251
+ dependencies:
3252
+ is-core-module "^2.2.0"
3253
+ path-parse "^1.0.6"
3254
+
3255
+ ret@~0.1.10:
3256
+ version "0.1.15"
3257
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
3258
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
3259
+
3260
+ rimraf@^2.5.4, rimraf@^2.6.3:
3261
+ version "2.7.1"
3262
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
3263
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
3264
+ dependencies:
3265
+ glob "^7.1.3"
3266
+
3267
+ ripemd160@^2.0.0, ripemd160@^2.0.1:
3268
+ version "2.0.2"
3269
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
3270
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
3271
+ dependencies:
3272
+ hash-base "^3.0.0"
3273
+ inherits "^2.0.1"
3274
+
3275
+ run-queue@^1.0.0, run-queue@^1.0.3:
3276
+ version "1.0.3"
3277
+ resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47"
3278
+ integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=
3279
+ dependencies:
3280
+ aproba "^1.1.1"
3281
+
3282
+ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0:
3283
+ version "5.2.1"
3284
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
3285
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
3286
+
3287
+ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
3288
+ version "5.1.2"
3289
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
3290
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
3291
+
3292
+ safe-regex@^1.1.0:
3293
+ version "1.1.0"
3294
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
3295
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
3296
+ dependencies:
3297
+ ret "~0.1.10"
3298
+
3299
+ safer-buffer@^2.1.0:
3300
+ version "2.1.2"
3301
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
3302
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
3303
+
3304
+ schema-utils@^1.0.0:
3305
+ version "1.0.0"
3306
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
3307
+ integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==
3308
+ dependencies:
3309
+ ajv "^6.1.0"
3310
+ ajv-errors "^1.0.0"
3311
+ ajv-keywords "^3.1.0"
3312
+
3313
+ schema-utils@^2.5.0, schema-utils@^2.6.5:
3314
+ version "2.7.1"
3315
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
3316
+ integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
3317
+ dependencies:
3318
+ "@types/json-schema" "^7.0.5"
3319
+ ajv "^6.12.4"
3320
+ ajv-keywords "^3.5.2"
3321
+
3322
+ semver@7.0.0:
3323
+ version "7.0.0"
3324
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
3325
+ integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
3326
+
3327
+ semver@^5.5.0, semver@^5.6.0:
3328
+ version "5.7.1"
3329
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
3330
+ integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
3331
+
3332
+ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
3333
+ version "6.3.0"
3334
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
3335
+ integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
3336
+
3337
+ serialize-javascript@^4.0.0:
3338
+ version "4.0.0"
3339
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
3340
+ integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
3341
+ dependencies:
3342
+ randombytes "^2.1.0"
3343
+
3344
+ set-blocking@^2.0.0:
3345
+ version "2.0.0"
3346
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
3347
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
3348
+
3349
+ set-value@^2.0.0, set-value@^2.0.1:
3350
+ version "2.0.1"
3351
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
3352
+ integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
3353
+ dependencies:
3354
+ extend-shallow "^2.0.1"
3355
+ is-extendable "^0.1.1"
3356
+ is-plain-object "^2.0.3"
3357
+ split-string "^3.0.1"
3358
+
3359
+ setimmediate@^1.0.4:
3360
+ version "1.0.5"
3361
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
3362
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
3363
+
3364
+ sha.js@^2.4.0, sha.js@^2.4.8:
3365
+ version "2.4.11"
3366
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
3367
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
3368
+ dependencies:
3369
+ inherits "^2.0.1"
3370
+ safe-buffer "^5.0.1"
3371
+
3372
+ shebang-command@^1.2.0:
3373
+ version "1.2.0"
3374
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
3375
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
3376
+ dependencies:
3377
+ shebang-regex "^1.0.0"
3378
+
3379
+ shebang-regex@^1.0.0:
3380
+ version "1.0.0"
3381
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
3382
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
3383
+
3384
+ snapdragon-node@^2.0.1:
3385
+ version "2.1.1"
3386
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
3387
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
3388
+ dependencies:
3389
+ define-property "^1.0.0"
3390
+ isobject "^3.0.0"
3391
+ snapdragon-util "^3.0.1"
3392
+
3393
+ snapdragon-util@^3.0.1:
3394
+ version "3.0.1"
3395
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
3396
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
3397
+ dependencies:
3398
+ kind-of "^3.2.0"
3399
+
3400
+ snapdragon@^0.8.1:
3401
+ version "0.8.2"
3402
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
3403
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
3404
+ dependencies:
3405
+ base "^0.11.1"
3406
+ debug "^2.2.0"
3407
+ define-property "^0.2.5"
3408
+ extend-shallow "^2.0.1"
3409
+ map-cache "^0.2.2"
3410
+ source-map "^0.5.6"
3411
+ source-map-resolve "^0.5.0"
3412
+ use "^3.1.0"
3413
+
3414
+ source-list-map@^2.0.0:
3415
+ version "2.0.1"
3416
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
3417
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
3418
+
3419
+ source-map-resolve@^0.5.0:
3420
+ version "0.5.3"
3421
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
3422
+ integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
3423
+ dependencies:
3424
+ atob "^2.1.2"
3425
+ decode-uri-component "^0.2.0"
3426
+ resolve-url "^0.2.1"
3427
+ source-map-url "^0.4.0"
3428
+ urix "^0.1.0"
3429
+
3430
+ source-map-support@~0.5.12:
3431
+ version "0.5.19"
3432
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
3433
+ integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
3434
+ dependencies:
3435
+ buffer-from "^1.0.0"
3436
+ source-map "^0.6.0"
3437
+
3438
+ source-map-url@^0.4.0:
3439
+ version "0.4.1"
3440
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
3441
+ integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
3442
+
3443
+ source-map@^0.5.0, source-map@^0.5.6:
3444
+ version "0.5.7"
3445
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
3446
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
3447
+
3448
+ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
3449
+ version "0.6.1"
3450
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
3451
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
3452
+
3453
+ split-string@^3.0.1, split-string@^3.0.2:
3454
+ version "3.1.0"
3455
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
3456
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
3457
+ dependencies:
3458
+ extend-shallow "^3.0.0"
3459
+
3460
+ ssri@^6.0.1:
3461
+ version "6.0.1"
3462
+ resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8"
3463
+ integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==
3464
+ dependencies:
3465
+ figgy-pudding "^3.5.1"
3466
+
3467
+ static-extend@^0.1.1:
3468
+ version "0.1.2"
3469
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
3470
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
3471
+ dependencies:
3472
+ define-property "^0.2.5"
3473
+ object-copy "^0.1.0"
3474
+
3475
+ stream-browserify@^2.0.1:
3476
+ version "2.0.2"
3477
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
3478
+ integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
3479
+ dependencies:
3480
+ inherits "~2.0.1"
3481
+ readable-stream "^2.0.2"
3482
+
3483
+ stream-each@^1.1.0:
3484
+ version "1.2.3"
3485
+ resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae"
3486
+ integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==
3487
+ dependencies:
3488
+ end-of-stream "^1.1.0"
3489
+ stream-shift "^1.0.0"
3490
+
3491
+ stream-http@^2.7.2:
3492
+ version "2.8.3"
3493
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
3494
+ integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
3495
+ dependencies:
3496
+ builtin-status-codes "^3.0.0"
3497
+ inherits "^2.0.1"
3498
+ readable-stream "^2.3.6"
3499
+ to-arraybuffer "^1.0.0"
3500
+ xtend "^4.0.0"
3501
+
3502
+ stream-shift@^1.0.0:
3503
+ version "1.0.1"
3504
+ resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d"
3505
+ integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==
3506
+
3507
+ string-width@^3.0.0, string-width@^3.1.0:
3508
+ version "3.1.0"
3509
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
3510
+ integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
3511
+ dependencies:
3512
+ emoji-regex "^7.0.1"
3513
+ is-fullwidth-code-point "^2.0.0"
3514
+ strip-ansi "^5.1.0"
3515
+
3516
+ string_decoder@^1.0.0, string_decoder@^1.1.1:
3517
+ version "1.3.0"
3518
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
3519
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
3520
+ dependencies:
3521
+ safe-buffer "~5.2.0"
3522
+
3523
+ string_decoder@~1.1.1:
3524
+ version "1.1.1"
3525
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
3526
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
3527
+ dependencies:
3528
+ safe-buffer "~5.1.0"
3529
+
3530
+ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
3531
+ version "5.2.0"
3532
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
3533
+ integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
3534
+ dependencies:
3535
+ ansi-regex "^4.1.0"
3536
+
3537
+ supports-color@^5.3.0:
3538
+ version "5.5.0"
3539
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
3540
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
3541
+ dependencies:
3542
+ has-flag "^3.0.0"
3543
+
3544
+ supports-color@^6.1.0:
3545
+ version "6.1.0"
3546
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
3547
+ integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
3548
+ dependencies:
3549
+ has-flag "^3.0.0"
3550
+
3551
+ tapable@^1.0.0, tapable@^1.1.3:
3552
+ version "1.1.3"
3553
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
3554
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
3555
+
3556
+ terser-webpack-plugin@^1.4.3:
3557
+ version "1.4.5"
3558
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b"
3559
+ integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==
3560
+ dependencies:
3561
+ cacache "^12.0.2"
3562
+ find-cache-dir "^2.1.0"
3563
+ is-wsl "^1.1.0"
3564
+ schema-utils "^1.0.0"
3565
+ serialize-javascript "^4.0.0"
3566
+ source-map "^0.6.1"
3567
+ terser "^4.1.2"
3568
+ webpack-sources "^1.4.0"
3569
+ worker-farm "^1.7.0"
3570
+
3571
+ terser@^4.1.2:
3572
+ version "4.8.0"
3573
+ resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17"
3574
+ integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==
3575
+ dependencies:
3576
+ commander "^2.20.0"
3577
+ source-map "~0.6.1"
3578
+ source-map-support "~0.5.12"
3579
+
3580
+ through2@^2.0.0:
3581
+ version "2.0.5"
3582
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
3583
+ integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
3584
+ dependencies:
3585
+ readable-stream "~2.3.6"
3586
+ xtend "~4.0.1"
3587
+
3588
+ timers-browserify@^2.0.4:
3589
+ version "2.0.12"
3590
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee"
3591
+ integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==
3592
+ dependencies:
3593
+ setimmediate "^1.0.4"
3594
+
3595
+ to-arraybuffer@^1.0.0:
3596
+ version "1.0.1"
3597
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
3598
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
3599
+
3600
+ to-fast-properties@^2.0.0:
3601
+ version "2.0.0"
3602
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
3603
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
3604
+
3605
+ to-object-path@^0.3.0:
3606
+ version "0.3.0"
3607
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
3608
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
3609
+ dependencies:
3610
+ kind-of "^3.0.2"
3611
+
3612
+ to-regex-range@^2.1.0:
3613
+ version "2.1.1"
3614
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
3615
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
3616
+ dependencies:
3617
+ is-number "^3.0.0"
3618
+ repeat-string "^1.6.1"
3619
+
3620
+ to-regex-range@^5.0.1:
3621
+ version "5.0.1"
3622
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
3623
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
3624
+ dependencies:
3625
+ is-number "^7.0.0"
3626
+
3627
+ to-regex@^3.0.1, to-regex@^3.0.2:
3628
+ version "3.0.2"
3629
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
3630
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
3631
+ dependencies:
3632
+ define-property "^2.0.2"
3633
+ extend-shallow "^3.0.2"
3634
+ regex-not "^1.0.2"
3635
+ safe-regex "^1.1.0"
3636
+
3637
+ tslib@^1.9.0:
3638
+ version "1.14.1"
3639
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
3640
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
3641
+
3642
+ tty-browserify@0.0.0:
3643
+ version "0.0.0"
3644
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
3645
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
3646
+
3647
+ typedarray@^0.0.6:
3648
+ version "0.0.6"
3649
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
3650
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
3651
+
3652
+ unicode-canonical-property-names-ecmascript@^1.0.4:
3653
+ version "1.0.4"
3654
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
3655
+ integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
3656
+
3657
+ unicode-match-property-ecmascript@^1.0.4:
3658
+ version "1.0.4"
3659
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
3660
+ integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
3661
+ dependencies:
3662
+ unicode-canonical-property-names-ecmascript "^1.0.4"
3663
+ unicode-property-aliases-ecmascript "^1.0.4"
3664
+
3665
+ unicode-match-property-value-ecmascript@^1.2.0:
3666
+ version "1.2.0"
3667
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531"
3668
+ integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==
3669
+
3670
+ unicode-property-aliases-ecmascript@^1.0.4:
3671
+ version "1.1.0"
3672
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
3673
+ integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
3674
+
3675
+ union-value@^1.0.0:
3676
+ version "1.0.1"
3677
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
3678
+ integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
3679
+ dependencies:
3680
+ arr-union "^3.1.0"
3681
+ get-value "^2.0.6"
3682
+ is-extendable "^0.1.1"
3683
+ set-value "^2.0.1"
3684
+
3685
+ unique-filename@^1.1.1:
3686
+ version "1.1.1"
3687
+ resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230"
3688
+ integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==
3689
+ dependencies:
3690
+ unique-slug "^2.0.0"
3691
+
3692
+ unique-slug@^2.0.0:
3693
+ version "2.0.2"
3694
+ resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c"
3695
+ integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==
3696
+ dependencies:
3697
+ imurmurhash "^0.1.4"
3698
+
3699
+ unset-value@^1.0.0:
3700
+ version "1.0.0"
3701
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
3702
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
3703
+ dependencies:
3704
+ has-value "^0.3.1"
3705
+ isobject "^3.0.0"
3706
+
3707
+ upath@^1.1.1:
3708
+ version "1.2.0"
3709
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
3710
+ integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
3711
+
3712
+ uri-js@^4.2.2:
3713
+ version "4.4.1"
3714
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
3715
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
3716
+ dependencies:
3717
+ punycode "^2.1.0"
3718
+
3719
+ urix@^0.1.0:
3720
+ version "0.1.0"
3721
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
3722
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
3723
+
3724
+ url@^0.11.0:
3725
+ version "0.11.0"
3726
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
3727
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
3728
+ dependencies:
3729
+ punycode "1.3.2"
3730
+ querystring "0.2.0"
3731
+
3732
+ use@^3.1.0:
3733
+ version "3.1.1"
3734
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
3735
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
3736
+
3737
+ util-deprecate@^1.0.1, util-deprecate@~1.0.1:
3738
+ version "1.0.2"
3739
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
3740
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
3741
+
3742
+ util@0.10.3:
3743
+ version "0.10.3"
3744
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
3745
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
3746
+ dependencies:
3747
+ inherits "2.0.1"
3748
+
3749
+ util@^0.11.0:
3750
+ version "0.11.1"
3751
+ resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61"
3752
+ integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==
3753
+ dependencies:
3754
+ inherits "2.0.3"
3755
+
3756
+ v8-compile-cache@^2.1.1:
3757
+ version "2.3.0"
3758
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
3759
+ integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
3760
+
3761
+ vm-browserify@^1.0.1:
3762
+ version "1.1.2"
3763
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
3764
+ integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
3765
+
3766
+ watchpack-chokidar2@^2.0.1:
3767
+ version "2.0.1"
3768
+ resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz#38500072ee6ece66f3769936950ea1771be1c957"
3769
+ integrity sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==
3770
+ dependencies:
3771
+ chokidar "^2.1.8"
3772
+
3773
+ watchpack@^1.7.4:
3774
+ version "1.7.5"
3775
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.5.tgz#1267e6c55e0b9b5be44c2023aed5437a2c26c453"
3776
+ integrity sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==
3777
+ dependencies:
3778
+ graceful-fs "^4.1.2"
3779
+ neo-async "^2.5.0"
3780
+ optionalDependencies:
3781
+ chokidar "^3.4.1"
3782
+ watchpack-chokidar2 "^2.0.1"
3783
+
3784
+ webpack-cli@^3.1.2:
3785
+ version "3.3.12"
3786
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.12.tgz#94e9ada081453cd0aa609c99e500012fd3ad2d4a"
3787
+ integrity sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==
3788
+ dependencies:
3789
+ chalk "^2.4.2"
3790
+ cross-spawn "^6.0.5"
3791
+ enhanced-resolve "^4.1.1"
3792
+ findup-sync "^3.0.0"
3793
+ global-modules "^2.0.0"
3794
+ import-local "^2.0.0"
3795
+ interpret "^1.4.0"
3796
+ loader-utils "^1.4.0"
3797
+ supports-color "^6.1.0"
3798
+ v8-compile-cache "^2.1.1"
3799
+ yargs "^13.3.2"
3800
+
3801
+ webpack-sources@^1.4.0, webpack-sources@^1.4.1:
3802
+ version "1.4.3"
3803
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
3804
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
3805
+ dependencies:
3806
+ source-list-map "^2.0.0"
3807
+ source-map "~0.6.1"
3808
+
3809
+ webpack@^4.42.1:
3810
+ version "4.46.0"
3811
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.46.0.tgz#bf9b4404ea20a073605e0a011d188d77cb6ad542"
3812
+ integrity sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==
3813
+ dependencies:
3814
+ "@webassemblyjs/ast" "1.9.0"
3815
+ "@webassemblyjs/helper-module-context" "1.9.0"
3816
+ "@webassemblyjs/wasm-edit" "1.9.0"
3817
+ "@webassemblyjs/wasm-parser" "1.9.0"
3818
+ acorn "^6.4.1"
3819
+ ajv "^6.10.2"
3820
+ ajv-keywords "^3.4.1"
3821
+ chrome-trace-event "^1.0.2"
3822
+ enhanced-resolve "^4.5.0"
3823
+ eslint-scope "^4.0.3"
3824
+ json-parse-better-errors "^1.0.2"
3825
+ loader-runner "^2.4.0"
3826
+ loader-utils "^1.2.3"
3827
+ memory-fs "^0.4.1"
3828
+ micromatch "^3.1.10"
3829
+ mkdirp "^0.5.3"
3830
+ neo-async "^2.6.1"
3831
+ node-libs-browser "^2.2.1"
3832
+ schema-utils "^1.0.0"
3833
+ tapable "^1.1.3"
3834
+ terser-webpack-plugin "^1.4.3"
3835
+ watchpack "^1.7.4"
3836
+ webpack-sources "^1.4.1"
3837
+
3838
+ which-module@^2.0.0:
3839
+ version "2.0.0"
3840
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
3841
+ integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
3842
+
3843
+ which@^1.2.14, which@^1.2.9, which@^1.3.1:
3844
+ version "1.3.1"
3845
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
3846
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
3847
+ dependencies:
3848
+ isexe "^2.0.0"
3849
+
3850
+ worker-farm@^1.7.0:
3851
+ version "1.7.0"
3852
+ resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8"
3853
+ integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==
3854
+ dependencies:
3855
+ errno "~0.1.7"
3856
+
3857
+ wrap-ansi@^5.1.0:
3858
+ version "5.1.0"
3859
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
3860
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
3861
+ dependencies:
3862
+ ansi-styles "^3.2.0"
3863
+ string-width "^3.0.0"
3864
+ strip-ansi "^5.0.0"
3865
+
3866
+ wrappy@1:
3867
+ version "1.0.2"
3868
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
3869
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
3870
+
3871
+ xtend@^4.0.0, xtend@~4.0.1:
3872
+ version "4.0.2"
3873
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
3874
+ integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
3875
+
3876
+ y18n@^4.0.0:
3877
+ version "4.0.1"
3878
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
3879
+ integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
3880
+
3881
+ yallist@^3.0.2:
3882
+ version "3.1.1"
3883
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
3884
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
3885
+
3886
+ yargs-parser@^13.1.2:
3887
+ version "13.1.2"
3888
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
3889
+ integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==
3890
+ dependencies:
3891
+ camelcase "^5.0.0"
3892
+ decamelize "^1.2.0"
3893
+
3894
+ yargs@^13.3.2:
3895
+ version "13.3.2"
3896
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"
3897
+ integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
3898
+ dependencies:
3899
+ cliui "^5.0.0"
3900
+ find-up "^3.0.0"
3901
+ get-caller-file "^2.0.1"
3902
+ require-directory "^2.1.1"
3903
+ require-main-filename "^2.0.0"
3904
+ set-blocking "^2.0.0"
3905
+ string-width "^3.0.0"
3906
+ which-module "^2.0.0"
3907
+ y18n "^4.0.0"
3908
+ yargs-parser "^13.1.2"
package-lock.json DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "name": "woocommerce-paypal-payments",
3
- "version": "1.2.1",
4
- "lockfileVersion": 2,
5
- "requires": true,
6
- "packages": {
7
- "": {
8
- "version": "1.2.1",
9
- "license": "GPL-2.0",
10
- "devDependencies": {}
11
- }
12
- }
13
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
patchwork.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "redefinable-internals": [
3
- "json_decode"
4
- ]
5
- }
 
 
 
 
 
readme.txt CHANGED
@@ -2,13 +2,13 @@
2
  Contributors: woocommerce, automattic
3
  Tags: woocommerce, paypal, payments, ecommerce, e-commerce, store, sales, sell, shop, shopping, cart, checkout
4
  Requires at least: 5.3
5
- Tested up to: 5.6
6
- Requires PHP: 7.0
7
- Stable tag: 1.2.1
8
  License: GPLv2
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
- PayPal's latest payments processing solution. Accept PayPal, PayPal Credit, credit/debit cards, alternative digital wallets and bank accounts.
12
 
13
  == Description ==
14
 
@@ -23,7 +23,7 @@ To install WooCommerce PayPal Payments, you need:
23
 
24
  * WordPress Version 5.3 or newer (installed)
25
  * WooCommerce Version 3.9 or newer (installed and activated)
26
- * PHP Version 7.0 or newer
27
  * PayPal business account
28
 
29
  = Instructions =
@@ -58,6 +58,16 @@ Follow the steps below to connect the plugin to your PayPal account:
58
 
59
  == Changelog ==
60
 
 
 
 
 
 
 
 
 
 
 
61
  = 1.2.1 =
62
  * Fix - Address compatibility issue with Jetpack.
63
 
2
  Contributors: woocommerce, automattic
3
  Tags: woocommerce, paypal, payments, ecommerce, e-commerce, store, sales, sell, shop, shopping, cart, checkout
4
  Requires at least: 5.3
5
+ Tested up to: 5.7
6
+ Requires PHP: 7.1
7
+ Stable tag: 1.3.0
8
  License: GPLv2
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
+ PayPal's latest payments processing solution. Accept PayPal, Pay Later, credit/debit cards, alternative digital wallets and bank accounts.
12
 
13
  == Description ==
14
 
23
 
24
  * WordPress Version 5.3 or newer (installed)
25
  * WooCommerce Version 3.9 or newer (installed and activated)
26
+ * PHP Version 7.1 or newer
27
  * PayPal business account
28
 
29
  = Instructions =
58
 
59
  == Changelog ==
60
 
61
+ = 1.3.0 =
62
+ * Add - Client-side vaulting and allow WooCommerce Subscriptions product renewals through payment tokens. #134
63
+ * Add - Send transaction ids to woocommerce. #125
64
+ * Fix - Validate checkout form before sending request to PayPal #137
65
+ * Fix - Duplicate Invoice Id error. #143
66
+ * Fix - Unblock UI if Credit Card payment failed. #122
67
+ * Fix - Detected container element removed from DOM. #123
68
+ * Fix - Remove disabling credit for UK. #127
69
+ * Fix - Show WC message on account creating error. #136
70
+
71
  = 1.2.1 =
72
  * Fix - Address compatibility issue with Jetpack.
73
 
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit88da43cab012eb51b90eb258b75517b0::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit2e2e9aa2ebcff03f64844f549243c4d6::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -37,11 +37,13 @@ namespace Composer\Autoload;
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
- * @see http://www.php-fig.org/psr/psr-0/
41
- * @see http://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
 
 
45
  // PSR-4
46
  private $prefixLengthsPsr4 = array();
47
  private $prefixDirsPsr4 = array();
@@ -57,6 +59,13 @@ class ClassLoader
57
  private $missingClasses = array();
58
  private $apcuPrefix;
59
 
 
 
 
 
 
 
 
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
@@ -300,6 +309,17 @@ class ClassLoader
300
  public function register($prepend = false)
301
  {
302
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
 
 
 
 
 
 
 
 
 
 
 
303
  }
304
 
305
  /**
@@ -308,6 +328,10 @@ class ClassLoader
308
  public function unregister()
309
  {
310
  spl_autoload_unregister(array($this, 'loadClass'));
 
 
 
 
311
  }
312
 
313
  /**
@@ -367,6 +391,16 @@ class ClassLoader
367
  return $file;
368
  }
369
 
 
 
 
 
 
 
 
 
 
 
370
  private function findFileWithExtension($class, $ext)
371
  {
372
  // PSR-4 lookup
37
  *
38
  * @author Fabien Potencier <fabien@symfony.com>
39
  * @author Jordi Boggiano <j.boggiano@seld.be>
40
+ * @see https://www.php-fig.org/psr/psr-0/
41
+ * @see https://www.php-fig.org/psr/psr-4/
42
  */
43
  class ClassLoader
44
  {
45
+ private $vendorDir;
46
+
47
  // PSR-4
48
  private $prefixLengthsPsr4 = array();
49
  private $prefixDirsPsr4 = array();
59
  private $missingClasses = array();
60
  private $apcuPrefix;
61
 
62
+ private static $registeredLoaders = array();
63
+
64
+ public function __construct($vendorDir = null)
65
+ {
66
+ $this->vendorDir = $vendorDir;
67
+ }
68
+
69
  public function getPrefixes()
70
  {
71
  if (!empty($this->prefixesPsr0)) {
309
  public function register($prepend = false)
310
  {
311
  spl_autoload_register(array($this, 'loadClass'), true, $prepend);
312
+
313
+ if (null === $this->vendorDir) {
314
+ return;
315
+ }
316
+
317
+ if ($prepend) {
318
+ self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
319
+ } else {
320
+ unset(self::$registeredLoaders[$this->vendorDir]);
321
+ self::$registeredLoaders[$this->vendorDir] = $this;
322
+ }
323
  }
324
 
325
  /**
328
  public function unregister()
329
  {
330
  spl_autoload_unregister(array($this, 'loadClass'));
331
+
332
+ if (null !== $this->vendorDir) {
333
+ unset(self::$registeredLoaders[$this->vendorDir]);
334
+ }
335
  }
336
 
337
  /**
391
  return $file;
392
  }
393
 
394
+ /**
395
+ * Returns the currently registered loaders indexed by their corresponding vendor directories.
396
+ *
397
+ * @return self[]
398
+ */
399
+ public static function getRegisteredLoaders()
400
+ {
401
+ return self::$registeredLoaders;
402
+ }
403
+
404
  private function findFileWithExtension($class, $ext)
405
  {
406
  // PSR-4 lookup
vendor/composer/InstalledVersions.php ADDED
@@ -0,0 +1,402 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+ namespace Composer;
14
+
15
+ use Composer\Autoload\ClassLoader;
16
+ use Composer\Semver\VersionParser;
17
+
18
+
19
+
20
+
21
+
22
+
23
+
24
+
25
+ class InstalledVersions
26
+ {
27
+ private static $installed = array (
28
+ 'root' =>
29
+ array (
30
+ 'pretty_version' => 'dev-trunk',
31
+ 'version' => 'dev-trunk',
32
+ 'aliases' =>
33
+ array (
34
+ ),
35
+ 'reference' => 'e2cf37297ae10d0329f99a2b3ef55a8e1112c5ce',
36
+ 'name' => 'woocommerce/woocommerce-paypal-payments',
37
+ ),
38
+ 'versions' =>
39
+ array (
40
+ 'container-interop/service-provider' =>
41
+ array (
42
+ 'pretty_version' => 'v0.4.0',
43
+ 'version' => '0.4.0.0',
44
+ 'aliases' =>
45
+ array (
46
+ ),
47
+ 'reference' => '4969b9e49460690b7430b3f1a87cab07be61418a',
48
+ ),
49
+ 'dhii/collections-interface' =>
50
+ array (
51
+ 'pretty_version' => 'v0.3.0-alpha4',
52
+ 'version' => '0.3.0.0-alpha4',
53
+ 'aliases' =>
54
+ array (
55
+ ),
56
+ 'reference' => 'da334f75f6477ef7eecaf28df1d5253fe05684ee',
57
+ ),
58
+ 'dhii/containers' =>
59
+ array (
60
+ 'pretty_version' => 'v0.1.0-alpha1',
61
+ 'version' => '0.1.0.0-alpha1',
62
+ 'aliases' =>
63
+ array (
64
+ ),
65
+ 'reference' => '73eed5422e106006c81ca1fa8b7213c6be33efbc',
66
+ ),
67
+ 'dhii/data-container-interface' =>
68
+ array (
69
+ 'pretty_version' => 'v0.2.1-alpha1',
70
+ 'version' => '0.2.1.0-alpha1',
71
+ 'aliases' =>
72
+ array (
73
+ ),
74
+ 'reference' => '6be46e427184b95785d9dd563d6acf2e0700cc31',
75
+ ),
76
+ 'dhii/data-key-value-aware-interface' =>
77
+ array (
78
+ 'pretty_version' => 'v0.1',
79
+ 'version' => '0.1.0.0',
80
+ 'aliases' =>
81
+ array (
82
+ ),
83
+ 'reference' => '220232bc9040fab78a6c039f5a4a5f9542317bdc',
84
+ ),
85
+ 'dhii/exception-interface' =>
86
+ array (
87
+ 'pretty_version' => 'v0.2',
88
+ 'version' => '0.2.0.0',
89
+ 'aliases' =>
90
+ array (
91
+ ),
92
+ 'reference' => 'b69feebf7cb2879cd43977a03342e2393b73f7fb',
93
+ ),
94
+ 'dhii/factory-interface' =>
95
+ array (
96
+ 'pretty_version' => 'v0.1',
97
+ 'version' => '0.1.0.0',
98
+ 'aliases' =>
99
+ array (
100
+ ),
101
+ 'reference' => 'b8d217aec8838e64ccaa770cb03dc164bf6f0515',
102
+ ),
103
+ 'dhii/module-interface' =>
104
+ array (
105
+ 'pretty_version' => 'v0.1',
106
+ 'version' => '0.1.0.0',
107
+ 'aliases' =>
108
+ array (
109
+ ),
110
+ 'reference' => 'a4271f2040e54f81cb7c4d5b3f18cb4a7532c277',
111
+ ),
112
+ 'dhii/stringable-interface' =>
113
+ array (
114
+ 'pretty_version' => 'v0.1',
115
+ 'version' => '0.1.0.0',
116
+ 'aliases' =>
117
+ array (
118
+ ),
119
+ 'reference' => 'b6653905eef2ebf377749feb80a6d18abbe913ef',
120
+ ),
121
+ 'dhii/wp-containers' =>
122
+ array (
123
+ 'pretty_version' => 'v0.1.0-alpha1',
124
+ 'version' => '0.1.0.0-alpha1',
125
+ 'aliases' =>
126
+ array (
127
+ ),
128
+ 'reference' => 'e91a6f741622770ed724a2b594145fa917811f0c',
129
+ ),
130
+ 'psr/container' =>
131
+ array (
132
+ 'pretty_version' => '1.0.0',
133
+ 'version' => '1.0.0.0',
134
+ 'aliases' =>
135
+ array (
136
+ ),
137
+ 'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
138
+ ),
139
+ 'psr/log' =>
140
+ array (
141
+ 'pretty_version' => '1.1.3',
142
+ 'version' => '1.1.3.0',
143
+ 'aliases' =>
144
+ array (
145
+ ),
146
+ 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
147
+ ),
148
+ 'ralouphie/getallheaders' =>
149
+ array (
150
+ 'pretty_version' => '3.0.3',
151
+ 'version' => '3.0.3.0',
152
+ 'aliases' =>
153
+ array (
154
+ ),
155
+ 'reference' => '120b605dfeb996808c31b6477290a714d356e822',
156
+ ),
157
+ 'woocommerce/woocommerce-paypal-payments' =>
158
+ array (
159
+ 'pretty_version' => 'dev-trunk',
160
+ 'version' => 'dev-trunk',
161
+ 'aliases' =>
162
+ array (
163
+ ),
164
+ 'reference' => 'e2cf37297ae10d0329f99a2b3ef55a8e1112c5ce',
165
+ ),
166
+ ),
167
+ );
168
+ private static $canGetVendors;
169
+ private static $installedByVendor = array();
170
+
171
+
172
+
173
+
174
+
175
+
176
+
177
+ public static function getInstalledPackages()
178
+ {
179
+ $packages = array();
180
+ foreach (self::getInstalled() as $installed) {
181
+ $packages[] = array_keys($installed['versions']);
182
+ }
183
+
184
+ if (1 === \count($packages)) {
185
+ return $packages[0];
186
+ }
187
+
188
+ return array_keys(array_flip(\call_user_func_array('array_merge', $packages)));
189
+ }
190
+
191
+
192
+
193
+
194
+
195
+
196
+
197
+
198
+
199
+ public static function isInstalled($packageName)
200
+ {
201
+ foreach (self::getInstalled() as $installed) {
202
+ if (isset($installed['versions'][$packageName])) {
203
+ return true;
204
+ }
205
+ }
206
+
207
+ return false;
208
+ }
209
+
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+ public static function satisfies(VersionParser $parser, $packageName, $constraint)
224
+ {
225
+ $constraint = $parser->parseConstraints($constraint);
226
+ $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
227
+
228
+ return $provided->matches($constraint);
229
+ }
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+
239
+
240
+ public static function getVersionRanges($packageName)
241
+ {
242
+ foreach (self::getInstalled() as $installed) {
243
+ if (!isset($installed['versions'][$packageName])) {
244
+ continue;
245
+ }
246
+
247
+ $ranges = array();
248
+ if (isset($installed['versions'][$packageName]['pretty_version'])) {
249
+ $ranges[] = $installed['versions'][$packageName]['pretty_version'];
250
+ }
251
+ if (array_key_exists('aliases', $installed['versions'][$packageName])) {
252
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']);
253
+ }
254
+ if (array_key_exists('replaced', $installed['versions'][$packageName])) {
255
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']);
256
+ }
257
+ if (array_key_exists('provided', $installed['versions'][$packageName])) {
258
+ $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']);
259
+ }
260
+
261
+ return implode(' || ', $ranges);
262
+ }
263
+
264
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
265
+ }
266
+
267
+
268
+
269
+
270
+
271
+ public static function getVersion($packageName)
272
+ {
273
+ foreach (self::getInstalled() as $installed) {
274
+ if (!isset($installed['versions'][$packageName])) {
275
+ continue;
276
+ }
277
+
278
+ if (!isset($installed['versions'][$packageName]['version'])) {
279
+ return null;
280
+ }
281
+
282
+ return $installed['versions'][$packageName]['version'];
283
+ }
284
+
285
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
286
+ }
287
+
288
+
289
+
290
+
291
+
292
+ public static function getPrettyVersion($packageName)
293
+ {
294
+ foreach (self::getInstalled() as $installed) {
295
+ if (!isset($installed['versions'][$packageName])) {
296
+ continue;
297
+ }
298
+
299
+ if (!isset($installed['versions'][$packageName]['pretty_version'])) {
300
+ return null;
301
+ }
302
+
303
+ return $installed['versions'][$packageName]['pretty_version'];
304
+ }
305
+
306
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
307
+ }
308
+
309
+
310
+
311
+
312
+
313
+ public static function getReference($packageName)
314
+ {
315
+ foreach (self::getInstalled() as $installed) {
316
+ if (!isset($installed['versions'][$packageName])) {
317
+ continue;
318
+ }
319
+
320
+ if (!isset($installed['versions'][$packageName]['reference'])) {
321
+ return null;
322
+ }
323
+
324
+ return $installed['versions'][$packageName]['reference'];
325
+ }
326
+
327
+ throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
328
+ }
329
+
330
+
331
+
332
+
333
+
334
+ public static function getRootPackage()
335
+ {
336
+ $installed = self::getInstalled();
337
+
338
+ return $installed[0]['root'];
339
+ }
340
+
341
+
342
+
343
+
344
+
345
+
346
+
347
+ public static function getRawData()
348
+ {
349
+ return self::$installed;
350
+ }
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+
364
+
365
+
366
+
367
+
368
+
369
+
370
+ public static function reload($data)
371
+ {
372
+ self::$installed = $data;
373
+ self::$installedByVendor = array();
374
+ }
375
+
376
+
377
+
378
+
379
+
380
+ private static function getInstalled()
381
+ {
382
+ if (null === self::$canGetVendors) {
383
+ self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders');
384
+ }
385
+
386
+ $installed = array();
387
+
388
+ if (self::$canGetVendors) {
389
+ foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
390
+ if (isset(self::$installedByVendor[$vendorDir])) {
391
+ $installed[] = self::$installedByVendor[$vendorDir];
392
+ } elseif (is_file($vendorDir.'/composer/installed.php')) {
393
+ $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
394
+ }
395
+ }
396
+ }
397
+
398
+ $installed[] = self::$installed;
399
+
400
+ return $installed;
401
+ }
402
+ }
vendor/composer/autoload_classmap.php CHANGED
@@ -6,6 +6,7 @@ $vendorDir = dirname(dirname(__FILE__));
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
 
9
  'WooCommerce\\PayPalCommerce\\AdminNotices\\AdminNotices' => $baseDir . '/modules/ppcp-admin-notices/src/class-adminnotices.php',
10
  'WooCommerce\\PayPalCommerce\\AdminNotices\\Entity\\Message' => $baseDir . '/modules/ppcp-admin-notices/src/Entity/class-message.php',
11
  'WooCommerce\\PayPalCommerce\\AdminNotices\\Renderer\\Renderer' => $baseDir . '/modules/ppcp-admin-notices/src/Renderer/class-renderer.php',
@@ -99,6 +100,7 @@ return array(
99
  'WooCommerce\\PayPalCommerce\\Button\\Exception\\RuntimeException' => $baseDir . '/modules/ppcp-button/src/Exception/class-runtimeexception.php',
100
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\EarlyOrderHandler' => $baseDir . '/modules/ppcp-button/src/Helper/class-earlyorderhandler.php',
101
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\MessagesApply' => $baseDir . '/modules/ppcp-button/src/Helper/class-messagesapply.php',
 
102
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\ThreeDSecure' => $baseDir . '/modules/ppcp-button/src/Helper/class-threedsecure.php',
103
  'WooCommerce\\PayPalCommerce\\Onboarding\\Assets\\OnboardingAssets' => $baseDir . '/modules/ppcp-onboarding/src/Assets/class-onboardingassets.php',
104
  'WooCommerce\\PayPalCommerce\\Onboarding\\Endpoint\\LoginSellerEndpoint' => $baseDir . '/modules/ppcp-onboarding/src/Endpoint/class-loginsellerendpoint.php',
@@ -119,6 +121,7 @@ return array(
119
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\OrderTablePaymentStatusColumn' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-ordertablepaymentstatuscolumn.php',
120
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\PaymentStatusOrderDetail' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-paymentstatusorderdetail.php',
121
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\RenderAuthorizeAction' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-renderauthorizeaction.php',
 
122
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\CheckoutPayPalAddressPreset' => $baseDir . '/modules/ppcp-wc-gateway/src/Checkout/class-checkoutpaypaladdresspreset.php',
123
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\DisableGateways' => $baseDir . '/modules/ppcp-wc-gateway/src/Checkout/class-disablegateways.php',
124
  'WooCommerce\\PayPalCommerce\\WcGateway\\Endpoint\\ReturnUrlEndpoint' => $baseDir . '/modules/ppcp-wc-gateway/src/Endpoint/class-returnurlendpoint.php',
@@ -126,7 +129,7 @@ return array(
126
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\CreditCardGateway' => $baseDir . '/modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php',
127
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\PayPalGateway' => $baseDir . '/modules/ppcp-wc-gateway/src/Gateway/class-paypalgateway.php',
128
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\ProcessPaymentTrait' => $baseDir . '/modules/ppcp-wc-gateway/src/Gateway/class-processpaymenttrait.php',
129
- 'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\WcGatewayInterface' => $baseDir . '/modules/ppcp-wc-gateway/src/Gateway/class-wcgatewayinterface.php',
130
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\AuthorizeOrderActionNotice' => $baseDir . '/modules/ppcp-wc-gateway/src/Notice/class-authorizeorderactionnotice.php',
131
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\ConnectAdminNotice' => $baseDir . '/modules/ppcp-wc-gateway/src/Notice/class-connectadminnotice.php',
132
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\AuthorizedPaymentsProcessor' => $baseDir . '/modules/ppcp-wc-gateway/src/Processor/class-authorizedpaymentsprocessor.php',
6
  $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
10
  'WooCommerce\\PayPalCommerce\\AdminNotices\\AdminNotices' => $baseDir . '/modules/ppcp-admin-notices/src/class-adminnotices.php',
11
  'WooCommerce\\PayPalCommerce\\AdminNotices\\Entity\\Message' => $baseDir . '/modules/ppcp-admin-notices/src/Entity/class-message.php',
12
  'WooCommerce\\PayPalCommerce\\AdminNotices\\Renderer\\Renderer' => $baseDir . '/modules/ppcp-admin-notices/src/Renderer/class-renderer.php',
100
  'WooCommerce\\PayPalCommerce\\Button\\Exception\\RuntimeException' => $baseDir . '/modules/ppcp-button/src/Exception/class-runtimeexception.php',
101
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\EarlyOrderHandler' => $baseDir . '/modules/ppcp-button/src/Helper/class-earlyorderhandler.php',
102
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\MessagesApply' => $baseDir . '/modules/ppcp-button/src/Helper/class-messagesapply.php',
103
+ 'WooCommerce\\PayPalCommerce\\Button\\Helper\\MessagesDisclaimers' => $baseDir . '/modules/ppcp-button/src/Helper/class-messagesdisclaimers.php',
104
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\ThreeDSecure' => $baseDir . '/modules/ppcp-button/src/Helper/class-threedsecure.php',
105
  'WooCommerce\\PayPalCommerce\\Onboarding\\Assets\\OnboardingAssets' => $baseDir . '/modules/ppcp-onboarding/src/Assets/class-onboardingassets.php',
106
  'WooCommerce\\PayPalCommerce\\Onboarding\\Endpoint\\LoginSellerEndpoint' => $baseDir . '/modules/ppcp-onboarding/src/Endpoint/class-loginsellerendpoint.php',
121
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\OrderTablePaymentStatusColumn' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-ordertablepaymentstatuscolumn.php',
122
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\PaymentStatusOrderDetail' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-paymentstatusorderdetail.php',
123
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\RenderAuthorizeAction' => $baseDir . '/modules/ppcp-wc-gateway/src/Admin/class-renderauthorizeaction.php',
124
+ 'WooCommerce\\PayPalCommerce\\WcGateway\\Assets\\SettingsPageAssets' => $baseDir . '/modules/ppcp-wc-gateway/src/Assets/class-settingspageassets.php',
125
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\CheckoutPayPalAddressPreset' => $baseDir . '/modules/ppcp-wc-gateway/src/Checkout/class-checkoutpaypaladdresspreset.php',
126
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\DisableGateways' => $baseDir . '/modules/ppcp-wc-gateway/src/Checkout/class-disablegateways.php',
127
  'WooCommerce\\PayPalCommerce\\WcGateway\\Endpoint\\ReturnUrlEndpoint' => $baseDir . '/modules/ppcp-wc-gateway/src/Endpoint/class-returnurlendpoint.php',
129
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\CreditCardGateway' => $baseDir . '/modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php',
130
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\PayPalGateway' => $baseDir . '/modules/ppcp-wc-gateway/src/Gateway/class-paypalgateway.php',
131
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\ProcessPaymentTrait' => $baseDir . '/modules/ppcp-wc-gateway/src/Gateway/class-processpaymenttrait.php',
132
+ 'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\TransactionUrlProvider' => $baseDir . '/modules/ppcp-wc-gateway/src/Gateway/class-transactionurlprovider.php',
133
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\AuthorizeOrderActionNotice' => $baseDir . '/modules/ppcp-wc-gateway/src/Notice/class-authorizeorderactionnotice.php',
134
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\ConnectAdminNotice' => $baseDir . '/modules/ppcp-wc-gateway/src/Notice/class-connectadminnotice.php',
135
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\AuthorizedPaymentsProcessor' => $baseDir . '/modules/ppcp-wc-gateway/src/Processor/class-authorizedpaymentsprocessor.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit88da43cab012eb51b90eb258b75517b0
6
  {
7
  private static $loader;
8
 
@@ -22,15 +22,17 @@ class ComposerAutoloaderInit88da43cab012eb51b90eb258b75517b0
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInit88da43cab012eb51b90eb258b75517b0', 'loadClassLoader'), true, true);
26
- self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
- spl_autoload_unregister(array('ComposerAutoloaderInit88da43cab012eb51b90eb258b75517b0', 'loadClassLoader'));
 
 
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
- require_once __DIR__ . '/autoload_static.php';
32
 
33
- call_user_func(\Composer\Autoload\ComposerStaticInit88da43cab012eb51b90eb258b75517b0::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
@@ -51,19 +53,19 @@ class ComposerAutoloaderInit88da43cab012eb51b90eb258b75517b0
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
- $includeFiles = Composer\Autoload\ComposerStaticInit88da43cab012eb51b90eb258b75517b0::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
- composerRequire88da43cab012eb51b90eb258b75517b0($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
- function composerRequire88da43cab012eb51b90eb258b75517b0($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit2e2e9aa2ebcff03f64844f549243c4d6
6
  {
7
  private static $loader;
8
 
22
  return self::$loader;
23
  }
24
 
25
+ require __DIR__ . '/platform_check.php';
26
+
27
+ spl_autoload_register(array('ComposerAutoloaderInit2e2e9aa2ebcff03f64844f549243c4d6', 'loadClassLoader'), true, true);
28
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
29
+ spl_autoload_unregister(array('ComposerAutoloaderInit2e2e9aa2ebcff03f64844f549243c4d6', 'loadClassLoader'));
30
 
31
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
32
  if ($useStaticLoader) {
33
+ require __DIR__ . '/autoload_static.php';
34
 
35
+ call_user_func(\Composer\Autoload\ComposerStaticInit2e2e9aa2ebcff03f64844f549243c4d6::getInitializer($loader));
36
  } else {
37
  $map = require __DIR__ . '/autoload_namespaces.php';
38
  foreach ($map as $namespace => $path) {
53
  $loader->register(true);
54
 
55
  if ($useStaticLoader) {
56
+ $includeFiles = Composer\Autoload\ComposerStaticInit2e2e9aa2ebcff03f64844f549243c4d6::$files;
57
  } else {
58
  $includeFiles = require __DIR__ . '/autoload_files.php';
59
  }
60
  foreach ($includeFiles as $fileIdentifier => $file) {
61
+ composerRequire2e2e9aa2ebcff03f64844f549243c4d6($fileIdentifier, $file);
62
  }
63
 
64
  return $loader;
65
  }
66
  }
67
 
68
+ function composerRequire2e2e9aa2ebcff03f64844f549243c4d6($fileIdentifier, $file)
69
  {
70
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
71
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit88da43cab012eb51b90eb258b75517b0
8
  {
9
  public static $files = array (
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
@@ -86,6 +86,7 @@ class ComposerStaticInit88da43cab012eb51b90eb258b75517b0
86
  );
87
 
88
  public static $classMap = array (
 
89
  'WooCommerce\\PayPalCommerce\\AdminNotices\\AdminNotices' => __DIR__ . '/../..' . '/modules/ppcp-admin-notices/src/class-adminnotices.php',
90
  'WooCommerce\\PayPalCommerce\\AdminNotices\\Entity\\Message' => __DIR__ . '/../..' . '/modules/ppcp-admin-notices/src/Entity/class-message.php',
91
  'WooCommerce\\PayPalCommerce\\AdminNotices\\Renderer\\Renderer' => __DIR__ . '/../..' . '/modules/ppcp-admin-notices/src/Renderer/class-renderer.php',
@@ -179,6 +180,7 @@ class ComposerStaticInit88da43cab012eb51b90eb258b75517b0
179
  'WooCommerce\\PayPalCommerce\\Button\\Exception\\RuntimeException' => __DIR__ . '/../..' . '/modules/ppcp-button/src/Exception/class-runtimeexception.php',
180
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\EarlyOrderHandler' => __DIR__ . '/../..' . '/modules/ppcp-button/src/Helper/class-earlyorderhandler.php',
181
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\MessagesApply' => __DIR__ . '/../..' . '/modules/ppcp-button/src/Helper/class-messagesapply.php',
 
182
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\ThreeDSecure' => __DIR__ . '/../..' . '/modules/ppcp-button/src/Helper/class-threedsecure.php',
183
  'WooCommerce\\PayPalCommerce\\Onboarding\\Assets\\OnboardingAssets' => __DIR__ . '/../..' . '/modules/ppcp-onboarding/src/Assets/class-onboardingassets.php',
184
  'WooCommerce\\PayPalCommerce\\Onboarding\\Endpoint\\LoginSellerEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-onboarding/src/Endpoint/class-loginsellerendpoint.php',
@@ -199,6 +201,7 @@ class ComposerStaticInit88da43cab012eb51b90eb258b75517b0
199
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\OrderTablePaymentStatusColumn' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-ordertablepaymentstatuscolumn.php',
200
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\PaymentStatusOrderDetail' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-paymentstatusorderdetail.php',
201
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\RenderAuthorizeAction' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-renderauthorizeaction.php',
 
202
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\CheckoutPayPalAddressPreset' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Checkout/class-checkoutpaypaladdresspreset.php',
203
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\DisableGateways' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Checkout/class-disablegateways.php',
204
  'WooCommerce\\PayPalCommerce\\WcGateway\\Endpoint\\ReturnUrlEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Endpoint/class-returnurlendpoint.php',
@@ -206,7 +209,7 @@ class ComposerStaticInit88da43cab012eb51b90eb258b75517b0
206
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\CreditCardGateway' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php',
207
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\PayPalGateway' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Gateway/class-paypalgateway.php',
208
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\ProcessPaymentTrait' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Gateway/class-processpaymenttrait.php',
209
- 'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\WcGatewayInterface' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Gateway/class-wcgatewayinterface.php',
210
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\AuthorizeOrderActionNotice' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Notice/class-authorizeorderactionnotice.php',
211
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\ConnectAdminNotice' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Notice/class-connectadminnotice.php',
212
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\AuthorizedPaymentsProcessor' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Processor/class-authorizedpaymentsprocessor.php',
@@ -237,9 +240,9 @@ class ComposerStaticInit88da43cab012eb51b90eb258b75517b0
237
  public static function getInitializer(ClassLoader $loader)
238
  {
239
  return \Closure::bind(function () use ($loader) {
240
- $loader->prefixLengthsPsr4 = ComposerStaticInit88da43cab012eb51b90eb258b75517b0::$prefixLengthsPsr4;
241
- $loader->prefixDirsPsr4 = ComposerStaticInit88da43cab012eb51b90eb258b75517b0::$prefixDirsPsr4;
242
- $loader->classMap = ComposerStaticInit88da43cab012eb51b90eb258b75517b0::$classMap;
243
 
244
  }, null, ClassLoader::class);
245
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit2e2e9aa2ebcff03f64844f549243c4d6
8
  {
9
  public static $files = array (
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
86
  );
87
 
88
  public static $classMap = array (
89
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
90
  'WooCommerce\\PayPalCommerce\\AdminNotices\\AdminNotices' => __DIR__ . '/../..' . '/modules/ppcp-admin-notices/src/class-adminnotices.php',
91
  'WooCommerce\\PayPalCommerce\\AdminNotices\\Entity\\Message' => __DIR__ . '/../..' . '/modules/ppcp-admin-notices/src/Entity/class-message.php',
92
  'WooCommerce\\PayPalCommerce\\AdminNotices\\Renderer\\Renderer' => __DIR__ . '/../..' . '/modules/ppcp-admin-notices/src/Renderer/class-renderer.php',
180
  'WooCommerce\\PayPalCommerce\\Button\\Exception\\RuntimeException' => __DIR__ . '/../..' . '/modules/ppcp-button/src/Exception/class-runtimeexception.php',
181
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\EarlyOrderHandler' => __DIR__ . '/../..' . '/modules/ppcp-button/src/Helper/class-earlyorderhandler.php',
182
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\MessagesApply' => __DIR__ . '/../..' . '/modules/ppcp-button/src/Helper/class-messagesapply.php',
183
+ 'WooCommerce\\PayPalCommerce\\Button\\Helper\\MessagesDisclaimers' => __DIR__ . '/../..' . '/modules/ppcp-button/src/Helper/class-messagesdisclaimers.php',
184
  'WooCommerce\\PayPalCommerce\\Button\\Helper\\ThreeDSecure' => __DIR__ . '/../..' . '/modules/ppcp-button/src/Helper/class-threedsecure.php',
185
  'WooCommerce\\PayPalCommerce\\Onboarding\\Assets\\OnboardingAssets' => __DIR__ . '/../..' . '/modules/ppcp-onboarding/src/Assets/class-onboardingassets.php',
186
  'WooCommerce\\PayPalCommerce\\Onboarding\\Endpoint\\LoginSellerEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-onboarding/src/Endpoint/class-loginsellerendpoint.php',
201
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\OrderTablePaymentStatusColumn' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-ordertablepaymentstatuscolumn.php',
202
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\PaymentStatusOrderDetail' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-paymentstatusorderdetail.php',
203
  'WooCommerce\\PayPalCommerce\\WcGateway\\Admin\\RenderAuthorizeAction' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Admin/class-renderauthorizeaction.php',
204
+ 'WooCommerce\\PayPalCommerce\\WcGateway\\Assets\\SettingsPageAssets' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Assets/class-settingspageassets.php',
205
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\CheckoutPayPalAddressPreset' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Checkout/class-checkoutpaypaladdresspreset.php',
206
  'WooCommerce\\PayPalCommerce\\WcGateway\\Checkout\\DisableGateways' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Checkout/class-disablegateways.php',
207
  'WooCommerce\\PayPalCommerce\\WcGateway\\Endpoint\\ReturnUrlEndpoint' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Endpoint/class-returnurlendpoint.php',
209
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\CreditCardGateway' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Gateway/class-creditcardgateway.php',
210
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\PayPalGateway' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Gateway/class-paypalgateway.php',
211
  'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\ProcessPaymentTrait' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Gateway/class-processpaymenttrait.php',
212
+ 'WooCommerce\\PayPalCommerce\\WcGateway\\Gateway\\TransactionUrlProvider' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Gateway/class-transactionurlprovider.php',
213
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\AuthorizeOrderActionNotice' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Notice/class-authorizeorderactionnotice.php',
214
  'WooCommerce\\PayPalCommerce\\WcGateway\\Notice\\ConnectAdminNotice' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Notice/class-connectadminnotice.php',
215
  'WooCommerce\\PayPalCommerce\\WcGateway\\Processor\\AuthorizedPaymentsProcessor' => __DIR__ . '/../..' . '/modules/ppcp-wc-gateway/src/Processor/class-authorizedpaymentsprocessor.php',
240
  public static function getInitializer(ClassLoader $loader)
241
  {
242
  return \Closure::bind(function () use ($loader) {
243
+ $loader->prefixLengthsPsr4 = ComposerStaticInit2e2e9aa2ebcff03f64844f549243c4d6::$prefixLengthsPsr4;
244
+ $loader->prefixDirsPsr4 = ComposerStaticInit2e2e9aa2ebcff03f64844f549243c4d6::$prefixDirsPsr4;
245
+ $loader->classMap = ComposerStaticInit2e2e9aa2ebcff03f64844f549243c4d6::$classMap;
246
 
247
  }, null, ClassLoader::class);
248
  }
vendor/composer/installed.json CHANGED
@@ -1,646 +1,714 @@
1
- [
2
- {
3
- "name": "container-interop/service-provider",
4
- "version": "v0.4.0",
5
- "version_normalized": "0.4.0.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/container-interop/service-provider.git",
9
- "reference": "4969b9e49460690b7430b3f1a87cab07be61418a"
10
- },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/container-interop/service-provider/zipball/4969b9e49460690b7430b3f1a87cab07be61418a",
14
- "reference": "4969b9e49460690b7430b3f1a87cab07be61418a",
15
- "shasum": ""
16
- },
17
- "require": {
18
- "psr/container": "^1.0"
19
- },
20
- "time": "2017-09-20T14:13:36+00:00",
21
- "type": "library",
22
- "installation-source": "dist",
23
- "autoload": {
24
- "psr-4": {
25
- "Interop\\Container\\": "src/"
26
- }
27
- },
28
- "notification-url": "https://packagist.org/downloads/",
29
- "license": [
30
- "MIT"
31
- ],
32
- "description": "Promoting container interoperability through standard service providers",
33
- "homepage": "https://github.com/container-interop/service-provider"
34
- },
35
- {
36
- "name": "dhii/collections-interface",
37
- "version": "v0.3.0-alpha3",
38
- "version_normalized": "0.3.0.0-alpha3",
39
- "source": {
40
- "type": "git",
41
- "url": "https://github.com/Dhii/collections-interface.git",
42
- "reference": "7c7c4b4459dda9e6db406860d99916d0cee58ccf"
43
- },
44
- "dist": {
45
- "type": "zip",
46
- "url": "https://api.github.com/repos/Dhii/collections-interface/zipball/7c7c4b4459dda9e6db406860d99916d0cee58ccf",
47
- "reference": "7c7c4b4459dda9e6db406860d99916d0cee58ccf",
48
- "shasum": ""
49
- },
50
- "require": {
51
- "php": "^7.1 | ^8.0",
52
- "psr/container": "^1.0"
53
- },
54
- "require-dev": {
55
- "phpunit/phpunit": "^7.0 | ^8.0 | ^9.0",
56
- "slevomat/coding-standard": "^6.0",
57
- "vimeo/psalm": "^3.11.7 | ^4.0"
58
- },
59
- "time": "2021-01-14T17:33:46+00:00",
60
- "type": "library",
61
- "extra": {
62
- "branch-alias": {
63
- "dev-develop": "0.3.x-dev"
64
- }
65
- },
66
- "installation-source": "dist",
67
- "autoload": {
68
- "psr-4": {
69
- "Dhii\\Collection\\": "src"
70
- }
71
- },
72
- "notification-url": "https://packagist.org/downloads/",
73
- "license": [
74
- "MIT"
75
- ],
76
- "authors": [
77
- {
78
- "name": "Dhii Team",
79
- "email": "development@dhii.co"
80
- },
81
- {
82
- "name": "Anton Ukhanev",
83
- "email": "xedin.unknown@gmail.com"
84
- }
85
- ],
86
- "description": "A highly ISP-compliant collection of interfaces that represent maps and lists."
87
- },
88
- {
89
- "name": "dhii/containers",
90
- "version": "v0.1.0-alpha1",
91
- "version_normalized": "0.1.0.0-alpha1",
92
- "source": {
93
- "type": "git",
94
- "url": "https://github.com/Dhii/containers.git",
95
- "reference": "73eed5422e106006c81ca1fa8b7213c6be33efbc"
96
- },
97
- "dist": {
98
- "type": "zip",
99
- "url": "https://api.github.com/repos/Dhii/containers/zipball/73eed5422e106006c81ca1fa8b7213c6be33efbc",
100
- "reference": "73eed5422e106006c81ca1fa8b7213c6be33efbc",
101
- "shasum": ""
102
- },
103
- "require": {
104
- "container-interop/service-provider": "^0.4",
105
- "dhii/collections-interface": "^0.3.0-alpha1",
106
- "php": "^7.1 | ^8.0"
107
- },
108
- "require-dev": {
109
- "gmazzap/andrew": "^1.1",
110
- "phpunit/phpunit": "^7.0",
111
- "psr/container": "^1.0",
112
- "slevomat/coding-standard": "~4.0"
113
- },
114
- "time": "2020-09-14T18:27:47+00:00",
115
- "type": "library",
116
- "extra": {
117
- "branch-alias": {
118
- "dev-develop": "0.1.x-dev"
119
- }
120
- },
121
- "installation-source": "dist",
122
- "autoload": {
123
- "psr-4": {
124
- "Dhii\\Container\\": "src/"
125
- }
126
- },
127
- "notification-url": "https://packagist.org/downloads/",
128
- "license": [
129
- "MIT"
130
- ],
131
- "authors": [
132
- {
133
- "name": "Dhii Team",
134
- "email": "development@dhii.co"
135
- }
136
- ],
137
- "description": "A selection of PSR-11 containers for utility, simplicity, and ease.",
138
- "keywords": [
139
- "PSR-11",
140
- "container"
141
- ]
142
- },
143
- {
144
- "name": "dhii/data-container-interface",
145
- "version": "v0.2.1-alpha1",
146
- "version_normalized": "0.2.1.0-alpha1",
147
- "source": {
148
- "type": "git",
149
- "url": "https://github.com/Dhii/data-container-interface.git",
150
- "reference": "6be46e427184b95785d9dd563d6acf2e0700cc31"
151
- },
152
- "dist": {
153
- "type": "zip",
154
- "url": "https://api.github.com/repos/Dhii/data-container-interface/zipball/6be46e427184b95785d9dd563d6acf2e0700cc31",
155
- "reference": "6be46e427184b95785d9dd563d6acf2e0700cc31",
156
- "shasum": ""
157
- },
158
- "require": {
159
- "dhii/exception-interface": "^0.1 | ^0.2",
160
- "dhii/factory-interface": "^0.1-alpha1",
161
- "php": "^5.3 | ^7.0",
162
- "psr/container": "^1.0"
163
- },
164
- "require-dev": {
165
- "codeclimate/php-test-reporter": "<=0.3.2",
166
- "dhii/php-cs-fixer-config": "dev-php-5.3",
167
- "dhii/stringable-interface": "^0.1",
168
- "phpunit/phpunit": "^4.8",
169
- "ptrofimov/xpmock": "^1.1"
170
- },
171
- "suggest": {
172
- "dhii/stringable-interface": "To be able to pass Stringables as keys"
173
- },
174
- "time": "2019-05-10T14:17:29+00:00",
175
- "type": "library",
176
- "extra": {
177
- "branch-alias": {
178
- "dev-develop": "0.2.x-dev"
179
- }
180
- },
181
- "installation-source": "dist",
182
- "autoload": {
183
- "psr-4": {
184
- "Dhii\\Data\\Container\\": "src"
185
- }
186
- },
187
- "notification-url": "https://packagist.org/downloads/",
188
- "license": [
189
- "MIT"
190
- ],
191
- "authors": [
192
- {
193
- "name": "Dhii Team",
194
- "email": "development@dhii.co"
195
- }
196
- ],
197
- "description": "Interfaces for working with data containers",
198
- "abandoned": "dhii/collections-interface"
199
- },
200
- {
201
- "name": "dhii/data-key-value-aware-interface",
202
- "version": "v0.1",
203
- "version_normalized": "0.1.0.0",
204
- "source": {
205
- "type": "git",
206
- "url": "https://github.com/Dhii/data-key-value-aware-interface.git",
207
- "reference": "220232bc9040fab78a6c039f5a4a5f9542317bdc"
208
- },
209
- "dist": {
210
- "type": "zip",
211
- "url": "https://api.github.com/repos/Dhii/data-key-value-aware-interface/zipball/220232bc9040fab78a6c039f5a4a5f9542317bdc",
212
- "reference": "220232bc9040fab78a6c039f5a4a5f9542317bdc",
213
- "shasum": ""
214
- },
215
- "require": {
216
- "php": "^5.3 | ^7.0"
217
- },
218
- "require-dev": {
219
- "codeclimate/php-test-reporter": "<=0.3.2",
220
- "dhii/php-cs-fixer-config": "dev-php-5.3",
221
- "phpunit/phpunit": "4.*",
222
- "ptrofimov/xpmock": "^1.1"
223
- },
224
- "time": "2017-01-21T17:35:30+00:00",
225
- "type": "library",
226
- "installation-source": "dist",
227
- "autoload": {
228
- "psr-4": {
229
- "Dhii\\Data\\": "src/"
230
- }
231
- },
232
- "notification-url": "https://packagist.org/downloads/",
233
- "license": [
234
- "MIT"
235
- ],
236
- "authors": [
237
- {
238
- "name": "Dhii Team",
239
- "email": "development@dhii.co"
240
- }
241
- ],
242
- "description": "Interfaces that aim to increase interoperability of value objects"
243
- },
244
- {
245
- "name": "dhii/exception-interface",
246
- "version": "v0.2",
247
- "version_normalized": "0.2.0.0",
248
- "source": {
249
- "type": "git",
250
- "url": "https://github.com/Dhii/exception-interface.git",
251
- "reference": "b69feebf7cb2879cd43977a03342e2393b73f7fb"
252
- },
253
- "dist": {
254
- "type": "zip",
255
- "url": "https://api.github.com/repos/Dhii/exception-interface/zipball/b69feebf7cb2879cd43977a03342e2393b73f7fb",
256
- "reference": "b69feebf7cb2879cd43977a03342e2393b73f7fb",
257
- "shasum": ""
258
- },
259
- "require": {
260
- "dhii/stringable-interface": "^0.1",
261
- "php": "^5.3 | ^7.0"
262
- },
263
- "require-dev": {
264
- "codeclimate/php-test-reporter": "<=0.3.2",
265
- "dhii/php-cs-fixer-config": "dev-php-5.3",
266
- "phpunit/phpunit": "^4.8",
267
- "ptrofimov/xpmock": "^1.1"
268
- },
269
- "time": "2018-08-29T10:42:04+00:00",
270
- "type": "library",
271
- "extra": {
272
- "branch-alias": {
273
- "dev-develop": "0.2.x-dev"
274
- }
275
- },
276
- "installation-source": "dist",
277
- "autoload": {
278
- "psr-4": {
279
- "Dhii\\Exception\\": "src"
280
- }
281
- },
282
- "notification-url": "https://packagist.org/downloads/",
283
- "license": [
284
- "MIT"
285
- ],
286
- "authors": [
287
- {
288
- "name": "Dhii Team",
289
- "email": "development@dhii.co"
290
- }
291
- ],
292
- "description": "Interfaces for most common exceptions"
293
- },
294
- {
295
- "name": "dhii/factory-interface",
296
- "version": "v0.1",
297
- "version_normalized": "0.1.0.0",
298
- "source": {
299
- "type": "git",
300
- "url": "https://github.com/Dhii/factory-interface.git",
301
- "reference": "b8d217aec8838e64ccaa770cb03dc164bf6f0515"
302
- },
303
- "dist": {
304
- "type": "zip",
305
- "url": "https://api.github.com/repos/Dhii/factory-interface/zipball/b8d217aec8838e64ccaa770cb03dc164bf6f0515",
306
- "reference": "b8d217aec8838e64ccaa770cb03dc164bf6f0515",
307
- "shasum": ""
308
- },
309
- "require": {
310
- "dhii/exception-interface": "^0.1|^0.2",
311
- "php": "^5.3 | ^7.0"
312
- },
313
- "require-dev": {
314
- "codeclimate/php-test-reporter": "<=0.3.2",
315
- "dhii/php-cs-fixer-config": "dev-php-5.3",
316
- "dhii/stringable-interface": "^0.1",
317
- "phpunit/phpunit": "^4.8",
318
- "psr/container": "^1.0",
319
- "ptrofimov/xpmock": "^1.1"
320
- },
321
- "time": "2018-08-29T11:15:09+00:00",
322
- "type": "library",
323
- "extra": {
324
- "branch-alias": {
325
- "dev-develop": "0.1.x-dev"
326
- }
327
- },
328
- "installation-source": "dist",
329
- "autoload": {
330
- "psr-4": {
331
- "Dhii\\Factory\\": "src"
332
- }
333
- },
334
- "notification-url": "https://packagist.org/downloads/",
335
- "license": [
336
- "MIT"
337
- ],
338
- "authors": [
339
- {
340
- "name": "Dhii Team",
341
- "email": "development@dhii.co"
342
- }
343
- ],
344
- "description": "Interfaces for working with factories.",
345
- "abandoned": true
346
- },
347
- {
348
- "name": "dhii/module-interface",
349
- "version": "v0.1",
350
- "version_normalized": "0.1.0.0",
351
- "source": {
352
- "type": "git",
353
- "url": "https://github.com/Dhii/module-interface.git",
354
- "reference": "a4271f2040e54f81cb7c4d5b3f18cb4a7532c277"
355
- },
356
- "dist": {
357
- "type": "zip",
358
- "url": "https://api.github.com/repos/Dhii/module-interface/zipball/a4271f2040e54f81cb7c4d5b3f18cb4a7532c277",
359
- "reference": "a4271f2040e54f81cb7c4d5b3f18cb4a7532c277",
360
- "shasum": ""
361
- },
362
- "require": {
363
- "dhii/data-key-value-aware-interface": "^0.1",
364
- "dhii/exception-interface": "^0.1 | ^0.2",
365
- "dhii/factory-interface": "^0.1-alpha1",
366
- "php": "^5.3 | ^7.0"
367
- },
368
- "require-dev": {
369
- "codeclimate/php-test-reporter": "<=0.3.2",
370
- "dhii/php-cs-fixer-config": "dev-php-5.3",
371
- "dhii/stringable-interface": "^0.1",
372
- "phpunit/phpunit": "^4.8",
373
- "psr/container": "^1.0",
374
- "ptrofimov/xpmock": "^1.1"
375
- },
376
- "time": "2019-11-05T18:25:12+00:00",
377
- "type": "library",
378
- "extra": {
379
- "branch-alias": {
380
- "dev-develop": "0.1.x-dev"
381
- }
382
- },
383
- "installation-source": "dist",
384
- "autoload": {
385
- "psr-4": {
386
- "Dhii\\Modular\\Module\\": "src"
387
- }
388
- },
389
- "notification-url": "https://packagist.org/downloads/",
390
- "license": [
391
- "MIT"
392
- ],
393
- "authors": [
394
- {
395
- "name": "Dhii Team",
396
- "email": "development@dhii.co"
397
- }
398
- ],
399
- "description": "Interfaces for modules"
400
- },
401
- {
402
- "name": "dhii/stringable-interface",
403
- "version": "v0.1",
404
- "version_normalized": "0.1.0.0",
405
- "source": {
406
- "type": "git",
407
- "url": "https://github.com/Dhii/stringable-interface.git",
408
- "reference": "b6653905eef2ebf377749feb80a6d18abbe913ef"
409
- },
410
- "dist": {
411
- "type": "zip",
412
- "url": "https://api.github.com/repos/Dhii/stringable-interface/zipball/b6653905eef2ebf377749feb80a6d18abbe913ef",
413
- "reference": "b6653905eef2ebf377749feb80a6d18abbe913ef",
414
- "shasum": ""
415
- },
416
- "require": {
417
- "php": "^5.3 | ^7.0"
418
- },
419
- "require-dev": {
420
- "codeclimate/php-test-reporter": "<=0.3.2",
421
- "dhii/php-cs-fixer-config": "dev-php-5.3",
422
- "phpunit/phpunit": "^4.8",
423
- "ptrofimov/xpmock": "^1.1"
424
- },
425
- "time": "2017-01-23T15:08:20+00:00",
426
- "type": "library",
427
- "installation-source": "dist",
428
- "autoload": {
429
- "psr-4": {
430
- "Dhii\\Util\\String\\": "src/"
431
- }
432
- },
433
- "notification-url": "https://packagist.org/downloads/",
434
- "license": [
435
- "MIT"
436
- ],
437
- "authors": [
438
- {
439
- "name": "Dhii Team",
440
- "email": "development@dhii.co"
441
- }
442
- ],
443
- "description": "Interoperability interface for objects that can be cast to string",
444
- "abandoned": "symfony/polyfill-php80"
445
- },
446
- {
447
- "name": "dhii/wp-containers",
448
- "version": "v0.1.0-alpha1",
449
- "version_normalized": "0.1.0.0-alpha1",
450
- "source": {
451
- "type": "git",
452
- "url": "https://github.com/Dhii/wp-containers.git",
453
- "reference": "e91a6f741622770ed724a2b594145fa917811f0c"
454
- },
455
- "dist": {
456
- "type": "zip",
457
- "url": "https://api.github.com/repos/Dhii/wp-containers/zipball/e91a6f741622770ed724a2b594145fa917811f0c",
458
- "reference": "e91a6f741622770ed724a2b594145fa917811f0c",
459
- "shasum": ""
460
- },
461
- "require": {
462
- "dhii/data-container-interface": "^0.2.1-alpha1",
463
- "php": "^7.0 | ^8.0",
464
- "psr/container": "^1.0"
465
- },
466
- "require-dev": {
467
- "brain/monkey": "^2",
468
- "gmazzap/andrew": "^1.1",
469
- "phpunit/phpunit": "^6",
470
- "slevomat/coding-standard": "~4.0"
471
- },
472
- "time": "2019-05-10T15:04:22+00:00",
473
- "type": "library",
474
- "extra": {
475
- "branch-alias": {
476
- "dev-develop": "0.1.x-dev"
477
- }
478
- },
479
- "installation-source": "dist",
480
- "autoload": {
481
- "psr-4": {
482
- "Dhii\\Wp\\Containers\\": "src/"
483
- }
484
- },
485
- "notification-url": "https://packagist.org/downloads/",
486
- "license": [
487
- "MIT"
488
- ],
489
- "authors": [
490
- {
491
- "name": "Dhii Team",
492
- "email": "development@dhii.co"
493
- }
494
- ],
495
- "description": "PSR-11 container implementations that wrap some WP features, for convenience and interoperability.",
496
- "keywords": [
497
- "container",
498
- "dependency injection",
499
- "di",
500
- "wordpress"
501
- ],
502
- "abandoned": "wp-oop/containers"
503
- },
504
- {
505
- "name": "psr/container",
506
- "version": "1.0.0",
507
- "version_normalized": "1.0.0.0",
508
- "source": {
509
- "type": "git",
510
- "url": "https://github.com/php-fig/container.git",
511
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
512
- },
513
- "dist": {
514
- "type": "zip",
515
- "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
516
- "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
517
- "shasum": ""
518
- },
519
- "require": {
520
- "php": ">=5.3.0"
521
- },
522
- "time": "2017-02-14T16:28:37+00:00",
523
- "type": "library",
524
- "extra": {
525
- "branch-alias": {
526
- "dev-master": "1.0.x-dev"
527
- }
528
- },
529
- "installation-source": "dist",
530
- "autoload": {
531
- "psr-4": {
532
- "Psr\\Container\\": "src/"
533
- }
534
- },
535
- "notification-url": "https://packagist.org/downloads/",
536
- "license": [
537
- "MIT"
538
- ],
539
- "authors": [
540
- {
541
- "name": "PHP-FIG",
542
- "homepage": "http://www.php-fig.org/"
543
- }
544
- ],
545
- "description": "Common Container Interface (PHP FIG PSR-11)",
546
- "homepage": "https://github.com/php-fig/container",
547
- "keywords": [
548
- "PSR-11",
549
- "container",
550
- "container-interface",
551
- "container-interop",
552
- "psr"
553
- ]
554
- },
555
- {
556
- "name": "psr/log",
557
- "version": "1.1.3",
558
- "version_normalized": "1.1.3.0",
559
- "source": {
560
- "type": "git",
561
- "url": "https://github.com/php-fig/log.git",
562
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
563
- },
564
- "dist": {
565
- "type": "zip",
566
- "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
567
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
568
- "shasum": ""
569
- },
570
- "require": {
571
- "php": ">=5.3.0"
572
- },
573
- "time": "2020-03-23T09:12:05+00:00",
574
- "type": "library",
575
- "extra": {
576
- "branch-alias": {
577
- "dev-master": "1.1.x-dev"
578
- }
579
- },
580
- "installation-source": "dist",
581
- "autoload": {
582
- "psr-4": {
583
- "Psr\\Log\\": "Psr/Log/"
584
- }
585
- },
586
- "notification-url": "https://packagist.org/downloads/",
587
- "license": [
588
- "MIT"
589
- ],
590
- "authors": [
591
- {
592
- "name": "PHP-FIG",
593
- "homepage": "http://www.php-fig.org/"
594
- }
595
- ],
596
- "description": "Common interface for logging libraries",
597
- "homepage": "https://github.com/php-fig/log",
598
- "keywords": [
599
- "log",
600
- "psr",
601
- "psr-3"
602
- ]
603
- },
604
- {
605
- "name": "ralouphie/getallheaders",
606
- "version": "3.0.3",
607
- "version_normalized": "3.0.3.0",
608
- "source": {
609
- "type": "git",
610
- "url": "https://github.com/ralouphie/getallheaders.git",
611
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
612
- },
613
- "dist": {
614
- "type": "zip",
615
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
616
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
617
- "shasum": ""
618
- },
619
- "require": {
620
- "php": ">=5.6"
621
- },
622
- "require-dev": {
623
- "php-coveralls/php-coveralls": "^2.1",
624
- "phpunit/phpunit": "^5 || ^6.5"
625
- },
626
- "time": "2019-03-08T08:55:37+00:00",
627
- "type": "library",
628
- "installation-source": "dist",
629
- "autoload": {
630
- "files": [
631
- "src/getallheaders.php"
632
- ]
633
- },
634
- "notification-url": "https://packagist.org/downloads/",
635
- "license": [
636
- "MIT"
637
- ],
638
- "authors": [
639
- {
640
- "name": "Ralph Khattar",
641
- "email": "ralph.khattar@gmail.com"
642
- }
643
- ],
644
- "description": "A polyfill for getallheaders."
645
- }
646
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "packages": [
3
+ {
4
+ "name": "container-interop/service-provider",
5
+ "version": "v0.4.0",
6
+ "version_normalized": "0.4.0.0",
7
+ "source": {
8
+ "type": "git",
9
+ "url": "https://github.com/container-interop/service-provider.git",
10
+ "reference": "4969b9e49460690b7430b3f1a87cab07be61418a"
11
+ },
12
+ "dist": {
13
+ "type": "zip",
14
+ "url": "https://api.github.com/repos/container-interop/service-provider/zipball/4969b9e49460690b7430b3f1a87cab07be61418a",
15
+ "reference": "4969b9e49460690b7430b3f1a87cab07be61418a",
16
+ "shasum": ""
17
+ },
18
+ "require": {
19
+ "psr/container": "^1.0"
20
+ },
21
+ "time": "2017-09-20T14:13:36+00:00",
22
+ "type": "library",
23
+ "installation-source": "dist",
24
+ "autoload": {
25
+ "psr-4": {
26
+ "Interop\\Container\\": "src/"
27
+ }
28
+ },
29
+ "notification-url": "https://packagist.org/downloads/",
30
+ "license": [
31
+ "MIT"
32
+ ],
33
+ "description": "Promoting container interoperability through standard service providers",
34
+ "homepage": "https://github.com/container-interop/service-provider",
35
+ "support": {
36
+ "issues": "https://github.com/container-interop/service-provider/issues",
37
+ "source": "https://github.com/container-interop/service-provider/tree/master"
38
+ },
39
+ "install-path": "../container-interop/service-provider"
40
+ },
41
+ {
42
+ "name": "dhii/collections-interface",
43
+ "version": "v0.3.0-alpha4",
44
+ "version_normalized": "0.3.0.0-alpha4",
45
+ "source": {
46
+ "type": "git",
47
+ "url": "https://github.com/Dhii/collections-interface.git",
48
+ "reference": "da334f75f6477ef7eecaf28df1d5253fe05684ee"
49
+ },
50
+ "dist": {
51
+ "type": "zip",
52
+ "url": "https://api.github.com/repos/Dhii/collections-interface/zipball/da334f75f6477ef7eecaf28df1d5253fe05684ee",
53
+ "reference": "da334f75f6477ef7eecaf28df1d5253fe05684ee",
54
+ "shasum": ""
55
+ },
56
+ "require": {
57
+ "php": "^7.1 | ^8.0",
58
+ "psr/container": "^1.0"
59
+ },
60
+ "require-dev": {
61
+ "phpunit/phpunit": "^7.0 | ^8.0 | ^9.0",
62
+ "slevomat/coding-standard": "^6.0",
63
+ "vimeo/psalm": "^3.11.7 | ^4.0"
64
+ },
65
+ "time": "2021-03-09T17:36:34+00:00",
66
+ "type": "library",
67
+ "extra": {
68
+ "branch-alias": {
69
+ "dev-develop": "0.3.x-dev"
70
+ }
71
+ },
72
+ "installation-source": "dist",
73
+ "autoload": {
74
+ "psr-4": {
75
+ "Dhii\\Collection\\": "src"
76
+ }
77
+ },
78
+ "notification-url": "https://packagist.org/downloads/",
79
+ "license": [
80
+ "MIT"
81
+ ],
82
+ "authors": [
83
+ {
84
+ "name": "Dhii Team",
85
+ "email": "development@dhii.co"
86
+ },
87
+ {
88
+ "name": "Anton Ukhanev",
89
+ "email": "xedin.unknown@gmail.com"
90
+ }
91
+ ],
92
+ "description": "A highly ISP-compliant collection of interfaces that represent maps and lists.",
93
+ "support": {
94
+ "issues": "https://github.com/Dhii/collections-interface/issues",
95
+ "source": "https://github.com/Dhii/collections-interface/tree/v0.3.0-alpha4"
96
+ },
97
+ "install-path": "../dhii/collections-interface"
98
+ },
99
+ {
100
+ "name": "dhii/containers",
101
+ "version": "v0.1.0-alpha1",
102
+ "version_normalized": "0.1.0.0-alpha1",
103
+ "source": {
104
+ "type": "git",
105
+ "url": "https://github.com/Dhii/containers.git",
106
+ "reference": "73eed5422e106006c81ca1fa8b7213c6be33efbc"
107
+ },
108
+ "dist": {
109
+ "type": "zip",
110
+ "url": "https://api.github.com/repos/Dhii/containers/zipball/73eed5422e106006c81ca1fa8b7213c6be33efbc",
111
+ "reference": "73eed5422e106006c81ca1fa8b7213c6be33efbc",
112
+ "shasum": ""
113
+ },
114
+ "require": {
115
+ "container-interop/service-provider": "^0.4",
116
+ "dhii/collections-interface": "^0.3.0-alpha1",
117
+ "php": "^7.1 | ^8.0"
118
+ },
119
+ "require-dev": {
120
+ "gmazzap/andrew": "^1.1",
121
+ "phpunit/phpunit": "^7.0",
122
+ "psr/container": "^1.0",
123
+ "slevomat/coding-standard": "~4.0"
124
+ },
125
+ "time": "2020-09-14T18:27:47+00:00",
126
+ "type": "library",
127
+ "extra": {
128
+ "branch-alias": {
129
+ "dev-develop": "0.1.x-dev"
130
+ }
131
+ },
132
+ "installation-source": "dist",
133
+ "autoload": {
134
+ "psr-4": {
135
+ "Dhii\\Container\\": "src/"
136
+ }
137
+ },
138
+ "notification-url": "https://packagist.org/downloads/",
139
+ "license": [
140
+ "MIT"
141
+ ],
142
+ "authors": [
143
+ {
144
+ "name": "Dhii Team",
145
+ "email": "development@dhii.co"
146
+ }
147
+ ],
148
+ "description": "A selection of PSR-11 containers for utility, simplicity, and ease.",
149
+ "keywords": [
150
+ "PSR-11",
151
+ "container"
152
+ ],
153
+ "support": {
154
+ "issues": "https://github.com/Dhii/containers/issues",
155
+ "source": "https://github.com/Dhii/containers/tree/v0.1.0-alpha1"
156
+ },
157
+ "install-path": "../dhii/containers"
158
+ },
159
+ {
160
+ "name": "dhii/data-container-interface",
161
+ "version": "v0.2.1-alpha1",
162
+ "version_normalized": "0.2.1.0-alpha1",
163
+ "source": {
164
+ "type": "git",
165
+ "url": "https://github.com/Dhii/data-container-interface.git",
166
+ "reference": "6be46e427184b95785d9dd563d6acf2e0700cc31"
167
+ },
168
+ "dist": {
169
+ "type": "zip",
170
+ "url": "https://api.github.com/repos/Dhii/data-container-interface/zipball/6be46e427184b95785d9dd563d6acf2e0700cc31",
171
+ "reference": "6be46e427184b95785d9dd563d6acf2e0700cc31",
172
+ "shasum": ""
173
+ },
174
+ "require": {
175
+ "dhii/exception-interface": "^0.1 | ^0.2",
176
+ "dhii/factory-interface": "^0.1-alpha1",
177
+ "php": "^5.3 | ^7.0",
178
+ "psr/container": "^1.0"
179
+ },
180
+ "require-dev": {
181
+ "codeclimate/php-test-reporter": "<=0.3.2",
182
+ "dhii/php-cs-fixer-config": "dev-php-5.3",
183
+ "dhii/stringable-interface": "^0.1",
184
+ "phpunit/phpunit": "^4.8",
185
+ "ptrofimov/xpmock": "^1.1"
186
+ },
187
+ "suggest": {
188
+ "dhii/stringable-interface": "To be able to pass Stringables as keys"
189
+ },
190
+ "time": "2019-05-10T14:17:29+00:00",
191
+ "type": "library",
192
+ "extra": {
193
+ "branch-alias": {
194
+ "dev-develop": "0.2.x-dev"
195
+ }
196
+ },
197
+ "installation-source": "dist",
198
+ "autoload": {
199
+ "psr-4": {
200
+ "Dhii\\Data\\Container\\": "src"
201
+ }
202
+ },
203
+ "notification-url": "https://packagist.org/downloads/",
204
+ "license": [
205
+ "MIT"
206
+ ],
207
+ "authors": [
208
+ {
209
+ "name": "Dhii Team",
210
+ "email": "development@dhii.co"
211
+ }
212
+ ],
213
+ "description": "Interfaces for working with data containers",
214
+ "support": {
215
+ "issues": "https://github.com/Dhii/data-container-interface/issues",
216
+ "source": "https://github.com/Dhii/data-container-interface/tree/v0.2.1-alpha1"
217
+ },
218
+ "abandoned": "dhii/collections-interface",
219
+ "install-path": "../dhii/data-container-interface"
220
+ },
221
+ {
222
+ "name": "dhii/data-key-value-aware-interface",
223
+ "version": "v0.1",
224
+ "version_normalized": "0.1.0.0",
225
+ "source": {
226
+ "type": "git",
227
+ "url": "https://github.com/Dhii/data-key-value-aware-interface.git",
228
+ "reference": "220232bc9040fab78a6c039f5a4a5f9542317bdc"
229
+ },
230
+ "dist": {
231
+ "type": "zip",
232
+ "url": "https://api.github.com/repos/Dhii/data-key-value-aware-interface/zipball/220232bc9040fab78a6c039f5a4a5f9542317bdc",
233
+ "reference": "220232bc9040fab78a6c039f5a4a5f9542317bdc",
234
+ "shasum": ""
235
+ },
236
+ "require": {
237
+ "php": "^5.3 | ^7.0"
238
+ },
239
+ "require-dev": {
240
+ "codeclimate/php-test-reporter": "<=0.3.2",
241
+ "dhii/php-cs-fixer-config": "dev-php-5.3",
242
+ "phpunit/phpunit": "4.*",
243
+ "ptrofimov/xpmock": "^1.1"
244
+ },
245
+ "time": "2017-01-21T17:35:30+00:00",
246
+ "type": "library",
247
+ "installation-source": "dist",
248
+ "autoload": {
249
+ "psr-4": {
250
+ "Dhii\\Data\\": "src/"
251
+ }
252
+ },
253
+ "notification-url": "https://packagist.org/downloads/",
254
+ "license": [
255
+ "MIT"
256
+ ],
257
+ "authors": [
258
+ {
259
+ "name": "Dhii Team",
260
+ "email": "development@dhii.co"
261
+ }
262
+ ],
263
+ "description": "Interfaces that aim to increase interoperability of value objects",
264
+ "support": {
265
+ "issues": "https://github.com/Dhii/data-key-value-aware-interface/issues",
266
+ "source": "https://github.com/Dhii/data-key-value-aware-interface/tree/master"
267
+ },
268
+ "install-path": "../dhii/data-key-value-aware-interface"
269
+ },
270
+ {
271
+ "name": "dhii/exception-interface",
272
+ "version": "v0.2",
273
+ "version_normalized": "0.2.0.0",
274
+ "source": {
275
+ "type": "git",
276
+ "url": "https://github.com/Dhii/exception-interface.git",
277
+ "reference": "b69feebf7cb2879cd43977a03342e2393b73f7fb"
278
+ },
279
+ "dist": {
280
+ "type": "zip",
281
+ "url": "https://api.github.com/repos/Dhii/exception-interface/zipball/b69feebf7cb2879cd43977a03342e2393b73f7fb",
282
+ "reference": "b69feebf7cb2879cd43977a03342e2393b73f7fb",
283
+ "shasum": ""
284
+ },
285
+ "require": {
286
+ "dhii/stringable-interface": "^0.1",
287
+ "php": "^5.3 | ^7.0"
288
+ },
289
+ "require-dev": {
290
+ "codeclimate/php-test-reporter": "<=0.3.2",
291
+ "dhii/php-cs-fixer-config": "dev-php-5.3",
292
+ "phpunit/phpunit": "^4.8",
293
+ "ptrofimov/xpmock": "^1.1"
294
+ },
295
+ "time": "2018-08-29T10:42:04+00:00",
296
+ "type": "library",
297
+ "extra": {
298
+ "branch-alias": {
299
+ "dev-develop": "0.2.x-dev"
300
+ }
301
+ },
302
+ "installation-source": "dist",
303
+ "autoload": {
304
+ "psr-4": {
305
+ "Dhii\\Exception\\": "src"
306
+ }
307
+ },
308
+ "notification-url": "https://packagist.org/downloads/",
309
+ "license": [
310
+ "MIT"
311
+ ],
312
+ "authors": [
313
+ {
314
+ "name": "Dhii Team",
315
+ "email": "development@dhii.co"
316
+ }
317
+ ],
318
+ "description": "Interfaces for most common exceptions",
319
+ "support": {
320
+ "issues": "https://github.com/Dhii/exception-interface/issues",
321
+ "source": "https://github.com/Dhii/exception-interface/tree/develop"
322
+ },
323
+ "install-path": "../dhii/exception-interface"
324
+ },
325
+ {
326
+ "name": "dhii/factory-interface",
327
+ "version": "v0.1",
328
+ "version_normalized": "0.1.0.0",
329
+ "source": {
330
+ "type": "git",
331
+ "url": "https://github.com/Dhii/factory-interface.git",
332
+ "reference": "b8d217aec8838e64ccaa770cb03dc164bf6f0515"
333
+ },
334
+ "dist": {
335
+ "type": "zip",
336
+ "url": "https://api.github.com/repos/Dhii/factory-interface/zipball/b8d217aec8838e64ccaa770cb03dc164bf6f0515",
337
+ "reference": "b8d217aec8838e64ccaa770cb03dc164bf6f0515",
338
+ "shasum": ""
339
+ },
340
+ "require": {
341
+ "dhii/exception-interface": "^0.1|^0.2",
342
+ "php": "^5.3 | ^7.0"
343
+ },
344
+ "require-dev": {
345
+ "codeclimate/php-test-reporter": "<=0.3.2",
346
+ "dhii/php-cs-fixer-config": "dev-php-5.3",
347
+ "dhii/stringable-interface": "^0.1",
348
+ "phpunit/phpunit": "^4.8",
349
+ "psr/container": "^1.0",
350
+ "ptrofimov/xpmock": "^1.1"
351
+ },
352
+ "time": "2018-08-29T11:15:09+00:00",
353
+ "type": "library",
354
+ "extra": {
355
+ "branch-alias": {
356
+ "dev-develop": "0.1.x-dev"
357
+ }
358
+ },
359
+ "installation-source": "dist",
360
+ "autoload": {
361
+ "psr-4": {
362
+ "Dhii\\Factory\\": "src"
363
+ }
364
+ },
365
+ "notification-url": "https://packagist.org/downloads/",
366
+ "license": [
367
+ "MIT"
368
+ ],
369
+ "authors": [
370
+ {
371
+ "name": "Dhii Team",
372
+ "email": "development@dhii.co"
373
+ }
374
+ ],
375
+ "description": "Interfaces for working with factories.",
376
+ "support": {
377
+ "issues": "https://github.com/Dhii/factory-interface/issues",
378
+ "source": "https://github.com/Dhii/factory-interface/tree/master"
379
+ },
380
+ "abandoned": true,
381
+ "install-path": "../dhii/factory-interface"
382
+ },
383
+ {
384
+ "name": "dhii/module-interface",
385
+ "version": "v0.1",
386
+ "version_normalized": "0.1.0.0",
387
+ "source": {
388
+ "type": "git",
389
+ "url": "https://github.com/Dhii/module-interface.git",
390
+ "reference": "a4271f2040e54f81cb7c4d5b3f18cb4a7532c277"
391
+ },
392
+ "dist": {
393
+ "type": "zip",
394
+ "url": "https://api.github.com/repos/Dhii/module-interface/zipball/a4271f2040e54f81cb7c4d5b3f18cb4a7532c277",
395
+ "reference": "a4271f2040e54f81cb7c4d5b3f18cb4a7532c277",
396
+ "shasum": ""
397
+ },
398
+ "require": {
399
+ "dhii/data-key-value-aware-interface": "^0.1",
400
+ "dhii/exception-interface": "^0.1 | ^0.2",
401
+ "dhii/factory-interface": "^0.1-alpha1",
402
+ "php": "^5.3 | ^7.0"
403
+ },
404
+ "require-dev": {
405
+ "codeclimate/php-test-reporter": "<=0.3.2",
406
+ "dhii/php-cs-fixer-config": "dev-php-5.3",
407
+ "dhii/stringable-interface": "^0.1",
408
+ "phpunit/phpunit": "^4.8",
409
+ "psr/container": "^1.0",
410
+ "ptrofimov/xpmock": "^1.1"
411
+ },
412
+ "time": "2019-11-05T18:25:12+00:00",
413
+ "type": "library",
414
+ "extra": {
415
+ "branch-alias": {
416
+ "dev-develop": "0.1.x-dev"
417
+ }
418
+ },
419
+ "installation-source": "dist",
420
+ "autoload": {
421
+ "psr-4": {
422
+ "Dhii\\Modular\\Module\\": "src"
423
+ }
424
+ },
425
+ "notification-url": "https://packagist.org/downloads/",
426
+ "license": [
427
+ "MIT"
428
+ ],
429
+ "authors": [
430
+ {
431
+ "name": "Dhii Team",
432
+ "email": "development@dhii.co"
433
+ }
434
+ ],
435
+ "description": "Interfaces for modules",
436
+ "support": {
437
+ "issues": "https://github.com/Dhii/module-interface/issues",
438
+ "source": "https://github.com/Dhii/module-interface/tree/master"
439
+ },
440
+ "install-path": "../dhii/module-interface"
441
+ },
442
+ {
443
+ "name": "dhii/stringable-interface",
444
+ "version": "v0.1",
445
+ "version_normalized": "0.1.0.0",
446
+ "source": {
447
+ "type": "git",
448
+ "url": "https://github.com/Dhii/stringable-interface.git",
449
+ "reference": "b6653905eef2ebf377749feb80a6d18abbe913ef"
450
+ },
451
+ "dist": {
452
+ "type": "zip",
453
+ "url": "https://api.github.com/repos/Dhii/stringable-interface/zipball/b6653905eef2ebf377749feb80a6d18abbe913ef",
454
+ "reference": "b6653905eef2ebf377749feb80a6d18abbe913ef",
455
+ "shasum": ""
456
+ },
457
+ "require": {
458
+ "php": "^5.3 | ^7.0"
459
+ },
460
+ "require-dev": {
461
+ "codeclimate/php-test-reporter": "<=0.3.2",
462
+ "dhii/php-cs-fixer-config": "dev-php-5.3",
463
+ "phpunit/phpunit": "^4.8",
464
+ "ptrofimov/xpmock": "^1.1"
465
+ },
466
+ "time": "2017-01-23T15:08:20+00:00",
467
+ "type": "library",
468
+ "installation-source": "dist",
469
+ "autoload": {
470
+ "psr-4": {
471
+ "Dhii\\Util\\String\\": "src/"
472
+ }
473
+ },
474
+ "notification-url": "https://packagist.org/downloads/",
475
+ "license": [
476
+ "MIT"
477
+ ],
478
+ "authors": [
479
+ {
480
+ "name": "Dhii Team",
481
+ "email": "development@dhii.co"
482
+ }
483
+ ],
484
+ "description": "Interoperability interface for objects that can be cast to string",
485
+ "support": {
486
+ "issues": "https://github.com/Dhii/stringable-interface/issues",
487
+ "source": "https://github.com/Dhii/stringable-interface/tree/master"
488
+ },
489
+ "abandoned": "symfony/polyfill-php80",
490
+ "install-path": "../dhii/stringable-interface"
491
+ },
492
+ {
493
+ "name": "dhii/wp-containers",
494
+ "version": "v0.1.0-alpha1",
495
+ "version_normalized": "0.1.0.0-alpha1",
496
+ "source": {
497
+ "type": "git",
498
+ "url": "https://github.com/Dhii/wp-containers.git",
499
+ "reference": "e91a6f741622770ed724a2b594145fa917811f0c"
500
+ },
501
+ "dist": {
502
+ "type": "zip",
503
+ "url": "https://api.github.com/repos/Dhii/wp-containers/zipball/e91a6f741622770ed724a2b594145fa917811f0c",
504
+ "reference": "e91a6f741622770ed724a2b594145fa917811f0c",
505
+ "shasum": ""
506
+ },
507
+ "require": {
508
+ "dhii/data-container-interface": "^0.2.1-alpha1",
509
+ "php": "^7.0 | ^8.0",
510
+ "psr/container": "^1.0"
511
+ },
512
+ "require-dev": {
513
+ "brain/monkey": "^2",
514
+ "gmazzap/andrew": "^1.1",
515
+ "phpunit/phpunit": "^6",
516
+ "slevomat/coding-standard": "~4.0"
517
+ },
518
+ "time": "2019-05-10T15:04:22+00:00",
519
+ "type": "library",
520
+ "extra": {
521
+ "branch-alias": {
522
+ "dev-develop": "0.1.x-dev"
523
+ }
524
+ },
525
+ "installation-source": "dist",
526
+ "autoload": {
527
+ "psr-4": {
528
+ "Dhii\\Wp\\Containers\\": "src/"
529
+ }
530
+ },
531
+ "notification-url": "https://packagist.org/downloads/",
532
+ "license": [
533
+ "MIT"
534
+ ],
535
+ "authors": [
536
+ {
537
+ "name": "Dhii Team",
538
+ "email": "development@dhii.co"
539
+ }
540
+ ],
541
+ "description": "PSR-11 container implementations that wrap some WP features, for convenience and interoperability.",
542
+ "keywords": [
543
+ "container",
544
+ "dependency injection",
545
+ "di",
546
+ "wordpress"
547
+ ],
548
+ "support": {
549
+ "issues": "https://github.com/Dhii/wp-containers/issues",
550
+ "source": "https://github.com/Dhii/wp-containers/tree/v0.1.0-alpha1"
551
+ },
552
+ "abandoned": "wp-oop/containers",
553
+ "install-path": "../dhii/wp-containers"
554
+ },
555
+ {
556
+ "name": "psr/container",
557
+ "version": "1.0.0",
558
+ "version_normalized": "1.0.0.0",
559
+ "source": {
560
+ "type": "git",
561
+ "url": "https://github.com/php-fig/container.git",
562
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
563
+ },
564
+ "dist": {
565
+ "type": "zip",
566
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
567
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
568
+ "shasum": ""
569
+ },
570
+ "require": {
571
+ "php": ">=5.3.0"
572
+ },
573
+ "time": "2017-02-14T16:28:37+00:00",
574
+ "type": "library",
575
+ "extra": {
576
+ "branch-alias": {
577
+ "dev-master": "1.0.x-dev"
578
+ }
579
+ },
580
+ "installation-source": "dist",
581
+ "autoload": {
582
+ "psr-4": {
583
+ "Psr\\Container\\": "src/"
584
+ }
585
+ },
586
+ "notification-url": "https://packagist.org/downloads/",
587
+ "license": [
588
+ "MIT"
589
+ ],
590
+ "authors": [
591
+ {
592
+ "name": "PHP-FIG",
593
+ "homepage": "http://www.php-fig.org/"
594
+ }
595
+ ],
596
+ "description": "Common Container Interface (PHP FIG PSR-11)",
597
+ "homepage": "https://github.com/php-fig/container",
598
+ "keywords": [
599
+ "PSR-11",
600
+ "container",
601
+ "container-interface",
602
+ "container-interop",
603
+ "psr"
604
+ ],
605
+ "support": {
606
+ "issues": "https://github.com/php-fig/container/issues",
607
+ "source": "https://github.com/php-fig/container/tree/master"
608
+ },
609
+ "install-path": "../psr/container"
610
+ },
611
+ {
612
+ "name": "psr/log",
613
+ "version": "1.1.3",
614
+ "version_normalized": "1.1.3.0",
615
+ "source": {
616
+ "type": "git",
617
+ "url": "https://github.com/php-fig/log.git",
618
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
619
+ },
620
+ "dist": {
621
+ "type": "zip",
622
+ "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
623
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
624
+ "shasum": ""
625
+ },
626
+ "require": {
627
+ "php": ">=5.3.0"
628
+ },
629
+ "time": "2020-03-23T09:12:05+00:00",
630
+ "type": "library",
631
+ "extra": {
632
+ "branch-alias": {
633
+ "dev-master": "1.1.x-dev"
634
+ }
635
+ },
636
+ "installation-source": "dist",
637
+ "autoload": {
638
+ "psr-4": {
639
+ "Psr\\Log\\": "Psr/Log/"
640
+ }
641
+ },
642
+ "notification-url": "https://packagist.org/downloads/",
643
+ "license": [
644
+ "MIT"
645
+ ],
646
+ "authors": [
647
+ {
648
+ "name": "PHP-FIG",
649
+ "homepage": "http://www.php-fig.org/"
650
+ }
651
+ ],
652
+ "description": "Common interface for logging libraries",
653
+ "homepage": "https://github.com/php-fig/log",
654
+ "keywords": [
655
+ "log",
656
+ "psr",
657
+ "psr-3"
658
+ ],
659
+ "support": {
660
+ "source": "https://github.com/php-fig/log/tree/1.1.3"
661
+ },
662
+ "install-path": "../psr/log"
663
+ },
664
+ {
665
+ "name": "ralouphie/getallheaders",
666
+ "version": "3.0.3",
667
+ "version_normalized": "3.0.3.0",
668
+ "source": {
669
+ "type": "git",
670
+ "url": "https://github.com/ralouphie/getallheaders.git",
671
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
672
+ },
673
+ "dist": {
674
+ "type": "zip",
675
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
676
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
677
+ "shasum": ""
678
+ },
679
+ "require": {
680
+ "php": ">=5.6"
681
+ },
682
+ "require-dev": {
683
+ "php-coveralls/php-coveralls": "^2.1",
684
+ "phpunit/phpunit": "^5 || ^6.5"
685
+ },
686
+ "time": "2019-03-08T08:55:37+00:00",
687
+ "type": "library",
688
+ "installation-source": "dist",
689
+ "autoload": {
690
+ "files": [
691
+ "src/getallheaders.php"
692
+ ]
693
+ },
694
+ "notification-url": "https://packagist.org/downloads/",
695
+ "license": [
696
+ "MIT"
697
+ ],
698
+ "authors": [
699
+ {
700
+ "name": "Ralph Khattar",
701
+ "email": "ralph.khattar@gmail.com"
702
+ }
703
+ ],
704
+ "description": "A polyfill for getallheaders.",
705
+ "support": {
706
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
707
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
708
+ },
709
+ "install-path": "../ralouphie/getallheaders"
710
+ }
711
+ ],
712
+ "dev": false,
713
+ "dev-package-names": []
714
+ }
vendor/composer/installed.php ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php return array (
2
+ 'root' =>
3
+ array (
4
+ 'pretty_version' => 'dev-trunk',
5
+ 'version' => 'dev-trunk',
6
+ 'aliases' =>
7
+ array (
8
+ ),
9
+ 'reference' => 'e2cf37297ae10d0329f99a2b3ef55a8e1112c5ce',
10
+ 'name' => 'woocommerce/woocommerce-paypal-payments',
11
+ ),
12
+ 'versions' =>
13
+ array (
14
+ 'container-interop/service-provider' =>
15
+ array (
16
+ 'pretty_version' => 'v0.4.0',
17
+ 'version' => '0.4.0.0',
18
+ 'aliases' =>
19
+ array (
20
+ ),
21
+ 'reference' => '4969b9e49460690b7430b3f1a87cab07be61418a',
22
+ ),
23
+ 'dhii/collections-interface' =>
24
+ array (
25
+ 'pretty_version' => 'v0.3.0-alpha4',
26
+ 'version' => '0.3.0.0-alpha4',
27
+ 'aliases' =>
28
+ array (
29
+ ),
30
+ 'reference' => 'da334f75f6477ef7eecaf28df1d5253fe05684ee',
31
+ ),
32
+ 'dhii/containers' =>
33
+ array (
34
+ 'pretty_version' => 'v0.1.0-alpha1',
35
+ 'version' => '0.1.0.0-alpha1',
36
+ 'aliases' =>
37
+ array (
38
+ ),
39
+ 'reference' => '73eed5422e106006c81ca1fa8b7213c6be33efbc',
40
+ ),
41
+ 'dhii/data-container-interface' =>
42
+ array (
43
+ 'pretty_version' => 'v0.2.1-alpha1',
44
+ 'version' => '0.2.1.0-alpha1',
45
+ 'aliases' =>
46
+ array (
47
+ ),
48
+ 'reference' => '6be46e427184b95785d9dd563d6acf2e0700cc31',
49
+ ),
50
+ 'dhii/data-key-value-aware-interface' =>
51
+ array (
52
+ 'pretty_version' => 'v0.1',
53
+ 'version' => '0.1.0.0',
54
+ 'aliases' =>
55
+ array (
56
+ ),
57
+ 'reference' => '220232bc9040fab78a6c039f5a4a5f9542317bdc',
58
+ ),
59
+ 'dhii/exception-interface' =>
60
+ array (
61
+ 'pretty_version' => 'v0.2',
62
+ 'version' => '0.2.0.0',
63
+ 'aliases' =>
64
+ array (
65
+ ),
66
+ 'reference' => 'b69feebf7cb2879cd43977a03342e2393b73f7fb',
67
+ ),
68
+ 'dhii/factory-interface' =>
69
+ array (
70
+ 'pretty_version' => 'v0.1',
71
+ 'version' => '0.1.0.0',
72
+ 'aliases' =>
73
+ array (
74
+ ),
75
+ 'reference' => 'b8d217aec8838e64ccaa770cb03dc164bf6f0515',
76
+ ),
77
+ 'dhii/module-interface' =>
78
+ array (
79
+ 'pretty_version' => 'v0.1',
80
+ 'version' => '0.1.0.0',
81
+ 'aliases' =>
82
+ array (
83
+ ),
84
+ 'reference' => 'a4271f2040e54f81cb7c4d5b3f18cb4a7532c277',
85
+ ),
86
+ 'dhii/stringable-interface' =>
87
+ array (
88
+ 'pretty_version' => 'v0.1',
89
+ 'version' => '0.1.0.0',
90
+ 'aliases' =>
91
+ array (
92
+ ),
93
+ 'reference' => 'b6653905eef2ebf377749feb80a6d18abbe913ef',
94
+ ),
95
+ 'dhii/wp-containers' =>
96
+ array (
97
+ 'pretty_version' => 'v0.1.0-alpha1',
98
+ 'version' => '0.1.0.0-alpha1',
99
+ 'aliases' =>
100
+ array (
101
+ ),
102
+ 'reference' => 'e91a6f741622770ed724a2b594145fa917811f0c',
103
+ ),
104
+ 'psr/container' =>
105
+ array (
106
+ 'pretty_version' => '1.0.0',
107
+ 'version' => '1.0.0.0',
108
+ 'aliases' =>
109
+ array (
110
+ ),
111
+ 'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
112
+ ),
113
+ 'psr/log' =>
114
+ array (
115
+ 'pretty_version' => '1.1.3',
116
+ 'version' => '1.1.3.0',
117
+ 'aliases' =>
118
+ array (
119
+ ),
120
+ 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
121
+ ),
122
+ 'ralouphie/getallheaders' =>
123
+ array (
124
+ 'pretty_version' => '3.0.3',
125
+ 'version' => '3.0.3.0',
126
+ 'aliases' =>
127
+ array (
128
+ ),
129
+ 'reference' => '120b605dfeb996808c31b6477290a714d356e822',
130
+ ),
131
+ 'woocommerce/woocommerce-paypal-payments' =>
132
+ array (
133
+ 'pretty_version' => 'dev-trunk',
134
+ 'version' => 'dev-trunk',
135
+ 'aliases' =>
136
+ array (
137
+ ),
138
+ 'reference' => 'e2cf37297ae10d0329f99a2b3ef55a8e1112c5ce',
139
+ ),
140
+ ),
141
+ );
vendor/composer/platform_check.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // platform_check.php @generated by Composer
4
+
5
+ $issues = array();
6
+
7
+ if (!(PHP_VERSION_ID >= 70100)) {
8
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.0". You are running ' . PHP_VERSION . '.';
9
+ }
10
+
11
+ if ($issues) {
12
+ if (!headers_sent()) {
13
+ header('HTTP/1.1 500 Internal Server Error');
14
+ }
15
+ if (!ini_get('display_errors')) {
16
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
17
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
18
+ } elseif (!headers_sent()) {
19
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
20
+ }
21
+ }
22
+ trigger_error(
23
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
24
+ E_USER_ERROR
25
+ );
26
+ }
vendor/dhii/collections-interface/.env.example CHANGED
@@ -4,3 +4,5 @@ PROJECT_NAME=dhii_collections-interface
4
 
5
  PHP_BUILD_VERSION=7.1
6
  PHP_TEST_VERSION=7.4
 
 
4
 
5
  PHP_BUILD_VERSION=7.1
6
  PHP_TEST_VERSION=7.4
7
+
8
+ HOST_IP_ADDRESS=127.0.0.1
vendor/dhii/collections-interface/CHANGELOG.md CHANGED
@@ -6,6 +6,14 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
6
 
7
  ## [[*next-version*]] - YYYY-MM-DD
8
 
 
 
 
 
 
 
 
 
9
  ## [0.3.0-alpha3] - 2021-01-14
10
  ### Changed
11
  - Supports PHP 8, and newer tools.
6
 
7
  ## [[*next-version*]] - YYYY-MM-DD
8
 
9
+ ## [0.3.0-alpha4] - 2021-03-09
10
+ ### Fixed
11
+ - Order of `extends` use to cause problems with newer versions
12
+ of `psr/container` (#28).
13
+
14
+ ### Changed
15
+ - QoL improvements (#28).
16
+
17
  ## [0.3.0-alpha3] - 2021-01-14
18
  ### Changed
19
  - Supports PHP 8, and newer tools.
vendor/dhii/collections-interface/README.md CHANGED
@@ -1,9 +1,7 @@
1
  # Dhii - Collections Interface
2
-
3
- [![Build Status](https://travis-ci.org/Dhii/collections-interface.svg?branch=develop)](https://travis-ci.org/Dhii/collections-interface)
4
- [![Code Climate](https://codeclimate.com/github/Dhii/collections-interface/badges/gpa.svg)](https://codeclimate.com/github/Dhii/collections-interface)
5
- [![Test Coverage](https://codeclimate.com/github/Dhii/collections-interface/badges/coverage.svg)](https://codeclimate.com/github/Dhii/collections-interface/coverage)
6
- [![Latest Stable Version](https://poser.pugx.org/dhii/collections-interface/version)](https://packagist.org/packages/dhii/collections-interface)
7
 
8
  A highly [ISP][ISP]-compliant collection of interfaces that represent collections.
9
 
1
  # Dhii - Collections Interface
2
+ [![Continuous Integration](https://github.com/Dhii/collections-interface/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/Dhii/collections-interface/actions/workflows/continuous-integration.yml)
3
+ [![Latest Stable Version](https://poser.pugx.org/dhii/collections-interface/v)](//packagist.org/packages/dhii/collections-interface)
4
+ [![Latest Unstable Version](https://poser.pugx.org/dhii/collections-interface/v/unstable)](//packagist.org/packages/dhii/collections-interface)
 
 
5
 
6
  A highly [ISP][ISP]-compliant collection of interfaces that represent collections.
7
 
vendor/dhii/collections-interface/docker-compose.yml CHANGED
@@ -15,6 +15,8 @@ services:
15
  - ${BASE_PATH}:${BUILD_ROOT_PATH}
16
 
17
  test:
 
 
18
  build:
19
  context: ./
20
  dockerfile: docker/Dockerfile
15
  - ${BASE_PATH}:${BUILD_ROOT_PATH}
16
 
17
  test:
18
+ extra_hosts:
19
+ - "host.docker.internal:${HOST_IP_ADDRESS}"
20
  build:
21
  context: ./
22
  dockerfile: docker/Dockerfile
vendor/dhii/collections-interface/docker/Dockerfile CHANGED
@@ -22,7 +22,7 @@ FROM php:${PHP_TEST_VERSION}-cli as test
22
  ARG BUILD_ROOT_PATH
23
 
24
  RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
25
- RUN pecl install xdebug-2.6.0
26
  RUN docker-php-ext-install pcntl
27
  RUN docker-php-ext-install posix
28
 
22
  ARG BUILD_ROOT_PATH
23
 
24
  RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
25
+ RUN pecl install xdebug-2.9.8
26
  RUN docker-php-ext-install pcntl
27
  RUN docker-php-ext-install posix
28
 
vendor/dhii/collections-interface/src/ContainerInterface.php CHANGED
@@ -10,7 +10,7 @@ use Psr\Container\ContainerInterface as BaseContainerInterface;
10
  * Something that can retrieve and determine the existence of a value by key.
11
  */
12
  interface ContainerInterface extends
13
- BaseContainerInterface,
14
- HasCapableInterface
15
  {
16
  }
10
  * Something that can retrieve and determine the existence of a value by key.
11
  */
12
  interface ContainerInterface extends
13
+ HasCapableInterface,
14
+ BaseContainerInterface
15
  {
16
  }
woocommerce-paypal-payments.php CHANGED
@@ -2,11 +2,12 @@
2
  /**
3
  * Plugin Name: WooCommerce PayPal Payments
4
  * Plugin URI: https://woocommerce.com/products/woocommerce-paypal-payments/
5
- * Description: PayPal's latest complete payments processing solution. Accept PayPal, PayPal Credit, credit/debit cards, alternative digital wallets local payment types and bank accounts. Turn on only PayPal options or process a full suite of payment methods. Enable global transaction with extensive currency and country coverage.
6
- * Version: 1.2.1
7
  * Author: WooCommerce
8
  * Author URI: https://woocommerce.com/
9
  * License: GPL-2.0
 
10
  * WC requires at least: 3.9
11
  * WC tested up to: 4.9
12
  * Text Domain: woocommerce-paypal-payments
@@ -28,6 +29,8 @@ define( 'PAYPAL_API_URL', 'https://api.paypal.com' );
28
  define( 'PAYPAL_SANDBOX_API_URL', 'https://api.sandbox.paypal.com' );
29
  define( 'PAYPAL_INTEGRATION_DATE', '2020-10-15' );
30
 
 
 
31
  ! defined( 'CONNECT_WOO_CLIENT_ID' ) && define( 'CONNECT_WOO_CLIENT_ID', 'AcCAsWta_JTL__OfpjspNyH7c1GGHH332fLwonA5CwX4Y10mhybRZmHLA0GdRbwKwjQIhpDQy0pluX_P' );
32
  ! defined( 'CONNECT_WOO_SANDBOX_CLIENT_ID' ) && define( 'CONNECT_WOO_SANDBOX_CLIENT_ID', 'AYmOHbt1VHg-OZ_oihPdzKEVbU3qg0qXonBcAztuzniQRaKE0w1Hr762cSFwd4n8wxOl-TCWohEa0XM_' );
33
  ! defined( 'CONNECT_WOO_MERCHANT_ID' ) && define( 'CONNECT_WOO_MERCHANT_ID', 'K8SKZ36LQBWXJ' );
@@ -56,6 +59,16 @@ define( 'PAYPAL_INTEGRATION_DATE', '2020-10-15' );
56
 
57
  return;
58
  }
 
 
 
 
 
 
 
 
 
 
59
 
60
  static $initialized;
61
  if ( ! $initialized ) {
2
  /**
3
  * Plugin Name: WooCommerce PayPal Payments
4
  * Plugin URI: https://woocommerce.com/products/woocommerce-paypal-payments/
5
+ * Description: PayPal's latest complete payments processing solution. Accept PayPal, Pay Later, credit/debit cards, alternative digital wallets local payment types and bank accounts. Turn on only PayPal options or process a full suite of payment methods. Enable global transaction with extensive currency and country coverage.
6
+ * Version: 1.3.0
7
  * Author: WooCommerce
8
  * Author URI: https://woocommerce.com/
9
  * License: GPL-2.0
10
+ * Requires PHP: 7.1
11
  * WC requires at least: 3.9
12
  * WC tested up to: 4.9
13
  * Text Domain: woocommerce-paypal-payments
29
  define( 'PAYPAL_SANDBOX_API_URL', 'https://api.sandbox.paypal.com' );
30
  define( 'PAYPAL_INTEGRATION_DATE', '2020-10-15' );
31
 
32
+ define( 'PPCP_FLAG_SUBSCRIPTION', true );
33
+
34
  ! defined( 'CONNECT_WOO_CLIENT_ID' ) && define( 'CONNECT_WOO_CLIENT_ID', 'AcCAsWta_JTL__OfpjspNyH7c1GGHH332fLwonA5CwX4Y10mhybRZmHLA0GdRbwKwjQIhpDQy0pluX_P' );
35
  ! defined( 'CONNECT_WOO_SANDBOX_CLIENT_ID' ) && define( 'CONNECT_WOO_SANDBOX_CLIENT_ID', 'AYmOHbt1VHg-OZ_oihPdzKEVbU3qg0qXonBcAztuzniQRaKE0w1Hr762cSFwd4n8wxOl-TCWohEa0XM_' );
36
  ! defined( 'CONNECT_WOO_MERCHANT_ID' ) && define( 'CONNECT_WOO_MERCHANT_ID', 'K8SKZ36LQBWXJ' );
59
 
60
  return;
61
  }
62
+ if ( version_compare( PHP_VERSION, '7.1', '<' ) ) {
63
+ add_action(
64
+ 'admin_notices',
65
+ function() {
66
+ echo '<div class="error"><p>' . esc_html__( 'WooCommerce PayPal Payments requires PHP 7.1 or above.', 'woocommerce-paypal-payments' ), '</p></div>';
67
+ }
68
+ );
69
+
70
+ return;
71
+ }
72
 
73
  static $initialized;
74
  if ( ! $initialized ) {