From bbed06e2ba255199703343625129712ef7707697 Mon Sep 17 00:00:00 2001 From: Vijay A Date: Mon, 16 Aug 2021 23:13:06 +0530 Subject: Revert "chore: update outdated node_modules (#1807)" This reverts commit 26a9dba22236bc22a7612107630282cfe02d20e0. --- package-lock.json | 147 ++++++----------- package.json | 10 +- src/electron/macOSPermissions.js | 9 +- src/helpers/userAgent-helpers.ts | 11 +- .../app/Controllers/Http/ServiceController.js | 6 +- .../app/Controllers/Http/UserController.js | 178 ++++++++++----------- .../app/Controllers/Http/WorkspaceController.js | 57 ++++--- src/lib/Tray.js | 55 ++----- src/webview/notifications.js | 19 +-- uidev/src/stories/input.stories.tsx | 66 ++++++-- uidev/src/stories/select.stories.tsx | 31 +++- uidev/src/stories/textarea.stories.tsx | 25 ++- uidev/src/stories/toggle.stories.tsx | 46 +++--- 13 files changed, 314 insertions(+), 346 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4adabbe9b..8f302a8fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -104,13 +104,6 @@ "ms": "^2.1.1", "resetable": "^1.0.3", "uuid": "^3.3.2" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } } }, "@adonisjs/bodyparser": { @@ -297,11 +290,6 @@ "jsonfile": "^4.0.0", "universalify": "^0.1.0" } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, @@ -316,13 +304,6 @@ "node-csp": "^1.0.1", "node-guard": "^1.0.0", "uuid": "^3.3.2" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } } }, "@adonisjs/validator": { @@ -6752,9 +6733,9 @@ } }, "@types/uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==", + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.9.tgz", + "integrity": "sha512-XDwyIlt/47l2kWLTzw/mtrpLdB+GPSskR2n/PIcPn+VYhVO77rGhRncIR5GPU0KRzXuqkDO+J5qqrG0Y8P6jzQ==", "dev": true }, "@types/verror": { @@ -13958,18 +13939,18 @@ } }, "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", "strip-final-newline": "^2.0.0" }, "dependencies": { @@ -13984,9 +13965,12 @@ } }, "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } }, "path-key": { "version": "3.1.1", @@ -16688,9 +16672,9 @@ } }, "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" }, "humanize-ms": { "version": "1.2.1", @@ -19917,11 +19901,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, @@ -20541,16 +20520,23 @@ } }, "macos-release": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.0.0.tgz", - "integrity": "sha512-y+uUjBt2D1YK0w8k0D19r6O8BYrCkSokWMaTJPvE68RjUOVYQmPXUD7Y4wGphM+/DEJNU+e46hl1lXOzPpvo+w==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz", + "integrity": "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==" }, "macos-version": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/macos-version/-/macos-version-6.0.0.tgz", - "integrity": "sha512-O2S8voA+pMfCHhBn/TIYDXzJ1qNHpPDU32oFxglKnVdJABiYYITt45oLkV9yhwA3E2FDwn3tQqUFrTsr1p3sBQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/macos-version/-/macos-version-5.2.1.tgz", + "integrity": "sha512-OHJU8nTNxHYL1FQhD+nZawWgXKXAqDGr4kluLtaqKO4au3cR41y1mKuVShOU5U4rOYiuPanljq6oFGmV2B9DFA==", "requires": { - "semver": "^7.3.5" + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, "macroable": { @@ -22352,9 +22338,9 @@ "dev": true }, "normalize-url": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-7.0.1.tgz", - "integrity": "sha512-WjLnBQVhYX5XRIectq7CEXgu7O13OB1vsj3rkVItD4c48G/JRD5dohJ1R5vVwZ5wI2/SJDNHfpdQ0Xsqbr1dhQ==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" }, "normalize-version": { "version": "1.0.5", @@ -22984,12 +22970,12 @@ } }, "os-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-5.0.0.tgz", - "integrity": "sha512-2NNINSnda99omAve/ayz0vIOwwS7fC1jNlutqxAcAsS8NXOGU3Rdku1lCm00fDNFdOMLd1YCVTNnfUsVs5471Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz", + "integrity": "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==", "requires": { - "macos-release": "^3.0.0", - "windows-release": "^5.0.0" + "macos-release": "^2.5.0", + "windows-release": "^4.0.0" } }, "os-tmpdir": { @@ -23423,14 +23409,6 @@ "normalize-url": "^6.1.0", "parse-path": "^4.0.0", "protocols": "^1.4.0" - }, - "dependencies": { - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - } } }, "parse5": { @@ -25579,11 +25557,6 @@ "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" } } }, @@ -27549,12 +27522,6 @@ "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true } } }, @@ -27566,14 +27533,6 @@ "requires": { "temp-dir": "^2.0.0", "uuid": "^3.3.2" - }, - "dependencies": { - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } } }, "terminal-link": { @@ -28831,9 +28790,9 @@ "dev": true }, "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, "v8-compile-cache": { "version": "2.3.0", @@ -29847,12 +29806,6 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true } } }, @@ -30015,11 +29968,11 @@ } }, "windows-release": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-5.0.0.tgz", - "integrity": "sha512-oiBC+rh4zgwD2E1WvsdcuaBlcNtO+bfoq4GT7sR36J8X+AZNJuXXf+5BjLflDqhEZty25SahBMYSEBhg/V8ikg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz", + "integrity": "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==", "requires": { - "execa": "^5.1.1" + "execa": "^4.0.2" } }, "winreg": { diff --git a/package.json b/package.json index 3a448bae7..7aa100668 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "jss": "10.7.1", "lodash": "4.17.21", "macos-notification-state": "1.3.5", - "macos-version": "6.0.0", + "macos-version": "5.2.1", "marked": "0.7.0", "mime-types": "2.1.32", "minimist": "1.2.5", @@ -103,8 +103,8 @@ "ms": "2.1.3", "node-fetch": "2.6.1", "node-mac-permissions": "2.2.0", - "normalize-url": "7.0.1", - "os-name": "5.0.0", + "normalize-url": "6.1.0", + "os-name": "4.0.1", "pretty-bytes": "5.6.0", "prop-types": "15.7.2", "react": "16.14.0", @@ -126,7 +126,7 @@ "tar": "4.4.15", "tslib": "2.3.1", "useragent-generator": "1.1.1-amkt-22079-finish.0", - "uuid": "8.3.2", + "uuid": "3.3.3", "validator": "11.0.0", "ws": "7.4.6" }, @@ -155,7 +155,7 @@ "@types/react-dom": "16.9.13", "@types/route-parser": "0.1.3", "@types/tar": "4.0.5", - "@types/uuid": "8.3.1", + "@types/uuid": "3.4.9", "@typescript-eslint/eslint-plugin": "4.29.1", "@typescript-eslint/parser": "4.29.1", "all-contributors-cli": "6.20.0", diff --git a/src/electron/macOSPermissions.js b/src/electron/macOSPermissions.js index fc2f9b72d..887af2903 100644 --- a/src/electron/macOSPermissions.js +++ b/src/electron/macOSPermissions.js @@ -1,17 +1,14 @@ import { systemPreferences, dialog } from 'electron'; import { pathExistsSync, mkdirSync, writeFileSync } from 'fs-extra'; -import { isMacOSVersionGreaterThanOrEqualTo } from 'macos-version'; +import macosVersion from 'macos-version'; import { dirname } from 'path'; import { askForScreenCaptureAccess } from 'node-mac-permissions'; import { userDataPath } from '../environment'; const debug = require('debug')('Ferdi:macOSPermissions'); -const isExplicitScreenCapturePermissionReqd = - isMacOSVersionGreaterThanOrEqualTo('10.15'); -debug( - `Should check explicitly for screen-capture permissions: ${isExplicitScreenCapturePermissionReqd}`, -); +const isExplicitScreenCapturePermissionReqd = macosVersion.isGreaterThanOrEqualTo('10.15'); +debug(`Should check explicitly for screen-capture permissions: ${isExplicitScreenCapturePermissionReqd}`); const filePath = userDataPath('.has-app-requested-screen-capture-permissions'); diff --git a/src/helpers/userAgent-helpers.ts b/src/helpers/userAgent-helpers.ts index dea49ad7e..73c8bfd03 100644 --- a/src/helpers/userAgent-helpers.ts +++ b/src/helpers/userAgent-helpers.ts @@ -1,17 +1,12 @@ import os from 'os'; -import { macOSVersion } from 'macos-version'; +import macosVersion from 'macos-version'; import { chrome } from 'useragent-generator'; import { - chromeVersion, - isMac, - isWindows, - is64Bit, - osArch, - osRelease, + chromeVersion, isMac, isWindows, is64Bit, osArch, osRelease, } from '../environment'; function macOS() { - const version = macOSVersion() || ''; + const version = macosVersion() || ''; let cpuName = os.cpus()[0].model.split(' ')[0]; if (cpuName && cpuName.match(/\(/)) { cpuName = cpuName.split('(')[0]; diff --git a/src/internal-server/app/Controllers/Http/ServiceController.js b/src/internal-server/app/Controllers/Http/ServiceController.js index dea5a888e..c76a287f7 100644 --- a/src/internal-server/app/Controllers/Http/ServiceController.js +++ b/src/internal-server/app/Controllers/Http/ServiceController.js @@ -2,7 +2,7 @@ const Service = use('App/Models/Service'); const { validateAll } = use('Validator'); const Env = use('Env'); -const { v4: uuid } = require('uuid'); +const uuid = require('uuid/v4'); const path = require('path'); const fs = require('fs-extra'); const { LOCAL_HOSTNAME } = require('../../../../config'); @@ -156,7 +156,9 @@ class ServiceController { id, name: service.name, ...newSettings, - iconUrl: `http://${hostname}:${port}/v1/icon/${newSettings.iconId}`, + iconUrl: `http://${hostname}:${port}/v1/icon/${ + newSettings.iconId + }`, userId: 1, }, status: ['updated'], diff --git a/src/internal-server/app/Controllers/Http/UserController.js b/src/internal-server/app/Controllers/Http/UserController.js index e387e39c4..a3ad736fa 100644 --- a/src/internal-server/app/Controllers/Http/UserController.js +++ b/src/internal-server/app/Controllers/Http/UserController.js @@ -1,38 +1,41 @@ const User = use('App/Models/User'); const Service = use('App/Models/Service'); const Workspace = use('App/Models/Workspace'); -const { validateAll } = use('Validator'); +const { + validateAll, +} = use('Validator'); const btoa = require('btoa'); const fetch = require('node-fetch'); -const { v4: uuid } = require('uuid'); +const uuid = require('uuid/v4'); const crypto = require('crypto'); const { DEFAULT_APP_SETTINGS } = require('../../../../environment'); -const apiRequest = (url, route, method, auth) => - new Promise((resolve, reject) => { - const base = `${url}/v1/`; - const user = - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Ferdi/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36'; +const apiRequest = (url, route, method, auth) => new Promise((resolve, reject) => { + const base = `${url}/v1/`; + const user = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Ferdi/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36'; - try { - fetch(base + route, { - method, - headers: { - Authorization: `Bearer ${auth}`, - 'User-Agent': user, - }, - }) - .then(data => data.json()) - .then(json => resolve(json)); - } catch (e) { - reject(); - } - }); + try { + fetch(base + route, { + method, + headers: { + Authorization: `Bearer ${auth}`, + 'User-Agent': user, + }, + }) + .then(data => data.json()) + .then(json => resolve(json)); + } catch (e) { + reject(); + } +}); class UserController { // Register a new user - async signup({ request, response }) { + async signup({ + request, + response, + }) { // Validate user input const validation = await validateAll(request.all(), { firstname: 'required', @@ -49,13 +52,15 @@ class UserController { return response.send({ message: 'Successfully created account', - token: - 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJGZXJkaSBJbnRlcm5hbCBTZXJ2ZXIiLCJpYXQiOjE1NzEwNDAyMTUsImV4cCI6MjUzMzk1NDE3ODQ0LCJhdWQiOiJnZXRmZXJkaS5jb20iLCJzdWIiOiJmZXJkaUBsb2NhbGhvc3QiLCJ1c2VySWQiOiIxIn0.9_TWFGp6HROv8Yg82Rt6i1-95jqWym40a-HmgrdMC6M', + token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJGZXJkaSBJbnRlcm5hbCBTZXJ2ZXIiLCJpYXQiOjE1NzEwNDAyMTUsImV4cCI6MjUzMzk1NDE3ODQ0LCJhdWQiOiJnZXRmZXJkaS5jb20iLCJzdWIiOiJmZXJkaUBsb2NhbGhvc3QiLCJ1c2VySWQiOiIxIn0.9_TWFGp6HROv8Yg82Rt6i1-95jqWym40a-HmgrdMC6M', }); } // Login using an existing user - async login({ request, response }) { + async login({ + request, + response, + }) { if (!request.header('Authorization')) { return response.status(401).send({ message: 'Please provide authorization', @@ -65,19 +70,17 @@ class UserController { return response.send({ message: 'Successfully logged in', - token: - 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJGZXJkaSBJbnRlcm5hbCBTZXJ2ZXIiLCJpYXQiOjE1NzEwNDAyMTUsImV4cCI6MjUzMzk1NDE3ODQ0LCJhdWQiOiJnZXRmZXJkaS5jb20iLCJzdWIiOiJmZXJkaUBsb2NhbGhvc3QiLCJ1c2VySWQiOiIxIn0.9_TWFGp6HROv8Yg82Rt6i1-95jqWym40a-HmgrdMC6M', + token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJGZXJkaSBJbnRlcm5hbCBTZXJ2ZXIiLCJpYXQiOjE1NzEwNDAyMTUsImV4cCI6MjUzMzk1NDE3ODQ0LCJhdWQiOiJnZXRmZXJkaS5jb20iLCJzdWIiOiJmZXJkaUBsb2NhbGhvc3QiLCJ1c2VySWQiOiIxIn0.9_TWFGp6HROv8Yg82Rt6i1-95jqWym40a-HmgrdMC6M', }); } // Return information about the current user - async me({ response }) { + async me({ + response, + }) { const user = await User.find(1); - const settings = - typeof user.settings === 'string' - ? JSON.parse(user.settings) - : user.settings; + const settings = typeof user.settings === 'string' ? JSON.parse(user.settings) : user.settings; return response.send({ accountType: 'individual', @@ -91,11 +94,14 @@ class UserController { isSubscriptionOwner: true, lastname: 'Application', locale: DEFAULT_APP_SETTINGS.fallbackLocale, - ...(settings || {}), + ...settings || {}, }); } - async updateMe({ request, response }) { + async updateMe({ + request, + response, + }) { const user = await User.find(1); let settings = user.settings || {}; @@ -126,11 +132,16 @@ class UserController { locale: DEFAULT_APP_SETTINGS.fallbackLocale, ...newSettings, }, - status: ['data-updated'], + status: [ + 'data-updated', + ], }); } - async import({ request, response }) { + async import({ + request, + response, + }) { // Validate user input const validation = await validateAll(request.all(), { email: 'required|email', @@ -138,8 +149,7 @@ class UserController { server: 'required', }); if (validation.fails()) { - let errorMessage = - 'There was an error while trying to import your account:\n'; + let errorMessage = 'There was an error while trying to import your account:\n'; for (const message of validation.messages()) { if (message.validation === 'required') { errorMessage += `- Please make sure to supply your ${message.field}\n`; @@ -152,16 +162,16 @@ class UserController { return response.status(401).send(errorMessage); } - const { email, password, server } = request.all(); + const { + email, + password, + server, + } = request.all(); - const hashedPassword = crypto - .createHash('sha256') - .update(password) - .digest('base64'); + const hashedPassword = crypto.createHash('sha256').update(password).digest('base64'); const base = `${server}/v1/`; - const userAgent = - 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Ferdi/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36'; + const userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Ferdi/5.3.0-beta.1 Chrome/69.0.3497.128 Electron/4.2.4 Safari/537.36'; // Try to get an authentication token let token; @@ -178,8 +188,7 @@ class UserController { const content = await rawResponse.json(); if (!content.message || content.message !== 'Successfully logged in') { - const errorMessage = - 'Could not login into Franz with your supplied credentials. Please check and try again'; + const errorMessage = 'Could not login into Franz with your supplied credentials. Please check and try again'; return response.status(401).send(errorMessage); } @@ -201,8 +210,7 @@ class UserController { return response.status(401).send(errorMessage); } if (!userInf) { - const errorMessage = - 'Could not get your user info from Franz. Please check your credentials or try again later'; + const errorMessage = 'Could not get your user info from Franz. Please check your credentials or try again later'; return response.status(401).send(errorMessage); } @@ -217,14 +225,9 @@ class UserController { let serviceId; do { serviceId = uuid(); - } while ( - // eslint-disable-next-line no-await-in-loop - (await Service.query().where('serviceId', serviceId).fetch()).rows - .length > 0 - ); - - // eslint-disable-next-line no-await-in-loop - await Service.create({ + } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop + + await Service.create({ // eslint-disable-line no-await-in-loop serviceId, name: service.name, recipeId: service.recipeId, @@ -246,18 +249,11 @@ class UserController { let workspaceId; do { workspaceId = uuid(); - } while ( - // eslint-disable-next-line no-await-in-loop - (await Workspace.query().where('workspaceId', workspaceId).fetch()) - .rows.length > 0 - ); - - const services = workspace.services.map( - service => serviceIdTranslation[service], - ); - - // eslint-disable-next-line no-await-in-loop - await Workspace.create({ + } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop + + const services = workspace.services.map(service => serviceIdTranslation[service]); + + await Workspace.create({ // eslint-disable-line no-await-in-loop workspaceId, name: workspace.name, order: workspace.order, @@ -270,9 +266,7 @@ class UserController { return response.status(401).send(errorMessage); } - return response.send( - 'Your account has been imported. You can now use your Franz account in Ferdi.', - ); + return response.send('Your account has been imported. You can now use your Franz account in Ferdi.'); } // Account import/export @@ -297,7 +291,10 @@ class UserController { .send(exportData); } - async importFerdi({ request, response }) { + async importFerdi({ + request, + response, + }) { const validation = await validateAll(request.all(), { file: 'required', }); @@ -309,9 +306,7 @@ class UserController { try { file = JSON.parse(request.input('file')); } catch (e) { - return response.send( - 'Could not import: Invalid file, could not read file', - ); + return response.send('Could not import: Invalid file, could not read file'); } if (!file || !file.services || !file.workspaces) { @@ -327,14 +322,9 @@ class UserController { let serviceId; do { serviceId = uuid(); - } while ( - // eslint-disable-next-line no-await-in-loop - (await Service.query().where('serviceId', serviceId).fetch()).rows - .length > 0 - ); - - // eslint-disable-next-line no-await-in-loop - await Service.create({ + } while ((await Service.query().where('serviceId', serviceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop + + await Service.create({ // eslint-disable-line no-await-in-loop serviceId, name: service.name, recipeId: service.recipeId, @@ -354,19 +344,13 @@ class UserController { let workspaceId; do { workspaceId = uuid(); - } while ( - // eslint-disable-next-line no-await-in-loop - (await Workspace.query().where('workspaceId', workspaceId).fetch()) - .rows.length > 0 - ); - - const services = - workspace.services && typeof workspace.services === 'object' - ? workspace.services.map(service => serviceIdTranslation[service]) - : []; - - // eslint-disable-next-line no-await-in-loop - await Workspace.create({ + } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop + + const services = (workspace.services && typeof (workspace.services) === 'object') ? + workspace.services.map((service) => serviceIdTranslation[service]) : + []; + + await Workspace.create({ // eslint-disable-line no-await-in-loop workspaceId, name: workspace.name, order: workspace.order, diff --git a/src/internal-server/app/Controllers/Http/WorkspaceController.js b/src/internal-server/app/Controllers/Http/WorkspaceController.js index f1a5ddf2b..4189fbcdd 100644 --- a/src/internal-server/app/Controllers/Http/WorkspaceController.js +++ b/src/internal-server/app/Controllers/Http/WorkspaceController.js @@ -1,11 +1,16 @@ const Workspace = use('App/Models/Workspace'); -const { validateAll } = use('Validator'); +const { + validateAll, +} = use('Validator'); -const { v4: uuid } = require('uuid'); +const uuid = require('uuid/v4'); class WorkspaceController { // Create a new workspace for user - async create({ request, response }) { + async create({ + request, + response, + }) { // Validate user input const validation = await validateAll(request.all(), { name: 'required', @@ -24,10 +29,7 @@ class WorkspaceController { let workspaceId; do { workspaceId = uuid(); - } while ( - (await Workspace.query().where('workspaceId', workspaceId).fetch()).rows - .length > 0 - ); // eslint-disable-line no-await-in-loop + } while ((await Workspace.query().where('workspaceId', workspaceId).fetch()).rows.length > 0); // eslint-disable-line no-await-in-loop const order = (await Workspace.all()).rows.length; @@ -48,7 +50,11 @@ class WorkspaceController { }); } - async edit({ request, response, params }) { + async edit({ + request, + response, + params, + }) { // Validate user input const validation = await validateAll(request.all(), { name: 'required', @@ -63,19 +69,20 @@ class WorkspaceController { } const data = request.all(); - const { id } = params; + const { + id, + } = params; // Update data in database - await Workspace.query() - .where('workspaceId', id) - .update({ - name: data.name, - services: JSON.stringify(data.services), - }); + await (Workspace.query() + .where('workspaceId', id)).update({ + name: data.name, + services: JSON.stringify(data.services), + }); // Get updated row - const workspace = (await Workspace.query().where('workspaceId', id).fetch()) - .rows[0]; + const workspace = (await Workspace.query() + .where('workspaceId', id).fetch()).rows[0]; return response.send({ id: workspace.workspaceId, @@ -104,10 +111,13 @@ class WorkspaceController { }); } - const { id } = params; + const { + id, + } = params; // Update data in database - await Workspace.query().where('workspaceId', id).delete(); + await (Workspace.query() + .where('workspaceId', id)).delete(); return response.send({ message: 'Successfully deleted workspace', @@ -115,7 +125,9 @@ class WorkspaceController { } // List all workspaces a user has created - async list({ response }) { + async list({ + response, + }) { const workspaces = (await Workspace.all()).rows; // Convert to array with all data Franz wants let workspacesArray = []; @@ -124,10 +136,7 @@ class WorkspaceController { id: workspace.workspaceId, name: workspace.name, order: workspace.order, - services: - typeof workspace.services === 'string' - ? JSON.parse(workspace.services) - : workspace.services, + services: typeof workspace.services === 'string' ? JSON.parse(workspace.services) : workspace.services, userId: 1, })); } diff --git a/src/lib/Tray.js b/src/lib/Tray.js index c629e212d..f5970f7e7 100644 --- a/src/lib/Tray.js +++ b/src/lib/Tray.js @@ -1,14 +1,8 @@ import { - app, - Menu, - nativeImage, - nativeTheme, - systemPreferences, - Tray, - ipcMain, + app, Menu, nativeImage, nativeTheme, systemPreferences, Tray, ipcMain, } from 'electron'; import { join } from 'path'; -import { isMacOSVersionGreaterThanOrEqualTo } from 'macos-version'; +import macosVersion from 'macos-version'; import { isMac, isWindows, isLinux } from '../environment'; const FILE_EXTENSION = isWindows ? 'ico' : 'png'; @@ -70,9 +64,7 @@ export default class TrayIcon { if (appSettings.type === 'app') { const { isAppMuted } = appSettings.data; - this.trayMenuTemplate[1].label = isAppMuted - ? 'Enable Notifications && Audio' - : 'Disable Notifications && Audio'; + this.trayMenuTemplate[1].label = isAppMuted ? 'Enable Notifications && Audio' : 'Disable Notifications && Audio'; this.trayMenu = Menu.buildFromTemplate(this.trayMenuTemplate); if (isLinux) { this.trayIcon.setContextMenu(this.trayMenu); @@ -115,12 +107,9 @@ export default class TrayIcon { } if (isMac) { - this.themeChangeSubscriberId = systemPreferences.subscribeNotification( - 'AppleInterfaceThemeChangedNotification', - () => { - this._refreshIcon(); - }, - ); + this.themeChangeSubscriberId = systemPreferences.subscribeNotification('AppleInterfaceThemeChangedNotification', () => { + this._refreshIcon(); + }); } } @@ -160,8 +149,7 @@ export default class TrayIcon { _getAssetFromIndicator(indicator) { if (indicator === '•') { return INDICATOR_TRAY_INDIRECT; - } - if (indicator !== 0) { + } if (indicator !== 0) { return INDICATOR_TRAY_UNREAD; } return INDICATOR_TRAY_PLAIN; @@ -170,16 +158,11 @@ export default class TrayIcon { _refreshIcon() { if (!this.trayIcon) return; - this.trayIcon.setImage( - this._getAsset('tray', this._getAssetFromIndicator(this.indicator)), - ); + this.trayIcon.setImage(this._getAsset('tray', this._getAssetFromIndicator(this.indicator))); if (isMac) { this.trayIcon.setPressedImage( - this._getAsset( - 'tray', - `${this._getAssetFromIndicator(this.indicator)}-active`, - ), + this._getAsset('tray', `${this._getAssetFromIndicator(this.indicator)}-active`), ); } } @@ -187,24 +170,12 @@ export default class TrayIcon { _getAsset(type, asset) { let { platform } = process; - if ( - isMac && - (nativeTheme.shouldUseDarkColors || - isMacOSVersionGreaterThanOrEqualTo('11')) - ) { + if (isMac && (nativeTheme.shouldUseDarkColors || macosVersion.isGreaterThanOrEqualTo('11'))) { platform = `${platform}-dark`; } - return nativeImage.createFromPath( - join( - __dirname, - '..', - 'assets', - 'images', - type, - platform, - `${asset}.${FILE_EXTENSION}`, - ), - ); + return nativeImage.createFromPath(join( + __dirname, '..', 'assets', 'images', type, platform, `${asset}.${FILE_EXTENSION}`, + )); } } diff --git a/src/webview/notifications.js b/src/webview/notifications.js index 73cdb89d4..205a3220c 100644 --- a/src/webview/notifications.js +++ b/src/webview/notifications.js @@ -1,25 +1,22 @@ import { ipcRenderer } from 'electron'; -import { v1 as uuidV1 } from 'uuid'; +import uuidV1 from 'uuid/v1'; const debug = require('debug')('Ferdi:Notifications'); export class NotificationsHandler { - onNotify = data => data; + onNotify = (data) => data; displayNotification(title, options) { - return new Promise(resolve => { + return new Promise((resolve) => { debug('New notification', title, options); const notificationId = uuidV1(); - ipcRenderer.sendToHost( - 'notification', - this.onNotify({ - title, - options, - notificationId, - }), - ); + ipcRenderer.sendToHost('notification', this.onNotify({ + title, + options, + notificationId, + })); ipcRenderer.once(`notification-onclick:${notificationId}`, () => { resolve(); diff --git a/uidev/src/stories/input.stories.tsx b/uidev/src/stories/input.stories.tsx index 4136cfd4d..889539266 100644 --- a/uidev/src/stories/input.stories.tsx +++ b/uidev/src/stories/input.stories.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { v4 as uuid } from 'uuid'; +import uuid from 'uuid/v4'; import { Input } from '@meetfranz/forms'; import { storiesOf } from '../stores/stories'; @@ -10,8 +10,7 @@ const defaultProps = () => { label: 'Label', id: `test-${id}`, name: `test-${id}`, - onChange: (e: React.ChangeEvent) => - console.log('changed event', e), + onChange: (e: React.ChangeEvent) => console.log('changed event', e), }; }; @@ -22,23 +21,44 @@ const defaultPasswordProps = () => { id: `test-${id}`, name: `test-${id}`, type: 'password', - onChange: (e: React.ChangeEvent) => - console.log('changed event', e), + onChange: (e: React.ChangeEvent) => console.log('changed event', e), }; }; storiesOf('Input') .add('Basic', () => ( - + + )) + .add('Without Label', () => ( + + )) + .add('Disabled', () => ( + + )) + .add('With prefix', () => ( + )) - .add('Without Label', () => ) - .add('Disabled', () => ) - .add('With prefix', () => ) .add('With suffix', () => ( - + )) .add('With pre-suffix', () => ( - + )) .add('With error', () => ( )) .add('Type number with min & max', () => ( - + )); storiesOf('Password') - .add('Basic', () => ) + .add('Basic', () => ( + + )) .add('Show password toggle', () => ( - + )) .add('Score password', () => ( - + )) .add('Score password with error', () => ( { }, actionText: 'Select country', // defaultValue: 'AT', - onChange: (e: React.ChangeEvent) => - console.log('changed event', e), + onChange: (e: React.ChangeEvent) => console.log('changed event', e), }; }; storiesOf('Select') - .add('Basic', () => + )) .add('With preselection', () => ( - + )) + .add('With search', () => ( + )) - .add('With search', () => ) .add('With error', () => (