diff --git a/components/ace-editor.vue b/components/ace-editor.vue index 3f2745147..d6f14389a 100644 --- a/components/ace-editor.vue +++ b/components/ace-editor.vue @@ -55,8 +55,8 @@ export default { mounted() { const editor = ace.edit(this.$refs.editor, { - theme: "ace/theme/" + this.defineTheme(), - mode: "ace/mode/" + this.lang, + theme: `ace/theme/${this.defineTheme()}`, + mode: `ace/mode/${this.lang}`, ...this.options }); @@ -76,11 +76,10 @@ export default { defineTheme() { if (this.theme) { return this.theme; - } else { - return ( - this.$store.state.postwoman.settings.THEME_ACE_EDITOR || DEFAULT_THEME - ); } + return ( + this.$store.state.postwoman.settings.THEME_ACE_EDITOR || DEFAULT_THEME + ); } }, diff --git a/pages/doc.vue b/pages/doc.vue index 963687d4d..07dabf4de 100644 --- a/pages/doc.vue +++ b/pages/doc.vue @@ -363,8 +363,8 @@ export default { let file = this.$refs.collectionUpload.files[0]; if (file !== undefined && file !== null) { let reader = new FileReader(); - reader.onload = e => { - this.collectionJSON = e.target.result; + reader.onload = ({ target }) => { + this.collectionJSON = target.result; }; reader.readAsText(file); this.$toast.info(this.$t("file_imported"), { diff --git a/pages/graphql.vue b/pages/graphql.vue index 127f74428..f81d37145 100644 --- a/pages/graphql.vue +++ b/pages/graphql.vue @@ -531,7 +531,10 @@ export default { return this.$store.state.gql.variablesJSONString; }, set(value) { - this.$store.commit("setGQLState", { value, attribute: "variablesJSONString" }); + this.$store.commit("setGQLState", { + value, + attribute: "variablesJSONString" + }); } }, headerString() { @@ -620,7 +623,7 @@ export default { this.headers.forEach(header => { headers[header.key] = header.value; }); - + let variables = JSON.parse(this.variableString); const gqlQueryString = this.gqlQueryString; @@ -780,13 +783,10 @@ export default { downloadResponse() { const dataToWrite = JSON.stringify(this.schemaString, null, 2); const file = new Blob([dataToWrite], { type: "application/json" }); - const a = document.createElement("a"), - url = URL.createObjectURL(file); + const a = document.createElement("a"); + const url = URL.createObjectURL(file); a.href = url; - a.download = (this.url + " on " + Date() + ".graphql").replace( - /\./g, - "[dot]" - ); + a.download = `${this.url} on ${Date()}.graphql`.replace(/\./g, "[dot]"); document.body.appendChild(a); a.click(); this.$refs.downloadResponse.innerHTML = this.doneButton; diff --git a/pages/index.vue b/pages/index.vue index f3a5e56ae..956c0395f 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -1504,8 +1504,11 @@ export default { this.rawInput = !this.knownContentTypes.includes(val); }, rawInput(status) { - if (status && this.rawParams === "") this.rawParams = "{}"; - else this.setRouteQueryState(); + if (status && this.rawParams === "") { + this.rawParams = "{}"; + } else { + this.setRouteQueryState(); + } }, "response.body": function(val) { if ( @@ -1822,12 +1825,10 @@ export default { } const protocol = "^(https?:\\/\\/)?"; const validIP = new RegExp( - protocol + - "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" + `${protocol}(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$` ); const validHostname = new RegExp( - protocol + - "(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9/])$" + `${protocol}(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9/])$` ); return validIP.test(this.url) || validHostname.test(this.url); }, @@ -1838,8 +1839,8 @@ export default { return this.path.match(/^([^?]*)\??/)[1]; }, rawRequestBody() { - const { bodyParams } = this; - if (this.contentType === "application/json") { + const { bodyParams, contentType } = this; + if (contentType === "application/json") { try { const obj = JSON.parse( `{${bodyParams @@ -1851,7 +1852,7 @@ export default { ) .join()}}` ); - return JSON.stringify(obj); + return JSON.stringify(obj, null, 2); } catch (ex) { return "invalid"; } @@ -1885,39 +1886,20 @@ export default { if (this.requestType === "JavaScript XHR") { const requestString = []; requestString.push("const xhr = new XMLHttpRequest()"); - const user = - this.auth === "Basic Auth" ? "'" + this.httpUser + "'" : null; - const pswd = - this.auth === "Basic Auth" ? "'" + this.httpPassword + "'" : null; + const user = this.auth === "Basic Auth" ? `'${this.httpUser}'` : null; + const password = + this.auth === "Basic Auth" ? `'${this.httpPassword}'` : null; requestString.push( - "xhr.open('" + - this.method + - "', '" + - this.url + - this.pathName + - this.queryString + - "', true, " + - user + - ", " + - pswd + - ")" + `xhr.open('${this.method}', '${this.url}${this.pathName}${this.queryString}', true, ${user}, ${password})` ); if (this.auth === "Bearer Token" || this.auth === "OAuth 2.0") { requestString.push( - "xhr.setRequestHeader('Authorization', 'Bearer " + - this.bearerToken + - "')" + `xhr.setRequestHeader('Authorization', 'Bearer ${this.bearerToken}')` ); } if (this.headers) { - this.headers.forEach(element => { - requestString.push( - "xhr.setRequestHeader('" + - element.key + - "', '" + - element.value + - "')" - ); + this.headers.forEach(({ key, value }) => { + requestString.push(`xhr.setRequestHeader('${key}', '${value}')`); }); } if (["POST", "PUT", "PATCH"].includes(this.method)) { @@ -1925,14 +1907,12 @@ export default { ? this.rawParams : this.rawRequestBody; requestString.push( - "xhr.setRequestHeader('Content-Length', " + requestBody.length + ")" + `xhr.setRequestHeader('Content-Length', ${requestBody.length})` ); requestString.push( - "xhr.setRequestHeader('Content-Type', '" + - this.contentType + - "; charset=utf-8')" + `xhr.setRequestHeader('Content-Type', '${this.contentType}; charset=utf-8')` ); - requestString.push("xhr.send(" + requestBody + ")"); + requestString.push(`xhr.send(${requestBody})`); } else { requestString.push("xhr.send()"); } @@ -1941,40 +1921,36 @@ export default { const requestString = []; let headers = []; requestString.push( - 'fetch("' + this.url + this.pathName + this.queryString + '", {\n' + `fetch("${this.url}${this.pathName}${this.queryString}", {\n` ); - requestString.push(' method: "' + this.method + '",\n'); + requestString.push(` method: "${this.method}",\n`); if (this.auth === "Basic Auth") { - const basic = this.httpUser + ":" + this.httpPassword; + const basic = `${this.httpUser}:${this.httpPassword}`; headers.push( - ' "Authorization": "Basic ' + - window.btoa(unescape(encodeURIComponent(basic))) + - '",\n' + ` "Authorization": "Basic ${window.btoa( + unescape(encodeURIComponent(basic)) + )}",\n` ); } else if (this.auth === "Bearer Token" || this.auth === "OAuth 2.0") { - headers.push( - ' "Authorization": "Bearer ' + this.bearerToken + '",\n' - ); + headers.push(` "Authorization": "Bearer ${this.bearerToken}",\n`); } if (["POST", "PUT", "PATCH"].includes(this.method)) { const requestBody = this.rawInput ? this.rawParams : this.rawRequestBody; - requestString.push(" body: " + requestBody + ",\n"); - headers.push(' "Content-Length": ' + requestBody.length + ",\n"); + requestString.push(` body: ${requestBody},\n`); + headers.push(` "Content-Length": ${requestBody.length},\n`); headers.push( - ' "Content-Type": "' + this.contentType + '; charset=utf-8",\n' + ` "Content-Type": "${this.contentType}; charset=utf-8",\n` ); } if (this.headers) { - this.headers.forEach(element => { - headers.push( - ' "' + element.key + '": "' + element.value + '",\n' - ); + this.headers.forEach(({ key, value }) => { + headers.push(` "${key}": "${value}",\n`); }); } headers = headers.join("").slice(0, -2); - requestString.push(" headers: {\n" + headers + "\n },\n"); + requestString.push(` headers: {\n${headers}\n },\n`); requestString.push(' credentials: "same-origin"\n'); requestString.push("}).then(function(response) {\n"); requestString.push(" response.status\n"); @@ -1988,40 +1964,36 @@ export default { return requestString.join(""); } else if (this.requestType === "cURL") { const requestString = []; - requestString.push("curl -X " + this.method + " \n"); + requestString.push(`curl -X ${this.method} \n`); requestString.push( - " '" + this.url + this.pathName + this.queryString + "' \n" + ` '${this.url}${this.pathName}${this.queryString}' \n` ); if (this.auth === "Basic Auth") { - const basic = this.httpUser + ":" + this.httpPassword; + const basic = `${this.httpUser}:${this.httpPassword}`; requestString.push( - " -H 'Authorization: Basic " + - window.btoa(unescape(encodeURIComponent(basic))) + - "' \n" + ` -H 'Authorization: Basic ${window.btoa( + unescape(encodeURIComponent(basic)) + )}' \n` ); } else if (this.auth === "Bearer Token" || this.auth === "OAuth 2.0") { requestString.push( - " -H 'Authorization: Bearer " + this.bearerToken + "' \n" + ` -H 'Authorization: Bearer ${this.bearerToken}' \n` ); } if (this.headers) { - this.headers.forEach(element => { - requestString.push( - " -H '" + element.key + ": " + element.value + "' \n" - ); + this.headers.forEach(({ key, value }) => { + requestString.push(` -H '${key}: ${value}' \n`); }); } if (["POST", "PUT", "PATCH"].includes(this.method)) { const requestBody = this.rawInput ? this.rawParams : this.rawRequestBody; + requestString.push(` -H 'Content-Length: ${requestBody.length}' \n`); requestString.push( - " -H 'Content-Length: " + requestBody.length + "' \n" + ` -H 'Content-Type: ${this.contentType}; charset=utf-8' \n` ); - requestString.push( - " -H 'Content-Type: " + this.contentType + "; charset=utf-8' \n" - ); - requestString.push(" -d '" + requestBody + "' \n"); + requestString.push(` -d '${requestBody}' \n`); } return requestString.join("").slice(0, -2); } @@ -2283,21 +2255,20 @@ export default { } }, getQueryStringFromPath() { - let queryString, - pathParsed = url.parse(this.path); + let queryString; + const pathParsed = url.parse(this.path); return (queryString = pathParsed.query ? pathParsed.query : ""); }, queryStringToArray(queryString) { - let queryParsed = querystring.parse(queryString); + const queryParsed = querystring.parse(queryString); return Object.keys(queryParsed).map(key => ({ - key: key, + key, value: queryParsed[key] })); }, pathInputHandler() { - let queryString = this.getQueryStringFromPath(), - params = this.queryStringToArray(queryString); - + const queryString = this.getQueryStringFromPath(); + const params = this.queryStringToArray(queryString); this.paramsWatchEnabled = false; this.params = params; }, @@ -2366,8 +2337,8 @@ export default { }, copyRequest() { if (navigator.share) { - let time = new Date().toLocaleTimeString(); - let date = new Date().toLocaleDateString(); + const time = new Date().toLocaleTimeString(); + const date = new Date().toLocaleDateString(); navigator .share({ title: `Postwoman`, @@ -2418,7 +2389,7 @@ export default { const aux = document.createElement("textarea"); const copy = this.responseType === "application/json" - ? JSON.stringify(this.response.body) + ? JSON.stringify(this.response.body, null, 2) : this.response.body; aux.innerText = copy; document.body.appendChild(aux); @@ -2433,17 +2404,12 @@ export default { downloadResponse() { const dataToWrite = JSON.stringify(this.response.body, null, 2); const file = new Blob([dataToWrite], { type: this.responseType }); - const a = document.createElement("a"), - url = URL.createObjectURL(file); + const a = document.createElement("a"); + const url = URL.createObjectURL(file); a.href = url; - a.download = ( - this.url + - this.path + - " [" + - this.method + - "] on " + - Date() - ).replace(/\./g, "[dot]"); + a.download = `${this.url + this.path} [${ + this.method + }] on ${Date()}`.replace(/\./g, "[dot]"); document.body.appendChild(a); a.click(); this.$refs.downloadResponse.innerHTML = this.doneButton; @@ -2489,7 +2455,8 @@ export default { const haveItems = [...this[key]].length; if (haveItems && this[key]["value"] !== "") { return `${key}=${JSON.stringify(this[key])}&`; - } else return ""; + } + return ""; }; let flats = [ "method", @@ -2503,21 +2470,20 @@ export default { ] .filter(item => item !== null) .map(item => flat(item)); - let deeps = ["headers", "params"].map(item => deep(item)); - let bodyParams = this.rawInput + const deeps = ["headers", "params"].map(item => deep(item)); + const bodyParams = this.rawInput ? [flat("rawParams")] : [deep("bodyParams")]; history.replaceState( window.location.href, "", - "/?" + - encodeURI( - flats - .concat(deeps, bodyParams) - .join("") - .slice(0, -1) - ) + `/?${encodeURI( + flats + .concat(deeps, bodyParams) + .join("") + .slice(0, -1) + )}` ); }, setRouteQueries(queries) { @@ -2529,7 +2495,9 @@ export default { if (key === "rawParams") { this.rawInput = true; this.rawParams = queries["rawParams"]; - } else if (typeof this[key] === "string") this[key] = queries[key]; + } else if (typeof this[key] === "string") { + this[key] = queries[key]; + } } }, observeRequestButton() { @@ -2553,18 +2521,17 @@ export default { observer.observe(requestElement); }, handleImport() { - let textarea = document.getElementById("import-text"); - let text = textarea.value; + const { value: text } = document.getElementById("import-text"); try { - let parsedCurl = parseCurlCommand(text); - let url = new URL(parsedCurl.url.replace(/"/g, "").replace(/'/g, "")); - this.url = url.origin; - this.path = url.pathname; + const parsedCurl = parseCurlCommand(text); + const { origin, pathname } = new URL(parsedCurl.url.replace(/"/g, "").replace(/'/g, "")); + this.url = origin; + this.path = pathname; this.headers = []; if (parsedCurl.headers) { for (const key of Object.keys(parsedCurl.headers)) { this.$store.commit("addHeaders", { - key: key, + key, value: parsedCurl.headers[key] }); } @@ -2711,11 +2678,11 @@ export default { }, uploadPayload() { this.rawInput = true; - let file = this.$refs.payload.files[0]; + const file = this.$refs.payload.files[0]; if (file !== undefined && file !== null) { - let reader = new FileReader(); - reader.onload = e => { - this.rawParams = e.target.result; + const reader = new FileReader(); + reader.onload = ({ target }) => { + this.rawParams = target.result; }; reader.readAsText(file); this.$toast.info(this.$t("file_imported"), { @@ -2754,7 +2721,7 @@ export default { } }, async oauthRedirectReq() { - let tokenInfo = await oauthRedirect(); + const tokenInfo = await oauthRedirect(); if (tokenInfo.hasOwnProperty("access_token")) { this.bearerToken = tokenInfo.access_token; this.addOAuthToken({ @@ -2806,8 +2773,8 @@ export default { }, removeOAuthTokenReq(index) { const oldTokenReqs = this.tokenReqs.slice(); - let targetReqIndex = this.tokenReqs.findIndex( - tokenReq => tokenReq.name === this.tokenReqName + const targetReqIndex = this.tokenReqs.findIndex( + ({ name }) => name === this.tokenReqName ); if (targetReqIndex < 0) return; this.$store.commit("removeOAuthTokenReq", targetReqIndex); @@ -2822,18 +2789,16 @@ export default { } }); }, - tokenReqChange(event) { - let targetReq = this.tokenReqs.find( - tokenReq => tokenReq.name === event.target.value - ); - let { + tokenReqChange({ target }) { + const { details, name } = this.tokenReqs.find(({ name }) => name === target.value); + const { oidcDiscoveryUrl, authUrl, accessTokenUrl, clientId, scope - } = targetReq.details; - this.tokenReqName = targetReq.name; + } = details; + this.tokenReqName = name; this.oidcDiscoveryUrl = oidcDiscoveryUrl; this.authUrl = authUrl; this.accessTokenUrl = accessTokenUrl; diff --git a/pages/realtime.vue b/pages/realtime.vue index 1ef1a49b6..9e97c4d06 100644 --- a/pages/realtime.vue +++ b/pages/realtime.vue @@ -211,24 +211,20 @@ export default { urlValid() { const protocol = "^(wss?:\\/\\/)?"; const validIP = new RegExp( - protocol + - "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" + `${protocol}(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$` ); const validHostname = new RegExp( - protocol + - "(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9/])$" + `${protocol}(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9/])$` ); return validIP.test(this.url) || validHostname.test(this.url); }, serverValid() { const protocol = "^(https?:\\/\\/)?"; const validIP = new RegExp( - protocol + - "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" + `${protocol}(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$` ); const validHostname = new RegExp( - protocol + - "(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9/])$" + `${protocol}(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]).)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9/])$` ); return validIP.test(this.server) || validHostname.test(this.server); } diff --git a/pages/settings.vue b/pages/settings.vue index 5b4e13bf2..f09131f8a 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -398,9 +398,9 @@ export default { firebase .auth() .signInWithPopup(provider) - .then(res => { - if (res.additionalUserInfo.isNewUser) { - this.$toast.info(this.$t("turn_on") + " " + this.$t("sync"), { + .then(({ additionalUserInfo }) => { + if (additionalUserInfo.isNewUser) { + this.$toast.info(`${this.$t("turn_on")} ${this.$t("sync")}`, { icon: "sync", duration: null, closeOnSwipe: false, @@ -427,9 +427,9 @@ export default { firebase .auth() .signInWithPopup(provider) - .then(res => { - if (res.additionalUserInfo.isNewUser) { - this.$toast.info(this.$t("turn_on") + " " + this.$t("sync"), { + .then(({ additionalUserInfo }) => { + if (additionalUserInfo.isNewUser) { + this.$toast.info(`${this.$t("turn_on")} ${this.$t("sync")}`, { icon: "sync", duration: null, closeOnSwipe: false, @@ -458,14 +458,14 @@ export default { fb.writeSettings("syncHistory", true); fb.writeSettings("syncCollections", false); }, - resetProxy(e) { + resetProxy({ target }) { this.settings.PROXY_URL = `https://postwoman.apollotv.xyz/`; - e.target.innerHTML = this.doneButton; + target.innerHTML = this.doneButton; this.$toast.info(this.$t("cleared"), { icon: "clear_all" }); setTimeout( - () => (e.target.innerHTML = 'clear_all'), + () => (target.innerHTML = 'clear_all'), 1000 ); }