// Browser side checks the server cannot do itself: // pretty do addresses like /ts-probe reach the blog? // exposed can a visitor read a file inside the private "content" folder? window.tsProbe = function (u) { function get(url, ms) { var c = typeof AbortController === 'function' ? new AbortController() : null; var timer = c ? setTimeout(function () { c.abort(); }, ms || 4000) : null; return fetch(url, { cache: 'no-store', credentials: 'omit', signal: c ? c.signal : undefined }) .then(function (r) { return r.text(); }) .then(function (t) { clearTimeout(timer); return t; }); } var pretty = get(u.pretty).then(function (t) { return t.indexOf('tsblog-probe') === 0; }).catch(function () { return false; }); var exposed = get(u.exposed).then(function (t) { return t.indexOf('tsblog-private-probe') !== -1; }).catch(function () { return null; }); return Promise.all([pretty, exposed]).then(function (a) { return { pretty: a[0], exposed: a[1] }; }); };