diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..0b1262f92 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,7 @@ +.dependabot +.github +.nuxt +.postwoman +.vscode +package-lock.json +node_modules \ No newline at end of file diff --git a/assets/js/curlparser.js b/assets/js/curlparser.js index fa8605d03..fb0a2fc39 100644 --- a/assets/js/curlparser.js +++ b/assets/js/curlparser.js @@ -1,6 +1,6 @@ -import * as cookie from "cookie"; -import * as URL from "url"; -import * as querystring from "querystring"; +import * as cookie from "cookie" +import * as URL from "url" +import * as querystring from "querystring" /** * given this: [ 'msg1=value1', 'msg2=value2' ] @@ -8,121 +8,118 @@ import * as querystring from "querystring"; * @param dataArguments */ const joinDataArguments = dataArguments => { - let data = ""; + let data = "" dataArguments.forEach((argument, i) => { if (i === 0) { - data += argument; + data += argument } else { - data += `&${argument}`; + data += `&${argument}` } - }); - return data; -}; + }) + return data +} const parseCurlCommand = curlCommand => { - let newlineFound = /\r|\n/.exec(curlCommand); + let newlineFound = /\r|\n/.exec(curlCommand) if (newlineFound) { // remove newlines - curlCommand = curlCommand.replace(/\r|\n/g, ""); + curlCommand = curlCommand.replace(/\r|\n/g, "") } // yargs parses -XPOST as separate arguments. just prescreen for it. - curlCommand = curlCommand.replace(/ -XPOST/, " -X POST"); - curlCommand = curlCommand.replace(/ -XGET/, " -X GET"); - curlCommand = curlCommand.replace(/ -XPUT/, " -X PUT"); - curlCommand = curlCommand.replace(/ -XPATCH/, " -X PATCH"); - curlCommand = curlCommand.replace(/ -XDELETE/, " -X DELETE"); - curlCommand = curlCommand.trim(); - let parsedArguments = require("yargs-parser")(curlCommand); - let cookieString; - let cookies; - let url = parsedArguments._[1]; + curlCommand = curlCommand.replace(/ -XPOST/, " -X POST") + curlCommand = curlCommand.replace(/ -XGET/, " -X GET") + curlCommand = curlCommand.replace(/ -XPUT/, " -X PUT") + curlCommand = curlCommand.replace(/ -XPATCH/, " -X PATCH") + curlCommand = curlCommand.replace(/ -XDELETE/, " -X DELETE") + curlCommand = curlCommand.trim() + let parsedArguments = require("yargs-parser")(curlCommand) + let cookieString + let cookies + let url = parsedArguments._[1] if (!url) { for (let argName in parsedArguments) { if (typeof parsedArguments[argName] === "string") { if (["http", "www."].includes(parsedArguments[argName])) { - url = parsedArguments[argName]; + url = parsedArguments[argName] } } } } - let headers; + let headers const parseHeaders = headerFieldName => { if (parsedArguments[headerFieldName]) { if (!headers) { - headers = {}; + headers = {} } if (!Array.isArray(parsedArguments[headerFieldName])) { - parsedArguments[headerFieldName] = [parsedArguments[headerFieldName]]; + parsedArguments[headerFieldName] = [parsedArguments[headerFieldName]] } parsedArguments[headerFieldName].forEach(header => { if (header.includes("Cookie")) { // stupid javascript tricks: closure - cookieString = header; + cookieString = header } else { - let colonIndex = header.indexOf(":"); - let headerName = header.substring(0, colonIndex); - let headerValue = header.substring(colonIndex + 1).trim(); - headers[headerName] = headerValue; + let colonIndex = header.indexOf(":") + let headerName = header.substring(0, colonIndex) + let headerValue = header.substring(colonIndex + 1).trim() + headers[headerName] = headerValue } - }); + }) } - }; + } - parseHeaders("H"); - parseHeaders("header"); + parseHeaders("H") + parseHeaders("header") if (parsedArguments.A) { if (!headers) { - headers = []; + headers = [] } - headers["User-Agent"] = parsedArguments.A; + headers["User-Agent"] = parsedArguments.A } else if (parsedArguments["user-agent"]) { if (!headers) { - headers = []; + headers = [] } - headers["User-Agent"] = parsedArguments["user-agent"]; + headers["User-Agent"] = parsedArguments["user-agent"] } if (parsedArguments.b) { - cookieString = parsedArguments.b; + cookieString = parsedArguments.b } if (parsedArguments.cookie) { - cookieString = parsedArguments.cookie; + cookieString = parsedArguments.cookie } - let multipartUploads; + let multipartUploads if (parsedArguments.F) { - multipartUploads = {}; + multipartUploads = {} if (!Array.isArray(parsedArguments.F)) { - parsedArguments.F = [parsedArguments.F]; + parsedArguments.F = [parsedArguments.F] } parsedArguments.F.forEach(multipartArgument => { // input looks like key=value. value could be json or a file path prepended with an @ - const [key, value] = multipartArgument.split("=", 2); - multipartUploads[key] = value; - }); + const [key, value] = multipartArgument.split("=", 2) + multipartUploads[key] = value + }) } if (cookieString) { const cookieParseOptions = { - decode: s => s - }; + decode: s => s, + } // separate out cookie headers into separate data structure // note: cookie is case insensitive - cookies = cookie.parse( - cookieString.replace(/^Cookie: /gi, ""), - cookieParseOptions - ); + cookies = cookie.parse(cookieString.replace(/^Cookie: /gi, ""), cookieParseOptions) } - let method; + let method if (parsedArguments.X === "POST") { - method = "post"; + method = "post" } else if (parsedArguments.X === "PUT" || parsedArguments["T"]) { - method = "put"; + method = "put" } else if (parsedArguments.X === "PATCH") { - method = "patch"; + method = "patch" } else if (parsedArguments.X === "DELETE") { - method = "delete"; + method = "delete" } else if (parsedArguments.X === "OPTIONS") { - method = "options"; + method = "options" } else if ( (parsedArguments["d"] || parsedArguments["data"] || @@ -132,95 +129,94 @@ const parseCurlCommand = curlCommand => { parsedArguments["form"]) && !(parsedArguments["G"] || parsedArguments["get"]) ) { - method = "post"; + method = "post" } else if (parsedArguments["I"] || parsedArguments["head"]) { - method = "head"; + method = "head" } else { - method = "get"; + method = "get" } - let compressed = !!parsedArguments.compressed; - let urlObject = URL.parse(url); // eslint-disable-line + let compressed = !!parsedArguments.compressed + let urlObject = URL.parse(url) // eslint-disable-line // if GET request with data, convert data to query string // NB: the -G flag does not change the http verb. It just moves the data into the url. if (parsedArguments["G"] || parsedArguments["get"]) { - urlObject.query = urlObject.query ? urlObject.query : ""; - let option = - "d" in parsedArguments ? "d" : "data" in parsedArguments ? "data" : null; + urlObject.query = urlObject.query ? urlObject.query : "" + let option = "d" in parsedArguments ? "d" : "data" in parsedArguments ? "data" : null if (option) { - let urlQueryString = ""; + let urlQueryString = "" if (!url.includes("?")) { - url += "?"; + url += "?" } else { - urlQueryString += "&"; + urlQueryString += "&" } if (typeof parsedArguments[option] === "object") { - urlQueryString += parsedArguments[option].join("&"); + urlQueryString += parsedArguments[option].join("&") } else { - urlQueryString += parsedArguments[option]; + urlQueryString += parsedArguments[option] } - urlObject.query += urlQueryString; - url += urlQueryString; - delete parsedArguments[option]; + urlObject.query += urlQueryString + url += urlQueryString + delete parsedArguments[option] } } let query = querystring.parse(urlObject.query, null, null, { - maxKeys: 10000 - }); + maxKeys: 10000, + }) - urlObject.search = null; // Clean out the search/query portion. + urlObject.search = null // Clean out the search/query portion. const request = { url, - urlWithoutQuery: URL.format(urlObject) - }; + urlWithoutQuery: URL.format(urlObject), + } if (compressed) { - request["compressed"] = true; + request["compressed"] = true } if (Object.keys(query).length > 0) { - request.query = query; + request.query = query } if (headers) { - request.headers = headers; + request.headers = headers } - request["method"] = method; + request["method"] = method if (cookies) { - request.cookies = cookies; - request.cookieString = cookieString.replace("Cookie: ", ""); + request.cookies = cookies + request.cookieString = cookieString.replace("Cookie: ", "") } if (multipartUploads) { - request.multipartUploads = multipartUploads; + request.multipartUploads = multipartUploads } if (parsedArguments.data) { - request.data = parsedArguments.data; + request.data = parsedArguments.data } else if (parsedArguments["data-binary"]) { - request.data = parsedArguments["data-binary"]; - request.isDataBinary = true; + request.data = parsedArguments["data-binary"] + request.isDataBinary = true } else if (parsedArguments["d"]) { - request.data = parsedArguments["d"]; + request.data = parsedArguments["d"] } else if (parsedArguments["data-ascii"]) { - request.data = parsedArguments["data-ascii"]; + request.data = parsedArguments["data-ascii"] } if (parsedArguments["u"]) { - request.auth = parsedArguments["u"]; + request.auth = parsedArguments["u"] } if (parsedArguments["user"]) { - request.auth = parsedArguments["user"]; + request.auth = parsedArguments["user"] } if (Array.isArray(request.data)) { - request.dataArray = request.data; - request.data = joinDataArguments(request.data); + request.dataArray = request.data + request.data = joinDataArguments(request.data) } if (parsedArguments["k"] || parsedArguments["insecure"]) { - request.insecure = true; + request.insecure = true } - return request; -}; + return request +} -export default parseCurlCommand; +export default parseCurlCommand diff --git a/assets/js/oauth.js b/assets/js/oauth.js index 447fe5334..a37ddeb40 100644 --- a/assets/js/oauth.js +++ b/assets/js/oauth.js @@ -1,4 +1,4 @@ -const redirectUri = `${window.location.origin}/`; +const redirectUri = `${window.location.origin}/` // GENERAL HELPER FUNCTIONS @@ -13,23 +13,23 @@ const redirectUri = `${window.location.origin}/`; const sendPostRequest = async (url, params) => { const body = Object.keys(params) .map(key => `${key}=${params[key]}`) - .join("&"); + .join("&") const options = { method: "post", headers: { - "Content-type": "application/x-www-form-urlencoded; charset=UTF-8" + "Content-type": "application/x-www-form-urlencoded; charset=UTF-8", }, - body - }; - try { - const response = await fetch(url, options); - const data = await response.json(); - return data; - } catch (err) { - console.error("Request failed", err); - throw err; + body, } -}; + try { + const response = await fetch(url, options) + const data = await response.json() + return data + } catch (err) { + console.error("Request failed", err) + throw err + } +} /** * Parse a query string into an object @@ -40,15 +40,12 @@ const sendPostRequest = async (url, params) => { const parseQueryString = searchQuery => { if (searchQuery === "") { - return {}; + return {} } - const segments = searchQuery.split("&").map(s => s.split("=")); - const queryString = segments.reduce( - (obj, el) => ({ ...obj, [el[0]]: el[1] }), - {} - ); - return queryString; -}; + const segments = searchQuery.split("&").map(s => s.split("=")) + const queryString = segments.reduce((obj, el) => ({ ...obj, [el[0]]: el[1] }), {}) + return queryString +} /** * Get OAuth configuration from OpenID Discovery endpoint @@ -60,18 +57,18 @@ const getTokenConfiguration = async endpoint => { const options = { method: "GET", headers: { - "Content-type": "application/json" - } - }; - try { - const response = await fetch(endpoint, options); - const config = await response.json(); - return config; - } catch (err) { - console.error("Request failed", err); - throw err; + "Content-type": "application/json", + }, } -}; + try { + const response = await fetch(endpoint, options) + const config = await response.json() + return config + } catch (err) { + console.error("Request failed", err) + throw err + } +} // PKCE HELPER FUNCTIONS @@ -82,10 +79,10 @@ const getTokenConfiguration = async endpoint => { */ const generateRandomString = () => { - const array = new Uint32Array(28); - window.crypto.getRandomValues(array); - return Array.from(array, dec => `0${dec.toString(16)}`.substr(-2)).join(""); -}; + const array = new Uint32Array(28) + window.crypto.getRandomValues(array) + return Array.from(array, dec => `0${dec.toString(16)}`.substr(-2)).join("") +} /** * Calculate the SHA256 hash of the input text @@ -94,10 +91,10 @@ const generateRandomString = () => { */ const sha256 = plain => { - const encoder = new TextEncoder(); - const data = encoder.encode(plain); - return window.crypto.subtle.digest("SHA-256", data); -}; + const encoder = new TextEncoder() + const data = encoder.encode(plain) + return window.crypto.subtle.digest("SHA-256", data) +} /** * Encodes the input string into Base64 format @@ -115,7 +112,7 @@ const base64urlencode = ( btoa(String.fromCharCode.apply(null, new Uint8Array(str))) .replace(/\+/g, "-") .replace(/\//g, "_") - .replace(/=+$/, ""); + .replace(/=+$/, "") /** * Return the base64-urlencoded sha256 hash for the PKCE challenge @@ -125,9 +122,9 @@ const base64urlencode = ( */ const pkceChallengeFromVerifier = async v => { - const hashed = await sha256(v); - return base64urlencode(hashed); -}; + const hashed = await sha256(v) + return base64urlencode(hashed) +} // OAUTH REQUEST @@ -144,32 +141,29 @@ const tokenRequest = async ({ authUrl, accessTokenUrl, clientId, - scope + scope, }) => { // Check oauth configuration if (oidcDiscoveryUrl !== "") { - const { - authorization_endpoint, - token_endpoint - } = await getTokenConfiguration(oidcDiscoveryUrl); - authUrl = authorization_endpoint; - accessTokenUrl = token_endpoint; + const { authorization_endpoint, token_endpoint } = await getTokenConfiguration(oidcDiscoveryUrl) + authUrl = authorization_endpoint + accessTokenUrl = token_endpoint } // Store oauth information - localStorage.setItem("token_endpoint", accessTokenUrl); - localStorage.setItem("client_id", clientId); + localStorage.setItem("token_endpoint", accessTokenUrl) + localStorage.setItem("client_id", clientId) // Create and store a random state value - const state = generateRandomString(); - localStorage.setItem("pkce_state", state); + const state = generateRandomString() + localStorage.setItem("pkce_state", state) // Create and store a new PKCE code_verifier (the plaintext random secret) - const code_verifier = generateRandomString(); - localStorage.setItem("pkce_code_verifier", code_verifier); + const code_verifier = generateRandomString() + localStorage.setItem("pkce_code_verifier", code_verifier) // Hash and base64-urlencode the secret to use as the challenge - const code_challenge = await pkceChallengeFromVerifier(code_verifier); + const code_challenge = await pkceChallengeFromVerifier(code_verifier) // Build the authorization URL const buildUrl = () => @@ -177,15 +171,13 @@ const tokenRequest = async ({ clientId )}&state=${encodeURIComponent(state)}&scope=${encodeURIComponent( scope - )}&redirect_uri=${encodeURIComponent( - redirectUri - )}&code_challenge=${encodeURIComponent( + )}&redirect_uri=${encodeURIComponent(redirectUri)}&code_challenge=${encodeURIComponent( code_challenge - )}&code_challenge_method=S256`; + )}&code_challenge_method=S256` // Redirect to the authorization server - window.location = buildUrl(); -}; + window.location = buildUrl() +} // OAUTH REDIRECT HANDLING @@ -197,42 +189,39 @@ const tokenRequest = async ({ */ const oauthRedirect = async () => { - let tokenResponse = ""; - let q = parseQueryString(window.location.search.substring(1)); + let tokenResponse = "" + let q = parseQueryString(window.location.search.substring(1)) // Check if the server returned an error string if (q.error) { - alert(`Error returned from authorization server: ${q.error}`); + alert(`Error returned from authorization server: ${q.error}`) } // If the server returned an authorization code, attempt to exchange it for an access token if (q.code) { // Verify state matches what we set at the beginning if (localStorage.getItem("pkce_state") != q.state) { - alert("Invalid state"); + alert("Invalid state") } else { try { // Exchange the authorization code for an access token - tokenResponse = await sendPostRequest( - localStorage.getItem("token_endpoint"), - { - grant_type: "authorization_code", - code: q.code, - client_id: localStorage.getItem("client_id"), - redirect_uri: redirectUri, - code_verifier: localStorage.getItem("pkce_code_verifier") - } - ); + tokenResponse = await sendPostRequest(localStorage.getItem("token_endpoint"), { + grant_type: "authorization_code", + code: q.code, + client_id: localStorage.getItem("client_id"), + redirect_uri: redirectUri, + code_verifier: localStorage.getItem("pkce_code_verifier"), + }) } catch (err) { - console.log(`${error.error}\n\n${error.error_description}`); + console.log(`${error.error}\n\n${error.error_description}`) } } // Clean these up since we don't need them anymore - localStorage.removeItem("pkce_state"); - localStorage.removeItem("pkce_code_verifier"); - localStorage.removeItem("token_endpoint"); - localStorage.removeItem("client_id"); - return tokenResponse; + localStorage.removeItem("pkce_state") + localStorage.removeItem("pkce_code_verifier") + localStorage.removeItem("token_endpoint") + localStorage.removeItem("client_id") + return tokenResponse } - return tokenResponse; -}; + return tokenResponse +} -export { tokenRequest, oauthRedirect }; +export { tokenRequest, oauthRedirect } diff --git a/assets/js/pwa.js b/assets/js/pwa.js index 32fd46e82..cdecc3854 100644 --- a/assets/js/pwa.js +++ b/assets/js/pwa.js @@ -2,55 +2,50 @@ export default () => { //*** Determine whether or not the PWA has been installed. ***// // Step 1: Check local storage - let pwaInstalled = localStorage.getItem("pwaInstalled") === "yes"; + let pwaInstalled = localStorage.getItem("pwaInstalled") === "yes" // Step 2: Check if the display-mode is standalone. (Only permitted for PWAs.) - if ( - !pwaInstalled && - window.matchMedia("(display-mode: standalone)").matches - ) { - localStorage.setItem("pwaInstalled", "yes"); - pwaInstalled = true; + if (!pwaInstalled && window.matchMedia("(display-mode: standalone)").matches) { + localStorage.setItem("pwaInstalled", "yes") + pwaInstalled = true } // Step 3: Check if the navigator is in standalone mode. (Again, only permitted for PWAs.) if (!pwaInstalled && window.navigator.standalone === true) { - localStorage.setItem("pwaInstalled", "yes"); - pwaInstalled = true; + localStorage.setItem("pwaInstalled", "yes") + pwaInstalled = true } //*** If the PWA has not been installed, show the install PWA prompt.. ***// - let deferredPrompt = null; + let deferredPrompt = null window.addEventListener("beforeinstallprompt", event => { - deferredPrompt = event; + deferredPrompt = event // Show the install button if the prompt appeared. if (!pwaInstalled) { - document.querySelector("#installPWA").style.display = "inline-flex"; + document.querySelector("#installPWA").style.display = "inline-flex" } - }); + }) // When the app is installed, remove install prompts. window.addEventListener("appinstalled", event => { - localStorage.setItem("pwaInstalled", "yes"); - pwaInstalled = true; - document.getElementById("installPWA").style.display = "none"; - }); + localStorage.setItem("pwaInstalled", "yes") + pwaInstalled = true + document.getElementById("installPWA").style.display = "none" + }) // When the app is uninstalled, add the prompts back return async () => { if (deferredPrompt) { - deferredPrompt.prompt(); - let outcome = await deferredPrompt.userChoice; + deferredPrompt.prompt() + let outcome = await deferredPrompt.userChoice if (outcome === "accepted") { - console.log("Postwoman was installed successfully."); + console.log("Postwoman was installed successfully.") } else { - console.log( - "Postwoman could not be installed. (Installation rejected by user.)" - ); + console.log("Postwoman could not be installed. (Installation rejected by user.)") } - deferredPrompt = null; + deferredPrompt = null } - }; -}; + } +} diff --git a/build.js b/build.js index c19eb2987..293817879 100644 --- a/build.js +++ b/build.js @@ -1,27 +1,26 @@ -const axios = require("axios"); -const fs = require("fs"); -const { spawnSync } = require("child_process"); +const axios = require("axios") +const fs = require("fs") +const { spawnSync } = require("child_process") const runCommand = (command, args) => spawnSync(command, args) .stdout.toString() - .replace(/\n/g, ""); + .replace(/\n/g, "") -const FAIL_ON_ERROR = false; -const PW_BUILD_DATA_DIR = "./.postwoman"; -const IS_DEV_MODE = process.argv.includes("--dev"); +const FAIL_ON_ERROR = false +const PW_BUILD_DATA_DIR = "./.postwoman" +const IS_DEV_MODE = process.argv.includes("--dev") try { - (async () => { + ;(async () => { // Create the build data directory if it does not exist. if (!fs.existsSync(PW_BUILD_DATA_DIR)) { - fs.mkdirSync(PW_BUILD_DATA_DIR); + fs.mkdirSync(PW_BUILD_DATA_DIR) } - let version = {}; + let version = {} // Get the current version name as the tag from Git. version.name = - process.env.TRAVIS_TAG || - runCommand("git", ["tag --sort=committerdate | tail -1"]); + process.env.TRAVIS_TAG || runCommand("git", ["tag --sort=committerdate | tail -1"]) // FALLBACK: If version.name was unset, let's grab it from GitHub. if (!version.name) { @@ -32,32 +31,29 @@ try { .catch(ex => ({ data: [ { - tag_name: require("./package.json").version - } - ] + tag_name: require("./package.json").version, + }, + ], })) - ).data[0]["tag_name"]; + ).data[0]["tag_name"] } // Get the current version hash as the short hash from Git. - version.hash = runCommand("git", ["rev-parse", "--short", "HEAD"]); + version.hash = runCommand("git", ["rev-parse", "--short", "HEAD"]) // Get the 'variant' name as the branch, if it's not master. version.variant = process.env.TRAVIS_BRANCH || runCommand("git", ["branch"]) .split("* ")[1] - .split(" ")[0] + (IS_DEV_MODE ? " - DEV MODE" : ""); + .split(" ")[0] + (IS_DEV_MODE ? " - DEV MODE" : "") if (["", "master"].includes(version.variant)) { - delete version.variant; + delete version.variant } // Write version data into a file - fs.writeFileSync( - `${PW_BUILD_DATA_DIR}/version.json`, - JSON.stringify(version) - ); - })(); + fs.writeFileSync(`${PW_BUILD_DATA_DIR}/version.json`, JSON.stringify(version)) + })() } catch (ex) { - console.error(ex); - process.exit(FAIL_ON_ERROR ? 1 : 0); + console.error(ex) + process.exit(FAIL_ON_ERROR ? 1 : 0) } diff --git a/components/ace-editor.vue b/components/ace-editor.vue index be1917c08..0ac6b2369 100644 --- a/components/ace-editor.vue +++ b/components/ace-editor.vue @@ -5,114 +5,143 @@ diff --git a/components/autocomplete.vue b/components/autocomplete.vue index 6a32c306b..c2f64f619 100644 --- a/components/autocomplete.vue +++ b/components/autocomplete.vue @@ -76,42 +76,42 @@ diff --git a/components/collections/addCollection.vue b/components/collections/addCollection.vue index fd9202ab2..69ee934b5 100644 --- a/components/collections/addCollection.vue +++ b/components/collections/addCollection.vue @@ -43,44 +43,42 @@ diff --git a/components/collections/addFolder.vue b/components/collections/addFolder.vue index e4b9a853c..cc8761f51 100644 --- a/components/collections/addFolder.vue +++ b/components/collections/addFolder.vue @@ -47,27 +47,27 @@ export default { props: { show: Boolean, collection: Object, - collectionIndex: Number + collectionIndex: Number, }, components: { - modal: () => import("../../components/modal") + modal: () => import("../../components/modal"), }, data() { return { - name: undefined - }; + name: undefined, + } }, methods: { addNewFolder() { this.$store.commit("postwoman/addNewFolder", { folder: { name: this.$data.name }, - collectionIndex: this.$props.collectionIndex - }); - this.hideModal(); + collectionIndex: this.$props.collectionIndex, + }) + this.hideModal() }, hideModal() { - this.$emit("hide-modal"); - } - } -}; + this.$emit("hide-modal") + }, + }, +} diff --git a/components/collections/collection.vue b/components/collections/collection.vue index da4e189f5..f4d52df49 100644 --- a/components/collections/collection.vue +++ b/components/collections/collection.vue @@ -21,11 +21,7 @@
- @@ -51,11 +47,7 @@ @edit-request="$emit('edit-request', $event)" /> -
  • +
  • @@ -71,7 +63,7 @@ request, collectionIndex, folderIndex: undefined, - requestIndex: index + requestIndex: index, }) " /> @@ -98,31 +90,31 @@ ul li { export default { components: { folder: () => import("./folder"), - request: () => import("./request") + request: () => import("./request"), }, props: { collectionIndex: Number, - collection: Object + collection: Object, }, data() { return { showChildren: false, - selectedFolder: {} - }; + selectedFolder: {}, + } }, methods: { toggleShowChildren() { - this.showChildren = !this.showChildren; + this.showChildren = !this.showChildren }, removeCollection() { - if (!confirm("Are you sure you want to remove this Collection?")) return; + if (!confirm("Are you sure you want to remove this Collection?")) return this.$store.commit("postwoman/removeCollection", { - collectionIndex: this.collectionIndex - }); + collectionIndex: this.collectionIndex, + }) }, editFolder(collectionIndex, folder, folderIndex) { - this.$emit("edit-folder", { collectionIndex, folder, folderIndex }); - } - } -}; + this.$emit("edit-folder", { collectionIndex, folder, folderIndex }) + }, + }, +} diff --git a/components/collections/editCollection.vue b/components/collections/editCollection.vue index 9a48d1e1a..a3f12195e 100644 --- a/components/collections/editCollection.vue +++ b/components/collections/editCollection.vue @@ -47,35 +47,35 @@ export default { props: { show: Boolean, editingCollection: Object, - editingCollectionIndex: Number + editingCollectionIndex: Number, }, components: { - modal: () => import("../../components/modal") + modal: () => import("../../components/modal"), }, data() { return { - name: undefined - }; + name: undefined, + } }, methods: { saveCollection() { if (!this.$data.name) { - this.$toast.info($t("invalid_collection_name")); - return; + this.$toast.info($t("invalid_collection_name")) + return } const collectionUpdated = { ...this.$props.editingCollection, - name: this.$data.name - }; + name: this.$data.name, + } this.$store.commit("postwoman/editCollection", { collection: collectionUpdated, - collectionIndex: this.$props.editingCollectionIndex - }); - this.$emit("hide-modal"); + collectionIndex: this.$props.editingCollectionIndex, + }) + this.$emit("hide-modal") }, hideModal() { - this.$emit("hide-modal"); - } - } -}; + this.$emit("hide-modal") + }, + }, +} diff --git a/components/collections/editFolder.vue b/components/collections/editFolder.vue index 9cdfe000d..9179b205f 100644 --- a/components/collections/editFolder.vue +++ b/components/collections/editFolder.vue @@ -17,12 +17,7 @@
    @@ -49,28 +44,28 @@ export default { collection: Object, collectionIndex: Number, folder: Object, - folderIndex: Number + folderIndex: Number, }, components: { - modal: () => import("../../components/modal") + modal: () => import("../../components/modal"), }, data() { return { - name: undefined - }; + name: undefined, + } }, methods: { editFolder() { this.$store.commit("postwoman/editFolder", { collectionIndex: this.$props.collectionIndex, folder: { ...this.$props.folder, name: this.$data.name }, - folderIndex: this.$props.folderIndex - }); - this.hideModal(); + folderIndex: this.$props.folderIndex, + }) + this.hideModal() }, hideModal() { - this.$emit("hide-modal"); - } - } -}; + this.$emit("hide-modal") + }, + }, +} diff --git a/components/collections/editRequest.vue b/components/collections/editRequest.vue index f8fea28dc..480232784 100644 --- a/components/collections/editRequest.vue +++ b/components/collections/editRequest.vue @@ -27,22 +27,12 @@ /> - + - - - @@ -93,42 +75,39 @@ export default { collectionIndex: Number, folderIndex: Number, request: Object, - requestIndex: Number + requestIndex: Number, }, components: { - modal: () => import("../../components/modal") + modal: () => import("../../components/modal"), }, data() { return { requestUpdateData: { name: undefined, collectionIndex: undefined, - folderIndex: undefined - } - }; + folderIndex: undefined, + }, + } }, watch: { "requestUpdateData.collectionIndex": function resetFolderIndex() { // if user choosen some folder, than selected other collection, which doesn't have any folders // than `requestUpdateData.folderIndex` won't be reseted - this.$data.requestUpdateData.folderIndex = undefined; - } + this.$data.requestUpdateData.folderIndex = undefined + }, }, computed: { folders() { - const userSelectedAnyCollection = - this.$data.requestUpdateData.collectionIndex !== undefined; - if (!userSelectedAnyCollection) return []; + const userSelectedAnyCollection = this.$data.requestUpdateData.collectionIndex !== undefined + if (!userSelectedAnyCollection) return [] - return this.$store.state.postwoman.collections[ - this.$data.requestUpdateData.collectionIndex - ].folders; - } + return this.$store.state.postwoman.collections[this.$data.requestUpdateData.collectionIndex] + .folders + }, }, methods: { saveRequest() { - const userSelectedAnyCollection = - this.$data.requestUpdateData.collectionIndex !== undefined; + const userSelectedAnyCollection = this.$data.requestUpdateData.collectionIndex !== undefined const requestUpdated = { ...this.$props.request, @@ -136,8 +115,8 @@ export default { collection: userSelectedAnyCollection ? this.$data.requestUpdateData.collectionIndex : this.$props.collectionIndex, - folder: this.$data.requestUpdateData.folderIndex - }; + folder: this.$data.requestUpdateData.folderIndex, + } // pass data separately to don't depend on request's collection, folder fields // probably, they should be deprecated because they don't describe request itself @@ -147,14 +126,14 @@ export default { requestOldIndex: this.$props.requestIndex, requestNew: requestUpdated, requestNewCollectionIndex: requestUpdated.collection, - requestNewFolderIndex: requestUpdated.folder - }); + requestNewFolderIndex: requestUpdated.folder, + }) - this.hideModal(); + this.hideModal() }, hideModal() { - this.$emit("hide-modal"); - } - } -}; + this.$emit("hide-modal") + }, + }, +} diff --git a/components/collections/folder.vue b/components/collections/folder.vue index 1addefd84..3066d77b8 100644 --- a/components/collections/folder.vue +++ b/components/collections/folder.vue @@ -43,7 +43,7 @@ request, collectionIndex, folderIndex, - requestIndex: index + requestIndex: index, }) " /> @@ -74,33 +74,33 @@ export default { props: { folder: Object, collectionIndex: Number, - folderIndex: Number + folderIndex: Number, }, components: { - request: () => import("./request") + request: () => import("./request"), }, data() { return { - showChildren: false - }; + showChildren: false, + } }, methods: { toggleShowChildren() { - this.showChildren = !this.showChildren; + this.showChildren = !this.showChildren }, selectRequest(request) { - this.$store.commit("postwoman/selectRequest", { request }); + this.$store.commit("postwoman/selectRequest", { request }) }, removeFolder() { - if (!confirm("Are you sure you want to remove this folder?")) return; + if (!confirm("Are you sure you want to remove this folder?")) return this.$store.commit("postwoman/removeFolder", { collectionIndex: this.collectionIndex, - folderIndex: this.folderIndex - }); + folderIndex: this.folderIndex, + }) }, editFolder() { - this.$emit("edit-folder"); - } - } -}; + this.$emit("edit-folder") + }, + }, +} diff --git a/components/collections/importExportCollections.vue b/components/collections/importExportCollections.vue index 44ebe6c13..8286cca11 100644 --- a/components/collections/importExportCollections.vue +++ b/components/collections/importExportCollections.vue @@ -14,16 +14,10 @@
    - @@ -72,11 +66,7 @@ - @@ -86,120 +76,106 @@ diff --git a/components/collections/index.vue b/components/collections/index.vue index d7ff71c60..a2f336c1f 100644 --- a/components/collections/index.vue +++ b/components/collections/index.vue @@ -107,8 +107,8 @@ ul { diff --git a/components/collections/request.vue b/components/collections/request.vue index f96059f12..b2f2072e6 100644 --- a/components/collections/request.vue +++ b/components/collections/request.vue @@ -1,11 +1,7 @@ diff --git a/components/environments/addEnvironment.vue b/components/environments/addEnvironment.vue index 43ef6636b..fe5e225ce 100644 --- a/components/environments/addEnvironment.vue +++ b/components/environments/addEnvironment.vue @@ -43,52 +43,50 @@ diff --git a/components/environments/editEnvironment.vue b/components/environments/editEnvironment.vue index 9c15b33e2..b47320de6 100644 --- a/components/environments/editEnvironment.vue +++ b/components/environments/editEnvironment.vue @@ -30,11 +30,7 @@
    -
    @@ -49,10 +45,7 @@ > -
      +
      • @@ -123,99 +114,94 @@ diff --git a/components/environments/environment.vue b/components/environments/environment.vue index 8fda53198..9faa5fe95 100644 --- a/components/environments/environment.vue +++ b/components/environments/environment.vue @@ -1,11 +1,7 @@