diff --git a/.gitignore b/.gitignore index 36ad694d6..f8b22eae5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ node_modules -package-lock.json .DS_Store .vscode .idea diff --git a/CHANGELOG.md b/CHANGELOG.md index 216466138..78b5b30ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,20 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [4.5.0] - 2020-10-26 + +### Added + - Compatibility with WooCommerce v4.6.x + - Improved security (added access token in the header for all calls to Mercado Livre and Mercado Pago endpoints) + - Add new endpoint to validate Access Token and Public key to substitute old process to validation + - Improved performance with CSS minification + +### Changed + - Fixed conflict with wc-api webhook and Mercado Pago webhook/IPN. + - Fixed alert in currency conversion + - Fixed tranlate in currency conversion + - Bug fixed when updating orders that have two or more payments associated. + ## [4.4.0] - 2020-09-21 ### Added diff --git a/assets/css/admin_notice_mercadopago.min.css b/assets/css/admin_notice_mercadopago.min.css new file mode 100644 index 000000000..087f5bfb8 --- /dev/null +++ b/assets/css/admin_notice_mercadopago.min.css @@ -0,0 +1 @@ +.mp-alert-frame{align-items:center;display:inline-flex;justify-content:center;justify-items:center}.mp-left-alert{padding-top:5px}.mp-left-alert img{max-width:150px}.mp-right-alert{padding-top:0} \ No newline at end of file diff --git a/assets/css/basic_checkout_mercadopago.min.css b/assets/css/basic_checkout_mercadopago.min.css new file mode 100644 index 000000000..7f4cd4dc8 --- /dev/null +++ b/assets/css/basic_checkout_mercadopago.min.css @@ -0,0 +1 @@ +.mp-pt-20{padding-top:20px!important}.mp-pt-5{padding-top:5px!important}.mp-pt-15{padding-top:15px!important}.mp-pt-10{padding-top:10px!important}.mp-pt-0{padding-top:0!important}.mp-pt-30{padding-top:30px!important}.mp-pb-15{padding-bottom:15px!important}.mp-pb-20{padding-bottom:20px!important}.mp-pb-30{padding-bottom:30px!important}.mp-pl-10{padding-left:10px!important}.mp-pr-10{padding-right:10px!important}.mp-pr-15{padding-right:15px!important}.mp-mt-5{margin-top:5px!important}.mp-mt-03rem{margin-top:.3rem!important}.mp-mt-04rem{margin-top:.4rem!important}.mp-mt-05rem{margin-top:.5rem!important}.mp-mt-06rem{margin-top:.6rem!important}.mp-mb-0{margin-bottom:0!important}.mp-mb-20{margin-bottom:20px!important}.mp-mb-30{margin-bottom:30px!important}.mp-mt-20{margin-top:20px!important}.mp-display-inherit{display:inherit!important}.mp-pointer{cursor:pointer!important}.mp-text-center{text-align:center!important}.mp-text-justify{text-align:justify!important}.mp-min-hg{min-height:40px!important}.mp-row-checkout{width:100%;display:inline-block}.mp-col-md-12{width:100%;display:inline-block;padding-left:0;padding-right:0;text-align:left!important}.mp-col-md-9{flex:0 0 75%;width:75%;float:left}.mp-col-md-8{flex:0 0 66.666667%;width:66.666667%;float:left}.mp-col-md-6{width:50%;float:left;padding-left:0;padding-right:0;text-align:left!important}.mp-col-md-4{flex:0 0 33.333333%;width:33.333333%;float:left}.mp-col-md-3{flex:0 0 25%;width:25%;float:left}.mp-img-fluid{max-width:100%;height:auto}.mp-panel-checkout{background-color:#fff;padding:10px 15px 25px}.mp-title-checkout{padding:15px 0 0;font-family:sans-serif;font-size:1.2rem!important;font-weight:600!important;font-style:normal;font-stretch:normal;line-height:1.25!important;letter-spacing:normal;color:#04204c;margin:0!important}.mp-title-checkout::before{content:""!important;width:0!important;height:0!important;margin:0!important}.submp-title-checkout{font-size:14px!important;font-family:sans-serif!important;color:#7a7a7a;font-weight:400;padding:20px 0 0;margin:0 0 5px!important;text-transform:uppercase}.mp-subtitle-basic-checkout{font-size:14px!important;font-family:sans-serif!important;color:#7a7a7a;font-weight:400;padding:.625em 0 0;margin:0 0 5px!important;text-transform:uppercase}.mp-badge-checkout{font-size:15px!important;font-family:sans-serif!important;padding:5px 10px;margin-left:5px;display:inline-block;background-color:#2ec74b;color:#fff;text-transform:none;border-radius:2px}.mp-img-tarjetas{padding:8px!important;max-height:35px!important;width:auto!important;float:none!important;position:relative!important;right:0!important;border:inherit!important;display:inline-block!important}.mp-img-redirect{padding:8px!important;max-height:6.25em!important;width:auto!important;float:none!important;position:relative!important;right:0!important;border:inherit!important;display:inline-block!important}.mp-img-ticket{padding:0 8px!important;max-height:35px!important;width:auto!important;float:left!important;position:relative!important;right:0!important;border:inherit!important}.mp-redirect-frame{width:100%;text-align:center;background-color:#f5f5f5;padding:25px 20px 20px;display:inline-block}.mp-redirect-frame img{max-width:160px!important}.mp-redirect-frame p{padding-top:15px!important;margin-top:0!important;font-family:sans-serif!important;font-size:14px!important;font-weight:600!important;font-style:normal!important;font-stretch:normal!important;line-height:1.71!important;letter-spacing:normal!important;text-align:center!important;color:#333!important}.mp-panel-custom-checkout{background-color:#fff;padding:20px 15px 0}.mp-subtitle-custom-checkout{font-size:17px!important;font-family:sans-serif!important;color:#04204c;font-weight:600;padding:20px 0 0;margin:0 0 5px!important}.mp-subtitle-ticket-checkout{font-size:16px!important;font-family:sans-serif!important;color:#04204c;font-weight:600;padding:0 0 0;margin:0 0 5px!important}.mp-form-control{font-family:sans-serif!important;width:100%;height:40px!important;border-radius:5px!important;font-size:13px!important;padding:0 10px!important;background-color:#fff!important;border:1px solid #d1d1d1!important;margin-bottom:0!important}.mp-form-control-error{border:2px solid #f04449!important}.mp-form-control-check{margin:0 10px 0 0!important;font-family:sans-serif!important;border-radius:5px!important;font-size:13px!important;padding:0 10px!important;background-color:#fff!important;border:1px solid #d1d1d1!important;float:left}.mp-button{width:100%;height:40px;border-radius:5px!important;color:#fff!important;background-color:#3483fa!important;text-transform:none!important;font-size:15px!important;font-weight:400!important;font-style:normal;font-stretch:normal;line-height:1!important;letter-spacing:normal!important;text-align:center!important}.mp-button:hover{opacity:.8}.mp-error{font-family:sans-serif!important;font-size:12px!important;font-weight:400!important;font-style:normal;font-stretch:normal;line-height:1.29;letter-spacing:normal;color:#f04449!important;display:none}.mp-desc{font-family:sans-serif!important;font-size:12px!important;font-weight:400!important;font-style:normal;font-stretch:normal;line-height:1.29;letter-spacing:normal;color:rgba(0,0,0,.45)!important}.mp-label-form-check{font-family:sans-serif!important;font-size:14px!important;font-weight:400!important;font-style:normal;font-stretch:normal;line-height:1;letter-spacing:normal;color:rgba(0,0,0,.8)!important;vertical-align:baseline!important}.mp-label-form{font-family:sans-serif!important;font-size:13px!important;font-weight:400!important;font-style:normal;font-stretch:normal;line-height:1;letter-spacing:normal;color:rgba(0,0,0,.7)!important}.mp-label-form em{font-size:18px!important;color:#f04449!important;font-family:"Merriweather, Georgia";position:absolute;margin:-3px 0 0 3px}.mp-obrigatory{font-family:sans-serif!important;font-size:12px!important;font-weight:400!important;font-style:normal;font-stretch:normal;line-height:1.29;letter-spacing:normal;color:#f04449!important;padding-top:10px}.mp-obrigatory em{font-size:18px!important;color:#f04449!important;margin:-2px 5px 0 0;font-family:"Merriweather, Georgia";float:left}.mp-frame-links{display:inline-flex;padding-top:10px;text-align:left}.mp-checkout-link{font-family:sans-serif!important;font-size:14px;text-decoration:none!important;vertical-align:middle;box-shadow:none!important;cursor:pointer}.mp-frame-payments{display:none;background-color:#f5f5f5;margin-top:10px;padding:10px 10px 10px;width:100%}.submp-title-checkout-custom{font-size:13px!important;font-family:sans-serif!important;color:#7a7a7a;font-weight:400;padding:00px 0 0;margin:0 0 5px!important;text-transform:uppercase}.mp-tooltip{position:relative;display:inline-block;border-bottom:1px dotted #000}.mp-tooltip .mp-tooltiptext{visibility:hidden;background:#3483fa;color:#fff;padding:5px 0;position:absolute;width:250px;text-align:center;margin:-20px 0 0 100px;font-size:12px}.mp-tooltip .mp-tooltiptext:before{border:6px solid transparent;border-right-color:#3483fa;content:"";left:-12px;position:absolute;top:5px}.mp-tooltip:hover .mp-tooltiptext{visibility:visible}.mp-erro_febraban,.mp_error_docnumber{font-family:sans-serif!important;font-size:12px!important;font-weight:400!important;font-style:normal;font-stretch:normal;line-height:1.29;letter-spacing:normal;color:#f04449!important;margin-top:5px;display:none}.mp-subtitle-ticket-checkout{font-size:16px!important;font-family:sans-serif!important;color:#04204c;font-weight:600;margin:0 0 5px!important}.mp-ticket-name{font-weight:700;color:rgba(0,0,0,.8);padding-left:5px;font-size:13px}.mp-ticket-payments{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding:0 10px}#mp-box-input-tax-cft{margin-top:4px}#mp-tax-tea-text{color:#797979;font-size:12px;font-weight:400;font-style:normal;font-stretch:normal;line-height:1.29;letter-spacing:normal}#mp-tax-cft-text{font-size:27px;font-weight:400;font-style:normal;font-stretch:normal;line-height:1.25;letter-spacing:normal;color:#868686}#mp_socialname_label{display:none}#mp_cnpj_label{display:none}#mp-doc-div{display:none}#mp-doc-type-div{display:none}#mp-doc-number-div{display:none}#mp-issuer-div{display:none}#mp-card-holder-div{display:none}.mp-discount{border-style:solid;border-width:thin;border-color:#009ee3;padding:8px 8px 8px 8px;margin-top:20px;text-transform:uppercase;font-size:12px;color:#333;display:none;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;clear:both;float:left} \ No newline at end of file diff --git a/assets/css/config_mercadopago.min.css b/assets/css/config_mercadopago.min.css new file mode 100644 index 000000000..cbe5fc7df --- /dev/null +++ b/assets/css/config_mercadopago.min.css @@ -0,0 +1 @@ +.mp-px-20{padding-left:20px!important;padding-right:20px!important}.mp-pt-10{padding-top:10px!important}.mp-pb-10{padding-bottom:10px!important}.mp-pb-20{padding-bottom:20px!important}.mp-mt--10{margin-top:-10px!important}.mp-mt--15{margin-top:-15px!important}.mp-mt--12{margin-top:-12px!important}.mp-mt--5{margin-top:-5px!important}.mp-mt-5{margin-top:5px!important}.mp-mt-0{margin-top:0!important}.mp-mb-0{margin-bottom:0!important}.mp-mb-20{margin-bottom:20px!important}.mp-mb-18{margin-bottom:18px!important}.mp-mg-0{margin:0!important}.mp-fw-400{font-weight:400!important}.mp-text-center{text-align:center!important}.mp-row{width:100%;display:inline-block}.mp-col-md-12{width:100%;display:inline-block;text-align:justify!important}.mp-col-md-3{width:25%;float:left}.mp-col-md-2{width:20%;float:left}.mp-mouse_pointer{cursor:pointer!important}#mp_field_text{font-family:sans-serif!important;font-size:14px!important;font-weight:600!important;font-style:normal;font-stretch:normal;line-height:1.54;letter-spacing:normal;color:#555!important}#mp_input_payments{border:1px solid #ccc;padding:15px;width:365px;font-weight:700;margin-top:-8px!important;margin-bottom:37px!important}#mp_input_payments_mt{border:1px solid #ccc;padding:15px;width:365px;margin-top:-39px!important}.mp_text{font-family:sans-serif;font-size:14px!important;font-weight:400;font-style:normal;font-stretch:normal;line-height:1.25;letter-spacing:normal;color:rgba(0,0,0,.8)}.mp_subtitle{font-size:18px!important}.mp_subtitle_bd{border-top:1px solid #bbb;padding-top:20px;font-size:20px!important;margin-top:0!important;margin-bottom:20px!important}.mp_subtitle_bd_mb{border-top:1px solid #bbb;padding-top:20px;font-size:20px!important;margin-bottom:0!important}.mp_small_text{font-family:sans-serif;font-size:15px!important;font-weight:400;font-style:normal!important;font-stretch:normal;line-height:16px!important;letter-spacing:normal;color:#555}.mp_homolog_text{font-family:sans-serif;font-size:14px!important;font-weight:400;font-style:normal!important;font-stretch:normal;line-height:16px!important;letter-spacing:normal;color:#555;margin-top:0!important;margin-bottom:30px!important}.mp_title_bd{font-family:sans-serif;font-size:30px!important;font-weight:400;font-style:normal;font-stretch:normal;line-height:1.07;letter-spacing:normal;color:#303030;border-top:1px solid #bbb;padding-top:20px;margin-bottom:5px!important;margin-top:10px!important}.mp_title_checkout{font-family:sans-serif;font-size:30px!important;font-weight:400;font-style:normal;font-stretch:normal;line-height:1.07;letter-spacing:normal;color:#303030;margin-bottom:5px!important;margin-top:0!important}.mp_tienda_link{display:inline-block}.mp_tienda_link a{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;line-height:1.42857;border-radius:2px!important;border:solid 1px #c2c2c2!important;padding:12px 50px!important;font-size:13px!important;background-color:#fafafa!important;text-decoration:none;color:#555;font-family:sans-serif}.mp_tienda_link:hover a{color:#fff!important;background-color:#00aff0!important;border-color:#008abd!important;-webkit-box-shadow:none!important;box-shadow:none}.mp_general_links{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;line-height:1.42857;border-radius:2px!important;border:solid 1px #c2c2c2!important;padding:12px 50px!important;font-size:13px!important;background-color:#fafafa!important;text-decoration:none;color:#555;font-family:sans-serif}.mp_general_links:hover{color:#fff!important;background-color:#00aff0!important;border-color:#008abd!important;-webkit-box-shadow:none!important;box-shadow:none}.mp-btn-collapsible{float:right;font-size:25px;padding-right:5px}.mp-title-checkout-body{font-family:sans-serif!important;margin:0 0 13px!important;font-size:20px!important;font-weight:200!important;line-height:1.25;font-style:normal;font-stretch:normal;letter-spacing:normal;color:rgba(0,0,0,.8)}.mp-text-checkout-body{font-size:18px!important;font-weight:400!important;margin-top:10px!important;line-height:20px;font-style:normal;font-stretch:normal;letter-spacing:normal;color:rgba(0,0,0,.8)}.mp-text-steps{font-size:14px!important;font-weight:400!important;font-style:normal;font-stretch:normal;line-height:1.5;letter-spacing:normal;color:rgba(0,0,0,.8)}.mp-number-checkout-body{border-radius:100%;border:solid 1px #979797;display:block;width:35px;height:35px;margin:0 auto 8px!important;font-size:23px;font-weight:700}.mp-header-logo{align-items:center}.mp-left-header{min-width:120px}.mp-left-header img{max-width:150px}.mp-right-header{padding-top:20px}.mp-save-button{margin-bottom:15px!important}.mp-hidden-field{display:none}.mp_title_header{font-family:sans-serif;font-size:22px!important;font-weight:100;line-height:1.5;margin-bottom:5px!important;font-style:normal;font-stretch:normal;letter-spacing:normal}.mp_subtitle_header{font-family:sans-serif;font-size:28px!important;font-weight:600!important;line-height:35px;font-style:normal;font-stretch:normal;letter-spacing:normal}.mp_subtitle_mt{margin-top:0!important} \ No newline at end of file diff --git a/assets/js/basic_config_mercadopago.js b/assets/js/basic_config_mercadopago.js index df1405214..4dbcb329e 100644 --- a/assets/js/basic_config_mercadopago.js +++ b/assets/js/basic_config_mercadopago.js @@ -10,7 +10,9 @@ window.onload = function () { document.querySelector('.wc-admin-breadcrumb').style.display = 'none'; document.querySelector('.mp-header-logo').style.display = 'none'; document.querySelector('#_wpnonce').parentElement.style.display = 'none'; - document.querySelectorAll('h2')[4].style.display = 'none'; + + var h2s = document.querySelectorAll('h2'); + h2s[4] !== undefined ? h2s[4].style.display = 'none' : null; var descriptionInput = document.querySelectorAll('p.description'); diff --git a/assets/js/basic_config_mercadopago.min.js b/assets/js/basic_config_mercadopago.min.js index 6bdc95347..c13542da5 100644 --- a/assets/js/basic_config_mercadopago.min.js +++ b/assets/js/basic_config_mercadopago.min.js @@ -1 +1 @@ -window.onload=function(){function e(e,o){return'+ '}document.querySelector(".wc-admin-breadcrumb").style.display="none",document.querySelector(".mp-header-logo").style.display="none",document.querySelector("#_wpnonce").parentElement.style.display="none",document.querySelectorAll("h2")[4].style.display="none";for(var o=document.querySelectorAll("p.description"),t=0;t '+f+" ";S[E].parentElement.insertAdjacentHTML("beforebegin",x);break}for(var A="",B="",I=0,M=document.querySelectorAll(".debit_payment_method"),C=0;C '+A+" ";M[L].parentElement.insertAdjacentHTML("beforebegin",H);break}for(var N="",T="",O=0,j=document.querySelectorAll(".offline_payment_method"),D=0;D '+N+" ";j[P].parentElement.insertAdjacentHTML("beforebegin",z);break}}var F=document.querySelectorAll(".mp-save-button");0!==F.length&&Array.from(F).forEach(function(e){e.addEventListener("click",function(){document.querySelector(".woocommerce-save-button").click()})})},window.completeOnlineCheckbox=function(){for(var e=document.getElementById("checkmeon").checked,o=document.querySelectorAll(".online_payment_method"),t=0;t+ '}document.querySelector(".wc-admin-breadcrumb").style.display="none",document.querySelector(".mp-header-logo").style.display="none",document.querySelector("#_wpnonce").parentElement.style.display="none";var o=document.querySelectorAll("h2");void 0!==o[4]&&(o[4].style.display="none");for(var t=document.querySelectorAll("p.description"),c=0;c '+b+" ";f[v].parentElement.insertAdjacentHTML("beforebegin",S);break}for(var q="",E="",x=0,A=document.querySelectorAll(".debit_payment_method"),B=0;B '+q+" ";A[I].parentElement.insertAdjacentHTML("beforebegin",M);break}for(var C="",L="",H=0,N=document.querySelectorAll(".offline_payment_method"),T=0;T '+C+" ";N[O].parentElement.insertAdjacentHTML("beforebegin",j);break}}r=document.querySelectorAll(".mp-save-button");0!==r.length&&Array.from(r).forEach(function(e){e.addEventListener("click",function(){document.querySelector(".woocommerce-save-button").click()})})},window.completeOnlineCheckbox=function(){for(var e=document.getElementById("checkmeon").checked,o=document.querySelectorAll(".online_payment_method"),t=0;t'+wc_mercadopago_params.choose+"...",r=[],c=0;c"+(r[d].recommended_message||r[d].installments)+"";t.innerHTML=n,"MLA"===a.site_id&&(_(),M("body").on("change","#mp-installments",y))}else g(),_()}function y(){var e,o=document.querySelector("#mp-installments"),t=o.options[o.selectedIndex].getAttribute("data-tax"),n="",r="";null!=t&&(n=(e=t.split("|"))[0].replace("_"," "),r=e[1].replace("_"," "),"CFT 0,00%"===n&&"TEA 0,00%"===r&&(r=n="")),document.querySelector("#mp-tax-cft-text").innerHTML=n,document.querySelector("#mp-tax-tea-text").innerHTML=r}function g(){document.getElementById("mp-installments").innerHTML=""}function _(){document.querySelector("#mp-tax-cft-text").innerHTML="",document.querySelector("#mp-tax-tea-text").innerHTML=""}function f(){document.getElementById("mp-issuer-div").style.display="none",document.getElementById("installments-div").classList.remove("mp-col-md-8"),document.getElementById("installments-div").classList.add("mp-dis-md-12"),document.getElementById("mp-issuer").innerHTML=""}function v(){document.getElementById("mp-doc-div").style.display="none",document.getElementById("mp-doc-type-div").style.display="none",document.getElementById("docType").innerHTML="",document.getElementById("docNumber").value=""}function b(){for(var e={},o=m(),t=!1,n=0;n"+w(e.response.currency_id)+" "+Math.round(100*e.response.coupon_amount)/100+" "+wc_mercadopago_params.discount_info2+" "+e.response.name+".
"+wc_mercadopago_params.discount_info3+" "+w(e.response.currency_id)+" "+Math.round(100*document.querySelector("#mp-amount").value)/100+"
"+wc_mercadopago_params.discount_info4+" "+w(e.response.currency_id)+" "+Math.round(100*m())/100+"*
"+wc_mercadopago_params.discount_info5+'
'+wc_mercadopago_params.discount_info6+"",document.querySelector("#mpCouponError").style.display="none",document.querySelector("#couponCode").style.background=null,document.querySelector("#couponCode").style.background="url("+wc_mercadopago_params.check+") 94% 50% no-repeat #fff",document.querySelector("#couponCode").style.border="1px solid #cecece",document.querySelector("#applyCoupon").value=wc_mercadopago_params.remove,document.querySelector("#campaign_id").value=e.response.id,document.querySelector("#campaign").value=e.response.name):(n.status=!1,document.querySelector("#mpCouponApplyed").style.display="none",document.querySelector("#mpCouponError").style.display="block",document.querySelector("#mpCouponError").innerHTML=e.response.message,document.querySelector("#couponCode").style.background=null,document.querySelector("#couponCode").style.background="url("+wc_mercadopago_params.error+") 94% 50% no-repeat #fff",document.querySelector("#applyCoupon").value=wc_mercadopago_params.apply,document.querySelector("#mp-discount").value=0),document.querySelector("#applyCoupon").disabled=!1}})}())}function w(e){return"ARS"===e?"$":"BRL"===e?"R$":"COP"===e||"CLP"===e||"MXN"===e?"$":"VEF"===e?"Bs":"PEN"===e?"S/":"UYU"===e?"$U":"$"}function L(){return t?!(t=!1):!document.getElementById("payment_method_woo-mercado-pago-custom").checked||!!q()&&function(){k(),document.querySelector("#mp-box-loading").style.background="url("+wc_mercadopago_params.loading+") 0 50% no-repeat #fff";var e=S();return Mercadopago.createToken(e,B),!1}()}0'+wc_mercadopago_params.choose+"...",n=[],r=0;r"+(n[c].recommended_message||n[c].installments)+"";e.innerHTML=t,"MLA"===d.site_id&&(_(),M("body").on("change","#mp-installments",y))}else g(),_()}function y(){var e=document.querySelector("#mp-installments"),o=e.options[e.selectedIndex].getAttribute("data-tax"),t="",e="";null!=o&&(t=(o=o.split("|"))[0].replace("_"," "),e=o[1].replace("_"," "),"CFT 0,00%"===t&&"TEA 0,00%"===e&&(e=t="")),document.querySelector("#mp-tax-cft-text").innerHTML=t,document.querySelector("#mp-tax-tea-text").innerHTML=e}function g(){document.getElementById("mp-installments").innerHTML=""}function _(){document.querySelector("#mp-tax-cft-text").innerHTML="",document.querySelector("#mp-tax-tea-text").innerHTML=""}function f(){document.getElementById("mp-issuer-div").style.display="none",document.getElementById("installments-div").classList.remove("mp-col-md-8"),document.getElementById("installments-div").classList.add("mp-dis-md-12"),document.getElementById("mp-issuer").innerHTML=""}function v(){document.getElementById("mp-doc-div").style.display="none",document.getElementById("mp-doc-type-div").style.display="none",document.getElementById("docType").innerHTML="",document.getElementById("docNumber").value=""}function b(){for(var e={},o=m(),t=!1,n=0;n"+w(e.response.currency_id)+" "+Math.round(100*e.response.coupon_amount)/100+" "+wc_mercadopago_params.discount_info2+" "+e.response.name+".
"+wc_mercadopago_params.discount_info3+" "+w(e.response.currency_id)+" "+Math.round(100*document.querySelector("#mp-amount").value)/100+"
"+wc_mercadopago_params.discount_info4+" "+w(e.response.currency_id)+" "+Math.round(100*m())/100+"*
"+wc_mercadopago_params.discount_info5+'
'+wc_mercadopago_params.discount_info6+"",document.querySelector("#mpCouponError").style.display="none",document.querySelector("#couponCode").style.background=null,document.querySelector("#couponCode").style.background="url("+wc_mercadopago_params.check+") 94% 50% no-repeat #fff",document.querySelector("#couponCode").style.border="1px solid #cecece",document.querySelector("#applyCoupon").value=wc_mercadopago_params.remove,document.querySelector("#campaign_id").value=e.response.id,document.querySelector("#campaign").value=e.response.name):(n.status=!1,document.querySelector("#mpCouponApplyed").style.display="none",document.querySelector("#mpCouponError").style.display="block",document.querySelector("#mpCouponError").innerHTML=e.response.message,document.querySelector("#couponCode").style.background=null,document.querySelector("#couponCode").style.background="url("+wc_mercadopago_params.error+") 94% 50% no-repeat #fff",document.querySelector("#applyCoupon").value=wc_mercadopago_params.apply,document.querySelector("#mp-discount").value=0),document.querySelector("#applyCoupon").disabled=!1}})}())}function w(e){return"ARS"===e?"$":"BRL"===e?"R$":"COP"===e||"CLP"===e||"MXN"===e?"$":"VEF"===e?"Bs":"PEN"===e?"S/":"UYU"===e?"$U":"$"}function L(){return t?!(t=!1):!document.getElementById("payment_method_woo-mercado-pago-custom").checked||!!q()&&function(){k(),document.querySelector("#mp-box-loading").style.background="url("+wc_mercadopago_params.loading+") 0 50% no-repeat #fff";var e=S();return Mercadopago.createToken(e,B),!1}()}0+ ',a=document.querySelector("#header_plus"),r=document.querySelector("#header_less"),s.onclick=function(){"none"===m.style.display?(m.style.display="block",r.style.display="block",a.style.display="none"):(m.style.display="none",r.style.display="none",a.style.display="block")},document.querySelector("#woocommerce_woo-mercado-pago-custom_checkout_payments_advanced_description").nextElementSibling.style.display="none",i=document.querySelector("#woocommerce_woo-mercado-pago-custom_checkout_custom_payments_advanced_title"),p=document.querySelector("#woocommerce_woo-mercado-pago-custom_checkout_payments_advanced_description").nextElementSibling,u=document.querySelector("#woocommerce_woo-mercado-pago-custom_checkout_payments_advanced_description"),p.style.display="none",u.style.display="none",i.style.cursor="pointer",i.innerHTML+='+ ',y=document.querySelector("#header_plus_2"),_=document.querySelector("#header_less_2"),i.onclick=function(){"none"===p.style.display?(p.style.display="block",_.style.display="block",p.style.display="block",y.style.display="none"):(p.style.display="none",_.style.display="none",u.style.display="none",y.style.display="block")});var g=document.querySelectorAll(".mp-save-button");0!==g.length&&Array.from(g).forEach(function(e){e.addEventListener("click",function(){document.querySelector(".woocommerce-save-button").click()})})}; \ No newline at end of file +window.onload=function(){document.querySelector(".wc-admin-breadcrumb").style.display="none",document.querySelector(".mp-header-logo").style.display="none",document.querySelector("#_wpnonce").parentElement.style.display="none";var e=document.querySelectorAll("h2");void 0!==e[4]&&(e[4].style.display="none");for(var o=document.querySelectorAll("p.description"),t=0;t+ ',m=document.querySelector("#header_plus"),a=document.querySelector("#header_less"),y.onclick=function(){"none"===s.style.display?(s.style.display="block",a.style.display="block",m.style.display="none"):(s.style.display="none",a.style.display="none",m.style.display="block")},document.querySelector("#woocommerce_woo-mercado-pago-custom_checkout_payments_advanced_description").nextElementSibling.style.display="none",y=document.querySelector("#woocommerce_woo-mercado-pago-custom_checkout_custom_payments_advanced_title"),r=document.querySelector("#woocommerce_woo-mercado-pago-custom_checkout_payments_advanced_description").nextElementSibling,i=document.querySelector("#woocommerce_woo-mercado-pago-custom_checkout_payments_advanced_description"),r.style.display="none",i.style.display="none",y.style.cursor="pointer",y.innerHTML+='+ ',p=document.querySelector("#header_plus_2"),u=document.querySelector("#header_less_2"),y.onclick=function(){"none"===r.style.display?(r.style.display="block",u.style.display="block",r.style.display="block",p.style.display="none"):(r.style.display="none",u.style.display="none",i.style.display="none",p.style.display="block")});var y=document.querySelectorAll(".mp-save-button");0!==y.length&&Array.from(y).forEach(function(e){e.addEventListener("click",function(){document.querySelector(".woocommerce-save-button").click()})})}; \ No newline at end of file diff --git a/assets/js/ticket.min.js b/assets/js/ticket.min.js index 4a5efd6d9..6dda8d907 100644 --- a/assets/js/ticket.min.js +++ b/assets/js/ticket.min.js @@ -1 +1 @@ -!function(l){"use strict";l(function(){var e=!1,p="CPF",n={site_id:wc_mercadopago_ticket_params.site_id},o={discount_action_url:wc_mercadopago_ticket_params.discount_action_url,payer_email:wc_mercadopago_ticket_params.payer_email,activated:wc_mercadopago_ticket_params.coupon_mode,status:!1};function t(){return!document.getElementById("payment_method_woo-mercado-pago-ticket").checked||("MLB"===n.site_id?(function(){for(var e=document.querySelector("#mercadopago-form-ticket"),t=e.querySelectorAll("[data-checkout]"),o=e.querySelectorAll(".mp-erro_febraban"),r=0;r"+a(e.response.currency_id)+" "+Math.round(100*e.response.coupon_amount)/100+" "+wc_mercadopago_ticket_params.discount_info2+" "+e.response.name+".
"+wc_mercadopago_ticket_params.discount_info3+" "+a(e.response.currency_id)+" "+Math.round(100*document.querySelector("#amountTicket").value)/100+"
"+wc_mercadopago_ticket_params.discount_info4+" "+a(e.response.currency_id)+" "+Math.round(100*(document.getElementById("amountTicket").value-document.getElementById("discountTicket").value))/100+"*
"+wc_mercadopago_ticket_params.discount_info5+'
'+wc_mercadopago_ticket_params.discount_info6+"",document.querySelector("#mpCouponErrorTicket").style.display="none",document.querySelector("#couponCodeTicket").style.background=null,document.querySelector("#couponCodeTicket").style.background="url("+wc_mercadopago_ticket_params.check+") 94% 50% no-repeat #fff",document.querySelector("#couponCodeTicket").style.border="1px solid #cecece",document.querySelector("#applyCouponTicket").value=wc_mercadopago_ticket_params.remove,document.querySelector("#campaign_idTicket").value=e.response.id,document.querySelector("#campaignTicket").value=e.response.name):(o.status=!1,document.querySelector("#mpCouponApplyedTicket").style.display="none",document.querySelector("#mpCouponErrorTicket").style.display="block",document.querySelector("#mpCouponErrorTicket").innerHTML=e.response.message,document.querySelector("#couponCodeTicket").style.background=null,document.querySelector("#couponCodeTicket").style.background="url("+wc_mercadopago_ticket_params.error+") 94% 50% no-repeat #fff",document.querySelector("#applyCouponTicket").value=wc_mercadopago_ticket_params.apply,document.querySelector("#discountTicket").value=0),document.querySelector("#applyCouponTicket").disabled=!1}})}())}function a(e){return"ARS"===e?"$":"BRL"===e?"R$":"COP"===e||"CLP"===e||"MXN"===e?"$":"VEF"===e?"Bs":"PEN"===e?"S/":"UYU"===e?"$U":"$"}0"+a(e.response.currency_id)+" "+Math.round(100*e.response.coupon_amount)/100+" "+wc_mercadopago_ticket_params.discount_info2+" "+e.response.name+".
"+wc_mercadopago_ticket_params.discount_info3+" "+a(e.response.currency_id)+" "+Math.round(100*document.querySelector("#amountTicket").value)/100+"
"+wc_mercadopago_ticket_params.discount_info4+" "+a(e.response.currency_id)+" "+Math.round(100*(document.getElementById("amountTicket").value-document.getElementById("discountTicket").value))/100+"*
"+wc_mercadopago_ticket_params.discount_info5+'
'+wc_mercadopago_ticket_params.discount_info6+"",document.querySelector("#mpCouponErrorTicket").style.display="none",document.querySelector("#couponCodeTicket").style.background=null,document.querySelector("#couponCodeTicket").style.background="url("+wc_mercadopago_ticket_params.check+") 94% 50% no-repeat #fff",document.querySelector("#couponCodeTicket").style.border="1px solid #cecece",document.querySelector("#applyCouponTicket").value=wc_mercadopago_ticket_params.remove,document.querySelector("#campaign_idTicket").value=e.response.id,document.querySelector("#campaignTicket").value=e.response.name):(o.status=!1,document.querySelector("#mpCouponApplyedTicket").style.display="none",document.querySelector("#mpCouponErrorTicket").style.display="block",document.querySelector("#mpCouponErrorTicket").innerHTML=e.response.message,document.querySelector("#couponCodeTicket").style.background=null,document.querySelector("#couponCodeTicket").style.background="url("+wc_mercadopago_ticket_params.error+") 94% 50% no-repeat #fff",document.querySelector("#applyCouponTicket").value=wc_mercadopago_ticket_params.apply,document.querySelector("#discountTicket").value=0),document.querySelector("#applyCouponTicket").disabled=!1}})}())}function a(e){return"ARS"===e?"$":"BRL"===e?"R$":"COP"===e||"CLP"===e||"MXN"===e?"$":"VEF"===e?"Bs":"PEN"===e?"S/":"UYU"===e?"$U":"$"}0+ ';var m=document.querySelector("#header_plus"),s=document.querySelector("#header_less");r.onclick=function(){"none"===a.style.display?(a.style.display="block",s.style.display="block",m.style.display="none"):(a.style.display="none",s.style.display="none",m.style.display="block")};var p=document.querySelector("#woocommerce_woo-mercado-pago-ticket_checkout_ticket_payments_advanced_title"),y=document.querySelector("#woocommerce_woo-mercado-pago-ticket_checkout_payments_advanced_description").nextElementSibling,u=document.querySelector("#woocommerce_woo-mercado-pago-ticket_checkout_payments_advanced_description");y.style.display="none",u.style.display="none",p.style.cursor="pointer",p.innerHTML+='+ ';var _=document.querySelector("#header_plus_2"),h=document.querySelector("#header_less_2");p.onclick=function(){"none"===y.style.display?(y.style.display="block",u.style.display="block",h.style.display="block",_.style.display="none"):(y.style.display="none",u.style.display="none",h.style.display="none",_.style.display="block")};for(var k=document.querySelector("#woocommerce_woo-mercado-pago-ticket_checkout_ticket_payments_description").nextElementSibling.getAttribute("class"),g=document.querySelectorAll("."+k+" td.forminp label"),b=0;b '+f+" ";v[E].parentElement.insertAdjacentHTML("beforebegin",x);break}}var A=document.querySelectorAll(".mp-save-button");0!==A.length&&Array.from(A).forEach(function(e){e.addEventListener("click",function(){document.querySelector(".woocommerce-save-button").click()})})},window.completeOfflineCheckbox=function(){for(var e=document.getElementById("checkmeoff").checked,t=document.querySelectorAll(".ticket_payment_method_select"),o=0;o+ ';var a=document.querySelector("#header_plus"),m=document.querySelector("#header_less");i.onclick=function(){"none"===r.style.display?(r.style.display="block",m.style.display="block",a.style.display="none"):(r.style.display="none",m.style.display="none",a.style.display="block")};var i=document.querySelector("#woocommerce_woo-mercado-pago-ticket_checkout_ticket_payments_advanced_title"),s=document.querySelector("#woocommerce_woo-mercado-pago-ticket_checkout_payments_advanced_description").nextElementSibling,p=document.querySelector("#woocommerce_woo-mercado-pago-ticket_checkout_payments_advanced_description");s.style.display="none",p.style.display="none",i.style.cursor="pointer",i.innerHTML+='+ ';var y=document.querySelector("#header_plus_2"),u=document.querySelector("#header_less_2");i.onclick=function(){"none"===s.style.display?(s.style.display="block",p.style.display="block",u.style.display="block",y.style.display="none"):(s.style.display="none",p.style.display="none",u.style.display="none",y.style.display="block")};for(var i=document.querySelector("#woocommerce_woo-mercado-pago-ticket_checkout_ticket_payments_description").nextElementSibling.getAttribute("class"),_=document.querySelectorAll("."+i+" td.forminp label"),h=0;h<_.length;h++)_[h].id="mp_input_payments_mt";for(var k="",g="",b=0,f=document.querySelectorAll(".ticket_payment_method_select"),w=0;w '+k+" ";f[S].parentElement.insertAdjacentHTML("beforebegin",v);break}}i=document.querySelectorAll(".mp-save-button");0!==i.length&&Array.from(i).forEach(function(e){e.addEventListener("click",function(){document.querySelector(".woocommerce-save-button").click()})})},window.completeOfflineCheckbox=function(){for(var e=document.getElementById("checkmeoff").checked,t=document.querySelectorAll(".ticket_payment_method_select"),o=0;o { + return gulp.src(config.stylesheets) + .pipe(cleanCSS({ compatibility: 'ie8' })) + .pipe(rename({ extname: '.min.css' })) + .pipe(gulp.dest('./assets/css/')); +}); + gulp.task('wpPot', function () { return gulp.src('**/*.php') .pipe(wpPot( { @@ -45,6 +58,4 @@ gulp.task('git-add', function() { .pipe(git.add()); }); -gulp.task('pre-commit', gulp.series('jshint', 'scripts', 'wpPot', 'git-add')); - -gulp.task('default', gulp.series('scripts')); +gulp.task('pre-commit', gulp.series('jshint', 'scripts', 'stylesheets', 'wpPot', 'git-add')); diff --git a/i18n/languages/woocommerce-mercadopago-es_AR.mo b/i18n/languages/woocommerce-mercadopago-es_AR.mo index 3af3a928c..5a69fed60 100644 Binary files a/i18n/languages/woocommerce-mercadopago-es_AR.mo and b/i18n/languages/woocommerce-mercadopago-es_AR.mo differ diff --git a/i18n/languages/woocommerce-mercadopago-es_AR.po b/i18n/languages/woocommerce-mercadopago-es_AR.po index b4b25276a..d59e3afec 100644 --- a/i18n/languages/woocommerce-mercadopago-es_AR.po +++ b/i18n/languages/woocommerce-mercadopago-es_AR.po @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Mercado Pago payments for WooCommerce plugin. msgid "" msgstr "" -"Project-Id-Version: Mercado Pago payments for WooCommerce 4.4.0\n" +"Project-Id-Version: Mercado Pago payments for WooCommerce 4.5.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-mercadopago\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2019-09-05T23:48:06-04:00\n" -"PO-Revision-Date: 2020-09-18 09:54-0300\n" +"PO-Revision-Date: 2020-10-19 15:28-0300\n" "X-Generator: Poedit 2.4.1\n" "X-Domain: woocommerce-mercadopago\n" "Last-Translator: \n" @@ -217,6 +217,10 @@ msgstr "El pago fue cancelado." msgid "The payment is in mediation or the purchase was unknown by the customer." msgstr "El pago esta en mediación o la compra fue desconocida por el cliente." +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:384 +msgid "Mercado Pago: The payment %s was notified by Mercado Pago with status %s." +msgstr "Mercado Pago: El pago %s fue notificado por Mercado Pago con estado %s." + #: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:204 msgid "Payment is pending review." msgstr "El pago está pendiente de revisión." diff --git a/i18n/languages/woocommerce-mercadopago-es_CL.mo b/i18n/languages/woocommerce-mercadopago-es_CL.mo index 69d8bcddb..0e37838e8 100644 Binary files a/i18n/languages/woocommerce-mercadopago-es_CL.mo and b/i18n/languages/woocommerce-mercadopago-es_CL.mo differ diff --git a/i18n/languages/woocommerce-mercadopago-es_CL.po b/i18n/languages/woocommerce-mercadopago-es_CL.po index c3113133c..29946737a 100644 --- a/i18n/languages/woocommerce-mercadopago-es_CL.po +++ b/i18n/languages/woocommerce-mercadopago-es_CL.po @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Mercado Pago payments for WooCommerce plugin. msgid "" msgstr "" -"Project-Id-Version: Mercado Pago payments for WooCommerce 4.4.0\n" +"Project-Id-Version: Mercado Pago payments for WooCommerce 4.5.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-mercadopago\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2019-09-05T23:48:06-04:00\n" -"PO-Revision-Date: 2020-09-18 09:55-0300\n" +"PO-Revision-Date: 2020-10-19 15:28-0300\n" "X-Generator: Poedit 2.4.1\n" "X-Domain: woocommerce-mercadopago\n" "Last-Translator: \n" @@ -217,6 +217,10 @@ msgstr "El pago fue cancelado." msgid "The payment is in mediation or the purchase was unknown by the customer." msgstr "El pago esta en mediación o la compra fue desconocida por el cliente." +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:384 +msgid "Mercado Pago: The payment %s was notified by Mercado Pago with status %s." +msgstr "Mercado Pago: El pago %s fue notificado por Mercado Pago con estado %s." + #: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:204 msgid "Payment is pending review." msgstr "El pago está pendiente de revisión." diff --git a/i18n/languages/woocommerce-mercadopago-es_CO.mo b/i18n/languages/woocommerce-mercadopago-es_CO.mo index 2e215d367..1d0cf7dbd 100644 Binary files a/i18n/languages/woocommerce-mercadopago-es_CO.mo and b/i18n/languages/woocommerce-mercadopago-es_CO.mo differ diff --git a/i18n/languages/woocommerce-mercadopago-es_CO.po b/i18n/languages/woocommerce-mercadopago-es_CO.po index 6a64ba46c..2428f3116 100644 --- a/i18n/languages/woocommerce-mercadopago-es_CO.po +++ b/i18n/languages/woocommerce-mercadopago-es_CO.po @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Mercado Pago payments for WooCommerce plugin. msgid "" msgstr "" -"Project-Id-Version: Mercado Pago payments for WooCommerce 4.4.0\n" +"Project-Id-Version: Mercado Pago payments for WooCommerce 4.5.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-mercadopago\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2019-09-05T23:48:06-04:00\n" -"PO-Revision-Date: 2020-09-18 09:55-0300\n" +"PO-Revision-Date: 2020-10-19 15:28-0300\n" "X-Generator: Poedit 2.4.1\n" "X-Domain: woocommerce-mercadopago\n" "Last-Translator: \n" @@ -217,6 +217,10 @@ msgstr "El pago fue cancelado." msgid "The payment is in mediation or the purchase was unknown by the customer." msgstr "El pago esta en mediación o la compra fue desconocida por el cliente." +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:384 +msgid "Mercado Pago: The payment %s was notified by Mercado Pago with status %s." +msgstr "Mercado Pago: El pago %s fue notificado por Mercado Pago con estado %s." + #: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:204 msgid "Payment is pending review." msgstr "El pago está pendiente de revisión." diff --git a/i18n/languages/woocommerce-mercadopago-es_ES.mo b/i18n/languages/woocommerce-mercadopago-es_ES.mo index 5c358e474..3afbaf0a3 100644 Binary files a/i18n/languages/woocommerce-mercadopago-es_ES.mo and b/i18n/languages/woocommerce-mercadopago-es_ES.mo differ diff --git a/i18n/languages/woocommerce-mercadopago-es_ES.po b/i18n/languages/woocommerce-mercadopago-es_ES.po index 73b1fc9f7..75767a558 100644 --- a/i18n/languages/woocommerce-mercadopago-es_ES.po +++ b/i18n/languages/woocommerce-mercadopago-es_ES.po @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Mercado Pago payments for WooCommerce plugin. msgid "" msgstr "" -"Project-Id-Version: Mercado Pago payments for WooCommerce 4.4.0\n" +"Project-Id-Version: Mercado Pago payments for WooCommerce 4.5.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-mercadopago\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2019-09-05T23:48:06-04:00\n" -"PO-Revision-Date: 2020-09-18 09:55-0300\n" +"PO-Revision-Date: 2020-10-19 15:28-0300\n" "X-Generator: Poedit 2.4.1\n" "X-Domain: woocommerce-mercadopago\n" "Last-Translator: \n" @@ -217,6 +217,10 @@ msgstr "El pago fue cancelado." msgid "The payment is in mediation or the purchase was unknown by the customer." msgstr "El pago esta en mediación o la compra fue desconocida por el cliente." +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:384 +msgid "Mercado Pago: The payment %s was notified by Mercado Pago with status %s." +msgstr "Mercado Pago: El pago %s fue notificado por Mercado Pago con estado %s." + #: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:204 msgid "Payment is pending review." msgstr "El pago está pendiente de revisión." diff --git a/i18n/languages/woocommerce-mercadopago-es_MX.mo b/i18n/languages/woocommerce-mercadopago-es_MX.mo index 61a7f1aef..65624b617 100644 Binary files a/i18n/languages/woocommerce-mercadopago-es_MX.mo and b/i18n/languages/woocommerce-mercadopago-es_MX.mo differ diff --git a/i18n/languages/woocommerce-mercadopago-es_MX.po b/i18n/languages/woocommerce-mercadopago-es_MX.po index 6540e4cc1..864f6547b 100644 --- a/i18n/languages/woocommerce-mercadopago-es_MX.po +++ b/i18n/languages/woocommerce-mercadopago-es_MX.po @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Mercado Pago payments for WooCommerce plugin. msgid "" msgstr "" -"Project-Id-Version: Mercado Pago payments for WooCommerce 4.4.0\n" +"Project-Id-Version: Mercado Pago payments for WooCommerce 4.5.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-mercadopago\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2019-09-05T23:48:06-04:00\n" -"PO-Revision-Date: 2020-09-18 09:55-0300\n" +"PO-Revision-Date: 2020-10-19 15:27-0300\n" "X-Generator: Poedit 2.4.1\n" "X-Domain: woocommerce-mercadopago\n" "Last-Translator: \n" @@ -217,6 +217,10 @@ msgstr "El pago fue cancelado." msgid "The payment is in mediation or the purchase was unknown by the customer." msgstr "El pago esta en mediación o la compra fue desconocida por el cliente." +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:384 +msgid "Mercado Pago: The payment %s was notified by Mercado Pago with status %s." +msgstr "Mercado Pago: El pago %s fue notificado por Mercado Pago con estado %s." + #: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:204 msgid "Payment is pending review." msgstr "El pago está pendiente de revisión." diff --git a/i18n/languages/woocommerce-mercadopago-es_PE.mo b/i18n/languages/woocommerce-mercadopago-es_PE.mo index 14f81b84f..ceb35d942 100644 Binary files a/i18n/languages/woocommerce-mercadopago-es_PE.mo and b/i18n/languages/woocommerce-mercadopago-es_PE.mo differ diff --git a/i18n/languages/woocommerce-mercadopago-es_PE.po b/i18n/languages/woocommerce-mercadopago-es_PE.po index 30bb49e6c..73c9fdb40 100644 --- a/i18n/languages/woocommerce-mercadopago-es_PE.po +++ b/i18n/languages/woocommerce-mercadopago-es_PE.po @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Mercado Pago payments for WooCommerce plugin. msgid "" msgstr "" -"Project-Id-Version: Mercado Pago payments for WooCommerce 4.4.0\n" +"Project-Id-Version: Mercado Pago payments for WooCommerce 4.5.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-mercadopago\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2019-09-05T23:48:06-04:00\n" -"PO-Revision-Date: 2020-09-18 09:55-0300\n" +"PO-Revision-Date: 2020-10-19 15:27-0300\n" "X-Generator: Poedit 2.4.1\n" "X-Domain: woocommerce-mercadopago\n" "Last-Translator: \n" @@ -217,6 +217,10 @@ msgstr "El pago fue cancelado." msgid "The payment is in mediation or the purchase was unknown by the customer." msgstr "El pago esta en mediación o la compra fue desconocida por el cliente." +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:384 +msgid "Mercado Pago: The payment %s was notified by Mercado Pago with status %s." +msgstr "Mercado Pago: El pago %s fue notificado por Mercado Pago con estado %s." + #: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:204 msgid "Payment is pending review." msgstr "El pago está pendiente de revisión." diff --git a/i18n/languages/woocommerce-mercadopago-es_UY.mo b/i18n/languages/woocommerce-mercadopago-es_UY.mo index 56faa2ce4..5eec4101a 100644 Binary files a/i18n/languages/woocommerce-mercadopago-es_UY.mo and b/i18n/languages/woocommerce-mercadopago-es_UY.mo differ diff --git a/i18n/languages/woocommerce-mercadopago-es_UY.po b/i18n/languages/woocommerce-mercadopago-es_UY.po index 4431296ec..8613aefba 100644 --- a/i18n/languages/woocommerce-mercadopago-es_UY.po +++ b/i18n/languages/woocommerce-mercadopago-es_UY.po @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Mercado Pago payments for WooCommerce plugin. msgid "" msgstr "" -"Project-Id-Version: Mercado Pago payments for WooCommerce 4.4.0\n" +"Project-Id-Version: Mercado Pago payments for WooCommerce 4.5.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-mercadopago\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2019-09-05T23:48:06-04:00\n" -"PO-Revision-Date: 2020-09-18 09:56-0300\n" +"PO-Revision-Date: 2020-10-19 15:27-0300\n" "X-Generator: Poedit 2.4.1\n" "X-Domain: woocommerce-mercadopago\n" "Last-Translator: \n" @@ -217,6 +217,10 @@ msgstr "El pago fue cancelado." msgid "The payment is in mediation or the purchase was unknown by the customer." msgstr "El pago esta en mediación o la compra fue desconocida por el cliente." +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:384 +msgid "Mercado Pago: The payment %s was notified by Mercado Pago with status %s." +msgstr "Mercado Pago: El pago %s fue notificado por Mercado Pago con estado %s." + #: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:204 msgid "Payment is pending review." msgstr "El pago está pendiente de revisión." diff --git a/i18n/languages/woocommerce-mercadopago-es_VE.mo b/i18n/languages/woocommerce-mercadopago-es_VE.mo index 3f8f01a6c..9f22b7ca6 100644 Binary files a/i18n/languages/woocommerce-mercadopago-es_VE.mo and b/i18n/languages/woocommerce-mercadopago-es_VE.mo differ diff --git a/i18n/languages/woocommerce-mercadopago-es_VE.po b/i18n/languages/woocommerce-mercadopago-es_VE.po index a578370f2..8a4ab949a 100644 --- a/i18n/languages/woocommerce-mercadopago-es_VE.po +++ b/i18n/languages/woocommerce-mercadopago-es_VE.po @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Mercado Pago payments for WooCommerce plugin. msgid "" msgstr "" -"Project-Id-Version: Mercado Pago payments for WooCommerce 4.4.0\n" +"Project-Id-Version: Mercado Pago payments for WooCommerce 4.5.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-mercadopago\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2019-09-05T23:48:06-04:00\n" -"PO-Revision-Date: 2020-09-18 09:56-0300\n" +"PO-Revision-Date: 2020-10-19 15:27-0300\n" "X-Generator: Poedit 2.4.1\n" "X-Domain: woocommerce-mercadopago\n" "Last-Translator: \n" @@ -217,6 +217,10 @@ msgstr "El pago fue cancelado." msgid "The payment is in mediation or the purchase was unknown by the customer." msgstr "El pago esta en mediación o la compra fue desconocida por el cliente." +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:384 +msgid "Mercado Pago: The payment %s was notified by Mercado Pago with status %s." +msgstr "Mercado Pago: El pago %s fue notificado por Mercado Pago con estado %s." + #: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:204 msgid "Payment is pending review." msgstr "El pago está pendiente de revisión." diff --git a/i18n/languages/woocommerce-mercadopago-pt_BR.mo b/i18n/languages/woocommerce-mercadopago-pt_BR.mo index ee0780c84..5b0665e1e 100644 Binary files a/i18n/languages/woocommerce-mercadopago-pt_BR.mo and b/i18n/languages/woocommerce-mercadopago-pt_BR.mo differ diff --git a/i18n/languages/woocommerce-mercadopago-pt_BR.po b/i18n/languages/woocommerce-mercadopago-pt_BR.po index c4f2f56c4..916485e35 100644 --- a/i18n/languages/woocommerce-mercadopago-pt_BR.po +++ b/i18n/languages/woocommerce-mercadopago-pt_BR.po @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Mercado Pago payments for WooCommerce plugin. msgid "" msgstr "" -"Project-Id-Version: Mercado Pago payments for WooCommerce 4.4.0\n" +"Project-Id-Version: Mercado Pago payments for WooCommerce 4.5.0\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-mercadopago\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "POT-Creation-Date: 2019-09-05T23:48:06-04:00\n" -"PO-Revision-Date: 2020-09-18 09:56-0300\n" +"PO-Revision-Date: 2020-10-19 15:27-0300\n" "X-Generator: Poedit 2.4.1\n" "X-Domain: woocommerce-mercadopago\n" "Last-Translator: \n" @@ -217,6 +217,10 @@ msgstr "O pagamento foi cancelado." msgid "The payment is in mediation or the purchase was unknown by the customer." msgstr "O pagamento está em mediação ou a compra não foi reconhecida pelo cliente." +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:384 +msgid "Mercado Pago: The payment %s was notified by Mercado Pago with status %s." +msgstr "Mercado Pago: O pagamento %s foi notificado pelo Mercado Pago com status %s." + #: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:204 msgid "Payment is pending review." msgstr "O pagamento está em revisão." @@ -1366,7 +1370,7 @@ msgstr "Agora convertemos sua moeda de %s para %s." #: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:386 msgid "We no longer convert your currency from %s to %s." -msgstr "Paramos de converter sua moreda de %s para %s." +msgstr "Paramos de converter sua moeda de %s para %s." #: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:403 msgid "Attention: The currency settings you have in WooCommerce are not compatible with the currency you use in your Mercado Pago account. Please activate the currency conversion." diff --git a/i18n/languages/woocommerce-mercadopago.pot b/i18n/languages/woocommerce-mercadopago.pot index e3b751fc8..bd4ab0a25 100644 --- a/i18n/languages/woocommerce-mercadopago.pot +++ b/i18n/languages/woocommerce-mercadopago.pot @@ -18,23 +18,35 @@ msgstr "" msgid "Activate this option so that the value of the currency set in WooCommerce is compatible with the value of the currency you use in Mercado Pago." msgstr "" -#: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:311 +#: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:327 msgid "Convert Currency" msgstr "" -#: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:378 +#: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:332, includes/payments/WC_WooMercadoPago_BasicGateway.php:500, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:573, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:657, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:943, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1050, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1085, includes/payments/WC_WooMercadoPago_TicketGateway.php:276 +msgid "No" +msgstr "" + +#: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:333, includes/payments/WC_WooMercadoPago_BasicGateway.php:499, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:574, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:658, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:944, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1051, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1084, includes/payments/WC_WooMercadoPago_TicketGateway.php:277 +msgid "Yes" +msgstr "" + +#: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:395 msgid "Now we convert your currency from %s to %s." msgstr "" -#: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:394 +#: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:410 msgid "We no longer convert your currency from %s to %s." msgstr "" -#: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:411 +#: includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php:427 msgid "Attention: The currency settings you have in WooCommerce are not compatible with the currency you use in your Mercado Pago account. Please activate the currency conversion." msgstr "" -#: includes/module/WC_WooMercadoPago_Configs.php:112 +#: includes/module/WC_WooMercadoPago_Configs.php:101 +msgid "Update your credentials with the Access Token and Public Key, you need them to continue receiving payments!" +msgstr "" + +#: includes/module/WC_WooMercadoPago_Configs.php:111 msgid "The store should have HTTPS in order to activate both Checkout Personalizado and Ticket Checkout." msgstr "" @@ -54,127 +66,127 @@ msgstr "" msgid "Cancel order" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:239, includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:405 +#: includes/module/WC_WooMercadoPago_Module.php:241, includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:399 msgid "Fill in your credentials to enable payment methods." msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:248 +#: includes/module/WC_WooMercadoPago_Module.php:250 msgid "Set up" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:249 +#: includes/module/WC_WooMercadoPago_Module.php:251 msgid "Your opinion helps us get better" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:250 +#: includes/module/WC_WooMercadoPago_Module.php:252 msgid "Guides and Documentation" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:251 +#: includes/module/WC_WooMercadoPago_Module.php:253 msgid "Report Problem" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:323 +#: includes/module/WC_WooMercadoPago_Module.php:324 msgid "By Mercado Pago" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:348, includes/module/WC_WooMercadoPago_Module.php:369 +#: includes/module/WC_WooMercadoPago_Module.php:349, includes/module/WC_WooMercadoPago_Module.php:370 msgid "The Sponsor ID must be valid!" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:365 +#: includes/module/WC_WooMercadoPago_Module.php:366 msgid "The Sponsor ID must be from the same country as the seller!" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:396 +#: includes/module/WC_WooMercadoPago_Module.php:397 msgid "The payment method is not valid or not available." msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:399 +#: includes/module/WC_WooMercadoPago_Module.php:400 msgid "The transaction amount cannot be processed by Mercado Pago." msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:400 +#: includes/module/WC_WooMercadoPago_Module.php:401 msgid "Possible causes: Currency not supported; Amounts below the minimum or above the maximum allowed." msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:403 +#: includes/module/WC_WooMercadoPago_Module.php:404 msgid "The users are not valid." msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:404 +#: includes/module/WC_WooMercadoPago_Module.php:405 msgid "Possible causes: Buyer and seller have the same account in Mercado Pago; The transaction involving production and test users." msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:407 +#: includes/module/WC_WooMercadoPago_Module.php:408 msgid "Unauthorized use of production credentials." msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:408 +#: includes/module/WC_WooMercadoPago_Module.php:409 msgid "Possible causes: Use permission in use for the credential of the seller." msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:526 +#: includes/module/WC_WooMercadoPago_Module.php:527 msgid "ERROR: It was not possible to convert the unsupported currency" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:528 +#: includes/module/WC_WooMercadoPago_Module.php:529 msgid "a" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:529, includes/module/WC_WooMercadoPago_Module.php:540 +#: includes/module/WC_WooMercadoPago_Module.php:530, includes/module/WC_WooMercadoPago_Module.php:541 msgid "Currency conversions should be done outside of this module." msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:536 +#: includes/module/WC_WooMercadoPago_Module.php:537 msgid "ATTENTION: The currency" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:538 +#: includes/module/WC_WooMercadoPago_Module.php:539 msgid "defined in WooCommerce is different from that used by the credentials of your country.
The currency for transactions made with this payment method will be" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:547 +#: includes/module/WC_WooMercadoPago_Module.php:548 msgid "CONVERTED CURRENCY: Your store is converting currency of" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:549, templates/checkout/custom_checkout.php:135 +#: includes/module/WC_WooMercadoPago_Module.php:550, templates/checkout/custom_checkout.php:135 msgid "for" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:556, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:515 +#: includes/module/WC_WooMercadoPago_Module.php:557, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:516 msgid "Colombia" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:558, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:512 +#: includes/module/WC_WooMercadoPago_Module.php:559, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:513 msgid "Argentina" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:560, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:513 +#: includes/module/WC_WooMercadoPago_Module.php:561, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:514 msgid "Brazil" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:562, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:514 +#: includes/module/WC_WooMercadoPago_Module.php:563, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:515 msgid "Chile" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:564, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:516 +#: includes/module/WC_WooMercadoPago_Module.php:565, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:517 msgid "Mexico" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:566, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:518 +#: includes/module/WC_WooMercadoPago_Module.php:567, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:519 msgid "Uruguay" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:568 +#: includes/module/WC_WooMercadoPago_Module.php:569 msgid "Venezuela" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:570, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:517 +#: includes/module/WC_WooMercadoPago_Module.php:571, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:518 msgid "Peru" msgstr "" -#: includes/module/WC_WooMercadoPago_Module.php:605 +#: includes/module/WC_WooMercadoPago_Module.php:606 msgid "Update the WooCommerce order to " msgstr "" @@ -182,34 +194,38 @@ msgstr "" msgid "Payment approved." msgstr "" -#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:187, includes/notification/WC_WooMercadoPago_Notification_Abstract.php:190 +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:195, includes/notification/WC_WooMercadoPago_Notification_Abstract.php:198 msgid "Waiting for the ticket payment." msgstr "" -#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:196 +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:205 msgid "The customer has not made the payment yet." msgstr "" -#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:207 +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:224 msgid "Payment is pending review." msgstr "" -#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:216 +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:241 msgid "Payment was declined. The customer can try again." msgstr "" -#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:225 +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:257 msgid "Payment was returned to the customer." msgstr "" -#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:234 +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:270 msgid "Payment was canceled." msgstr "" -#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:244, includes/notification/WC_WooMercadoPago_Notification_Abstract.php:254 +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:286, includes/notification/WC_WooMercadoPago_Notification_Abstract.php:298 msgid "The payment is in mediation or the purchase was unknown by the customer." msgstr "" +#: includes/notification/WC_WooMercadoPago_Notification_Abstract.php:388 +msgid "Mercado Pago: The payment %s was notified by Mercado Pago with status %s." +msgstr "" + #: includes/notification/WC_WooMercadoPago_Notification_IPN.php:35 msgid "No ID or TOPIC param in Request IPN" msgstr "" @@ -226,11 +242,11 @@ msgstr "" msgid "Not found Payments into Merchant_Order" msgstr "" -#: includes/notification/WC_WooMercadoPago_Notification_IPN.php:147, includes/notification/WC_WooMercadoPago_Notification_IPN.php:122, includes/notification/WC_WooMercadoPago_Notification_Webhook.php:157, includes/notification/WC_WooMercadoPago_Notification_Webhook.php:139 +#: includes/notification/WC_WooMercadoPago_Notification_IPN.php:148, includes/notification/WC_WooMercadoPago_Notification_IPN.php:122, includes/notification/WC_WooMercadoPago_Notification_Webhook.php:156, includes/notification/WC_WooMercadoPago_Notification_Webhook.php:138 msgid "Buyer email" msgstr "" -#: includes/notification/WC_WooMercadoPago_Notification_IPN.php:150, includes/notification/WC_WooMercadoPago_Notification_IPN.php:125, includes/notification/WC_WooMercadoPago_Notification_Webhook.php:160, includes/notification/WC_WooMercadoPago_Notification_Webhook.php:142 +#: includes/notification/WC_WooMercadoPago_Notification_IPN.php:151, includes/notification/WC_WooMercadoPago_Notification_IPN.php:125, includes/notification/WC_WooMercadoPago_Notification_Webhook.php:159, includes/notification/WC_WooMercadoPago_Notification_Webhook.php:141 msgid "Payment method" msgstr "" @@ -250,131 +266,123 @@ msgstr "" msgid "Pay with the payment method you prefer" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:245 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:241 msgid "Mercado Pago checkout %s" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:248 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:244 msgid "Accept all method of payment and take your charges to another level" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:252 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:248 msgid "Turn your online store into your customers preferred payment gateway. Choose if the final payment experience will be inside or outside your store." msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:269, includes/payments/WC_WooMercadoPago_TicketGateway.php:219 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:265, includes/payments/WC_WooMercadoPago_TicketGateway.php:219 msgid "Configure Mercado Pago for WooCommerce" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:282 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:278 msgid "Enable the experience of the Mercado Pago Checkout in your online store, select the means of payment available to your customers and
define the maximum fees in which they can pay you." msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:295 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:291 msgid "Set payment preferences in your store" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:308 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:304 msgid "Advanced settings" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:321 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:317 msgid "Payment experience" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:323 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:319 msgid "Define what payment experience your customers will have, whether inside or outside your store." msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:326 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:322 msgid "Redirect" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:327 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:323 msgid "Modal" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:343 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:339 msgid "Choose the URL that we will show your customers when they finish their purchase." msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:341, includes/payments/WC_WooMercadoPago_BasicGateway.php:361, includes/payments/WC_WooMercadoPago_BasicGateway.php:382 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:337, includes/payments/WC_WooMercadoPago_BasicGateway.php:357, includes/payments/WC_WooMercadoPago_BasicGateway.php:378 msgid "This seems to be an invalid URL." msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:346 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:342 msgid "Success URL" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:363 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:359 msgid "Choose the URL that we will show to your customers when we refuse their purchase. Make sure it includes a message appropriate to the situation and give them useful information so they can solve it." msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:366 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:362 msgid "Payment URL rejected" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:384 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:380 msgid "Choose the URL that we will show to your customers when they have a payment pending approval." msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:387 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:383 msgid "Payment URL pending" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:467 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:463 msgid "Select offline payments" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:456 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:452 msgid "Select debit cards" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:445 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:441 msgid "Select credit cards" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:474, includes/payments/WC_WooMercadoPago_TicketGateway.php:326 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:470, includes/payments/WC_WooMercadoPago_TicketGateway.php:326 msgid "Payment methods" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:475, includes/payments/WC_WooMercadoPago_TicketGateway.php:327 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:471, includes/payments/WC_WooMercadoPago_TicketGateway.php:327 msgid "Choose the available payment methods in your store." msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:478, includes/payments/WC_WooMercadoPago_TicketGateway.php:330 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:474, includes/payments/WC_WooMercadoPago_TicketGateway.php:330 msgid "Activate the available payment methods to your clients." msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:498 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:494 msgid "Return to the store" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:501 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:497 msgid "Do you want your customer to automatically return to the store after payment?" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:503, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:570, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:654, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:940, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1047, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1080, includes/payments/WC_WooMercadoPago_TicketGateway.php:277 -msgid "Yes" -msgstr "" - -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:504, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:569, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:653, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:939, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1046, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1081, includes/payments/WC_WooMercadoPago_TicketGateway.php:276 -msgid "No" -msgstr "" - -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:530 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:526 msgid "installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:534 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:530 msgid "installment" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:601, includes/payments/WC_WooMercadoPago_BasicGateway.php:601, includes/payments/WC_WooMercadoPago_BasicGateway.php:588, includes/payments/WC_WooMercadoPago_BasicGateway.php:588, includes/payments/WC_WooMercadoPago_CustomGateway.php:345, includes/payments/WC_WooMercadoPago_CustomGateway.php:345, includes/payments/WC_WooMercadoPago_CustomGateway.php:333, includes/payments/WC_WooMercadoPago_CustomGateway.php:333, includes/payments/WC_WooMercadoPago_TicketGateway.php:444, includes/payments/WC_WooMercadoPago_TicketGateway.php:444, includes/payments/WC_WooMercadoPago_TicketGateway.php:431, includes/payments/WC_WooMercadoPago_TicketGateway.php:431, includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:134, includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:132 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:598, includes/payments/WC_WooMercadoPago_BasicGateway.php:598, includes/payments/WC_WooMercadoPago_BasicGateway.php:585, includes/payments/WC_WooMercadoPago_BasicGateway.php:585, includes/payments/WC_WooMercadoPago_CustomGateway.php:347, includes/payments/WC_WooMercadoPago_CustomGateway.php:347, includes/payments/WC_WooMercadoPago_CustomGateway.php:335, includes/payments/WC_WooMercadoPago_CustomGateway.php:335, includes/payments/WC_WooMercadoPago_TicketGateway.php:446, includes/payments/WC_WooMercadoPago_TicketGateway.php:446, includes/payments/WC_WooMercadoPago_TicketGateway.php:433, includes/payments/WC_WooMercadoPago_TicketGateway.php:433, includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:134, includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:132 msgid "discount of" msgstr "" -#: includes/payments/WC_WooMercadoPago_BasicGateway.php:606, includes/payments/WC_WooMercadoPago_BasicGateway.php:606, includes/payments/WC_WooMercadoPago_BasicGateway.php:593, includes/payments/WC_WooMercadoPago_BasicGateway.php:593, includes/payments/WC_WooMercadoPago_CustomGateway.php:350, includes/payments/WC_WooMercadoPago_CustomGateway.php:350, includes/payments/WC_WooMercadoPago_CustomGateway.php:338, includes/payments/WC_WooMercadoPago_CustomGateway.php:338, includes/payments/WC_WooMercadoPago_TicketGateway.php:449, includes/payments/WC_WooMercadoPago_TicketGateway.php:449, includes/payments/WC_WooMercadoPago_TicketGateway.php:436, includes/payments/WC_WooMercadoPago_TicketGateway.php:436, includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:136 +#: includes/payments/WC_WooMercadoPago_BasicGateway.php:603, includes/payments/WC_WooMercadoPago_BasicGateway.php:603, includes/payments/WC_WooMercadoPago_BasicGateway.php:590, includes/payments/WC_WooMercadoPago_BasicGateway.php:590, includes/payments/WC_WooMercadoPago_CustomGateway.php:352, includes/payments/WC_WooMercadoPago_CustomGateway.php:352, includes/payments/WC_WooMercadoPago_CustomGateway.php:340, includes/payments/WC_WooMercadoPago_CustomGateway.php:340, includes/payments/WC_WooMercadoPago_TicketGateway.php:451, includes/payments/WC_WooMercadoPago_TicketGateway.php:451, includes/payments/WC_WooMercadoPago_TicketGateway.php:438, includes/payments/WC_WooMercadoPago_TicketGateway.php:438, includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:136 msgid "fee of" msgstr "" @@ -478,367 +486,367 @@ msgstr "" msgid "This payment method cannot process your payment." msgstr "" -#: includes/payments/WC_WooMercadoPago_CustomGateway.php:444 +#: includes/payments/WC_WooMercadoPago_CustomGateway.php:446 msgid "A problem was occurred when processing your payment. Please, try again." msgstr "" -#: includes/payments/WC_WooMercadoPago_CustomGateway.php:435 +#: includes/payments/WC_WooMercadoPago_CustomGateway.php:437 msgid "A problem was occurred when processing your payment. Are you sure you have correctly filled all information in the checkout form?" msgstr "" -#: includes/payments/WC_WooMercadoPago_CustomGateway.php:396 +#: includes/payments/WC_WooMercadoPago_CustomGateway.php:398 msgid "See your order form" msgstr "" -#: includes/payments/WC_WooMercadoPago_CustomGateway.php:408 +#: includes/payments/WC_WooMercadoPago_CustomGateway.php:410 msgid "Your payment was declined. You can try again." msgstr "" -#: includes/payments/WC_WooMercadoPago_CustomGateway.php:413, includes/payments/hooks/WC_WooMercadoPago_Hook_Basic.php:83 +#: includes/payments/WC_WooMercadoPago_CustomGateway.php:415, includes/payments/hooks/WC_WooMercadoPago_Hook_Basic.php:83 msgid "Click to try again" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:281 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:282 msgid "%s, it only takes a few minutes" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:281 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:282 msgid "Approve your account" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:358 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:359 msgid "Title" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:373 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:374 msgid "Description" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:408 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:409 msgid "Follow these steps to activate Mercado Pago in your store:" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:413 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:414 msgid "Upload your credentials depending on the country in which you are registered." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:420 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:421 msgid "Approve your account to be able to charge." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:427 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:428 msgid "Add the basic information of your business in the plugin configuration." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:434 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:435 msgid "Configure the payment preferences for your customers." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:441 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:442 msgid "Go to advanced settings only when you want to change the presets." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:460 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:461 msgid "Credentials are the keys we provide you to integrate quickly
and securely. You must have a %s in Mercado Pago to obtain and collect them
on your website. You do not need to know how to design or program to do it" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:461 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:462 msgid "approved account" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:478 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:479 msgid "In which country does your Mercado Pago account operate?" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:507 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:508 msgid "Select your country" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:509 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:510 msgid "Select the country in which you operate with Mercado Pago" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:542, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:546 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:546, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:550 msgid "Save Changes" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:564 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:568 msgid "Activate checkout" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:567 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:571 msgid "Activate the Mercado Pago experience at the checkout of your store." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:582 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:586 msgid "Enter your credentials and choose how to operate" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:595 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:599 msgid "Test Mode" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:608 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:612 msgid "By default, we activate the Sandbox test environment for you to test before you start selling." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:621 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:625 msgid "Production Mode" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:634 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:638 msgid "When you see that everything is going well, deactivate Sandbox, turn on Production and make way for your online sales." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:648 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:652 msgid "Production" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:650 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:654 msgid "Choose “Yes” only when you’re ready to sell. Switch to “No” to activate Testing mode." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:672 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:676 msgid "Load credentials" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:676 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:680 msgid "Search my credentials" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:695 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:699 msgid "Test credentials" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:707 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:711 msgid "With these keys you can do the tests you want.." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:720, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:777 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:724, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:781 msgid "Public key" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:736, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:794 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:740, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:798 msgid "Access token" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:752 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:756 msgid "Production credentials" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:764 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:768 msgid "With these keys you can receive real payments from your customers." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:811 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:815 msgid "Approve your account, it will only take a few minutes" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:824 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:828 msgid "Complete this process to secure your customers data and comply with the regulations
and legal provisions of each country." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:838, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1182 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:842, includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1186 msgid "%s" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:839 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:843 msgid "Homologate account in Mercado Pago" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:853 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:857 msgid "Store name" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:855 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:859 msgid "This name will appear on your customers invoice." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:856 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:860 msgid "Mercado Pago" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:872 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:876 msgid "Store Category" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:874 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:878 msgid "What category do your products belong to? Choose the one that best characterizes them (choose \"other\" if your product is too specific)." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:875 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:879 msgid "Categories" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:887 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:891 msgid "Store ID" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:889 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:893 msgid "Use a number or prefix to identify orders and payments from this store." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:902 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:906 msgid "Integrator ID" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:905 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:909 msgid "Do not forget to enter your integrator_id as a certified Mercado Pago Partner. If you don`t have it, you can %s" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:906 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:910 msgid "request it now." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:920 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:924 msgid "Advanced adjustment" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:933 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:937 msgid "Debug and Log mode" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:936 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:940 msgid "Record your store actions in our changes file to have more support information." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:937 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:941 msgid "We debug the information in our change file." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:952 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:956 msgid "Basic Configuration" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:965 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:969 msgid "Max of installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:967 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:971 msgid "What is the maximum quota with which a customer can buy?" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:970 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:974 msgid "1x installment" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:971 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:975 msgid "2x installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:972 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:976 msgid "3x installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:973 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:977 msgid "4x installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:974 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:978 msgid "5x installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:975 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:979 msgid "6x installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:976 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:980 msgid "10x installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:977 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:981 msgid "12x installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:978 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:982 msgid "15x installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:979 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:983 msgid "18x installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:980 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:984 msgid "24x installments" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1009 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1013 msgid "URL for IPN" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1012 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1016 msgid "Enter a URL to receive payment notifications. In %s you can check more information." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1013 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1017 msgid "our guides" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1028 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1032 msgid "Edit these advanced fields only when you want to modify the preset values." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1041 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1045 msgid "Discount coupons" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1044 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1048 msgid "Will you offer discount coupons to customers who buy with Mercado Pago?" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1059 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1063 msgid "It appears that your credentials are not properly configured.
Please, go to %s and configure it." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1060 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1064 msgid "Market Payment Configuration" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1074 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1078 msgid "Binary mode" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1077 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1081 msgid "Accept and reject payments automatically. Do you want us to activate it?" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1093 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1097 msgid "Discounts per purchase with Mercado Pago" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1095 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1099 msgid "Choose a percentage value that you want to discount your customers for paying with Mercado Pago." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1112 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1116 msgid "Commission for purchase with Mercado Pago" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1114 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1118 msgid "Choose an additional percentage value that you want to charge as commission to your customers for paying with Mercado Pago." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1139 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1143 msgid "Everything set up? Go to your store in Sandbox mode" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1137 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1141 msgid "Everything ready for the takeoff of your sales?" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1158 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1162 msgid "Visit your store and simulate a payment to check that everything is fine." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1156 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1160 msgid "Visit your store as if you were one of your customers and check that everything is fine. If you already went to Production,
bring your customers and increase your sales with the best online shopping experience." msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1177 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1181 msgid "I want to test my sales" msgstr "" -#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1175 +#: includes/payments/WC_WooMercadoPago_PaymentAbstract.php:1179 msgid "Visit my store" msgstr "" @@ -894,27 +902,27 @@ msgstr "" msgid "All payment methods" msgstr "" -#: includes/payments/WC_WooMercadoPago_TicketGateway.php:466, includes/payments/WC_WooMercadoPago_TicketGateway.php:484 +#: includes/payments/WC_WooMercadoPago_TicketGateway.php:468, includes/payments/WC_WooMercadoPago_TicketGateway.php:486 msgid "There was a problem processing your payment. Are you sure you have correctly filled out all the information on the payment form?" msgstr "" -#: includes/payments/WC_WooMercadoPago_TicketGateway.php:553 +#: includes/payments/WC_WooMercadoPago_TicketGateway.php:555 msgid "A problem occurred when processing your payment. Please try again." msgstr "" -#: includes/payments/WC_WooMercadoPago_TicketGateway.php:539 +#: includes/payments/WC_WooMercadoPago_TicketGateway.php:541 msgid "A problem occurred when processing your payment. Are you sure you have correctly filled in all the information on the checkout form?" msgstr "" -#: includes/payments/WC_WooMercadoPago_TicketGateway.php:516 +#: includes/payments/WC_WooMercadoPago_TicketGateway.php:518 msgid "The customer has not paid yet." msgstr "" -#: includes/payments/WC_WooMercadoPago_TicketGateway.php:521 +#: includes/payments/WC_WooMercadoPago_TicketGateway.php:523 msgid "To print the ticket again click" msgstr "" -#: includes/payments/WC_WooMercadoPago_TicketGateway.php:524 +#: includes/payments/WC_WooMercadoPago_TicketGateway.php:526 msgid "here" msgstr "" @@ -1133,19 +1141,19 @@ msgstr "" msgid "Select the issuer with whom you want to process the payment" msgstr "" -#: includes/admin/notices/WC_WooMercadoPago_Notices.php:78, includes/admin/notices/WC_WooMercadoPago_Notices.php:133 +#: includes/admin/notices/WC_WooMercadoPago_Notices.php:80, includes/admin/notices/WC_WooMercadoPago_Notices.php:135 msgid "Discard" msgstr "" -#: includes/admin/notices/WC_WooMercadoPago_Notices.php:109 +#: includes/admin/notices/WC_WooMercadoPago_Notices.php:111 msgid "See WooCommerce" msgstr "" -#: includes/admin/notices/WC_WooMercadoPago_Notices.php:107 +#: includes/admin/notices/WC_WooMercadoPago_Notices.php:109 msgid "Install WooCommerce" msgstr "" -#: includes/admin/notices/WC_WooMercadoPago_Notices.php:104 +#: includes/admin/notices/WC_WooMercadoPago_Notices.php:106 msgid "Activate WooCommerce" msgstr "" @@ -1165,19 +1173,19 @@ msgstr "" msgid " and fee of" msgstr "" -#: includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:365 +#: includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:359 msgid "Public Key production credential is invalid. Review the field to receive real payments." msgstr "" -#: includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:375 +#: includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:369 msgid "Public Key test credential is invalid. Review the field to perform tests in your store." msgstr "" -#: includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:385 +#: includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:379 msgid "Access Token production credential is invalid. Remember that it must be complete to receive real payments." msgstr "" -#: includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:395 +#: includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php:389 msgid "Access Token test credential is invalid. Review the field to perform tests in your store." msgstr "" diff --git a/includes/admin/notices/WC_WooMercadoPago_Notices.php b/includes/admin/notices/WC_WooMercadoPago_Notices.php index c773b3e07..3adb8ce8e 100644 --- a/includes/admin/notices/WC_WooMercadoPago_Notices.php +++ b/includes/admin/notices/WC_WooMercadoPago_Notices.php @@ -42,9 +42,11 @@ public static function initMercadopagoNnotice() public function loadAdminNoticeCss() { if (is_admin()) { + $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; + wp_enqueue_style( 'woocommerce-mercadopago-admin-notice', - plugins_url('../../assets/css/admin_notice_mercadopago.css', plugin_dir_path(__FILE__)) + plugins_url('../../assets/css/admin_notice_mercadopago' . $suffix . '.css', plugin_dir_path(__FILE__)) ); } } @@ -66,7 +68,7 @@ public static function getAlertFrame($message, $type) } $notice = '
-
+
@@ -120,7 +122,7 @@ public static function getAlertWocommerceMiss($message, $type) } $notice = '
-
+
diff --git a/includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php b/includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php index 604149fa3..5b1793006 100644 --- a/includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php +++ b/includes/helpers/WC_WooMercadoPago_Helpers_CurrencyConverter.php @@ -1,7 +1,7 @@ setRatio($method->id, $this->loadRatio($localCurrency, $accountCurrency)); + $this->setRatio($method->id, $this->loadRatio($localCurrency, $accountCurrency, $method)); } catch (Exception $e) { - $this->setRatio($method->id); - throw $e; + $this->setRatio($method->id); + throw $e; } } @@ -184,9 +184,10 @@ private function getRatio(WC_WooMercadoPago_PaymentAbstract $method) /** * @param $fromCurrency * @param $toCurrency + * @param WC_WooMercadoPago_PaymentAbstract $method * @return int */ - public function loadRatio($fromCurrency, $toCurrency) + public function loadRatio($fromCurrency, $toCurrency, WC_WooMercadoPago_PaymentAbstract $method = null) { $cacheKey = $fromCurrency . '--' . $toCurrency; @@ -203,7 +204,12 @@ public function loadRatio($fromCurrency, $toCurrency) try { $result = MeliRestClient::get( - array('uri' => sprintf('/currency_conversions/search?from=%s&to=%s', $fromCurrency, $toCurrency)) + array( + 'uri' => sprintf('/currency_conversions/search?from=%s&to=%s', $fromCurrency, $toCurrency), + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->getAccessToken($method) + ) + ) ); if ($result['status'] != 200) { @@ -236,7 +242,7 @@ private function getSiteId($accessToken) { try { $mp = new MP($accessToken); - $result = $mp->get(sprintf('/users/me?access_token=%s', $accessToken)); + $result = $mp->get('/users/me', array('Authorization' => 'Bearer ' . $accessToken)); return isset($result['response'], $result['response']['site_id']) ? $result['response']['site_id'] : null; } catch (Exception $e) { return null; @@ -265,11 +271,12 @@ public function getDescription(WC_WooMercadoPago_PaymentAbstract $method) /** * Check if currency is supported in mercado pago API * @param $currency + * @param WC_WooMercadoPago_PaymentAbstract $method * @return bool */ - private function isCurrencySupported($currency) + private function isCurrencySupported($currency, WC_WooMercadoPago_PaymentAbstract $method) { - foreach ($this->getSupportedCurrencies() as $country) { + foreach ($this->getSupportedCurrencies($method) as $country) { if ($country['id'] == $currency) { return true; } @@ -280,13 +287,22 @@ private function isCurrencySupported($currency) /** * Get supported currencies from mercado pago API + * @param WC_WooMercadoPago_PaymentAbstract $method * @return array|bool */ - public function getSupportedCurrencies() + public function getSupportedCurrencies(WC_WooMercadoPago_PaymentAbstract $method) { if (is_null($this->supportedCurrencies)) { try { - $result = MeliRestClient::get(['uri' => '/currencies']); + + $request = array( + 'uri' => '/currencies', + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->getAccessToken($method) + ) + ); + + $result = MeliRestClient::get($request); if (!isset($result['response'])) { return false; @@ -313,8 +329,8 @@ public function getField(WC_WooMercadoPago_PaymentAbstract $method) 'default' => 'no', 'description' => $this->msg_description, 'options' => array( - 'no' => $this->__('No'), - 'yes' => $this->__('Yes'), + 'no' => __('No', 'woocommerce-mercadopago'), + 'yes' => __('Yes', 'woocommerce-mercadopago'), ), ); } @@ -346,7 +362,9 @@ public function notices(WC_WooMercadoPago_PaymentAbstract $method) $show = isset($_SESSION[self::CONFIG_KEY]) ? $_SESSION[self::CONFIG_KEY] : array(); $localCurrency = get_woocommerce_currency(); - if ($localCurrency == $this->getAccountCurrency($method)) { + $accountCurrency = $this->getAccountCurrency($method); + + if ($localCurrency == $accountCurrency || empty($accountCurrency) ) { return; } @@ -373,11 +391,10 @@ public function noticeEnabled(WC_WooMercadoPago_PaymentAbstract $method) $localCurrency = get_woocommerce_currency(); $currency = $this->getAccountCurrency($method); - return ' -
-

' . sprintf( __('Now we convert your currency from %s to %s.', 'woocommerce-mercadopago'), $localCurrency, $currency ) . '

-
- '; + $type = 'notice-error'; + $message = sprintf(__('Now we convert your currency from %s to %s.', 'woocommerce-mercadopago'), $localCurrency, $currency); + + return WC_WooMercadoPago_Notices::getAlertFrame($message, $type); } /** @@ -389,11 +406,10 @@ public function noticeDisabled(WC_WooMercadoPago_PaymentAbstract $method) $localCurrency = get_woocommerce_currency(); $currency = $this->getAccountCurrency($method); - return ' -
-

' . sprintf( __('We no longer convert your currency from %s to %s.', 'woocommerce-mercadopago'), $localCurrency, $currency) . '

-
- '; + $type = 'notice-error'; + $message = sprintf(__('We no longer convert your currency from %s to %s.', 'woocommerce-mercadopago'), $localCurrency, $currency); + + return WC_WooMercadoPago_Notices::getAlertFrame($message, $type); } /** diff --git a/includes/module/WC_WooMercadoPago_Configs.php b/includes/module/WC_WooMercadoPago_Configs.php index af26f6fee..1e2b3c883 100755 --- a/includes/module/WC_WooMercadoPago_Configs.php +++ b/includes/module/WC_WooMercadoPago_Configs.php @@ -45,8 +45,7 @@ private function updateTokenNewVersion() $this->updateToken(); } } - - if (empty(get_option('_site_id_v1'))) { + if (empty(get_option('_site_id_v1')) || empty(get_option('_collector_id_v1'))) { WC_WooMercadoPago_Credentials::validate_credentials_v1(); } @@ -99,7 +98,7 @@ private function updateTicketMethods() public function noticeUpdateAccessToken() { $type = 'error'; - $message = __('Update your credentials with the Access Token and Public Key, you need them to continue receiving payments!', 'woocommerce-mercadopado'); + $message = __('Update your credentials with the Access Token and Public Key, you need them to continue receiving payments!', 'woocommerce-mercadopago'); echo WC_WooMercadoPago_Notices::getAlertFrame($message, $type); } @@ -118,20 +117,30 @@ public function noticeHttps() */ private function updateToken() { - if (strpos(get_option('_mp_public_key'), 'TEST') === 0 && strpos(get_option('_mp_access_token'), 'TEST') === 0) { - update_option('_mp_public_key_test', get_option('_mp_public_key'), true); - update_option('_mp_access_token_test', get_option('_mp_access_token'), true); - update_option('checkout_credential_prod', 'no', true); - } + $mpInstance = WC_WooMercadoPago_Module::getMpInstanceSingleton(); + + if ($mpInstance) { + if ( + WC_WooMercadoPago_Credentials::validateCredentialsTest($mpInstance, null, get_option('_mp_public_key')) == true + && WC_WooMercadoPago_Credentials::validateCredentialsTest($mpInstance, get_option('_mp_access_token')) == true + ) { + update_option('_mp_public_key_test', get_option('_mp_public_key'), true); + update_option('_mp_access_token_test', get_option('_mp_access_token'), true); + update_option('checkout_credential_prod', 'no', true); + } - if (strpos(get_option('_mp_public_key'), 'APP_USR') === 0 && strpos(get_option('_mp_access_token'), 'APP_USR') === 0) { - update_option('_mp_public_key_prod', get_option('_mp_public_key'), true); - update_option('_mp_access_token_prod', get_option('_mp_access_token'), true); - if(!empty(get_option('_mp_public_key_prod', '')) && !empty(get_option('_mp_access_token_prod', ''))) { - update_option('_mp_public_key', ''); - update_option('_mp_access_token', ''); + if ( + WC_WooMercadoPago_Credentials::validateCredentialsProd($mpInstance, null, get_option('_mp_public_key')) == true + && WC_WooMercadoPago_Credentials::validateCredentialsProd($mpInstance, get_option('_mp_access_token')) == true + ) { + update_option('_mp_public_key_prod', get_option('_mp_public_key'), true); + update_option('_mp_access_token_prod', get_option('_mp_access_token'), true); + if (!empty(get_option('_mp_public_key_prod', '')) && !empty(get_option('_mp_access_token_prod', ''))) { + update_option('_mp_public_key', ''); + update_option('_mp_access_token', ''); + } + update_option('checkout_credential_prod', 'yes', true); } - update_option('checkout_credential_prod', 'yes', true); } } @@ -243,18 +252,20 @@ public function getCategories() */ public function setPaymentGateway($methods = null) { + $mp_methods = array('WC_WooMercadoPago_BasicGateway', + 'WC_WooMercadoPago_CustomGateway', + 'WC_WooMercadoPago_TicketGateway'); + global $wp; if (!empty($wp) && isset($wp->query_vars['wc-api'])) { - $api_request = strtolower(wc_clean($wp->query_vars['wc-api'])); - if (!empty($api_request)) { + $api_request = wc_clean($wp->query_vars['wc-api']); + if (!empty($api_request) && in_array($api_request, $mp_methods)) { $methods[] = $api_request; return $methods; } } - $methods[] = 'WC_WooMercadoPago_BasicGateway'; - $methods[] = 'WC_WooMercadoPago_CustomGateway'; - $methods[] = 'WC_WooMercadoPago_TicketGateway'; + $methods = array_merge($mp_methods, $methods == null ? [] : $methods); return $methods; } } diff --git a/includes/module/WC_WooMercadoPago_Credentials.php b/includes/module/WC_WooMercadoPago_Credentials.php index bac6f0cbb..b667a97f4 100755 --- a/includes/module/WC_WooMercadoPago_Credentials.php +++ b/includes/module/WC_WooMercadoPago_Credentials.php @@ -1,7 +1,7 @@ publicKey, 'APP_USR') === false && strpos($this->publicKey, 'TEST') === false) { - return false; - } - if (strpos($this->accessToken, 'APP_USR') === false && strpos($this->accessToken, 'TEST') === false) { - return false; - } - return true; } @@ -119,7 +112,7 @@ public static function access_token_is_valid($access_token) if (empty($mp_v1)) { return false; } - $get_request = $mp_v1->get('/users/me?access_token=' . $access_token); + $get_request = $mp_v1->get('/users/me', array('Authorization' => 'Bearer ' . $access_token), false); if ($get_request['status'] > 202) { $log = WC_WooMercadoPago_Log::init_mercado_pago_log('WC_WooMercadoPago_Credentials'); $log->write_log('API valid_access_token error:', $get_request['response']['message']); @@ -131,33 +124,8 @@ public static function access_token_is_valid($access_token) update_option('_test_user_v1', in_array('test_user', $get_request['response']['tags']), true); } - return true; - } - - /** - * @param $public_key - * @return bool - * @throws WC_WooMercadoPago_Exception - */ - public static function public_key_is_valid($public_key) - { - $mp_v1 = WC_WooMercadoPago_Module::getMpInstanceSingleton(); - if (empty($mp_v1)) { - return false; - } - $request = array( - 'uri' => '/v1/card_tokens', - 'data' => null, - 'params' => array( - 'public_key' => $public_key - ), - 'authenticate' => false - ); - $get_request = $mp_v1->post($request); - if ($get_request['status'] > 202) { - $log = WC_WooMercadoPago_Log::init_mercado_pago_log('WC_WooMercadoPago_Credentials'); - $log->write_log('API public_key_is_valid error: ', $get_request['response']['message']); - return false; + if (isset($get_request['response']['id'])) { + update_option('_collector_id_v1', $get_request['response']['id'], true); } return true; @@ -185,7 +153,8 @@ public static function validate_credentials_v1() return false; } $access_token = $mp_v1->get_access_token(); - $get_request = $mp_v1->get('/users/me?access_token=' . $access_token); + $get_request = $mp_v1->get('/users/me', array('Authorization' => 'Bearer ' . $access_token)); + if (isset($get_request['response']['site_id']) && (!empty($credentials->publicKey) || $basicIsEnabled == 'yes')) { update_option('_test_user_v1', in_array('test_user', $get_request['response']['tags']), true); @@ -223,8 +192,8 @@ public static function validate_credentials_v1() */ public static function getPaymentResponse($mpInstance, $accessToken) { - $seller = explode('-', $accessToken); - $payments = $mpInstance->get('/users/' . end($seller) . '/accepted_payment_methods?marketplace=NONE'); + $seller = get_option('_collector_id_v1', ''); + $payments = $mpInstance->get('/users/' . $seller . '/accepted_payment_methods?marketplace=NONE', array('Authorization' => 'Bearer ' . $accessToken)); if (isset($payments['response'])) { return $payments['response']; } @@ -248,7 +217,7 @@ public static function updatePaymentMethods($mpInstance, $accessToken = null, $p } if (empty($paymentsResponse) || (isset($paymentsResponse['status']) && $paymentsResponse['status'] != 200 && - $paymentsResponse['status'] != 201)) { + $paymentsResponse['status'] != 201)) { return; } @@ -292,7 +261,7 @@ public static function updateTicketMethod($mpInstance, $accessToken, $paymentsRe } if (empty($paymentsResponse) || (isset($paymentsResponse['status']) && $paymentsResponse['status'] != 200 && - $paymentsResponse['status'] != 201)) { + $paymentsResponse['status'] != 201)) { return; } @@ -300,7 +269,8 @@ public static function updateTicketMethod($mpInstance, $accessToken, $paymentsRe $excluded = array('consumer_credits', 'paypal', 'pse'); foreach ($paymentsResponse as $payment) { - if (!in_array($payment['id'], $excluded) && + if ( + !in_array($payment['id'], $excluded) && $payment['payment_type_id'] != 'account_money' && $payment['payment_type_id'] != 'credit_card' && $payment['payment_type_id'] != 'debit_card' && @@ -330,4 +300,28 @@ public static function basicIsEnabled() return $basicIsEnabled; } + + /** + * @throws WC_WooMercadoPago_Exception + */ + public static function validateCredentialsTest($mpInstance, $access_token = null, $public_key = null) + { + $isTeste = $mpInstance->getCredentialsWrapper($access_token, $public_key); + if (is_array($isTeste) && isset($isTeste['is_test']) && $isTeste['is_test'] == true) { + return true; + } + return false; + } + + /** + * @throws WC_WooMercadoPago_Exception + */ + public static function validateCredentialsProd($mpInstance, $access_token = null, $public_key = null) + { + $isTeste = $mpInstance->getCredentialsWrapper($access_token, $public_key); + if (is_array($isTeste) && isset($isTeste['is_test']) && $isTeste['is_test'] == false) { + return true; + } + return false; + } } diff --git a/includes/module/WC_WooMercadoPago_Module.php b/includes/module/WC_WooMercadoPago_Module.php index d7256eeed..faa9bbf8a 100755 --- a/includes/module/WC_WooMercadoPago_Module.php +++ b/includes/module/WC_WooMercadoPago_Module.php @@ -1,7 +1,7 @@ 2 ? substr($wc_country, 0, 2) : $wc_country; - } $sufix_country = strtoupper($sufix_country); @@ -356,7 +357,7 @@ public static function is_valid_sponsor_id($sponsor_id) if ($varify_sponsor) { $mp_sponsor_id = WC_WooMercadoPago_Module::getMpInstanceSingleton(); - $get_sponor_id = $mp_sponsor_id->get('/users/' . $sponsor_id, $access_token, false); + $get_sponor_id = $mp_sponsor_id->get('/users/' . $sponsor_id, array('Authorization' => 'Bearer ' . $access_token), false); if (!is_wp_error($get_sponor_id) && ($get_sponor_id['status'] == 200 || $get_sponor_id['status'] == 201)) { if ($get_sponor_id['response']['site_id'] == $site_id) { update_option('_mp_sponsor_id', $sponsor_id, true); @@ -576,7 +577,7 @@ public static function get_country_name($site_id) public static function build_log_path_string($gateway_id, $gateway_name) { return '' . + esc_attr($gateway_id) . '-' . sanitize_file_name(wp_hash($gateway_id)) . '.log')) . '">' . $gateway_name . ''; } diff --git a/includes/module/config/WC_WooMercadoPago_Constants.php b/includes/module/config/WC_WooMercadoPago_Constants.php index 272e5168c..520a26511 100644 --- a/includes/module/config/WC_WooMercadoPago_Constants.php +++ b/includes/module/config/WC_WooMercadoPago_Constants.php @@ -12,7 +12,7 @@ class WC_WooMercadoPago_Constants const PRODUCT_ID_DESKTOP = 'BT7OF5FEOO6G01NJK3QG'; const PRODUCT_ID_MOBILE = 'BT7OFH09QS3001K5A0H0'; const PLATAFORM_ID = 'bo2hnr2ic4p001kbgpt0'; - const VERSION = '4.4.0'; + const VERSION = '4.5.0'; const MIN_PHP = 5.6; const API_MP_BASE_URL = 'https://api.mercadopago.com'; } diff --git a/includes/module/preference/WC_WooMercadoPago_PreferenceAbstract.php b/includes/module/preference/WC_WooMercadoPago_PreferenceAbstract.php index f4cbe8bdb..d7f0c0521 100755 --- a/includes/module/preference/WC_WooMercadoPago_PreferenceAbstract.php +++ b/includes/module/preference/WC_WooMercadoPago_PreferenceAbstract.php @@ -413,7 +413,7 @@ public function get_internal_metadata() $analytics = new WC_WooMercadoPago_PreferenceAnalytics(); - $seller = explode('-', $accessToken); + $seller = get_option('_collector_id_v1', ''); $w = WC_WooMercadoPago_Module::woocommerce_instance(); $internal_metadata = array( "platform" => WC_WooMercadoPago_Constants::PLATAFORM_ID, @@ -421,7 +421,7 @@ public function get_internal_metadata() "module_version" => WC_WooMercadoPago_Constants::VERSION, "site_id" => get_option('_site_id_v1'), "sponsor_id" => $this->get_sponsor_id(), - "collector" => end($seller), + "collector" => $seller, "test_mode" => $test_mode, "details" => "", "basic_settings" => json_encode($analytics->getBasicSettings(), true), diff --git a/includes/module/preference/WC_WooMercadoPago_PreferenceBasic.php b/includes/module/preference/WC_WooMercadoPago_PreferenceBasic.php index fc8d44900..c8afb6953 100644 --- a/includes/module/preference/WC_WooMercadoPago_PreferenceBasic.php +++ b/includes/module/preference/WC_WooMercadoPago_PreferenceBasic.php @@ -109,7 +109,6 @@ public function get_payment_methods($ex_payments, $installments) } $payment_methods = array( 'installments' => (int)$installments, - 'default_installments' => 1, 'excluded_payment_methods' => $excluded_payment_methods ); return $payment_methods; diff --git a/includes/module/sdk/lib/MP.php b/includes/module/sdk/lib/MP.php index 92776c517..09944dcac 100755 --- a/includes/module/sdk/lib/MP.php +++ b/includes/module/sdk/lib/MP.php @@ -1,7 +1,7 @@ 2 || $i < 1) { - throw new WC_WooMercadoPago_Exception('Invalid arguments. Use CLIENT_ID and CLIENT SECRET, or ACCESS_TOKEN'); - } - - if ($i == 1) { - $this->ll_access_token = func_get_arg(0); - } - - if ($i == 2) { - $this->client_id = func_get_arg(0); - $this->client_secret = func_get_arg(1); - } - } - - /** - * @param $email - */ - public function set_email($email) - { - MPRestClient::set_email($email); - MeliRestClient::set_email($email); - } - - /** - * @param $country_code - */ - public function set_locale($country_code) - { - MPRestClient::set_locale($country_code); - MeliRestClient::set_locale($country_code); - } - - /** - * @param null $enable - * @return bool - */ - public function sandbox_mode($enable = NULL) - { - if (!is_null($enable)) { - $this->sandbox = $enable === TRUE; - } - return $this->sandbox; - } - - /** - * @return mixed|null - * @throws WC_WooMercadoPago_Exception - */ - public function get_access_token() - { - - if (isset($this->ll_access_token) && !is_null($this->ll_access_token)) { - return $this->ll_access_token; - } - - if (!empty($this->accessTokenByClient)) { - return $this->accessTokenByClient; - } - - $app_client_values = array( - 'client_id' => $this->client_id, - 'client_secret' => $this->client_secret, - 'grant_type' => 'client_credentials' - ); - - $access_data = MPRestClient::post( - array( - 'uri' => '/oauth/token', - 'data' => $app_client_values, - 'headers' => array( - 'content-type' => 'application/x-www-form-urlencoded' - ) - ), - WC_WooMercadoPago_Constants::VERSION - ); - - if ($access_data['status'] != 200) { - return null; - } - - $response = $access_data['response']; - $this->accessTokenByClient = $response['access_token']; - - return $this->accessTokenByClient; - } - - /** - * @param $id - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function search_paymentV1($id) - { - - $request = array( - 'uri' => '/v1/payments/' . $id, - 'params' => array('access_token' => $this->get_access_token()) - ); - - $payment = MPRestClient::get($request, WC_WooMercadoPago_Constants::VERSION); - return $payment; - } - - //=== CUSTOMER CARDS FUNCTIONS === - - /** - * @param $payer_email - * @return array|mixed|null - * @throws WC_WooMercadoPago_Exception - */ - public function get_or_create_customer($payer_email) - { - - $customer = $this->search_customer($payer_email); - - if ($customer['status'] == 200 && $customer['response']['paging']['total'] > 0) { - $customer = $customer['response']['results'][0]; - } else { - $resp = $this->create_customer($payer_email); - $customer = $resp['response']; - } - - return $customer; - - } - - /** - * @param $email - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function create_customer($email) - { - - $request = array( - 'uri' => '/v1/customers', - 'params' => array( - 'access_token' => $this->get_access_token() - ), - 'data' => array( - 'email' => $email - ) - ); - - $customer = MPRestClient::post($request); - return $customer; - - } - - /** - * @param $email - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function search_customer($email) - { - - $request = array( - 'uri' => '/v1/customers/search', - 'params' => array( - 'access_token' => $this->get_access_token(), - 'email' => $email - ) - ); - - $customer = MPRestClient::get($request); - return $customer; - - } - - /** - * @param $customer_id - * @param $token - * @param null $payment_method_id - * @param null $issuer_id - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function create_card_in_customer($customer_id, $token, $payment_method_id = null, - $issuer_id = null) - { - - $request = array( - 'uri' => '/v1/customers/' . $customer_id . '/cards', - 'params' => array( - 'access_token' => $this->get_access_token() - ), - 'data' => array( - 'token' => $token, - 'issuer_id' => $issuer_id, - 'payment_method_id' => $payment_method_id - ) - ); - - $card = MPRestClient::post($request); - return $card; - - } - - /** - * @param $customer_id - * @param $token - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function get_all_customer_cards($customer_id, $token) - { - - $request = array( - 'uri' => '/v1/customers/' . $customer_id . '/cards', - 'params' => array( - 'access_token' => $this->get_access_token() - ) - ); - - $cards = MPRestClient::get($request); - return $cards; - - } - - //=== COUPOM AND DISCOUNTS FUNCTIONS === - /** - * @param $transaction_amount - * @param $payer_email - * @param $coupon_code - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function check_discount_campaigns($transaction_amount, $payer_email, $coupon_code) - { - $request = array( - 'uri' => '/discount_campaigns', - 'params' => array( - 'access_token' => $this->get_access_token(), - 'transaction_amount' => $transaction_amount, - 'payer_email' => $payer_email, - 'coupon_code' => $coupon_code - ) - ); - $discount_info = MPRestClient::get($request); - return $discount_info; - } - - //=== CHECKOUT AUXILIARY FUNCTIONS === - - /** - * @param $id - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function get_authorized_payment($id) - { - - $request = array( - 'uri' => '/authorized_payments/{$id}', - 'params' => array( - 'access_token' => $this->get_access_token() - ) - ); - - $authorized_payment_info = MPRestClient::get($request); - return $authorized_payment_info; - - } - - /** - * @param $preference - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function create_preference($preference) - { - - $request = array( - 'uri' => '/checkout/preferences', - 'params' => array( - 'access_token' => $this->get_access_token() - ), - 'headers' => array( - 'user-agent' => 'platform:desktop,type:woocommerce,so:' . WC_WooMercadoPago_Constants::VERSION - ), - 'data' => $preference - ); - - $preference_result = MPRestClient::post($request); - return $preference_result; - - } - - /** - * @param $id - * @param $preference - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function update_preference($id, $preference) - { - - $request = array( - 'uri' => '/checkout/preferences/{$id}', - 'params' => array( - 'access_token' => $this->get_access_token() - ), - 'data' => $preference - ); - - $preference_result = MPRestClient::put($request); - return $preference_result; - - } - - /** - * @param $id - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function get_preference($id) - { - - $request = array( - 'uri' => '/checkout/preferences/{$id}', - 'params' => array( - 'access_token' => $this->get_access_token() - ) - ); - - $preference_result = MPRestClient::get($request); - return $preference_result; - - } - - /** - * @param $preference - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function create_payment($preference) - { - - $request = array( - 'uri' => '/v1/payments', - 'params' => array( - 'access_token' => $this->get_access_token() - ), - 'headers' => array( - 'X-Tracking-Id' => 'platform:v1-whitelabel,type:woocommerce,so:' . WC_WooMercadoPago_Constants::VERSION - ), - 'data' => $preference - ); - - $payment = MPRestClient::post($request, WC_WooMercadoPago_Constants::VERSION); - return $payment; - } - - /** - * @param $preapproval_payment - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function create_preapproval_payment($preapproval_payment) - { - - $request = array( - 'uri' => '/preapproval', - 'params' => array( - 'access_token' => $this->get_access_token() - ), - 'data' => $preapproval_payment - ); - - $preapproval_payment_result = MPRestClient::post($request); - return $preapproval_payment_result; - - } - - /** - * @param $id - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function get_preapproval_payment($id) - { - - $request = array( - 'uri' => '/preapproval/' . $id, - 'params' => array( - 'access_token' => $this->get_access_token() - ) - ); - - $preapproval_payment_result = MPRestClient::get($request); - return $preapproval_payment_result; - - } - - /** - * @param $id - * @param $preapproval_payment - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function update_preapproval_payment($id, $preapproval_payment) - { - - $request = array( - 'uri' => '/preapproval/' . $id, - 'params' => array( - 'access_token' => $this->get_access_token() - ), - 'data' => $preapproval_payment - ); - - $preapproval_payment_result = MPRestClient::put($request); - return $preapproval_payment_result; - - } - - /** - * @param $id - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function cancel_preapproval_payment($id) - { - - $request = array( - 'uri' => '/preapproval/' . $id, - 'params' => array( - 'access_token' => $this->get_access_token() - ), - 'data' => array( - 'status' => 'cancelled' - ) - ); - - $response = MPRestClient::put($request); - return $response; - - } - - //=== REFUND AND CANCELING FLOW FUNCTIONS === - - /** - * @param $id - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function refund_payment($id) - { - - $request = array( - 'uri' => '/v1/payments/' . $id . '/refunds', - 'params' => array( - 'access_token' => $this->get_access_token() - ) - ); - - $response = MPRestClient::post($request); - return $response; - - } - - /** - * @param $id - * @param $amount - * @param $reason - * @param $external_reference - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function partial_refund_payment($id, $amount, $reason, $external_reference) - { - - $request = array( - 'uri' => '/v1/payments/' . $id . '/refunds?access_token=' . $this->get_access_token(), - 'data' => array( - 'amount' => $amount, - 'metadata' => array( - 'metadata' => $reason, - 'external_reference' => $external_reference - ) - ) - ); - - $response = MPRestClient::post($request); - return $response; - - } - - /** - * @param $id - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function cancel_payment($id) - { - - $request = array( - 'uri' => '/v1/payments/' . $id, - 'params' => array( - 'access_token' => $this->get_access_token() - ), - 'data' => '{"status":"cancelled"}' - ); - - $response = MPRestClient::put($request); - return $response; - - } - - /** - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function get_payment_methods() - { - $request = array( - 'uri' => '/v1/payment_methods', - 'params' => array( - 'access_token' => $this->get_access_token() - ) - ); - - $response = MPRestClient::get($request); - asort($result); - return $response; - } - - //=== GENERIC RESOURCE CALL METHODS === - - /** - * @param $request - * @param null $params - * @param bool $authenticate - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function get($request, $params = null, $authenticate = true) - { - - if (is_string($request)) { - $request = array( - 'uri' => $request, - 'params' => $params, - 'authenticate' => $authenticate - ); - } - - $request['params'] = isset($request['params']) && is_array($request['params']) ? - $request['params'] : - array(); - - if (!isset($request['authenticate']) || $request['authenticate'] !== false) { - $request['params']['access_token'] = $this->get_access_token(); - } - - $result = MPRestClient::get($request); - return $result; - - } - - /** - * @param $request - * @param null $data - * @param null $params - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function post($request, $data = null, $params = null) - { - - if (is_string($request)) { - $request = array( - 'uri' => $request, - 'data' => $data, - 'params' => $params - ); - } - - $request['params'] = isset($request['params']) && is_array($request['params']) ? - $request["params"] : - array(); - - if (!isset ($request['authenticate']) || $request['authenticate'] !== false) { - $request['params']['access_token'] = $this->get_access_token(); - } - - $result = MPRestClient::post($request); - return $result; - - } - - /** - * @param $request - * @param null $data - * @param null $params - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function put($request, $data = null, $params = null) - { - - if (is_string($request)) { - $request = array( - 'uri' => $request, - 'data' => $data, - 'params' => $params - ); - } - - $request['params'] = isset($request['params']) && is_array($request['params']) ? - $request['params'] : - array(); - - if (!isset ($request['authenticate']) || $request['authenticate'] !== false) { - $request['params']['access_token'] = $this->get_access_token(); - } - - $result = MPRestClient::put($request); - return $result; - - } - - /** - * @param $request - * @param null $params - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public function delete($request, $params = null) - { - - if (is_string($request)) { - $request = array( - 'uri' => $request, - 'params' => $params - ); - } - - $request['params'] = isset($request['params']) && is_array($request['params']) ? - $request['params'] : - array(); - - if (!isset($request['authenticate']) || $request['authenticate'] !== false) { - $request['params']['access_token'] = $this->get_access_token(); - } - - $result = MPRestClient::delete($request); - return $result; - - } - - //=== MODULE ANALYTICS FUNCTIONS === + private $client_id; + private $client_secret; + private $ll_access_token; + private $sandbox = FALSE; + private $accessTokenByClient; + private $paymentClass; + + /** + * MP constructor. + * @throws WC_WooMercadoPago_Exception + */ + public function __construct() + { + $includes_path = dirname(__FILE__); + require_once($includes_path . '/RestClient/AbstractRestClient.php'); + require_once($includes_path . '/RestClient/MeliRestClient.php'); + require_once($includes_path . '/RestClient/MpRestClient.php'); + + $i = func_num_args(); + if ($i > 2 || $i < 1) { + throw new WC_WooMercadoPago_Exception('Invalid arguments. Use CLIENT_ID and CLIENT SECRET, or ACCESS_TOKEN'); + } + + if ($i == 1) { + $this->ll_access_token = func_get_arg(0); + } + + if ($i == 2) { + $this->client_id = func_get_arg(0); + $this->client_secret = func_get_arg(1); + } + } + + /** + * @param $email + */ + public function set_email($email) + { + MPRestClient::set_email($email); + MeliRestClient::set_email($email); + } + + /** + * @param $country_code + */ + public function set_locale($country_code) + { + MPRestClient::set_locale($country_code); + MeliRestClient::set_locale($country_code); + } + + /** + * @param null $enable + * @return bool + */ + public function sandbox_mode($enable = NULL) + { + if (!is_null($enable)) { + $this->sandbox = $enable === TRUE; + } + return $this->sandbox; + } + + /** + * @return mixed|null + * @throws WC_WooMercadoPago_Exception + */ + public function get_access_token() + { + + if (isset($this->ll_access_token) && !is_null($this->ll_access_token)) { + return $this->ll_access_token; + } + + if (!empty($this->accessTokenByClient)) { + return $this->accessTokenByClient; + } + + $app_client_values = array( + 'client_id' => $this->client_id, + 'client_secret' => $this->client_secret, + 'grant_type' => 'client_credentials' + ); + + $access_data = MPRestClient::post( + array( + 'uri' => '/oauth/token', + 'data' => $app_client_values, + 'headers' => array( + 'content-type' => 'application/x-www-form-urlencoded' + ) + ), + WC_WooMercadoPago_Constants::VERSION + ); + + if ($access_data['status'] != 200) { + return null; + } + + $response = $access_data['response']; + $this->accessTokenByClient = $response['access_token']; + + return $this->accessTokenByClient; + } + + /** + * @param $id + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function search_paymentV1($id) + { + + $request = array( + 'uri' => '/v1/payments/' . $id, + 'params' => array('access_token' => $this->get_access_token()) + ); + + $payment = MPRestClient::get($request, WC_WooMercadoPago_Constants::VERSION); + return $payment; + } + + //=== CUSTOMER CARDS FUNCTIONS === + + /** + * @param $payer_email + * @return array|mixed|null + * @throws WC_WooMercadoPago_Exception + */ + public function get_or_create_customer($payer_email) + { + + $customer = $this->search_customer($payer_email); + + if ($customer['status'] == 200 && $customer['response']['paging']['total'] > 0) { + $customer = $customer['response']['results'][0]; + } else { + $resp = $this->create_customer($payer_email); + $customer = $resp['response']; + } + + return $customer; + } + + /** + * @param $email + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function create_customer($email) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/v1/customers', + 'data' => array( + 'email' => $email + ) + ); + + $customer = MPRestClient::post($request); + return $customer; + } + + /** + * @param $email + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function search_customer($email) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/v1/customers/search', + 'params' => array( + 'email' => $email + ) + ); + + $customer = MPRestClient::get($request); + return $customer; + } + + /** + * @param $customer_id + * @param $token + * @param null $payment_method_id + * @param null $issuer_id + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function create_card_in_customer( + $customer_id, + $token, + $payment_method_id = null, + $issuer_id = null + ) { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/v1/customers/' . $customer_id . '/cards', + 'data' => array( + 'token' => $token, + 'issuer_id' => $issuer_id, + 'payment_method_id' => $payment_method_id + ) + ); + + $card = MPRestClient::post($request); + return $card; + } + + /** + * @param $customer_id + * @param $token + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function get_all_customer_cards($customer_id, $token) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/v1/customers/' . $customer_id . '/cards', + ); + + $cards = MPRestClient::get($request); + return $cards; + } + + //=== COUPOM AND DISCOUNTS FUNCTIONS === + /** + * @param $transaction_amount + * @param $payer_email + * @param $coupon_code + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function check_discount_campaigns($transaction_amount, $payer_email, $coupon_code) + { + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/discount_campaigns', + 'params' => array( + 'transaction_amount' => $transaction_amount, + 'payer_email' => $payer_email, + 'coupon_code' => $coupon_code + ) + ); + $discount_info = MPRestClient::get($request); + return $discount_info; + } + + //=== CHECKOUT AUXILIARY FUNCTIONS === + + /** + * @param $id + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function get_authorized_payment($id) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/authorized_payments/{$id}', + ); + + $authorized_payment_info = MPRestClient::get($request); + return $authorized_payment_info; + } + + /** + * @param $preference + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function create_preference($preference) + { + + $request = array( + 'uri' => '/checkout/preferences', + 'headers' => array( + 'user-agent' => 'platform:desktop,type:woocommerce,so:' . WC_WooMercadoPago_Constants::VERSION, + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'data' => $preference + ); + + $preference_result = MPRestClient::post($request); + return $preference_result; + } + + /** + * @param $id + * @param $preference + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function update_preference($id, $preference) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/checkout/preferences/{$id}', + 'data' => $preference + ); + + $preference_result = MPRestClient::put($request); + return $preference_result; + } + + /** + * @param $id + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function get_preference($id) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/checkout/preferences/{$id}', + ); + + $preference_result = MPRestClient::get($request); + return $preference_result; + } + + /** + * @param $preference + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function create_payment($preference) + { + + $request = array( + 'uri' => '/v1/payments', + 'headers' => array( + 'X-Tracking-Id' => 'platform:v1-whitelabel,type:woocommerce,so:' . WC_WooMercadoPago_Constants::VERSION, + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'data' => $preference + ); + + $payment = MPRestClient::post($request, WC_WooMercadoPago_Constants::VERSION); + return $payment; + } + + /** + * @param $preapproval_payment + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function create_preapproval_payment($preapproval_payment) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/preapproval', + 'data' => $preapproval_payment + ); + + $preapproval_payment_result = MPRestClient::post($request); + return $preapproval_payment_result; + } + + /** + * @param $id + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function get_preapproval_payment($id) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/preapproval/' . $id + ); + + $preapproval_payment_result = MPRestClient::get($request); + return $preapproval_payment_result; + } + + /** + * @param $id + * @param $preapproval_payment + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function update_preapproval_payment($id, $preapproval_payment) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/preapproval/' . $id, + 'data' => $preapproval_payment + ); + + $preapproval_payment_result = MPRestClient::put($request); + return $preapproval_payment_result; + } + + /** + * @param $id + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function cancel_preapproval_payment($id) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/preapproval/' . $id, + 'data' => array( + 'status' => 'cancelled' + ) + ); + + $response = MPRestClient::put($request); + return $response; + } + + //=== REFUND AND CANCELING FLOW FUNCTIONS === + + /** + * @param $id + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function refund_payment($id) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/v1/payments/' . $id . '/refunds' + ); + + $response = MPRestClient::post($request); + return $response; + } + + /** + * @param $id + * @param $amount + * @param $reason + * @param $external_reference + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function partial_refund_payment($id, $amount, $reason, $external_reference) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/v1/payments/' . $id . '/refunds', + 'data' => array( + 'amount' => $amount, + 'metadata' => array( + 'metadata' => $reason, + 'external_reference' => $external_reference + ) + ) + ); + + $response = MPRestClient::post($request); + return $response; + } + + /** + * @param $id + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function cancel_payment($id) + { + + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/v1/payments/' . $id, + 'data' => '{"status":"cancelled"}' + ); + + $response = MPRestClient::put($request); + return $response; + } + + /** + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function get_payment_methods() + { + $request = array( + 'headers' => array( + 'Authorization' => 'Bearer ' . $this->get_access_token() + ), + 'uri' => '/v1/payment_methods', + ); + + $response = MPRestClient::get($request); + asort($result); + return $response; + } + + /** + * Validate if the seller is homologated + * @param $access_token + * @param $public_key + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function getCredentialsWrapper($access_token = null, $public_key = null) + { + $request = array( + 'uri' => '/plugins-credentials-wrapper/credentials', + ); + + if (!empty($access_token) && empty($public_key)) { + $request['headers'] = array('Authorization' => 'Bearer ' . $access_token); + } + + if (empty($access_token) && !empty($public_key)) { + $request['params'] = array('public_key' => $public_key); + } + + $response = MPRestClient::get($request); + + if ($response['status'] > 202) { + $log = WC_WooMercadoPago_Log::init_mercado_pago_log('getCredentialsWrapper'); + $log->write_log('API GET Credentials Wrapper error:', $response['response']['message']); + return false; + } + + return $response['response']; + } + + //=== GENERIC RESOURCE CALL METHODS === + + /** + * @param $request + * @param null $params + * @param bool $authenticate + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function get($request, $headers = [], $authenticate = true) + { + + if (is_string($request)) { + $request = array( + 'headers' => $headers, + 'uri' => $request, + 'authenticate' => $authenticate + ); + } + + if (!isset($request['authenticate']) || $request['authenticate'] !== false) { + $access_token = $this->get_access_token(); + if (!empty($access_token)) { + $request['headers'] = array('Authorization'=> 'Bearer ' . $access_token); + } + } + + $result = MPRestClient::get($request); + return $result; + } + + /** + * @param $request + * @param null $data + * @param null $params + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function post($request, $data = null, $params = null) + { + + if (is_string($request)) { + $request = array( + 'headers' => array('Authorization' => 'Bearer ' . $this->get_access_token()), + 'uri' => $request, + 'data' => $data, + 'params' => $params + ); + } + + $request['params'] = isset($request['params']) && is_array($request['params']) ? + $request["params"] : + array(); + + $result = MPRestClient::post($request); + return $result; + } + + /** + * @param $request + * @param null $data + * @param null $params + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function put($request, $data = null, $params = null) + { + + if (is_string($request)) { + $request = array( + 'headers' => array('Authorization' => 'Bearer ' . $this->get_access_token()), + 'uri' => $request, + 'data' => $data, + 'params' => $params + ); + } + + $request['params'] = isset($request['params']) && is_array($request['params']) ? + $request['params'] : + array(); + + $result = MPRestClient::put($request); + return $result; + } + + /** + * @param $request + * @param null $params + * @return array|null + * @throws WC_WooMercadoPago_Exception + */ + public function delete($request, $params = null) + { + + if (is_string($request)) { + $request = array( + 'headers' => array('Authorization' => 'Bearer ' . $this->get_access_token()), + 'uri' => $request, + 'params' => $params + ); + } + + $request['params'] = isset($request['params']) && is_array($request['params']) ? + $request['params'] : + array(); + + $result = MPRestClient::delete($request); + return $result; + } + + //=== MODULE ANALYTICS FUNCTIONS === /** * @param $module_info @@ -705,55 +713,22 @@ public function analytics_save_settings($module_info) return $result; } - /** - * @param null $payment - */ - public function setPaymentClass($payment = null) - { - if (!empty($payment)) { - $this->paymentClass = get_class($payment); - } - } - - /** - * @return mixed - */ - public function getPaymentClass() - { - return $this->paymentClass; - } - - /** - * @param $accessToken - * @return int - * @throws WC_WooMercadoPago_Exception - */ - public function homologValidate($accessToken) - { - $session = 'homolog_validate_' . $accessToken; - if (isset($_SESSION[$session])) { - return $_SESSION[$session]; - } - - $seller = explode('-', $accessToken); - $response = MeliRestClient::get( - array('uri' => '/applications/' . $seller[1]), WC_WooMercadoPago_Constants::VERSION - ); - - //in case of failures - if ($response['status'] > 202) { - $log = WC_WooMercadoPago_Log::init_mercado_pago_log('WC_WooMercadoPago_Module'); - $log->write_log('API application_search_owner_id error:', $response['response']['message']); - $_SESSION[$session] = 0; - return 0; - } - //response treatment - $result = $response['response']; - if (in_array('payments', $result['scopes'])) { - $_SESSION[$session] = 1; - return 1; - } - $_SESSION[$session] = 0; - return 0; - } + /** + * @param null $payment + */ + public function setPaymentClass($payment = null) + { + if (!empty($payment)) { + $this->paymentClass = get_class($payment); + } + } + + /** + * @return mixed + */ + public function getPaymentClass() + { + return $this->paymentClass; + } + } diff --git a/includes/module/sdk/lib/RestClient/AbstractRestClient.php b/includes/module/sdk/lib/RestClient/AbstractRestClient.php index 6fd758cc5..27397175e 100644 --- a/includes/module/sdk/lib/RestClient/AbstractRestClient.php +++ b/includes/module/sdk/lib/RestClient/AbstractRestClient.php @@ -8,8 +8,8 @@ * License - https://www.gnu.org/licenses/gpl.html GPL version 2 or higher */ -if ( ! defined( 'ABSPATH' ) ) { - exit; +if (!defined('ABSPATH')) { + exit; } /** * Class AbstractRestClient @@ -55,7 +55,7 @@ public static function build_request($request, $url) } $headers = array('accept: application/json'); - if ($request['method'] == 'POST' ) { + if ($request['method'] == 'POST') { $headers[] = 'x-product-id:' . (WC_WooMercadoPago_Module::is_mobile() ? WC_WooMercadoPago_Constants::PRODUCT_ID_MOBILE : WC_WooMercadoPago_Constants::PRODUCT_ID_DESKTOP); $headers[] = 'x-platform-id:' . WC_WooMercadoPago_Constants::PLATAFORM_ID; $headers[] = 'x-integrator-id:' . get_option('_mp_integrator_id', null); @@ -67,8 +67,6 @@ public static function build_request($request, $url) if (isset($request['headers']) && is_array($request['headers'])) { foreach ($request['headers'] as $h => $v) { - $h = strtolower($h); - $v = strtolower($v); if ($h == 'content-type') { $default_content_type = false; $json_content = $v == 'application/json'; @@ -131,7 +129,7 @@ public static function execute($request, $connect) $response = null; $api_result = curl_exec($connect); if (curl_errno($connect)) { - throw new WC_WooMercadoPago_Exception (curl_error($connect)); + throw new WC_WooMercadoPago_Exception(curl_error($connect)); } $api_http_code = curl_getinfo($connect, CURLINFO_HTTP_CODE); @@ -139,74 +137,10 @@ public static function execute($request, $connect) $response = array('status' => $api_http_code, 'response' => json_decode($api_result, true)); } - if ($response != null && $response['status'] >= 400 && self::$check_loop == 0) { - try { - self::$check_loop = 1; - $message = null; - $payloads = null; - $endpoint = null; - $errors = array(); - if (isset($response['response'])) { - if (isset($response['response']['message'])) { - $message = $response['response']['message']; - } - if (isset($response['response']['cause'])) { - $message .= json_encode($response['response']['cause']); - } - } - if ($request != null) { - if (isset($request['data'])) { - if ($request['data'] != null) { - $payloads = json_encode($request['data']); - } - } - if (isset($request['uri'])) { - if ($request['uri'] != null) { - $endpoint = $request['uri']; - } - } - } - $errors[] = array( - 'endpoint' => $endpoint, - 'message' => $message, - 'payloads' => $payloads - ); - self::sendErrorLog($response['status'], $errors, WC_WooMercadoPago_Constants::VERSION); - } catch (Exception $e) { - throw new WC_WooMercadoPago_Exception('Error to call API LOGS' . $e); - } - } - - self::$check_loop = 0; curl_close($connect); return $response; } - /** - * @param $code - * @param $errors - * @return array|null - * @throws WC_WooMercadoPago_Exception - */ - public static function sendErrorLog($code, $errors) - { - $data = array( - 'code' => $code, - 'module' => WC_WooMercadoPago_Constants::PLATAFORM_ID, - 'module_version' => WC_WooMercadoPago_Constants::VERSION, - 'url_store' => $_SERVER['HTTP_HOST'], - 'errors' => $errors, - 'email_admin' => self::$email_admin, - 'country_initial' => self::$site_locale - ); - $request = array( - 'uri' => '/modules/log', - 'data' => $data - ); - $result_response = MeLiRestClient::post($request); - return $result_response; - } - /** * @param $params * @return string diff --git a/includes/notification/WC_WooMercadoPago_Notification_Abstract.php b/includes/notification/WC_WooMercadoPago_Notification_Abstract.php index 4814014d2..1becce398 100644 --- a/includes/notification/WC_WooMercadoPago_Notification_Abstract.php +++ b/includes/notification/WC_WooMercadoPago_Notification_Abstract.php @@ -107,19 +107,19 @@ public function proccessStatus($processed_status, $data, $order) $this->mp_rule_approved($data, $order, $used_gateway); break; case 'pending': - $this->mp_rule_pending($order, $used_gateway); + $this->mp_rule_pending($data, $order, $used_gateway); break; case 'in_process': - $this->mp_rule_in_process($order); + $this->mp_rule_in_process($data, $order); break; case 'rejected': - $this->mp_rule_rejected($order); + $this->mp_rule_rejected($data, $order); break; case 'refunded': $this->mp_rule_refunded($order); break; case 'cancelled': - $this->mp_rule_cancelled($order); + $this->mp_rule_cancelled($data, $order); break; case 'in_mediation': $this->mp_rule_in_mediation($order); @@ -140,7 +140,14 @@ public function proccessStatus($processed_status, $data, $order) public function mp_rule_approved($data, $order, $used_gateway) { $order->add_order_note('Mercado Pago: ' . __('Payment approved.', 'woocommerce-mercadopago')); - $payment_completed_status = apply_filters('woocommerce_payment_complete_order_status', $order->needs_processing() ? 'processing' : 'completed', $order->get_id(), $order); + + $payment_completed_status = apply_filters( + 'woocommerce_payment_complete_order_status', + $order->needs_processing() ? 'processing' : 'completed', + $order->get_id(), + $order + ); + if (method_exists($order, 'get_status') && $order->get_status() !== 'completed') { switch ($used_gateway) { case 'WC_WooMercadoPago_CustomGateway': @@ -171,49 +178,72 @@ public function mp_rule_approved($data, $order, $used_gateway) * @param $order * @param $usedGateway */ - public function mp_rule_pending($order, $used_gateway) + public function mp_rule_pending($data, $order, $used_gateway) { - $order->update_status(self::get_wc_status_for_mp_status('pending')); - switch ($used_gateway) { - case 'WC_WooMercadoPago_TicketGateway': - $notes = $order->get_customer_order_notes(); - $has_note = false; - if (sizeof($notes) > 1) { - $has_note = true; + if ($this->canUpdateOrderStatus($order)) { + $order->update_status(self::get_wc_status_for_mp_status('pending')); + switch ($used_gateway) { + case 'WC_WooMercadoPago_TicketGateway': + $notes = $order->get_customer_order_notes(); + $has_note = false; + if (sizeof($notes) > 1) { + $has_note = true; + break; + } + if (!$has_note) { + $order->add_order_note( + 'Mercado Pago: ' . __('Waiting for the ticket payment.', 'woocommerce-mercadopago') + ); + $order->add_order_note( + 'Mercado Pago: ' . __('Waiting for the ticket payment.', 'woocommerce-mercadopago'), + 1, false + ); + } break; - } - if (!$has_note) { - $order->add_order_note( - 'Mercado Pago: ' . __('Waiting for the ticket payment.', 'woocommerce-mercadopago') - ); + default: $order->add_order_note( - 'Mercado Pago: ' . __('Waiting for the ticket payment.', 'woocommerce-mercadopago'), - 1, false + 'Mercado Pago: ' . __('The customer has not made the payment yet.', 'woocommerce-mercadopago') ); - } - break; - default: - $order->add_order_note('Mercado Pago: ' . __('The customer has not made the payment yet.', 'woocommerce-mercadopago')); - break; + break; + } + } else { + $this->validateOrderNoteType($data, $order, 'pending'); } + return; } /** * @param $order */ - public function mp_rule_in_process($order) + public function mp_rule_in_process($data, $order) { - $order->update_status(self::get_wc_status_for_mp_status('inprocess'), 'Mercado Pago: ' . __('Payment is pending review.', 'woocommerce-mercadopago')); + if ($this->canUpdateOrderStatus($order)) { + $order->update_status( + self::get_wc_status_for_mp_status('inprocess'), + 'Mercado Pago: ' . __('Payment is pending review.', 'woocommerce-mercadopago') + ); + } else { + $this->validateOrderNoteType($data, $order, 'in_process'); + } + return; } /** * @param $order */ - public function mp_rule_rejected($order) + public function mp_rule_rejected($data, $order) { - $order->update_status(self::get_wc_status_for_mp_status('rejected'), 'Mercado Pago: ' . __('Payment was declined. The customer can try again.', 'woocommerce-mercadopago')); + if ($this->canUpdateOrderStatus($order)) { + $order->update_status( + self::get_wc_status_for_mp_status('rejected'), + 'Mercado Pago: ' . __('Payment was declined. The customer can try again.', 'woocommerce-mercadopago') + ); + } else { + $this->validateOrderNoteType($data, $order, 'rejected'); + } + return; } @@ -222,16 +252,27 @@ public function mp_rule_rejected($order) */ public function mp_rule_refunded($order) { - $order->update_status(self::get_wc_status_for_mp_status('refunded'), 'Mercado Pago: ' . __('Payment was returned to the customer.', 'woocommerce-mercadopago')); + $order->update_status( + self::get_wc_status_for_mp_status('refunded'), + 'Mercado Pago: ' . __('Payment was returned to the customer.', 'woocommerce-mercadopago') + ); return; } /** * @param $order */ - public function mp_rule_cancelled($order) + public function mp_rule_cancelled($data, $order) { - $order->update_status(self::get_wc_status_for_mp_status('cancelled'), 'Mercado Pago: ' . __('Payment was canceled.', 'woocommerce-mercadopago')); + if ($this->canUpdateOrderStatus($order)) { + $order->update_status( + self::get_wc_status_for_mp_status('cancelled'), + 'Mercado Pago: ' . __('Payment was canceled.', 'woocommerce-mercadopago') + ); + } else { + $this->validateOrderNoteType($data, $order, 'cancelled'); + } + return; } @@ -241,7 +282,9 @@ public function mp_rule_cancelled($order) public function mp_rule_in_mediation($order) { $order->update_status(self::get_wc_status_for_mp_status('inmediation')); - $order->add_order_note('Mercado Pago: ' . __('The payment is in mediation or the purchase was unknown by the customer.', 'woocommerce-mercadopago')); + $order->add_order_note( + 'Mercado Pago: ' . __('The payment is in mediation or the purchase was unknown by the customer.', 'woocommerce-mercadopago') + ); return; } @@ -251,7 +294,10 @@ public function mp_rule_in_mediation($order) public function mp_rule_charged_back($order) { $order->update_status(self::get_wc_status_for_mp_status('chargedback')); - $order->add_order_note('Mercado Pago: ' . __('The payment is in mediation or the purchase was unknown by the customer.', 'woocommerce-mercadopago')); + $order->add_order_note( + 'Mercado Pago: ' . __('The payment is in mediation or the purchase was unknown by the customer.', + 'woocommerce-mercadopago') + ); return; } @@ -314,6 +360,38 @@ public function check_and_save_customer_card($checkout_info) } } + protected function canUpdateOrderStatus($order) { + return method_exists($order, 'get_status') && $order->get_status() !== 'completed' && $order->get_status() !== 'processing'; + } + + /** + * @param $data + * @param $order + * @param $status + * @return void + */ + protected function validateOrderNoteType($data, $order, $status) + { + $paymentId = $data['id']; + + if(isset($data['ipn_type']) && $data['ipn_type'] === 'merchant_order') { + $payments = []; + foreach($data['payments'] as $payment) { + $payments[] = $payment['id']; + } + + $paymentId = implode(',', $payments); + } + + $order->add_order_note( + sprintf( + __('Mercado Pago: The payment %s was notified by Mercado Pago with status %s.', 'woocommerce-mercadopago'), + $paymentId, + $status + ) + ); + } + /** * @param $code * @param $code_message @@ -324,5 +402,4 @@ public function setResponse($code, $code_message, $body) status_header($code, $code_message); die($body); } - } diff --git a/includes/notification/WC_WooMercadoPago_Notification_IPN.php b/includes/notification/WC_WooMercadoPago_Notification_IPN.php index 6ff83ff4f..cb3a395d9 100644 --- a/includes/notification/WC_WooMercadoPago_Notification_IPN.php +++ b/includes/notification/WC_WooMercadoPago_Notification_IPN.php @@ -1,7 +1,7 @@ setResponse(422, null, __('Type of topic IPN invalid, need to be merchant_order', 'woocommerce-mercadopago')); } - $access_token = array('access_token' => $this->mp->get_access_token()); + $access_token = $this->mp->get_access_token(); if ($data['topic'] == 'merchant_order') { - $ipn_info = $this->mp->get('/merchant_orders/' . $data['id'], $access_token, false); + $ipn_info = $this->mp->get('/merchant_orders/' . $data['id'], array('Authorization' => 'Bearer ' . $access_token), false); if (is_wp_error($ipn_info) || ($ipn_info['status'] != 200 && $ipn_info['status'] != 201)) { $this->log->write_log(__FUNCTION__, ' IPN merchant_order not found ' . json_encode($ipn_info, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); @@ -66,18 +66,18 @@ public function check_ipn_response() * @return bool|void|WC_Order|WC_Order_Refund * @throws WC_Data_Exception */ - public function successful_request($data) - { - try { - $order = parent::successful_request($data); - $processed_status = $this->process_status_mp_business($data, $order); - $this->log->write_log(__FUNCTION__, 'Changing order status to: ' . parent::get_wc_status_for_mp_status(str_replace('_', '', $processed_status))); - $this->proccessStatus($processed_status, $data, $order); - } catch (Exception $e) { - $this->setResponse(422,null, $e->getMessage()); - $this->log->write_log(__FUNCTION__, $e->getMessage()); - } - } + public function successful_request($data) + { + try { + $order = parent::successful_request($data); + $processed_status = $this->process_status_mp_business($data, $order); + $this->log->write_log(__FUNCTION__, 'Changing order status to: ' . parent::get_wc_status_for_mp_status(str_replace('_', '', $processed_status))); + $this->proccessStatus($processed_status, $data, $order); + } catch (Exception $e) { + $this->setResponse(422, null, $e->getMessage()); + $this->log->write_log(__FUNCTION__, $e->getMessage()); + } + } /** * @param $data @@ -128,11 +128,12 @@ public function process_status_mp_business($data, $order) $payment_ids = array(); foreach ($data['payments'] as $payment) { $payment_ids[] = $payment['id']; - $order->update_meta_data('Mercado Pago - Payment ' . $payment['id'], + $order->update_meta_data( + 'Mercado Pago - Payment ' . $payment['id'], '[Date ' . date('Y-m-d H:i:s', strtotime($payment['date_created'])) . - ']/[Amount ' . $payment['transaction_amount'] . - ']/[Paid ' . $payment['total_paid_amount'] . - ']/[Refund ' . $payment['amount_refunded'] . ']' + ']/[Amount ' . $payment['transaction_amount'] . + ']/[Paid ' . $payment['total_paid_amount'] . + ']/[Refund ' . $payment['amount_refunded'] . ']' ); } if (sizeof($payment_ids) > 0) { @@ -157,9 +158,9 @@ public function process_status_mp_business($data, $order) $order->id, 'Mercado Pago - Payment ' . $payment['id'], '[Date ' . date('Y-m-d H:i:s', strtotime($payment['date_created'])) . - ']/[Amount ' . $payment['transaction_amount'] . - ']/[Paid ' . $payment['total_paid_amount'] . - ']/[Refund ' . $payment['amount_refunded'] . ']' + ']/[Amount ' . $payment['transaction_amount'] . + ']/[Paid ' . $payment['total_paid_amount'] . + ']/[Refund ' . $payment['amount_refunded'] . ']' ); } if (sizeof($payment_ids) > 0) { diff --git a/includes/notification/WC_WooMercadoPago_Notification_Webhook.php b/includes/notification/WC_WooMercadoPago_Notification_Webhook.php index ff32c53ee..5c55f7152 100644 --- a/includes/notification/WC_WooMercadoPago_Notification_Webhook.php +++ b/includes/notification/WC_WooMercadoPago_Notification_Webhook.php @@ -1,7 +1,7 @@ log->write_log(__FUNCTION__, 'Mercado Pago Request failure: ' . json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); - $this->setResponse(422,null, "Mercado Pago Request failure"); + $this->setResponse(422, null, "Mercado Pago Request failure"); } } else { if ($data['type'] == 'payment') { - $access_token = array('access_token' => $this->mp->get_access_token()); - $payment_info = $this->mp->get('/v1/payments/' . $data['data_id'], $access_token, false); + $access_token = $this->mp->get_access_token(); + $payment_info = $this->mp->get('/v1/payments/' . $data['data_id'], array('Authorization' => 'Bearer ' . $access_token), false); if (!is_wp_error($payment_info) && ($payment_info['status'] == 200 || $payment_info['status'] == 201)) { if ($payment_info['response']) { do_action('valid_mercadopago_ipn_request', $payment_info['response']); - $this->setResponse(200,"OK", "Webhook Notification Successfull"); + $this->setResponse(200, "OK", "Webhook Notification Successfull"); } } else { $this->log->write_log(__FUNCTION__, 'error when processing received data: ' . json_encode($payment_info, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); } } } - $this->setResponse(422,null, "Mercado Pago Invalid Requisition"); + $this->setResponse(422, null, "Mercado Pago Invalid Requisition"); } /** @@ -85,7 +85,6 @@ public function successful_request($data) } catch (Exception $e) { $this->log->write_log(__FUNCTION__, $e->getMessage()); } - } /** @@ -109,7 +108,7 @@ public function check_and_save_customer_card($checkout_info) return; } if (isset($checkout_info['issuer_id']) && !empty($checkout_info['issuer_id'])) { - $issuer_id = (integer)($checkout_info['issuer_id']); + $issuer_id = (int)($checkout_info['issuer_id']); } if (isset($checkout_info['payment_method_id']) && !empty($checkout_info['payment_method_id'])) { $payment_method_id = $checkout_info['payment_method_id']; @@ -144,9 +143,9 @@ public function process_status_mp_business($data, $order) $order->update_meta_data( 'Mercado Pago - Payment ' . $data['id'], '[Date ' . date('Y-m-d H:i:s', strtotime($data['date_created'])) . - ']/[Amount ' . $data['transaction_amount'] . - ']/[Paid ' . $total_paid . - ']/[Refund ' . $total_refund . ']' + ']/[Amount ' . $data['transaction_amount'] . + ']/[Paid ' . $total_paid . + ']/[Refund ' . $total_refund . ']' ); $order->update_meta_data('_Mercado_Pago_Payment_IDs', $data['id']); $order->save(); @@ -163,9 +162,9 @@ public function process_status_mp_business($data, $order) $order->id, 'Mercado Pago - Payment ' . $data['id'], '[Date ' . date('Y-m-d H:i:s', strtotime($data['date_created'])) . - ']/[Amount ' . $data['transaction_amount'] . - ']/[Paid ' . $total_paid . - ']/[Refund ' . $total_refund . ']' + ']/[Amount ' . $data['transaction_amount'] . + ']/[Paid ' . $total_paid . + ']/[Refund ' . $total_refund . ']' ); update_post_meta($order->id, '_Mercado_Pago_Payment_IDs', $data['id']); } diff --git a/includes/payments/WC_WooMercadoPago_BasicGateway.php b/includes/payments/WC_WooMercadoPago_BasicGateway.php index d556fe563..27ee35012 100755 --- a/includes/payments/WC_WooMercadoPago_BasicGateway.php +++ b/includes/payments/WC_WooMercadoPago_BasicGateway.php @@ -188,16 +188,12 @@ public function is_available() if (isset($this->settings['enabled']) && $this->settings['enabled'] == 'yes') { if ($this->mp instanceof MP) { $accessToken = $this->mp->get_access_token(); - if (strpos($accessToken, 'APP_USR') === false && strpos($accessToken, 'TEST') === false) { + if (WC_WooMercadoPago_Credentials::validateCredentialsTest($this->mp ,$accessToken) == false && $this->sandbox == true) { return false; - } else { - if(strpos($accessToken, 'TEST') === false && $this->sandbox == true) { - return false; - } + } - if(strpos($accessToken, 'APP_USR') === false && $this->sandbox == false) { - return false; - } + if (WC_WooMercadoPago_Credentials::validateCredentialsProd($this->mp ,$accessToken) == false && $this->sandbox == false) { + return false; } return true; } @@ -517,7 +513,7 @@ public function payment_fields() //add css wp_enqueue_style( 'woocommerce-mercadopago-basic-checkout-styles', - plugins_url('../assets/css/basic_checkout_mercadopago.css', plugin_dir_path(__FILE__)) + plugins_url('../assets/css/basic_checkout_mercadopago' . $suffix . '.css', plugin_dir_path(__FILE__)) ); //validate active payments methods @@ -580,6 +576,7 @@ public function process_payment($order_id) { $order = wc_get_order($order_id); $amount = $this->get_order_total(); + if (method_exists($order, 'update_meta_data')) { $order->update_meta_data('_used_gateway', get_class($this)); diff --git a/includes/payments/WC_WooMercadoPago_CustomGateway.php b/includes/payments/WC_WooMercadoPago_CustomGateway.php index 8059090fb..d1fee1fcb 100755 --- a/includes/payments/WC_WooMercadoPago_CustomGateway.php +++ b/includes/payments/WC_WooMercadoPago_CustomGateway.php @@ -264,9 +264,11 @@ public function get_order_status($status_detail) public function payment_fields() { //add css + $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; + wp_enqueue_style( 'woocommerce-mercadopago-basic-checkout-styles', - plugins_url('../assets/css/basic_checkout_mercadopago.css', plugin_dir_path(__FILE__)) + plugins_url('../assets/css/basic_checkout_mercadopago' . $suffix . '.css', plugin_dir_path(__FILE__)) ); $amount = $this->get_order_total(); @@ -520,7 +522,7 @@ public function is_available() } $_mp_access_token = get_option('_mp_access_token_prod'); - $is_prod_credentials = strpos($_mp_access_token, 'TEST') === false; + $is_prod_credentials = WC_WooMercadoPago_Credentials::validateCredentialsTest($this->mp, $_mp_access_token, null) == false; if ((empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] == 'off') && $is_prod_credentials) { $this->log->write_log(__FUNCTION__, 'NO HTTPS, Custom unavailable.'); diff --git a/includes/payments/WC_WooMercadoPago_PaymentAbstract.php b/includes/payments/WC_WooMercadoPago_PaymentAbstract.php index e322d7e57..cc7764069 100755 --- a/includes/payments/WC_WooMercadoPago_PaymentAbstract.php +++ b/includes/payments/WC_WooMercadoPago_PaymentAbstract.php @@ -123,7 +123,8 @@ public function getHomologValidate() $homolog_validate = (int)get_option('homolog_validate', 0); if (($this->isProductionMode() && !empty($this->mp_access_token_prod)) && $homolog_validate == 0) { if ($this->mp instanceof MP) { - $homolog_validate = $this->mp->homologValidate($this->mp_access_token_prod); + $homolog_validate = $this->mp->getCredentialsWrapper($this->mp_access_token_prod); + $homolog_validate = isset($homolog_validate['homologated']) && $homolog_validate['homologated'] == true ? 1 : 0; update_option('homolog_validate', $homolog_validate, true); return $homolog_validate; } @@ -529,8 +530,11 @@ public function getApplicationId($mp_access_token_prod) if (empty($mp_access_token_prod)) { return ''; } else { - $application_id = explode('-', $mp_access_token_prod); - return $application_id[1]; + $application_id = $this->mp->getCredentialsWrapper($this->mp_access_token_prod); + if (is_array($application_id) && isset($application_id['client_id'])) { + return $application_id['client_id']; + } + return ''; } } diff --git a/includes/payments/WC_WooMercadoPago_TicketGateway.php b/includes/payments/WC_WooMercadoPago_TicketGateway.php index e124e7bd9..9c44f3a46 100755 --- a/includes/payments/WC_WooMercadoPago_TicketGateway.php +++ b/includes/payments/WC_WooMercadoPago_TicketGateway.php @@ -353,9 +353,11 @@ public function field_ticket_payments() public function payment_fields() { //add css + $suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '' : '.min'; + wp_enqueue_style( 'woocommerce-mercadopago-basic-checkout-styles', - plugins_url('../assets/css/basic_checkout_mercadopago.css', plugin_dir_path(__FILE__)) + plugins_url('../assets/css/basic_checkout_mercadopago' . $suffix . '.css', plugin_dir_path(__FILE__)) ); $amount = $this->get_order_total(); diff --git a/includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php b/includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php index a7975ae56..8842467d2 100755 --- a/includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php +++ b/includes/payments/hooks/WC_WooMercadoPago_Hook_Abstract.php @@ -272,24 +272,15 @@ private function validatePublicKey($key, $value) return false; } - if ($key == '_mp_public_key_prod' && strpos($value, 'APP_USR') === false) { + if($key == '_mp_public_key_prod' && WC_WooMercadoPago_Credentials::validateCredentialsProd($this->mpInstance, null ,$value) == false) { update_option($key, '', true); + add_action('admin_notices', array($this, 'noticeInvalidPublicKeyProd')); return true; } - if ($key == '_mp_public_key_test' && strpos($value, 'TEST') === false) { + if($key == '_mp_public_key_test' && WC_WooMercadoPago_Credentials::validateCredentialsTest($this->mpInstance, null ,$value) == false) { update_option($key, '', true); - return true; - } - - if (WC_WooMercadoPago_Credentials::public_key_is_valid($value) === false) { - update_option($key, '', true); - - if ($key == '_mp_public_key_prod') { - add_action('admin_notices', array($this, 'noticeInvalidPublicKeyProd')); - } else { - add_action('admin_notices', array($this, 'noticeInvalidPublicKeyTest')); - } + add_action('admin_notices', array($this, 'noticeInvalidPublicKeyTest')); return true; } @@ -309,12 +300,14 @@ private function validateAccessToken($key, $value, $isProduction = null) return false; } - if ($key == '_mp_access_token_prod' && strpos($value, 'APP_USR') === false) { + if ($key == '_mp_access_token_prod' && WC_WooMercadoPago_Credentials::validateCredentialsProd($this->mpInstance, $value, null) == false) { + add_action('admin_notices', array($this, 'noticeInvalidProdCredentials')); update_option($key, '', true); return true; } - if ($key == '_mp_access_token_test' && strpos($value, 'TEST') === false) { + if ($key == '_mp_access_token_test' && WC_WooMercadoPago_Credentials::validateCredentialsTest($this->mpInstance, $value, null) == false) { + add_action('admin_notices', array($this, 'noticeInvalidTestCredentials')); update_option($key, '', true); return true; } @@ -327,7 +320,8 @@ private function validateAccessToken($key, $value, $isProduction = null) update_option($key, $value, true); if ($key == '_mp_access_token_prod') { - $homolog_validate = $this->mpInstance->homologValidate($value); + $homolog_validate = $this->mpInstance->getCredentialsWrapper($value); + $homolog_validate = isset($homolog_validate['homologated']) && $homolog_validate['homologated'] == true? 1 : 0; update_option('homolog_validate', $homolog_validate, true); if ($isProduction == 'yes' && $homolog_validate == 0) { add_action('admin_notices', array($this, 'enablePaymentNotice')); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..4748f70e5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5167 @@ +{ + "name": "cart-woocommerce", + "version": "4.1.12", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-gray": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", + "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "any-shell-escape": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/any-shell-escape/-/any-shell-escape-0.1.1.tgz", + "integrity": "sha1-1Vq5ciRMcaml4asIefML8RCAaVk=", + "dev": true + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-filter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", + "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", + "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "dev": true, + "requires": { + "make-iterator": "^1.0.0" + } + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, + "array-initial": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", + "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "dev": true, + "requires": { + "array-slice": "^1.0.0", + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-last": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", + "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", + "dev": true, + "requires": { + "is-number": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", + "dev": true + }, + "array-sort": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", + "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", + "dev": true, + "requires": { + "default-compare": "^1.0.0", + "get-value": "^2.0.6", + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-done": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", + "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.2", + "process-nextick-args": "^2.0.0", + "stream-exhaust": "^1.0.1" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-settle": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", + "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "dev": true, + "requires": { + "async-done": "^1.2.2" + } + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "bach": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", + "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "dev": true, + "requires": { + "arr-filter": "^1.1.1", + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "array-each": "^1.0.0", + "array-initial": "^1.0.0", + "array-last": "^1.1.1", + "async-done": "^1.2.2", + "async-settle": "^1.0.0", + "now-and-later": "^2.0.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "beeper": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", + "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "buffer-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", + "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "dev": true, + "requires": { + "exit": "0.1.2", + "glob": "^7.1.1" + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-map": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", + "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "dev": true, + "requires": { + "arr-map": "^2.0.2", + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-props": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", + "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", + "dev": true, + "requires": { + "each-props": "^1.3.0", + "is-plain-object": "^2.0.1" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "default-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", + "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", + "dev": true, + "requires": { + "kind-of": "^5.0.2" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "default-resolution": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", + "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", + "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", + "dev": true + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "each-props": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", + "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.1", + "object.defaults": "^1.1.0" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.0-next.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.0.tgz", + "integrity": "sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "fancy-log": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", + "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", + "dev": true, + "requires": { + "ansi-gray": "^0.1.1", + "color-support": "^1.1.3", + "parse-node-version": "^1.0.0", + "time-stamp": "^1.0.0" + } + }, + "fast-levenshtein": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", + "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", + "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^2.0.3", + "object.defaults": "^1.1.0", + "object.pick": "^1.2.0", + "parse-filepath": "^1.0.1" + } + }, + "first-chunk-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz", + "integrity": "sha1-G97NuOCDwGZLkZRVgVd6Q6nzHXA=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "flagged-respawn": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", + "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "glob-watcher": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", + "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-done": "^1.2.0", + "chokidar": "^2.0.0", + "is-negated-glob": "^1.0.0", + "just-debounce": "^1.0.0", + "normalize-path": "^3.0.0", + "object.defaults": "^1.1.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "glogg": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", + "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "gulp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", + "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", + "dev": true, + "requires": { + "glob-watcher": "^5.0.3", + "gulp-cli": "^2.2.0", + "undertaker": "^1.2.1", + "vinyl-fs": "^3.0.0" + } + }, + "gulp-clean-css": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gulp-clean-css/-/gulp-clean-css-4.3.0.tgz", + "integrity": "sha512-mGyeT3qqFXTy61j0zOIciS4MkYziF2U594t2Vs9rUnpkEHqfu6aDITMp8xOvZcvdX61Uz3y1mVERRYmjzQF5fg==", + "dev": true, + "requires": { + "clean-css": "4.2.3", + "plugin-error": "1.0.1", + "through2": "3.0.1", + "vinyl-sourcemaps-apply": "0.2.1" + } + }, + "gulp-cli": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", + "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "archy": "^1.0.0", + "array-sort": "^1.0.0", + "color-support": "^1.1.3", + "concat-stream": "^1.6.0", + "copy-props": "^2.0.1", + "fancy-log": "^1.3.2", + "gulplog": "^1.0.0", + "interpret": "^1.4.0", + "isobject": "^3.0.1", + "liftoff": "^3.1.0", + "matchdep": "^2.0.0", + "mute-stdout": "^1.0.0", + "pretty-hrtime": "^1.0.0", + "replace-homedir": "^1.0.0", + "semver-greatest-satisfied-range": "^1.1.0", + "v8flags": "^3.2.0", + "yargs": "^7.1.0" + } + }, + "gulp-git": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/gulp-git/-/gulp-git-2.10.1.tgz", + "integrity": "sha512-qiXYYDXchMZU/AWAgtphi4zbJb/0gXgfPw7TlZwu/7qPS3Bdcc3zbVe1B0xY9S8on6RQTmWoi+KaTGACIXQeNg==", + "dev": true, + "requires": { + "any-shell-escape": "^0.1.1", + "fancy-log": "^1.3.2", + "lodash.template": "^4.4.0", + "plugin-error": "^1.0.1", + "require-dir": "^1.0.0", + "strip-bom-stream": "^3.0.0", + "through2": "^2.0.3", + "vinyl": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "gulp-jshint": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gulp-jshint/-/gulp-jshint-2.1.0.tgz", + "integrity": "sha512-sP3NK8Y/1e58O0PH9t6s7DAr/lKDSUbIY207oWSeufM6/VclB7jJrIBcPCsyhrFTCDUl9DauePbt6VqP2vPM5w==", + "dev": true, + "requires": { + "lodash": "^4.12.0", + "minimatch": "^3.0.3", + "plugin-error": "^0.1.2", + "rcloader": "^0.2.2", + "through2": "^2.0.0" + }, + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "integrity": "sha1-aHwydYFjWI/vfeezb6vklesaOZo=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "array-slice": "^0.2.3" + } + }, + "arr-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", + "integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "extend-shallow": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", + "integrity": "sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE=", + "dev": true, + "requires": { + "kind-of": "^1.1.0" + } + }, + "kind-of": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ=", + "dev": true + }, + "plugin-error": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", + "integrity": "sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4=", + "dev": true, + "requires": { + "ansi-cyan": "^0.1.1", + "ansi-red": "^0.1.1", + "arr-diff": "^1.0.1", + "arr-union": "^2.0.1", + "extend-shallow": "^1.1.2" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "gulp-rename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", + "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", + "dev": true + }, + "gulp-sourcemaps": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", + "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", + "dev": true, + "requires": { + "convert-source-map": "^1.1.1", + "graceful-fs": "^4.1.2", + "strip-bom": "^2.0.0", + "through2": "^2.0.0", + "vinyl": "^1.0.0" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + } + } + }, + "gulp-uglify": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz", + "integrity": "sha512-gk1dhB74AkV2kzqPMQBLA3jPoIAPd/nlNzP2XMDSG8XZrqnlCiDGAqC+rZOumzFvB5zOphlFh6yr3lgcAb/OOg==", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "extend-shallow": "^3.0.2", + "gulplog": "^1.0.0", + "has-gulplog": "^0.1.0", + "isobject": "^3.0.1", + "make-error-cause": "^1.1.1", + "safe-buffer": "^5.1.2", + "through2": "^2.0.0", + "uglify-js": "^3.0.5", + "vinyl-sourcemaps-apply": "^0.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "gulp-wp-pot": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/gulp-wp-pot/-/gulp-wp-pot-2.4.3.tgz", + "integrity": "sha512-1vbftC7VPZVxbsSYdJrnFkYj+ic858uitVAsu6vYd3mZ/5cxjq6lpVOkLAf3ZOQlwE5gxkqbwcIhyORLvlEhEQ==", + "dev": true, + "requires": { + "plugin-error": "^1.0.1", + "through2": "^3.0.1", + "vinyl": "^2.2.0", + "wp-pot": "^1.9.3" + } + }, + "gulplog": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", + "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "dev": true, + "requires": { + "glogg": "^1.0.0" + } + }, + "guppy-cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/guppy-cli/-/guppy-cli-1.0.1.tgz", + "integrity": "sha1-h3wZvoKL1TMu/OkZQpUlhlIL2Po=", + "dev": true, + "requires": { + "async": "^1.5.2", + "map-stream": "0.0.6", + "shelljs": "^0.5.3", + "vinyl-fs": "^2.4.3", + "yargs": "^3.32.0" + }, + "dependencies": { + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + }, + "clone-stats": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", + "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "first-chunk-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", + "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", + "dev": true + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-stream": { + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", + "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^5.0.3", + "glob-parent": "^3.0.0", + "micromatch": "^2.3.7", + "ordered-read-streams": "^0.3.0", + "through2": "^0.6.0", + "to-absolute-glob": "^0.1.1", + "unique-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-valid-glob": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", + "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "ordered-read-streams": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", + "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", + "dev": true, + "requires": { + "is-stream": "^1.0.1", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "replace-ext": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", + "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-bom-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", + "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", + "dev": true, + "requires": { + "first-chunk-stream": "^1.0.0", + "strip-bom": "^2.0.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "through2-filter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", + "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "to-absolute-glob": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", + "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1" + } + }, + "vinyl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", + "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", + "dev": true, + "requires": { + "clone": "^1.0.0", + "clone-stats": "^0.0.1", + "replace-ext": "0.0.1" + } + }, + "vinyl-fs": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", + "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", + "dev": true, + "requires": { + "duplexify": "^3.2.0", + "glob-stream": "^5.3.2", + "graceful-fs": "^4.0.0", + "gulp-sourcemaps": "1.6.0", + "is-valid-glob": "^0.3.0", + "lazystream": "^1.0.0", + "lodash.isequal": "^4.0.0", + "merge-stream": "^1.0.0", + "mkdirp": "^0.5.0", + "object-assign": "^4.0.0", + "readable-stream": "^2.0.4", + "strip-bom": "^2.0.0", + "strip-bom-stream": "^1.0.0", + "through2": "^2.0.0", + "through2-filter": "^2.0.0", + "vali-date": "^1.0.0", + "vinyl": "^1.0.0" + } + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } + } + }, + "guppy-pre-commit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/guppy-pre-commit/-/guppy-pre-commit-0.4.0.tgz", + "integrity": "sha1-L/4nkiQxUeQJAfE4o6ZeyTRU6Tc=", + "dev": true, + "requires": { + "guppy-cli": "^1.0.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-gulplog": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", + "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", + "dev": true, + "requires": { + "sparkles": "^1.0.0" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "irregular-plurals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz", + "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y=", + "dev": true + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "jshint": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.12.0.tgz", + "integrity": "sha512-TwuuaUDmra0JMkuqvqy+WGo2xGHSNjv1BA1nTIgtH2K5z1jHuAEeAgp7laaR+hLRmajRjcrM71+vByBDanCyYA==", + "dev": true, + "requires": { + "cli": "~1.0.0", + "console-browserify": "1.1.x", + "exit": "0.1.x", + "htmlparser2": "3.8.x", + "lodash": "~4.17.19", + "minimatch": "~3.0.2", + "shelljs": "0.3.x", + "strip-json-comments": "1.0.x" + }, + "dependencies": { + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", + "dev": true + } + } + }, + "jshint-stylish": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jshint-stylish/-/jshint-stylish-2.2.1.tgz", + "integrity": "sha1-JCCCosA1rgP9gQROBXDMQgjPbmE=", + "dev": true, + "requires": { + "beeper": "^1.1.0", + "chalk": "^1.0.0", + "log-symbols": "^1.0.0", + "plur": "^2.1.0", + "string-length": "^1.0.0", + "text-table": "^0.2.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "just-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", + "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "last-run": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", + "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "dev": true, + "requires": { + "default-resolution": "^2.0.0", + "es6-weak-map": "^2.0.1" + } + }, + "lazystream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", + "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "dev": true, + "requires": { + "flush-write-stream": "^1.0.2" + } + }, + "liftoff": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", + "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "findup-sync": "^3.0.0", + "fined": "^1.0.1", + "flagged-respawn": "^1.0.0", + "is-plain-object": "^2.0.4", + "object.map": "^1.0.0", + "rechoir": "^0.6.2", + "resolve": "^1.1.7" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.isobject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "log-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", + "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=", + "dev": true, + "requires": { + "chalk": "^1.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "dev": true, + "requires": { + "make-error": "^1.2.0" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-stream": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.6.tgz", + "integrity": "sha1-0u9OuBGihkTHqJiZhcacL91JaCc=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "matchdep": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", + "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "dev": true, + "requires": { + "findup-sync": "^2.0.0", + "micromatch": "^3.0.4", + "resolve": "^1.4.0", + "stack-trace": "0.0.10" + }, + "dependencies": { + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "matched": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/matched/-/matched-5.0.0.tgz", + "integrity": "sha512-O0LCuxYYBNBjP2dmAg0i6PME0Mb0dvjulpMC0tTIeMRh6kXYsugOT5GOWpFkSzqjQjgOUs/eiyvpVhXdN2La4g==", + "dev": true, + "requires": { + "glob": "^7.1.6", + "picomatch": "^2.2.1" + } + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stdout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", + "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", + "dev": true + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "requires": { + "once": "^1.3.2" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", + "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.reduce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", + "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, + "path-sort": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/path-sort/-/path-sort-0.1.0.tgz", + "integrity": "sha1-ywF11Oy/paGP5nTMbXIL/hXguAU=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "php-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/php-parser/-/php-parser-3.0.1.tgz", + "integrity": "sha512-m6CBPHOoMkzEHoXG0rhEg/VegSNemUNQepHnYtrRgTAh8rsqoO65KqQ32KJ5xe2iplhO0jdwd1UJ9Ea0yHsgYQ==", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "plur": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", + "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=", + "dev": true, + "requires": { + "irregular-plurals": "^1.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "rcfinder": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/rcfinder/-/rcfinder-0.1.9.tgz", + "integrity": "sha1-8+gPOH3fmugK4wpBADKWQuroERU=", + "dev": true, + "requires": { + "lodash.clonedeep": "^4.3.2" + } + }, + "rcloader": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/rcloader/-/rcloader-0.2.2.tgz", + "integrity": "sha1-WNIpi0YtC5v9ITPSoex0+9cFxxc=", + "dev": true, + "requires": { + "lodash.assign": "^4.2.0", + "lodash.isobject": "^3.0.2", + "lodash.merge": "^4.6.0", + "rcfinder": "^0.1.6" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + } + }, + "remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "dev": true, + "requires": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true + }, + "replace-homedir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", + "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1", + "is-absolute": "^1.0.0", + "remove-trailing-separator": "^1.1.0" + } + }, + "require-dir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/require-dir/-/require-dir-1.2.0.tgz", + "integrity": "sha512-LY85DTSu+heYgDqq/mK+7zFHWkttVNRXC9NKcKGyuGLdlsfbjEPrIEYdCVrx6hqnJb+xSu3Lzaoo8VnmOhhjNA==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "dev": true, + "requires": { + "value-or-function": "^3.0.0" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "semver-greatest-satisfied-range": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", + "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "dev": true, + "requires": { + "sver-compat": "^1.5.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "shelljs": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", + "integrity": "sha1-xUmCuZbHbvDB5rWfvcWCX1txMRM=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "sparkles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", + "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-exhaust": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", + "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", + "dev": true + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "dev": true, + "requires": { + "strip-ansi": "^3.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-bom-buf": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-1.0.0.tgz", + "integrity": "sha1-HLRar1dTD0yvhsf3UXnSyaUd1XI=", + "dev": true, + "requires": { + "is-utf8": "^0.2.1" + } + }, + "strip-bom-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-3.0.0.tgz", + "integrity": "sha1-lWvMXYRDD2klapDtgjdlzYWOFZw=", + "dev": true, + "requires": { + "first-chunk-stream": "^2.0.0", + "strip-bom-buf": "^1.0.0" + } + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "sver-compat": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", + "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "dev": true, + "requires": { + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through2": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "dev": true, + "requires": { + "readable-stream": "2 || 3" + } + }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "time-stamp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", + "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", + "dev": true + }, + "to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "dev": true, + "requires": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "dev": true, + "requires": { + "through2": "^2.0.3" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.0.tgz", + "integrity": "sha512-e1KQFRCpOxnrJsJVqDUCjURq+wXvIn7cK2sRAx9XL3HYLL9aezOP4Pb1+Y3/o693EPk111Yj2Q+IUXxcpHlygQ==", + "dev": true + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, + "undertaker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", + "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1", + "arr-map": "^2.0.0", + "bach": "^1.0.0", + "collection-map": "^1.0.0", + "es6-weak-map": "^2.0.1", + "fast-levenshtein": "^1.0.0", + "last-run": "^1.1.0", + "object.defaults": "^1.0.0", + "object.reduce": "^1.0.0", + "undertaker-registry": "^1.0.0" + } + }, + "undertaker-registry": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", + "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + } + } + }, + "unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "requires": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "vali-date": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", + "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", + "dev": true + }, + "vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "requires": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } + } + }, + "vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "dev": true, + "requires": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", + "dev": true, + "requires": { + "source-map": "^0.5.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "wp-pot": { + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/wp-pot/-/wp-pot-1.9.6.tgz", + "integrity": "sha512-nNhn4vzJ/hg7j3lbG8NGzFyzDfbsmw1HE2Qoy8qw+esAZwgt6kibkelc/p0FduZd1VziVQ0kT0PM/AoZMLoyig==", + "dev": true, + "requires": { + "matched": "^5.0.0", + "path-sort": "^0.1.0", + "php-parser": "^3.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz", + "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "5.0.0-security.0" + } + }, + "yargs-parser": { + "version": "5.0.0-security.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz", + "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" + } + } + } +} diff --git a/package.json b/package.json index 09e6bc980..0a90ddd4d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,8 @@ "name": "cart-woocommerce", "description": "Gateway de pagamento Mercado Pago para WooCommerce", "scripts": { - "build:js": "gulp", + "build:js": "gulp scripts", + "build:css": "gulp stylesheets", "lint": "gulp jshint", "pot": "gulp wpPot" }, @@ -14,6 +15,7 @@ "main": "gulpfile.js", "devDependencies": { "gulp": "^4.0.2", + "gulp-clean-css": "^4.3.0", "gulp-cli": "^2.2.0", "gulp-git": "^2.10.0", "gulp-jshint": "^2.1.0", diff --git a/readme.txt b/readme.txt index e0eee24f0..512c4bdf5 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: ecommerce, mercadopago, woocommerce Requires at least: 4.9.10 Tested up to: 5.5 Requires PHP: 5.6 -Stable tag: 4.4.0 +Stable tag: 4.5.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html @@ -115,11 +115,27 @@ Set up both the plugin and the checkouts you want to activate on your payment av Check out our official documentation for more information on the specific fields to configure. == Changelog == += v4.5.0 (26/10/2020) = +* Features + - Compatibility with WooCommerce v4.6.x + - Improved security (added access token in the header for all calls to Mercado Livre and Mercado Pago endpoints) + - Add new endpoint to validate Access Token and Public key to substitute old process to validation + - Improved performance with CSS minification + +* Bug fixes + - Fixed conflict with wc-api webhook and Mercado Pago webhook/IPN. + - Fixed alert in currency conversion + - Fixed tranlate in currency conversion + - Bug fixed when updating orders that have two or more payments associated. + +* Bug fixes + - Fixed conflict with wc-api webhook and Mercado Pago webhook/IPN. + = v4.4.0 (21/09/2020) = * Features - Compatibility with WooCommerce v4.5.x - * Bug fixes +* Bug fixes - Adjusted error when shipping is not used = v4.3.1 (10/09/2020) = diff --git a/woocommerce-mercadopago.php b/woocommerce-mercadopago.php index 31316081e..c39cee23d 100644 --- a/woocommerce-mercadopago.php +++ b/woocommerce-mercadopago.php @@ -4,13 +4,13 @@ * Plugin Name: Mercado Pago payments for WooCommerce * Plugin URI: https://github.com/mercadopago/cart-woocommerce * Description: Configure the payment options and accept payments with cards, ticket and money of Mercado Pago account. - * Version: 4.4.0 + * Version: 4.5.0 * Author: Mercado Pago * Author URI: https://developers.mercadopago.com/ * Text Domain: woocommerce-mercadopago * Domain Path: /i18n/languages/ * WC requires at least: 3.0.0 - * WC tested up to: 4.5.0 + * WC tested up to: 4.6.0 * @package MercadoPago * @category Core * @author Mercado Pago