diff --git a/Gruntfile.js b/Gruntfile.js
index fdd6f7b51c..da46bd1447 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -264,6 +264,17 @@ const configureGrunt = function (grunt) {
}
},
+ uglify: {
+ prod: {
+ options: {
+ sourceMap: false
+ },
+ files: {
+ 'core/server/public/members.min.js': 'core/server/public/members.js'
+ }
+ }
+ },
+
cssnano: {
prod: {
options: {
@@ -530,7 +541,7 @@ const configureGrunt = function (grunt) {
//
// It is otherwise the same as running `grunt`, but is only used when running Ghost in the `production` env.
grunt.registerTask('prod', 'Build JS & templates for production',
- ['subgrunt:prod', 'cssnano:prod', 'master-warn']);
+ ['subgrunt:prod', 'uglify:prod', 'cssnano:prod', 'master-warn']);
// ### Live reload
// `grunt dev` - build assets on the fly whilst developing
diff --git a/core/frontend/helpers/ghost_head.js b/core/frontend/helpers/ghost_head.js
index 531ec5b6d6..6dfdf6692a 100644
--- a/core/frontend/helpers/ghost_head.js
+++ b/core/frontend/helpers/ghost_head.js
@@ -50,7 +50,7 @@ function getMembersHelper() {
const stripeSecretToken = stripePaymentProcessor.config.secret_token;
const stripePublicToken = stripePaymentProcessor.config.public_token;
- let membersHelper = ``;
+ let membersHelper = ``;
if (!!stripeSecretToken && stripeSecretToken !== '' && !!stripePublicToken && stripePublicToken !== '') {
membersHelper += '';
}
diff --git a/core/server/public/members.js b/core/server/public/members.js
index 17f8fb5571..79ebe49e1f 100644
--- a/core/server/public/members.js
+++ b/core/server/public/members.js
@@ -232,7 +232,7 @@ Array.prototype.forEach.call(document.querySelectorAll('[data-members-cancel-sub
return res.text();
}).then(function (identity) {
- return fetch(`{{admin-url}}/api/canary/members/subscriptions/${subscriptionId}/`, {
+ return fetch('{{admin-url}}/api/canary/members/subscriptions/' + subscriptionId + '/', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
@@ -282,7 +282,7 @@ Array.prototype.forEach.call(document.querySelectorAll('[data-members-continue-s
return res.text();
}).then(function (identity) {
- return fetch(`{{admin-url}}/api/canary/members/subscriptions/${subscriptionId}/`, {
+ return fetch('{{admin-url}}/api/canary/members/subscriptions/' + subscriptionId + '/', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
diff --git a/core/server/public/members.min.js b/core/server/public/members.min.js
index beb17e89b3..915751dbbb 100644
--- a/core/server/public/members.min.js
+++ b/core/server/public/members.min.js
@@ -1 +1 @@
-Array.prototype.forEach.call(document.querySelectorAll("form[data-members-form]"),function(form){var errorEl=form.querySelector("[data-members-error]");function submitHandler(event){form.removeEventListener("submit",submitHandler);event.preventDefault();if(errorEl){errorEl.innerText=""}form.classList.remove("success","invalid","error");var input=event.target.querySelector("input[data-members-email]");var email=input.value;if(!email.includes("@")){form.classList.add("invalid");form.addEventListener("submit",submitHandler);return}form.classList.add("loading");fetch("{{admin-url}}/api/canary/members/send-magic-link/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:email})}).then(function(res){form.addEventListener("submit",submitHandler);form.classList.remove("loading");if(res.ok){form.classList.add("success")}else{if(errorEl){errorEl.innerText="There was an error sending the email, please try again"}form.classList.add("error")}})}form.addEventListener("submit",submitHandler)});Array.prototype.forEach.call(document.querySelectorAll("[data-members-plan]"),function(el){var errorEl=el.querySelector("[data-members-error]");function clickHandler(event){el.removeEventListener("click",clickHandler);event.preventDefault();var plan=el.dataset.membersPlan;if(errorEl){errorEl.innerText=""}el.classList.add("loading");fetch("{{blog-url}}/members/ssr",{credentials:"same-origin"}).then(function(res){if(!res.ok){throw new Error("Could not get identity token")}return res.text()}).then(function(identity){return fetch("{{admin-url}}/api/canary/members/create-stripe-checkout-session/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plan:plan,identity:identity})}).then(function(res){if(!res.ok){throw new Error("Could not create stripe checkout session")}return res.json()})}).then(function(result){var stripe=Stripe(result.publicKey);return stripe.redirectToCheckout({sessionId:result.sessionId})}).then(function(result){if(result.error){throw new Error(result.error.message)}}).catch(function(err){console.error(err);el.addEventListener("click",clickHandler);el.classList.remove("loading");if(errorEl){errorEl.innerText=err.message}el.classList.add("error")})}el.addEventListener("click",clickHandler)});Array.prototype.forEach.call(document.querySelectorAll("[data-members-signout]"),function(el){function clickHandler(event){el.removeEventListener("click",clickHandler);event.preventDefault();el.classList.remove("error");el.classList.add("loading");fetch("{{blog-url}}/members/ssr",{method:"DELETE"}).then(function(res){if(res.ok){window.location.reload()}else{el.addEventListener("click",clickHandler);el.classList.remove("loading");el.classList.add("error")}})}el.addEventListener("click",clickHandler)});var magicLinkRegEx=/token=([a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+)/;var match=location.search.match(magicLinkRegEx);var isMagicLink=!!match;var token=match&&match[1];if(isMagicLink){fetch("{{blog-url}}/members/ssr",{method:"POST",body:token}).then(function(res){if(res.ok){window.location.search=window.location.search.replace(magicLinkRegEx,"")}})}
+Array.prototype.forEach.call(document.querySelectorAll("form[data-members-form]"),function(i){var c=i.querySelector("[data-members-error]");i.addEventListener("submit",function r(e){i.removeEventListener("submit",r),e.preventDefault(),c&&(c.innerText=""),i.classList.remove("success","invalid","error");for(var t=e.target.querySelector("input[data-members-email]").value,n=void 0,a=[],o=e.target.querySelectorAll("input[data-members-label]")||[],s=0;s