From eb15764395c58c094e2a4c0c9ff23eada09cb44e Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Thu, 31 May 2018 09:08:09 -0400 Subject: [PATCH] replace electron store with lowdb --- jslib | 2 +- package-lock.json | 81 +++++++++++++++++++++----------------- package.json | 2 +- src/app/services.module.ts | 6 ++- src/main.ts | 7 ++-- src/package.json | 4 +- 6 files changed, 57 insertions(+), 45 deletions(-) diff --git a/jslib b/jslib index 98e2e611..f618c0b5 160000 --- a/jslib +++ b/jslib @@ -1 +1 @@ -Subproject commit 98e2e611f8407b9c16735bafabf07eb6cd91ca53 +Subproject commit f618c0b5ee7bcf3cc351721611fabf57dd785211 diff --git a/package-lock.json b/package-lock.json index a1047629..f7556fbd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1746,18 +1746,6 @@ } } }, - "conf": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/conf/-/conf-1.4.0.tgz", - "integrity": "sha512-bzlVWS2THbMetHqXKB8ypsXN4DQ/1qopGwNJi1eYbpwesJcd86FBjFciCQX/YwAhp9bM7NVnPFqZ5LpV7gP0Dg==", - "requires": { - "dot-prop": "4.2.0", - "env-paths": "1.0.0", - "make-dir": "1.1.0", - "pkg-up": "2.0.0", - "write-file-atomic": "2.3.0" - } - }, "configstore": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", @@ -2515,6 +2503,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, "requires": { "is-obj": "1.0.1" } @@ -3216,14 +3205,6 @@ "chokidar": "1.7.0" } }, - "electron-store": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-1.3.0.tgz", - "integrity": "sha512-r1Pdl5MwpiCxgbsl0qnwv/GABO5+J/JTO16+KyqL+bOITIk9o3cq3Sw69uO9NgPkpfcKeEwxtJFbtbiBlGTiDA==", - "requires": { - "conf": "1.4.0" - } - }, "electron-to-chromium": { "version": "1.3.30", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz", @@ -3352,7 +3333,8 @@ "env-paths": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", - "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=" + "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=", + "dev": true }, "errno": { "version": "0.1.6", @@ -3733,6 +3715,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, "requires": { "locate-path": "2.0.0" } @@ -5443,7 +5426,8 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true }, "in-publish": { "version": "2.0.0", @@ -5698,7 +5682,8 @@ "is-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true }, "is-odd": { "version": "1.0.0", @@ -5764,6 +5749,11 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, "is-property": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", @@ -6039,6 +6029,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, "requires": { "p-locate": "2.0.0", "path-exists": "3.0.0" @@ -6047,8 +6038,7 @@ "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" }, "lodash.assign": { "version": "4.2.0", @@ -6159,6 +6149,18 @@ "signal-exit": "3.0.2" } }, + "lowdb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowdb/-/lowdb-1.0.0.tgz", + "integrity": "sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ==", + "requires": { + "graceful-fs": "4.1.11", + "is-promise": "2.1.0", + "lodash": "4.17.4", + "pify": "3.0.0", + "steno": "0.4.4" + } + }, "lower-case": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", @@ -6205,6 +6207,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", + "dev": true, "requires": { "pify": "3.0.0" } @@ -7169,6 +7172,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "dev": true, "requires": { "p-try": "1.0.0" } @@ -7177,6 +7181,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, "requires": { "p-limit": "1.2.0" } @@ -7184,7 +7189,8 @@ "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true }, "package-json": { "version": "4.0.1", @@ -7312,7 +7318,8 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -7401,14 +7408,6 @@ "find-up": "2.1.0" } }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "requires": { - "find-up": "2.1.0" - } - }, "plist": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", @@ -9043,7 +9042,8 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true }, "single-line-log": { "version": "1.1.2", @@ -9433,6 +9433,14 @@ "readable-stream": "2.3.3" } }, + "steno": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/steno/-/steno-0.4.4.tgz", + "integrity": "sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs=", + "requires": { + "graceful-fs": "4.1.11" + } + }, "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", @@ -11103,6 +11111,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, "requires": { "graceful-fs": "4.1.11", "imurmurhash": "0.1.4", diff --git a/package.json b/package.json index da3a0d8e..475860dc 100644 --- a/package.json +++ b/package.json @@ -239,9 +239,9 @@ "core-js": "2.4.1", "desktop-idle": "1.1.1", "electron-log": "2.2.14", - "electron-store": "1.3.0", "electron-updater": "2.21.4", "keytar": "4.1.0", + "lowdb": "1.0.0", "lunr": "2.1.6", "node-forge": "0.7.1", "papaparse": "4.3.5", diff --git a/src/app/services.module.ts b/src/app/services.module.ts index 65c19a29..4dd41e90 100644 --- a/src/app/services.module.ts +++ b/src/app/services.module.ts @@ -1,3 +1,5 @@ +import { remote } from 'electron'; + import { APP_INITIALIZER, NgModule, @@ -9,7 +11,6 @@ import { ElectronLogService } from 'jslib/electron/services/electronLog.service' import { ElectronPlatformUtilsService } from 'jslib/electron/services/electronPlatformUtils.service'; import { ElectronRendererMessagingService } from 'jslib/electron/services/electronRendererMessaging.service'; import { ElectronRendererSecureStorageService } from 'jslib/electron/services/electronRendererSecureStorage.service'; -import { ElectronStorageService } from 'jslib/electron/services/electronStorage.service'; import { isDev } from 'jslib/electron/utils'; import { I18nService } from '../services/i18n.service'; @@ -33,6 +34,7 @@ import { EnvironmentService } from 'jslib/services/environment.service'; import { ExportService } from 'jslib/services/export.service'; import { FolderService } from 'jslib/services/folder.service'; import { LockService } from 'jslib/services/lock.service'; +import { LowdbStorageService } from 'jslib/services/lowdbStorage.service'; import { PasswordGenerationService } from 'jslib/services/passwordGeneration.service'; import { SettingsService } from 'jslib/services/settings.service'; import { StateService } from 'jslib/services/state.service'; @@ -75,7 +77,7 @@ const stateService = new StateService(); const platformUtilsService = new ElectronPlatformUtilsService(i18nService, true); const broadcasterService = new BroadcasterService(); const messagingService = new ElectronRendererMessagingService(broadcasterService); -const storageService: StorageServiceAbstraction = new ElectronStorageService(); +const storageService: StorageServiceAbstraction = new LowdbStorageService(null, remote.app.getPath('userData')); const secureStorageService: StorageServiceAbstraction = new ElectronRendererSecureStorageService(); const cryptoFunctionService: CryptoFunctionServiceAbstraction = new WebCryptoFunctionService(window, platformUtilsService); diff --git a/src/main.ts b/src/main.ts index db98c5e7..cad95dd7 100644 --- a/src/main.ts +++ b/src/main.ts @@ -12,11 +12,11 @@ import { MessagingMain } from './main/messaging.main'; import { PowerMonitorMain } from './main/powerMonitor.main'; import { ConstantsService } from 'jslib/services/constants.service'; +import { LowdbStorageService } from 'jslib/services/lowdbStorage.service'; import { KeytarStorageListener } from 'jslib/electron/keytarStorageListener'; import { ElectronLogService } from 'jslib/electron/services/electronLog.service'; import { ElectronMainMessagingService } from 'jslib/electron/services/electronMainMessaging.service'; -import { ElectronStorageService } from 'jslib/electron/services/electronStorage.service'; import { TrayMain } from 'jslib/electron/tray.main'; import { UpdaterMain } from 'jslib/electron/updater.main'; import { WindowMain } from 'jslib/electron/window.main'; @@ -24,7 +24,7 @@ import { WindowMain } from 'jslib/electron/window.main'; export class Main { logService: ElectronLogService; i18nService: I18nService; - storageService: ElectronStorageService; + storageService: LowdbStorageService; messagingService: ElectronMainMessagingService; keytarStorageListener: KeytarStorageListener; @@ -65,7 +65,7 @@ export class Main { const storageDefaults: any = {}; // Default lock options to "on restart". storageDefaults[ConstantsService.lockOptionKey] = -1; - this.storageService = new ElectronStorageService(storageDefaults); + this.storageService = new LowdbStorageService(storageDefaults, app.getPath('userData')); this.windowMain = new WindowMain(this.storageService); this.messagingMain = new MessagingMain(this); @@ -88,6 +88,7 @@ export class Main { } bootstrap() { + this.storageService.init(); this.keytarStorageListener.init(); this.windowMain.init().then(async () => { const locale = await this.storageService.get(ConstantsService.localeKey); diff --git a/src/package.json b/src/package.json index 56ae9853..314e81fc 100644 --- a/src/package.json +++ b/src/package.json @@ -14,8 +14,8 @@ "dependencies": { "desktop-idle": "1.1.1", "electron-log": "2.2.14", - "electron-store": "1.3.0", "electron-updater": "2.21.4", - "keytar": "4.1.0" + "keytar": "4.1.0", + "lowdb": "1.0.0" } }