Add eslint (#1369)
This commit is contained in:
parent
233f876bbb
commit
3aa52a5537
|
@ -0,0 +1,8 @@
|
||||||
|
dist
|
||||||
|
build
|
||||||
|
jslib
|
||||||
|
webpack.main.js
|
||||||
|
webpack.renderer.js
|
||||||
|
src/scripts/duo.js
|
||||||
|
|
||||||
|
**/node_modules
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
"root": true,
|
||||||
|
"env": {
|
||||||
|
"browser": true,
|
||||||
|
"node": true
|
||||||
|
},
|
||||||
|
"extends": ["./jslib/shared/eslintrc.json"],
|
||||||
|
"rules": {
|
||||||
|
"import/order": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
"alphabetize": {
|
||||||
|
"order": "asc"
|
||||||
|
},
|
||||||
|
"newlines-between": "always",
|
||||||
|
"pathGroups": [
|
||||||
|
{
|
||||||
|
"pattern": "jslib-*/**",
|
||||||
|
"group": "external",
|
||||||
|
"position": "after"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pattern": "src/**/*",
|
||||||
|
"group": "parent",
|
||||||
|
"position": "before"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pathGroupsExcludedImportTypes": ["builtin"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
15
package.json
15
package.json
|
@ -26,8 +26,8 @@
|
||||||
"symlink:win": "rm -rf ./jslib && cmd /c mklink /J .\\jslib ..\\jslib",
|
"symlink:win": "rm -rf ./jslib && cmd /c mklink /J .\\jslib ..\\jslib",
|
||||||
"symlink:mac": "npm run symlink:lin",
|
"symlink:mac": "npm run symlink:lin",
|
||||||
"symlink:lin": "rm -rf ./jslib && ln -s ../jslib ./jslib",
|
"symlink:lin": "rm -rf ./jslib && ln -s ../jslib ./jslib",
|
||||||
"lint": "tslint 'src/**/*.ts' && prettier --check .",
|
"lint": "eslint . && prettier --check .",
|
||||||
"lint:fix": "tslint 'src/**/*.ts' --fix",
|
"lint:fix": "eslint . --fix",
|
||||||
"build": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main\" \"npm run build:renderer\"",
|
"build": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main\" \"npm run build:renderer\"",
|
||||||
"build:dev": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main:dev\" \"npm run build:renderer:dev\"",
|
"build:dev": "concurrently -n Main,Rend -c yellow,cyan \"npm run build:main:dev\" \"npm run build:renderer:dev\"",
|
||||||
"build:main": "cross-env NODE_ENV=production webpack --config webpack.main.js",
|
"build:main": "cross-env NODE_ENV=production webpack --config webpack.main.js",
|
||||||
|
@ -257,6 +257,8 @@
|
||||||
"@ngtools/webpack": "^12.2.13",
|
"@ngtools/webpack": "^12.2.13",
|
||||||
"@types/node": "^16.11.12",
|
"@types/node": "^16.11.12",
|
||||||
"@types/node-ipc": "^9.1.4",
|
"@types/node-ipc": "^9.1.4",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.12.1",
|
||||||
|
"@typescript-eslint/parser": "^5.12.1",
|
||||||
"clean-webpack-plugin": "^4.0.0",
|
"clean-webpack-plugin": "^4.0.0",
|
||||||
"concurrently": "^6.0.2",
|
"concurrently": "^6.0.2",
|
||||||
"copy-webpack-plugin": "^10.0.0",
|
"copy-webpack-plugin": "^10.0.0",
|
||||||
|
@ -266,6 +268,10 @@
|
||||||
"electron-notarize": "^1.1.1",
|
"electron-notarize": "^1.1.1",
|
||||||
"electron-rebuild": "^3.2.5",
|
"electron-rebuild": "^3.2.5",
|
||||||
"electron-reload": "^1.5.0",
|
"electron-reload": "^1.5.0",
|
||||||
|
"eslint": "^8.9.0",
|
||||||
|
"eslint-config-prettier": "^8.4.0",
|
||||||
|
"eslint-import-resolver-typescript": "^2.5.0",
|
||||||
|
"eslint-plugin-import": "^2.25.4",
|
||||||
"html-loader": "^3.0.1",
|
"html-loader": "^3.0.1",
|
||||||
"html-webpack-plugin": "^5.5.0",
|
"html-webpack-plugin": "^5.5.0",
|
||||||
"husky": "^7.0.4",
|
"husky": "^7.0.4",
|
||||||
|
@ -279,8 +285,6 @@
|
||||||
"tapable": "^1.1.3",
|
"tapable": "^1.1.3",
|
||||||
"ts-loader": "^9.2.5",
|
"ts-loader": "^9.2.5",
|
||||||
"tsconfig-paths-webpack-plugin": "^3.5.1",
|
"tsconfig-paths-webpack-plugin": "^3.5.1",
|
||||||
"tslint": "~6.1.0",
|
|
||||||
"tslint-loader": "^3.5.4",
|
|
||||||
"typescript": "4.3.5",
|
"typescript": "4.3.5",
|
||||||
"webpack": "^5.64.4",
|
"webpack": "^5.64.4",
|
||||||
"webpack-cli": "^4.9.1",
|
"webpack-cli": "^4.9.1",
|
||||||
|
@ -311,6 +315,7 @@
|
||||||
"npm": "~8"
|
"npm": "~8"
|
||||||
},
|
},
|
||||||
"lint-staged": {
|
"lint-staged": {
|
||||||
"./!(jslib)**": "prettier --ignore-unknown --write"
|
"./!(jslib)**": "prettier --ignore-unknown --write",
|
||||||
|
"*.ts": "eslint --fix"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
|
/* eslint-disable @typescript-eslint/no-var-requires, no-console */
|
||||||
require("dotenv").config();
|
require("dotenv").config();
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const fse = require("fs-extra");
|
|
||||||
const { notarize } = require("electron-notarize");
|
|
||||||
const { deepAssign } = require("builder-util");
|
const { deepAssign } = require("builder-util");
|
||||||
|
const { notarize } = require("electron-notarize");
|
||||||
|
const fse = require("fs-extra");
|
||||||
|
|
||||||
exports.default = run;
|
exports.default = run;
|
||||||
|
|
||||||
|
|
2
sign.js
2
sign.js
|
@ -1,3 +1,5 @@
|
||||||
|
/* eslint-disable @typescript-eslint/no-var-requires, no-console */
|
||||||
|
|
||||||
exports.default = async function (configuration) {
|
exports.default = async function (configuration) {
|
||||||
if (parseInt(process.env.ELECTRON_BUILDER_SIGN) === 1 && configuration.path.slice(-4) == ".exe") {
|
if (parseInt(process.env.ELECTRON_BUILDER_SIGN) === 1 && configuration.path.slice(-4) == ".exe") {
|
||||||
console.log(`[*] Signing file: ${configuration.path}`);
|
console.log(`[*] Signing file: ${configuration.path}`);
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { EnvironmentComponent as BaseEnvironmentComponent } from "jslib-angular/components/environment.component";
|
||||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
|
|
||||||
import { EnvironmentComponent as BaseEnvironmentComponent } from "jslib-angular/components/environment.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-environment",
|
selector: "app-environment",
|
||||||
templateUrl: "environment.component.html",
|
templateUrl: "environment.component.html",
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
import { Router } from "@angular/router";
|
import { Router } from "@angular/router";
|
||||||
|
|
||||||
|
import { HintComponent as BaseHintComponent } from "jslib-angular/components/hint.component";
|
||||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { LogService } from "jslib-common/abstractions/log.service";
|
import { LogService } from "jslib-common/abstractions/log.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
|
|
||||||
import { HintComponent as BaseHintComponent } from "jslib-angular/components/hint.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-hint",
|
selector: "app-hint",
|
||||||
templateUrl: "hint.component.html",
|
templateUrl: "hint.component.html",
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { Component, NgZone, OnDestroy } from "@angular/core";
|
||||||
import { ActivatedRoute, Router } from "@angular/router";
|
import { ActivatedRoute, Router } from "@angular/router";
|
||||||
import { ipcRenderer } from "electron";
|
import { ipcRenderer } from "electron";
|
||||||
|
|
||||||
|
import { LockComponent as BaseLockComponent } from "jslib-angular/components/lock.component";
|
||||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||||
|
@ -14,8 +15,6 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||||
|
|
||||||
import { LockComponent as BaseLockComponent } from "jslib-angular/components/lock.component";
|
|
||||||
|
|
||||||
const BroadcasterSubscriptionId = "LockComponent";
|
const BroadcasterSubscriptionId = "LockComponent";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
import { Component, NgZone, OnDestroy, ViewChild, ViewContainerRef } from "@angular/core";
|
import { Component, NgZone, OnDestroy, ViewChild, ViewContainerRef } from "@angular/core";
|
||||||
|
|
||||||
import { Router } from "@angular/router";
|
import { Router } from "@angular/router";
|
||||||
|
|
||||||
import { EnvironmentComponent } from "./environment.component";
|
import { LoginComponent as BaseLoginComponent } from "jslib-angular/components/login.component";
|
||||||
|
import { ModalService } from "jslib-angular/services/modal.service";
|
||||||
import { AuthService } from "jslib-common/abstractions/auth.service";
|
import { AuthService } from "jslib-common/abstractions/auth.service";
|
||||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||||
import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service";
|
import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service";
|
||||||
|
@ -16,9 +15,7 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||||
|
|
||||||
import { ModalService } from "jslib-angular/services/modal.service";
|
import { EnvironmentComponent } from "./environment.component";
|
||||||
|
|
||||||
import { LoginComponent as BaseLoginComponent } from "jslib-angular/components/login.component";
|
|
||||||
|
|
||||||
const BroadcasterSubscriptionId = "LoginComponent";
|
const BroadcasterSubscriptionId = "LoginComponent";
|
||||||
|
|
||||||
|
@ -32,7 +29,7 @@ export class LoginComponent extends BaseLoginComponent implements OnDestroy {
|
||||||
|
|
||||||
showingModal = false;
|
showingModal = false;
|
||||||
|
|
||||||
protected alwaysRememberEmail: boolean = true;
|
protected alwaysRememberEmail = true;
|
||||||
|
|
||||||
private deferFocus: boolean = null;
|
private deferFocus: boolean = null;
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { PremiumComponent as BasePremiumComponent } from "jslib-angular/components/premium.component";
|
||||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { LogService } from "jslib-common/abstractions/log.service";
|
import { LogService } from "jslib-common/abstractions/log.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
|
|
||||||
import { PremiumComponent as BasePremiumComponent } from "jslib-angular/components/premium.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-premium",
|
selector: "app-premium",
|
||||||
templateUrl: "premium.component.html",
|
templateUrl: "premium.component.html",
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { Component, NgZone, OnDestroy, OnInit } from "@angular/core";
|
import { Component, NgZone, OnDestroy, OnInit } from "@angular/core";
|
||||||
import { Router } from "@angular/router";
|
import { Router } from "@angular/router";
|
||||||
|
|
||||||
|
import { RegisterComponent as BaseRegisterComponent } from "jslib-angular/components/register.component";
|
||||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||||
import { AuthService } from "jslib-common/abstractions/auth.service";
|
import { AuthService } from "jslib-common/abstractions/auth.service";
|
||||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||||
|
@ -12,8 +13,6 @@ import { PasswordGenerationService } from "jslib-common/abstractions/passwordGen
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
|
|
||||||
import { RegisterComponent as BaseRegisterComponent } from "jslib-angular/components/register.component";
|
|
||||||
|
|
||||||
const BroadcasterSubscriptionId = "RegisterComponent";
|
const BroadcasterSubscriptionId = "RegisterComponent";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Component, NgZone, OnDestroy } from "@angular/core";
|
import { Component, NgZone, OnDestroy } from "@angular/core";
|
||||||
|
|
||||||
import { ActivatedRoute, Router } from "@angular/router";
|
import { ActivatedRoute, Router } from "@angular/router";
|
||||||
|
|
||||||
|
import { SetPasswordComponent as BaseSetPasswordComponent } from "jslib-angular/components/set-password.component";
|
||||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||||
|
@ -15,8 +15,6 @@ import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||||
|
|
||||||
const BroadcasterSubscriptionId = "SetPasswordComponent";
|
const BroadcasterSubscriptionId = "SetPasswordComponent";
|
||||||
|
|
||||||
import { SetPasswordComponent as BaseSetPasswordComponent } from "jslib-angular/components/set-password.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-set-password",
|
selector: "app-set-password",
|
||||||
templateUrl: "set-password.component.html",
|
templateUrl: "set-password.component.html",
|
||||||
|
|
|
@ -2,24 +2,20 @@ import { Component, OnInit } from "@angular/core";
|
||||||
import { FormControl } from "@angular/forms";
|
import { FormControl } from "@angular/forms";
|
||||||
import { debounceTime } from "rxjs/operators";
|
import { debounceTime } from "rxjs/operators";
|
||||||
|
|
||||||
import { DeviceType } from "jslib-common/enums/deviceType";
|
import { ModalService } from "jslib-angular/services/modal.service";
|
||||||
import { ThemeType } from "jslib-common/enums/themeType";
|
|
||||||
|
|
||||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||||
|
import { DeviceType } from "jslib-common/enums/deviceType";
|
||||||
import { ModalService } from "jslib-angular/services/modal.service";
|
import { StorageLocation } from "jslib-common/enums/storageLocation";
|
||||||
|
import { ThemeType } from "jslib-common/enums/themeType";
|
||||||
import { SetPinComponent } from "../components/set-pin.component";
|
|
||||||
|
|
||||||
import { Utils } from "jslib-common/misc/utils";
|
import { Utils } from "jslib-common/misc/utils";
|
||||||
import { isWindowsStore } from "jslib-electron/utils";
|
import { isWindowsStore } from "jslib-electron/utils";
|
||||||
|
|
||||||
import { StorageLocation } from "jslib-common/enums/storageLocation";
|
import { SetPinComponent } from "../components/set-pin.component";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-settings",
|
selector: "app-settings",
|
||||||
|
@ -28,15 +24,15 @@ import { StorageLocation } from "jslib-common/enums/storageLocation";
|
||||||
export class SettingsComponent implements OnInit {
|
export class SettingsComponent implements OnInit {
|
||||||
vaultTimeoutAction: string;
|
vaultTimeoutAction: string;
|
||||||
pin: boolean = null;
|
pin: boolean = null;
|
||||||
disableFavicons: boolean = false;
|
disableFavicons = false;
|
||||||
enableBrowserIntegration: boolean = false;
|
enableBrowserIntegration = false;
|
||||||
enableBrowserIntegrationFingerprint: boolean = false;
|
enableBrowserIntegrationFingerprint = false;
|
||||||
enableMinToTray: boolean = false;
|
enableMinToTray = false;
|
||||||
enableCloseToTray: boolean = false;
|
enableCloseToTray = false;
|
||||||
enableTray: boolean = false;
|
enableTray = false;
|
||||||
showMinToTray: boolean = false;
|
showMinToTray = false;
|
||||||
startToTray: boolean = false;
|
startToTray = false;
|
||||||
minimizeOnCopyToClipboard: boolean = false;
|
minimizeOnCopyToClipboard = false;
|
||||||
locale: string;
|
locale: string;
|
||||||
vaultTimeouts: any[];
|
vaultTimeouts: any[];
|
||||||
localeOptions: any[];
|
localeOptions: any[];
|
||||||
|
@ -50,9 +46,9 @@ export class SettingsComponent implements OnInit {
|
||||||
noAutoPromptBiometrics: boolean;
|
noAutoPromptBiometrics: boolean;
|
||||||
noAutoPromptBiometricsText: string;
|
noAutoPromptBiometricsText: string;
|
||||||
alwaysShowDock: boolean;
|
alwaysShowDock: boolean;
|
||||||
showAlwaysShowDock: boolean = false;
|
showAlwaysShowDock = false;
|
||||||
openAtLogin: boolean;
|
openAtLogin: boolean;
|
||||||
requireEnableTray: boolean = false;
|
requireEnableTray = false;
|
||||||
|
|
||||||
enableTrayText: string;
|
enableTrayText: string;
|
||||||
enableTrayDescText: string;
|
enableTrayDescText: string;
|
||||||
|
@ -65,9 +61,9 @@ export class SettingsComponent implements OnInit {
|
||||||
|
|
||||||
vaultTimeout: FormControl = new FormControl(null);
|
vaultTimeout: FormControl = new FormControl(null);
|
||||||
|
|
||||||
showSecurity: boolean = true;
|
showSecurity = true;
|
||||||
showAccountPreferences: boolean = true;
|
showAccountPreferences = true;
|
||||||
showAppPreferences: boolean = true;
|
showAppPreferences = true;
|
||||||
|
|
||||||
currentUserEmail: string;
|
currentUserEmail: string;
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
import { ActivatedRoute, Router } from "@angular/router";
|
import { ActivatedRoute, Router } from "@angular/router";
|
||||||
|
|
||||||
|
import { SsoComponent as BaseSsoComponent } from "jslib-angular/components/sso.component";
|
||||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||||
import { AuthService } from "jslib-common/abstractions/auth.service";
|
import { AuthService } from "jslib-common/abstractions/auth.service";
|
||||||
import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service";
|
import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service";
|
||||||
|
@ -13,8 +13,6 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||||
|
|
||||||
import { SsoComponent as BaseSsoComponent } from "jslib-angular/components/sso.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-sso",
|
selector: "app-sso",
|
||||||
templateUrl: "sso.component.html",
|
templateUrl: "sso.component.html",
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
import { Router } from "@angular/router";
|
import { Router } from "@angular/router";
|
||||||
|
|
||||||
|
import { TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent } from "jslib-angular/components/two-factor-options.component";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service";
|
import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service";
|
||||||
|
|
||||||
import { TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent } from "jslib-angular/components/two-factor-options.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-two-factor-options",
|
selector: "app-two-factor-options",
|
||||||
templateUrl: "two-factor-options.component.html",
|
templateUrl: "two-factor-options.component.html",
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
import { Component, ViewChild, ViewContainerRef } from "@angular/core";
|
import { Component, ViewChild, ViewContainerRef } from "@angular/core";
|
||||||
|
|
||||||
import { ActivatedRoute, Router } from "@angular/router";
|
import { ActivatedRoute, Router } from "@angular/router";
|
||||||
|
|
||||||
import { TwoFactorOptionsComponent } from "./two-factor-options.component";
|
import { TwoFactorComponent as BaseTwoFactorComponent } from "jslib-angular/components/two-factor.component";
|
||||||
|
import { ModalService } from "jslib-angular/services/modal.service";
|
||||||
import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType";
|
|
||||||
|
|
||||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||||
import { AuthService } from "jslib-common/abstractions/auth.service";
|
import { AuthService } from "jslib-common/abstractions/auth.service";
|
||||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||||
|
@ -15,10 +12,9 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||||
import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service";
|
import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service";
|
||||||
|
import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType";
|
||||||
|
|
||||||
import { ModalService } from "jslib-angular/services/modal.service";
|
import { TwoFactorOptionsComponent } from "./two-factor-options.component";
|
||||||
|
|
||||||
import { TwoFactorComponent as BaseTwoFactorComponent } from "jslib-angular/components/two-factor.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-two-factor",
|
selector: "app-two-factor",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from "jslib-angular/components/update-temp-password.component";
|
||||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
|
@ -11,8 +12,6 @@ import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||||
|
|
||||||
import { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from "jslib-angular/components/update-temp-password.component";
|
|
||||||
|
|
||||||
interface MasterPasswordScore {
|
interface MasterPasswordScore {
|
||||||
Color: string;
|
Color: string;
|
||||||
Text: string;
|
Text: string;
|
||||||
|
|
|
@ -3,6 +3,7 @@ import { RouterModule, Routes } from "@angular/router";
|
||||||
|
|
||||||
import { AuthGuardService } from "jslib-angular/services/auth-guard.service";
|
import { AuthGuardService } from "jslib-angular/services/auth-guard.service";
|
||||||
import { LockGuardService } from "jslib-angular/services/lock-guard.service";
|
import { LockGuardService } from "jslib-angular/services/lock-guard.service";
|
||||||
|
|
||||||
import { LoginGuardService } from "../services/loginGuard.service";
|
import { LoginGuardService } from "../services/loginGuard.service";
|
||||||
|
|
||||||
import { HintComponent } from "./accounts/hint.component";
|
import { HintComponent } from "./accounts/hint.component";
|
||||||
|
@ -14,9 +15,7 @@ import { SetPasswordComponent } from "./accounts/set-password.component";
|
||||||
import { SsoComponent } from "./accounts/sso.component";
|
import { SsoComponent } from "./accounts/sso.component";
|
||||||
import { TwoFactorComponent } from "./accounts/two-factor.component";
|
import { TwoFactorComponent } from "./accounts/two-factor.component";
|
||||||
import { UpdateTempPasswordComponent } from "./accounts/update-temp-password.component";
|
import { UpdateTempPasswordComponent } from "./accounts/update-temp-password.component";
|
||||||
|
|
||||||
import { SendComponent } from "./send/send.component";
|
import { SendComponent } from "./send/send.component";
|
||||||
|
|
||||||
import { VaultComponent } from "./vault/vault.component";
|
import { VaultComponent } from "./vault/vault.component";
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
|
|
|
@ -11,10 +11,8 @@ import { DomSanitizer } from "@angular/platform-browser";
|
||||||
import { Router } from "@angular/router";
|
import { Router } from "@angular/router";
|
||||||
import { IndividualConfig, ToastrService } from "ngx-toastr";
|
import { IndividualConfig, ToastrService } from "ngx-toastr";
|
||||||
|
|
||||||
import { PremiumComponent } from "./accounts/premium.component";
|
import { ModalRef } from "jslib-angular/components/modal/modal.ref";
|
||||||
import { SettingsComponent } from "./accounts/settings.component";
|
import { ModalService } from "jslib-angular/services/modal.service";
|
||||||
import { PasswordGeneratorHistoryComponent } from "./vault/password-generator-history.component";
|
|
||||||
|
|
||||||
import { AuthService } from "jslib-common/abstractions/auth.service";
|
import { AuthService } from "jslib-common/abstractions/auth.service";
|
||||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||||
|
@ -37,18 +35,17 @@ import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||||
import { SystemService } from "jslib-common/abstractions/system.service";
|
import { SystemService } from "jslib-common/abstractions/system.service";
|
||||||
import { TokenService } from "jslib-common/abstractions/token.service";
|
import { TokenService } from "jslib-common/abstractions/token.service";
|
||||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||||
|
|
||||||
import { CipherType } from "jslib-common/enums/cipherType";
|
import { CipherType } from "jslib-common/enums/cipherType";
|
||||||
|
|
||||||
|
import { MenuUpdateRequest } from "src/main/menu.updater";
|
||||||
|
|
||||||
|
import { PremiumComponent } from "./accounts/premium.component";
|
||||||
|
import { SettingsComponent } from "./accounts/settings.component";
|
||||||
import { ExportComponent } from "./vault/export.component";
|
import { ExportComponent } from "./vault/export.component";
|
||||||
import { FolderAddEditComponent } from "./vault/folder-add-edit.component";
|
import { FolderAddEditComponent } from "./vault/folder-add-edit.component";
|
||||||
|
import { PasswordGeneratorHistoryComponent } from "./vault/password-generator-history.component";
|
||||||
import { PasswordGeneratorComponent } from "./vault/password-generator.component";
|
import { PasswordGeneratorComponent } from "./vault/password-generator.component";
|
||||||
|
|
||||||
import { ModalRef } from "jslib-angular/components/modal/modal.ref";
|
|
||||||
|
|
||||||
import { ModalService } from "jslib-angular/services/modal.service";
|
|
||||||
import { MenuUpdateRequest } from "src/main/menu.updater";
|
|
||||||
|
|
||||||
const BroadcasterSubscriptionId = "AppComponent";
|
const BroadcasterSubscriptionId = "AppComponent";
|
||||||
const IdleTimeout = 60000 * 10; // 10 minutes
|
const IdleTimeout = 60000 * 10; // 10 minutes
|
||||||
const SyncInterval = 6 * 60 * 60 * 1000; // 6 hours
|
const SyncInterval = 6 * 60 * 60 * 1000; // 6 hours
|
||||||
|
@ -208,7 +205,7 @@ export class AppComponent implements OnInit {
|
||||||
case "openPremium":
|
case "openPremium":
|
||||||
await this.openModal<PremiumComponent>(PremiumComponent, this.premiumRef);
|
await this.openModal<PremiumComponent>(PremiumComponent, this.premiumRef);
|
||||||
break;
|
break;
|
||||||
case "showFingerprintPhrase":
|
case "showFingerprintPhrase": {
|
||||||
const fingerprint = await this.cryptoService.getFingerprint(
|
const fingerprint = await this.cryptoService.getFingerprint(
|
||||||
await this.stateService.getUserId()
|
await this.stateService.getUserId()
|
||||||
);
|
);
|
||||||
|
@ -222,6 +219,7 @@ export class AppComponent implements OnInit {
|
||||||
this.platformUtilsService.launchUri("https://bitwarden.com/help/fingerprint-phrase/");
|
this.platformUtilsService.launchUri("https://bitwarden.com/help/fingerprint-phrase/");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case "openPasswordHistory":
|
case "openPasswordHistory":
|
||||||
await this.openModal<PasswordGeneratorHistoryComponent>(
|
await this.openModal<PasswordGeneratorHistoryComponent>(
|
||||||
PasswordGeneratorHistoryComponent,
|
PasswordGeneratorHistoryComponent,
|
||||||
|
@ -241,7 +239,7 @@ export class AppComponent implements OnInit {
|
||||||
queryParams: { code: message.code, state: message.state },
|
queryParams: { code: message.code, state: message.state },
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "premiumRequired":
|
case "premiumRequired": {
|
||||||
const premiumConfirmed = await this.platformUtilsService.showDialog(
|
const premiumConfirmed = await this.platformUtilsService.showDialog(
|
||||||
this.i18nService.t("premiumRequiredDesc"),
|
this.i18nService.t("premiumRequiredDesc"),
|
||||||
this.i18nService.t("premiumRequired"),
|
this.i18nService.t("premiumRequired"),
|
||||||
|
@ -252,7 +250,8 @@ export class AppComponent implements OnInit {
|
||||||
await this.openModal<PremiumComponent>(PremiumComponent, this.premiumRef);
|
await this.openModal<PremiumComponent>(PremiumComponent, this.premiumRef);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "emailVerificationRequired":
|
}
|
||||||
|
case "emailVerificationRequired": {
|
||||||
const emailVerificationConfirmed = await this.platformUtilsService.showDialog(
|
const emailVerificationConfirmed = await this.platformUtilsService.showDialog(
|
||||||
this.i18nService.t("emailVerificationRequiredDesc"),
|
this.i18nService.t("emailVerificationRequiredDesc"),
|
||||||
this.i18nService.t("emailVerificationRequired"),
|
this.i18nService.t("emailVerificationRequired"),
|
||||||
|
@ -265,6 +264,7 @@ export class AppComponent implements OnInit {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case "syncVault":
|
case "syncVault":
|
||||||
try {
|
try {
|
||||||
await this.syncService.fullSync(true, true);
|
await this.syncService.fullSync(true, true);
|
||||||
|
@ -326,7 +326,7 @@ export class AppComponent implements OnInit {
|
||||||
case "convertAccountToKeyConnector":
|
case "convertAccountToKeyConnector":
|
||||||
this.router.navigate(["/remove-password"]);
|
this.router.navigate(["/remove-password"]);
|
||||||
break;
|
break;
|
||||||
case "switchAccount":
|
case "switchAccount": {
|
||||||
if (message.userId != null) {
|
if (message.userId != null) {
|
||||||
await this.stateService.setActiveUser(message.userId);
|
await this.stateService.setActiveUser(message.userId);
|
||||||
}
|
}
|
||||||
|
@ -341,12 +341,16 @@ export class AppComponent implements OnInit {
|
||||||
this.router.navigate(["vault"]);
|
this.router.navigate(["vault"]);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case "systemSuspended":
|
case "systemSuspended":
|
||||||
await this.checkForSystemTimeout(systemTimeoutOptions.onSuspend);
|
await this.checkForSystemTimeout(systemTimeoutOptions.onSuspend);
|
||||||
|
break;
|
||||||
case "systemLocked":
|
case "systemLocked":
|
||||||
await this.checkForSystemTimeout(systemTimeoutOptions.onLock);
|
await this.checkForSystemTimeout(systemTimeoutOptions.onLock);
|
||||||
|
break;
|
||||||
case "systemIdle":
|
case "systemIdle":
|
||||||
await this.checkForSystemTimeout(systemTimeoutOptions.onIdle);
|
await this.checkForSystemTimeout(systemTimeoutOptions.onIdle);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,85 +4,7 @@ import { A11yModule } from "@angular/cdk/a11y";
|
||||||
import { DragDropModule } from "@angular/cdk/drag-drop";
|
import { DragDropModule } from "@angular/cdk/drag-drop";
|
||||||
import { OverlayModule } from "@angular/cdk/overlay";
|
import { OverlayModule } from "@angular/cdk/overlay";
|
||||||
import { ScrollingModule } from "@angular/cdk/scrolling";
|
import { ScrollingModule } from "@angular/cdk/scrolling";
|
||||||
import { DatePipe } from "@angular/common";
|
import { DatePipe, registerLocaleData } from "@angular/common";
|
||||||
import { NgModule } from "@angular/core";
|
|
||||||
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
||||||
import { BrowserModule } from "@angular/platform-browser";
|
|
||||||
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
|
|
||||||
import "zone.js/dist/zone";
|
|
||||||
|
|
||||||
import { AppRoutingModule } from "./app-routing.module";
|
|
||||||
import { ServicesModule } from "./services.module";
|
|
||||||
|
|
||||||
import { AppComponent } from "./app.component";
|
|
||||||
|
|
||||||
import { EnvironmentComponent } from "./accounts/environment.component";
|
|
||||||
import { HintComponent } from "./accounts/hint.component";
|
|
||||||
import { LockComponent } from "./accounts/lock.component";
|
|
||||||
import { LoginComponent } from "./accounts/login.component";
|
|
||||||
import { PremiumComponent } from "./accounts/premium.component";
|
|
||||||
import { RegisterComponent } from "./accounts/register.component";
|
|
||||||
import { RemovePasswordComponent } from "./accounts/remove-password.component";
|
|
||||||
import { SetPasswordComponent } from "./accounts/set-password.component";
|
|
||||||
import { SettingsComponent } from "./accounts/settings.component";
|
|
||||||
import { SsoComponent } from "./accounts/sso.component";
|
|
||||||
import { TwoFactorOptionsComponent } from "./accounts/two-factor-options.component";
|
|
||||||
import { TwoFactorComponent } from "./accounts/two-factor.component";
|
|
||||||
import { UpdateTempPasswordComponent } from "./accounts/update-temp-password.component";
|
|
||||||
import { VaultTimeoutInputComponent } from "./accounts/vault-timeout-input.component";
|
|
||||||
|
|
||||||
import { AvatarComponent } from "jslib-angular/components/avatar.component";
|
|
||||||
import { CalloutComponent } from "jslib-angular/components/callout.component";
|
|
||||||
import { IconComponent } from "jslib-angular/components/icon.component";
|
|
||||||
import { BitwardenToastModule } from "jslib-angular/components/toastr.component";
|
|
||||||
|
|
||||||
import { A11yTitleDirective } from "jslib-angular/directives/a11y-title.directive";
|
|
||||||
import { ApiActionDirective } from "jslib-angular/directives/api-action.directive";
|
|
||||||
import { AutofocusDirective } from "jslib-angular/directives/autofocus.directive";
|
|
||||||
import { BlurClickDirective } from "jslib-angular/directives/blur-click.directive";
|
|
||||||
import { BoxRowDirective } from "jslib-angular/directives/box-row.directive";
|
|
||||||
import { CipherListVirtualScroll } from "jslib-angular/directives/cipherListVirtualScroll.directive";
|
|
||||||
import { FallbackSrcDirective } from "jslib-angular/directives/fallback-src.directive";
|
|
||||||
import { InputVerbatimDirective } from "jslib-angular/directives/input-verbatim.directive";
|
|
||||||
import { SelectCopyDirective } from "jslib-angular/directives/select-copy.directive";
|
|
||||||
import { StopClickDirective } from "jslib-angular/directives/stop-click.directive";
|
|
||||||
import { StopPropDirective } from "jslib-angular/directives/stop-prop.directive";
|
|
||||||
import { TrueFalseValueDirective } from "jslib-angular/directives/true-false-value.directive";
|
|
||||||
|
|
||||||
import { ColorPasswordPipe } from "jslib-angular/pipes/color-password.pipe";
|
|
||||||
import { I18nPipe } from "jslib-angular/pipes/i18n.pipe";
|
|
||||||
import { SearchCiphersPipe } from "jslib-angular/pipes/search-ciphers.pipe";
|
|
||||||
|
|
||||||
import { AddEditCustomFieldsComponent } from "./vault/add-edit-custom-fields.component";
|
|
||||||
import { AddEditComponent } from "./vault/add-edit.component";
|
|
||||||
import { AttachmentsComponent } from "./vault/attachments.component";
|
|
||||||
import { CiphersComponent } from "./vault/ciphers.component";
|
|
||||||
import { CollectionsComponent } from "./vault/collections.component";
|
|
||||||
import { ExportComponent } from "./vault/export.component";
|
|
||||||
import { FolderAddEditComponent } from "./vault/folder-add-edit.component";
|
|
||||||
import { GroupingsComponent } from "./vault/groupings.component";
|
|
||||||
import { PasswordGeneratorHistoryComponent } from "./vault/password-generator-history.component";
|
|
||||||
import { PasswordGeneratorComponent } from "./vault/password-generator.component";
|
|
||||||
import { PasswordHistoryComponent } from "./vault/password-history.component";
|
|
||||||
import { ShareComponent } from "./vault/share.component";
|
|
||||||
import { VaultComponent } from "./vault/vault.component";
|
|
||||||
import { ViewCustomFieldsComponent } from "./vault/view-custom-fields.component";
|
|
||||||
import { ViewComponent } from "./vault/view.component";
|
|
||||||
|
|
||||||
import { AddEditComponent as SendAddEditComponent } from "./send/add-edit.component";
|
|
||||||
import { EffluxDatesComponent as SendEffluxDatesComponent } from "./send/efflux-dates.component";
|
|
||||||
import { SendComponent } from "./send/send.component";
|
|
||||||
|
|
||||||
import { AccountSwitcherComponent } from "./layout/account-switcher.component";
|
|
||||||
import { HeaderComponent } from "./layout/header.component";
|
|
||||||
import { NavComponent } from "./layout/nav.component";
|
|
||||||
import { SearchComponent } from "./layout/search/search.component";
|
|
||||||
|
|
||||||
import { PasswordRepromptComponent } from "./components/password-reprompt.component";
|
|
||||||
import { SetPinComponent } from "./components/set-pin.component";
|
|
||||||
import { VerifyMasterPasswordComponent } from "./components/verify-master-password.component";
|
|
||||||
|
|
||||||
import { registerLocaleData } from "@angular/common";
|
|
||||||
import localeAf from "@angular/common/locales/af";
|
import localeAf from "@angular/common/locales/af";
|
||||||
import localeAz from "@angular/common/locales/az";
|
import localeAz from "@angular/common/locales/az";
|
||||||
import localeBe from "@angular/common/locales/be";
|
import localeBe from "@angular/common/locales/be";
|
||||||
|
@ -127,6 +49,73 @@ import localeUk from "@angular/common/locales/uk";
|
||||||
import localeVi from "@angular/common/locales/vi";
|
import localeVi from "@angular/common/locales/vi";
|
||||||
import localeZhCn from "@angular/common/locales/zh-Hans";
|
import localeZhCn from "@angular/common/locales/zh-Hans";
|
||||||
import localeZhTw from "@angular/common/locales/zh-Hant";
|
import localeZhTw from "@angular/common/locales/zh-Hant";
|
||||||
|
import { NgModule } from "@angular/core";
|
||||||
|
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
||||||
|
import { BrowserModule } from "@angular/platform-browser";
|
||||||
|
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
|
||||||
|
|
||||||
|
import { AvatarComponent } from "jslib-angular/components/avatar.component";
|
||||||
|
import { CalloutComponent } from "jslib-angular/components/callout.component";
|
||||||
|
import { IconComponent } from "jslib-angular/components/icon.component";
|
||||||
|
import { BitwardenToastModule } from "jslib-angular/components/toastr.component";
|
||||||
|
import { A11yTitleDirective } from "jslib-angular/directives/a11y-title.directive";
|
||||||
|
import { ApiActionDirective } from "jslib-angular/directives/api-action.directive";
|
||||||
|
import { AutofocusDirective } from "jslib-angular/directives/autofocus.directive";
|
||||||
|
import { BlurClickDirective } from "jslib-angular/directives/blur-click.directive";
|
||||||
|
import { BoxRowDirective } from "jslib-angular/directives/box-row.directive";
|
||||||
|
import { CipherListVirtualScroll } from "jslib-angular/directives/cipherListVirtualScroll.directive";
|
||||||
|
import { FallbackSrcDirective } from "jslib-angular/directives/fallback-src.directive";
|
||||||
|
import { InputVerbatimDirective } from "jslib-angular/directives/input-verbatim.directive";
|
||||||
|
import { SelectCopyDirective } from "jslib-angular/directives/select-copy.directive";
|
||||||
|
import { StopClickDirective } from "jslib-angular/directives/stop-click.directive";
|
||||||
|
import { StopPropDirective } from "jslib-angular/directives/stop-prop.directive";
|
||||||
|
import { TrueFalseValueDirective } from "jslib-angular/directives/true-false-value.directive";
|
||||||
|
import { ColorPasswordPipe } from "jslib-angular/pipes/color-password.pipe";
|
||||||
|
import { I18nPipe } from "jslib-angular/pipes/i18n.pipe";
|
||||||
|
import { SearchCiphersPipe } from "jslib-angular/pipes/search-ciphers.pipe";
|
||||||
|
|
||||||
|
import { EnvironmentComponent } from "./accounts/environment.component";
|
||||||
|
import { HintComponent } from "./accounts/hint.component";
|
||||||
|
import { LockComponent } from "./accounts/lock.component";
|
||||||
|
import { LoginComponent } from "./accounts/login.component";
|
||||||
|
import { PremiumComponent } from "./accounts/premium.component";
|
||||||
|
import { RegisterComponent } from "./accounts/register.component";
|
||||||
|
import { RemovePasswordComponent } from "./accounts/remove-password.component";
|
||||||
|
import { SetPasswordComponent } from "./accounts/set-password.component";
|
||||||
|
import { SettingsComponent } from "./accounts/settings.component";
|
||||||
|
import { SsoComponent } from "./accounts/sso.component";
|
||||||
|
import { TwoFactorOptionsComponent } from "./accounts/two-factor-options.component";
|
||||||
|
import { TwoFactorComponent } from "./accounts/two-factor.component";
|
||||||
|
import { UpdateTempPasswordComponent } from "./accounts/update-temp-password.component";
|
||||||
|
import { VaultTimeoutInputComponent } from "./accounts/vault-timeout-input.component";
|
||||||
|
import { AppRoutingModule } from "./app-routing.module";
|
||||||
|
import { AppComponent } from "./app.component";
|
||||||
|
import { PasswordRepromptComponent } from "./components/password-reprompt.component";
|
||||||
|
import { SetPinComponent } from "./components/set-pin.component";
|
||||||
|
import { VerifyMasterPasswordComponent } from "./components/verify-master-password.component";
|
||||||
|
import { AccountSwitcherComponent } from "./layout/account-switcher.component";
|
||||||
|
import { HeaderComponent } from "./layout/header.component";
|
||||||
|
import { NavComponent } from "./layout/nav.component";
|
||||||
|
import { SearchComponent } from "./layout/search/search.component";
|
||||||
|
import { AddEditComponent as SendAddEditComponent } from "./send/add-edit.component";
|
||||||
|
import { EffluxDatesComponent as SendEffluxDatesComponent } from "./send/efflux-dates.component";
|
||||||
|
import { SendComponent } from "./send/send.component";
|
||||||
|
import { ServicesModule } from "./services.module";
|
||||||
|
import { AddEditCustomFieldsComponent } from "./vault/add-edit-custom-fields.component";
|
||||||
|
import { AddEditComponent } from "./vault/add-edit.component";
|
||||||
|
import { AttachmentsComponent } from "./vault/attachments.component";
|
||||||
|
import { CiphersComponent } from "./vault/ciphers.component";
|
||||||
|
import { CollectionsComponent } from "./vault/collections.component";
|
||||||
|
import { ExportComponent } from "./vault/export.component";
|
||||||
|
import { FolderAddEditComponent } from "./vault/folder-add-edit.component";
|
||||||
|
import { GroupingsComponent } from "./vault/groupings.component";
|
||||||
|
import { PasswordGeneratorHistoryComponent } from "./vault/password-generator-history.component";
|
||||||
|
import { PasswordGeneratorComponent } from "./vault/password-generator.component";
|
||||||
|
import { PasswordHistoryComponent } from "./vault/password-history.component";
|
||||||
|
import { ShareComponent } from "./vault/share.component";
|
||||||
|
import { VaultComponent } from "./vault/vault.component";
|
||||||
|
import { ViewCustomFieldsComponent } from "./vault/view-custom-fields.component";
|
||||||
|
import { ViewComponent } from "./vault/view.component";
|
||||||
|
|
||||||
registerLocaleData(localeAf, "af");
|
registerLocaleData(localeAf, "af");
|
||||||
registerLocaleData(localeAz, "az");
|
registerLocaleData(localeAz, "az");
|
||||||
|
|
|
@ -5,10 +5,8 @@ import { Component, OnInit } from "@angular/core";
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||||
|
|
||||||
import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus";
|
import { AuthenticationStatus } from "jslib-common/enums/authenticationStatus";
|
||||||
import { Utils } from "jslib-common/misc/utils";
|
import { Utils } from "jslib-common/misc/utils";
|
||||||
|
|
||||||
import { Account } from "jslib-common/models/domain/account";
|
import { Account } from "jslib-common/models/domain/account";
|
||||||
|
|
||||||
export class SwitcherAccount extends Account {
|
export class SwitcherAccount extends Account {
|
||||||
|
@ -51,7 +49,7 @@ export class SwitcherAccount extends Account {
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class AccountSwitcherComponent implements OnInit {
|
export class AccountSwitcherComponent implements OnInit {
|
||||||
isOpen: boolean = false;
|
isOpen = false;
|
||||||
accounts: { [userId: string]: SwitcherAccount } = {};
|
accounts: { [userId: string]: SwitcherAccount } = {};
|
||||||
activeAccountEmail: string;
|
activeAccountEmail: string;
|
||||||
serverUrl: string;
|
serverUrl: string;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { DatePipe } from "@angular/common";
|
import { DatePipe } from "@angular/common";
|
||||||
|
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/send/add-edit.component";
|
||||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { LogService } from "jslib-common/abstractions/log.service";
|
import { LogService } from "jslib-common/abstractions/log.service";
|
||||||
|
@ -11,8 +11,6 @@ import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||||
import { SendService } from "jslib-common/abstractions/send.service";
|
import { SendService } from "jslib-common/abstractions/send.service";
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
|
|
||||||
import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/send/add-edit.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-send-add-edit",
|
selector: "app-send-add-edit",
|
||||||
templateUrl: "add-edit.component.html",
|
templateUrl: "add-edit.component.html",
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
import { DatePipe } from "@angular/common";
|
import { DatePipe } from "@angular/common";
|
||||||
|
|
||||||
import { Component, OnChanges } from "@angular/core";
|
import { Component, OnChanges } from "@angular/core";
|
||||||
|
|
||||||
import { ControlContainer, NgForm } from "@angular/forms";
|
import { ControlContainer, NgForm } from "@angular/forms";
|
||||||
|
|
||||||
|
import { EffluxDatesComponent as BaseEffluxDatesComponent } from "jslib-angular/components/send/efflux-dates.component";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
|
|
||||||
import { EffluxDatesComponent as BaseEffluxDatesComponent } from "jslib-angular/components/send/efflux-dates.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-send-efflux-dates",
|
selector: "app-send-efflux-dates",
|
||||||
templateUrl: "efflux-dates.component.html",
|
templateUrl: "efflux-dates.component.html",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { Component, NgZone, OnDestroy, OnInit, ViewChild } from "@angular/core";
|
import { Component, NgZone, OnDestroy, OnInit, ViewChild } from "@angular/core";
|
||||||
|
|
||||||
|
import { SendComponent as BaseSendComponent } from "jslib-angular/components/send/send.component";
|
||||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
|
@ -8,14 +9,11 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||||
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||||
import { SearchService } from "jslib-common/abstractions/search.service";
|
import { SearchService } from "jslib-common/abstractions/search.service";
|
||||||
import { SendService } from "jslib-common/abstractions/send.service";
|
import { SendService } from "jslib-common/abstractions/send.service";
|
||||||
|
import { SendView } from "jslib-common/models/view/sendView";
|
||||||
import { SendComponent as BaseSendComponent } from "jslib-angular/components/send/send.component";
|
|
||||||
|
|
||||||
import { invokeMenu, RendererMenuItem } from "jslib-electron/utils";
|
import { invokeMenu, RendererMenuItem } from "jslib-electron/utils";
|
||||||
|
|
||||||
import { SendView } from "jslib-common/models/view/sendView";
|
|
||||||
|
|
||||||
import { SearchBarService } from "../layout/search/search-bar.service";
|
import { SearchBarService } from "../layout/search/search-bar.service";
|
||||||
|
|
||||||
import { AddEditComponent } from "./add-edit.component";
|
import { AddEditComponent } from "./add-edit.component";
|
||||||
|
|
||||||
enum Action {
|
enum Action {
|
||||||
|
|
|
@ -1,28 +1,6 @@
|
||||||
import { APP_INITIALIZER, NgModule } from "@angular/core";
|
import { APP_INITIALIZER, NgModule } from "@angular/core";
|
||||||
|
|
||||||
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 { ElectronRendererStorageService } from "jslib-electron/services/electronRendererStorage.service";
|
|
||||||
|
|
||||||
import { I18nService } from "../services/i18n.service";
|
|
||||||
import { LoginGuardService } from "../services/loginGuard.service";
|
|
||||||
import { NativeMessagingService } from "../services/nativeMessaging.service";
|
|
||||||
import { PasswordRepromptService } from "../services/passwordReprompt.service";
|
|
||||||
import { StateService } from "../services/state.service";
|
|
||||||
|
|
||||||
import { SearchBarService } from "./layout/search/search-bar.service";
|
|
||||||
|
|
||||||
import { JslibServicesModule } from "jslib-angular/services/jslib-services.module";
|
import { JslibServicesModule } from "jslib-angular/services/jslib-services.module";
|
||||||
|
|
||||||
import { ContainerService } from "jslib-common/services/container.service";
|
|
||||||
import { EventService } from "jslib-common/services/event.service";
|
|
||||||
import { SystemService } from "jslib-common/services/system.service";
|
|
||||||
import { VaultTimeoutService } from "jslib-common/services/vaultTimeout.service";
|
|
||||||
|
|
||||||
import { ElectronCryptoService } from "jslib-electron/services/electronCrypto.service";
|
|
||||||
|
|
||||||
import { BroadcasterService as BroadcasterServiceAbstraction } from "jslib-common/abstractions/broadcaster.service";
|
import { BroadcasterService as BroadcasterServiceAbstraction } from "jslib-common/abstractions/broadcaster.service";
|
||||||
import { CryptoService as CryptoServiceAbstraction } from "jslib-common/abstractions/crypto.service";
|
import { CryptoService as CryptoServiceAbstraction } from "jslib-common/abstractions/crypto.service";
|
||||||
import { CryptoFunctionService as CryptoFunctionServiceAbstraction } from "jslib-common/abstractions/cryptoFunction.service";
|
import { CryptoFunctionService as CryptoFunctionServiceAbstraction } from "jslib-common/abstractions/cryptoFunction.service";
|
||||||
|
@ -41,15 +19,29 @@ import { SyncService as SyncServiceAbstraction } from "jslib-common/abstractions
|
||||||
import { SystemService as SystemServiceAbstraction } from "jslib-common/abstractions/system.service";
|
import { SystemService as SystemServiceAbstraction } from "jslib-common/abstractions/system.service";
|
||||||
import { TwoFactorService as TwoFactorServiceAbstraction } from "jslib-common/abstractions/twoFactor.service";
|
import { TwoFactorService as TwoFactorServiceAbstraction } from "jslib-common/abstractions/twoFactor.service";
|
||||||
import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "jslib-common/abstractions/vaultTimeout.service";
|
import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "jslib-common/abstractions/vaultTimeout.service";
|
||||||
|
|
||||||
import { ThemeType } from "jslib-common/enums/themeType";
|
import { ThemeType } from "jslib-common/enums/themeType";
|
||||||
|
import { StateFactory } from "jslib-common/factories/stateFactory";
|
||||||
|
import { GlobalState } from "jslib-common/models/domain/globalState";
|
||||||
|
import { ContainerService } from "jslib-common/services/container.service";
|
||||||
|
import { EventService } from "jslib-common/services/event.service";
|
||||||
|
import { StateMigrationService } from "jslib-common/services/stateMigration.service";
|
||||||
|
import { SystemService } from "jslib-common/services/system.service";
|
||||||
|
import { VaultTimeoutService } from "jslib-common/services/vaultTimeout.service";
|
||||||
|
import { ElectronCryptoService } from "jslib-electron/services/electronCrypto.service";
|
||||||
|
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 { ElectronRendererStorageService } from "jslib-electron/services/electronRendererStorage.service";
|
||||||
|
|
||||||
import { Account } from "../models/account";
|
import { Account } from "../models/account";
|
||||||
|
import { I18nService } from "../services/i18n.service";
|
||||||
|
import { LoginGuardService } from "../services/loginGuard.service";
|
||||||
|
import { NativeMessagingService } from "../services/nativeMessaging.service";
|
||||||
|
import { PasswordRepromptService } from "../services/passwordReprompt.service";
|
||||||
|
import { StateService } from "../services/state.service";
|
||||||
|
|
||||||
import { GlobalState } from "jslib-common/models/domain/globalState";
|
import { SearchBarService } from "./layout/search/search-bar.service";
|
||||||
|
|
||||||
import { StateFactory } from "jslib-common/factories/stateFactory";
|
|
||||||
import { StateMigrationService } from "jslib-common/services/stateMigration.service";
|
|
||||||
|
|
||||||
export function initFactory(
|
export function initFactory(
|
||||||
window: Window,
|
window: Window,
|
||||||
|
@ -64,7 +56,7 @@ export function initFactory(
|
||||||
stateService: StateServiceAbstraction,
|
stateService: StateServiceAbstraction,
|
||||||
cryptoService: CryptoServiceAbstraction,
|
cryptoService: CryptoServiceAbstraction,
|
||||||
nativeMessagingService: NativeMessagingService
|
nativeMessagingService: NativeMessagingService
|
||||||
): Function {
|
): () => Promise<void> {
|
||||||
return async () => {
|
return async () => {
|
||||||
nativeMessagingService.init();
|
nativeMessagingService.init();
|
||||||
await stateService.init();
|
await stateService.init();
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
import { AddEditCustomFieldsComponent as BaseAddEditCustomFieldsComponent } from "jslib-angular/components/add-edit-custom-fields.component";
|
import { AddEditCustomFieldsComponent as BaseAddEditCustomFieldsComponent } from "jslib-angular/components/add-edit-custom-fields.component";
|
||||||
|
|
||||||
import { EventService } from "jslib-common/abstractions/event.service";
|
import { EventService } from "jslib-common/abstractions/event.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { Component, NgZone, OnChanges, OnDestroy, ViewChild } from "@angular/core";
|
import { Component, NgZone, OnChanges, OnDestroy, ViewChild } from "@angular/core";
|
||||||
import { NgForm } from "@angular/forms";
|
import { NgForm } from "@angular/forms";
|
||||||
|
|
||||||
|
import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/add-edit.component";
|
||||||
import { AuditService } from "jslib-common/abstractions/audit.service";
|
import { AuditService } from "jslib-common/abstractions/audit.service";
|
||||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||||
|
@ -16,8 +17,6 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||||
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
|
|
||||||
import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/add-edit.component";
|
|
||||||
|
|
||||||
const BroadcasterSubscriptionId = "AddEditComponent";
|
const BroadcasterSubscriptionId = "AddEditComponent";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { AttachmentsComponent as BaseAttachmentsComponent } from "jslib-angular/components/attachments.component";
|
||||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||||
|
@ -8,8 +9,6 @@ import { LogService } from "jslib-common/abstractions/log.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
|
|
||||||
import { AttachmentsComponent as BaseAttachmentsComponent } from "jslib-angular/components/attachments.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-vault-attachments",
|
selector: "app-vault-attachments",
|
||||||
templateUrl: "attachments.component.html",
|
templateUrl: "attachments.component.html",
|
||||||
|
|
|
@ -2,7 +2,6 @@ import { Component } from "@angular/core";
|
||||||
|
|
||||||
import { CiphersComponent as BaseCiphersComponent } from "jslib-angular/components/ciphers.component";
|
import { CiphersComponent as BaseCiphersComponent } from "jslib-angular/components/ciphers.component";
|
||||||
import { SearchService } from "jslib-common/abstractions/search.service";
|
import { SearchService } from "jslib-common/abstractions/search.service";
|
||||||
|
|
||||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||||
|
|
||||||
import { SearchBarService } from "../layout/search/search-bar.service";
|
import { SearchBarService } from "../layout/search/search-bar.service";
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { CollectionsComponent as BaseCollectionsComponent } from "jslib-angular/components/collections.component";
|
||||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||||
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { LogService } from "jslib-common/abstractions/log.service";
|
import { LogService } from "jslib-common/abstractions/log.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
|
|
||||||
import { CollectionsComponent as BaseCollectionsComponent } from "jslib-angular/components/collections.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-vault-collections",
|
selector: "app-vault-collections",
|
||||||
templateUrl: "collections.component.html",
|
templateUrl: "collections.component.html",
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
|
import * as os from "os";
|
||||||
|
|
||||||
import { Component, OnInit } from "@angular/core";
|
import { Component, OnInit } from "@angular/core";
|
||||||
import { FormBuilder } from "@angular/forms";
|
import { FormBuilder } from "@angular/forms";
|
||||||
|
|
||||||
import * as os from "os";
|
import { ExportComponent as BaseExportComponent } from "jslib-angular/components/export.component";
|
||||||
|
|
||||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||||
import { EventService } from "jslib-common/abstractions/event.service";
|
import { EventService } from "jslib-common/abstractions/event.service";
|
||||||
|
@ -13,8 +14,6 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||||
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||||
import { UserVerificationService } from "jslib-common/abstractions/userVerification.service";
|
import { UserVerificationService } from "jslib-common/abstractions/userVerification.service";
|
||||||
|
|
||||||
import { ExportComponent as BaseExportComponent } from "jslib-angular/components/export.component";
|
|
||||||
|
|
||||||
const BroadcasterSubscriptionId = "ExportComponent";
|
const BroadcasterSubscriptionId = "ExportComponent";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { FolderAddEditComponent as BaseFolderAddEditComponent } from "jslib-angular/components/folder-add-edit.component";
|
||||||
import { FolderService } from "jslib-common/abstractions/folder.service";
|
import { FolderService } from "jslib-common/abstractions/folder.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { LogService } from "jslib-common/abstractions/log.service";
|
import { LogService } from "jslib-common/abstractions/log.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
|
|
||||||
import { FolderAddEditComponent as BaseFolderAddEditComponent } from "jslib-angular/components/folder-add-edit.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-folder-add-edit",
|
selector: "app-folder-add-edit",
|
||||||
templateUrl: "folder-add-edit.component.html",
|
templateUrl: "folder-add-edit.component.html",
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { GroupingsComponent as BaseGroupingsComponent } from "jslib-angular/components/groupings.component";
|
||||||
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
||||||
import { FolderService } from "jslib-common/abstractions/folder.service";
|
import { FolderService } from "jslib-common/abstractions/folder.service";
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
|
|
||||||
import { GroupingsComponent as BaseGroupingsComponent } from "jslib-angular/components/groupings.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-vault-groupings",
|
selector: "app-vault-groupings",
|
||||||
templateUrl: "groupings.component.html",
|
templateUrl: "groupings.component.html",
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent } from "jslib-angular/components/password-generator-history.component";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
|
import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
|
|
||||||
import { PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent } from "jslib-angular/components/password-generator-history.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-password-generator-history",
|
selector: "app-password-generator-history",
|
||||||
templateUrl: "password-generator-history.component.html",
|
templateUrl: "password-generator-history.component.html",
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { PasswordGeneratorComponent as BasePasswordGeneratorComponent } from "jslib-angular/components/password-generator.component";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
|
import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
|
|
||||||
import { PasswordGeneratorComponent as BasePasswordGeneratorComponent } from "jslib-angular/components/password-generator.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-password-generator",
|
selector: "app-password-generator",
|
||||||
templateUrl: "password-generator.component.html",
|
templateUrl: "password-generator.component.html",
|
||||||
|
|
|
@ -1,11 +1,10 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { PasswordHistoryComponent as BasePasswordHistoryComponent } from "jslib-angular/components/password-history.component";
|
||||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
|
|
||||||
import { PasswordHistoryComponent as BasePasswordHistoryComponent } from "jslib-angular/components/password-history.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-password-history",
|
selector: "app-password-history",
|
||||||
templateUrl: "password-history.component.html",
|
templateUrl: "password-history.component.html",
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
|
import { ShareComponent as BaseShareComponent } from "jslib-angular/components/share.component";
|
||||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||||
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
|
@ -7,8 +8,6 @@ import { LogService } from "jslib-common/abstractions/log.service";
|
||||||
import { OrganizationService } from "jslib-common/abstractions/organization.service";
|
import { OrganizationService } from "jslib-common/abstractions/organization.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
|
|
||||||
import { ShareComponent as BaseShareComponent } from "jslib-angular/components/share.component";
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-vault-share",
|
selector: "app-vault-share",
|
||||||
templateUrl: "share.component.html",
|
templateUrl: "share.component.html",
|
||||||
|
|
|
@ -8,10 +8,28 @@ import {
|
||||||
ViewContainerRef,
|
ViewContainerRef,
|
||||||
} from "@angular/core";
|
} from "@angular/core";
|
||||||
import { ActivatedRoute, Router } from "@angular/router";
|
import { ActivatedRoute, Router } from "@angular/router";
|
||||||
|
|
||||||
import { first } from "rxjs/operators";
|
import { first } from "rxjs/operators";
|
||||||
|
|
||||||
|
import { ModalRef } from "jslib-angular/components/modal/modal.ref";
|
||||||
|
import { ModalService } from "jslib-angular/services/modal.service";
|
||||||
|
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||||
|
import { EventService } from "jslib-common/abstractions/event.service";
|
||||||
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
|
import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service";
|
||||||
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
|
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||||
|
import { TotpService } from "jslib-common/abstractions/totp.service";
|
||||||
|
import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType";
|
||||||
|
import { CipherType } from "jslib-common/enums/cipherType";
|
||||||
|
import { EventType } from "jslib-common/enums/eventType";
|
||||||
|
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||||
|
import { FolderView } from "jslib-common/models/view/folderView";
|
||||||
|
import { invokeMenu, RendererMenuItem } from "jslib-electron/utils";
|
||||||
|
|
||||||
import { SearchBarService } from "../layout/search/search-bar.service";
|
import { SearchBarService } from "../layout/search/search-bar.service";
|
||||||
|
|
||||||
import { AddEditComponent } from "./add-edit.component";
|
import { AddEditComponent } from "./add-edit.component";
|
||||||
import { AttachmentsComponent } from "./attachments.component";
|
import { AttachmentsComponent } from "./attachments.component";
|
||||||
import { CiphersComponent } from "./ciphers.component";
|
import { CiphersComponent } from "./ciphers.component";
|
||||||
|
@ -23,29 +41,6 @@ import { PasswordHistoryComponent } from "./password-history.component";
|
||||||
import { ShareComponent } from "./share.component";
|
import { ShareComponent } from "./share.component";
|
||||||
import { ViewComponent } from "./view.component";
|
import { ViewComponent } from "./view.component";
|
||||||
|
|
||||||
import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType";
|
|
||||||
import { CipherType } from "jslib-common/enums/cipherType";
|
|
||||||
import { EventType } from "jslib-common/enums/eventType";
|
|
||||||
|
|
||||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
|
||||||
import { FolderView } from "jslib-common/models/view/folderView";
|
|
||||||
|
|
||||||
import { ModalRef } from "jslib-angular/components/modal/modal.ref";
|
|
||||||
|
|
||||||
import { ModalService } from "jslib-angular/services/modal.service";
|
|
||||||
|
|
||||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
|
||||||
import { EventService } from "jslib-common/abstractions/event.service";
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
|
||||||
import { PasswordRepromptService } from "jslib-common/abstractions/passwordReprompt.service";
|
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
|
||||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
|
||||||
import { TotpService } from "jslib-common/abstractions/totp.service";
|
|
||||||
|
|
||||||
import { invokeMenu, RendererMenuItem } from "jslib-electron/utils";
|
|
||||||
|
|
||||||
const BroadcasterSubscriptionId = "VaultComponent";
|
const BroadcasterSubscriptionId = "VaultComponent";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -71,7 +66,7 @@ export class VaultComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
action: string;
|
action: string;
|
||||||
cipherId: string = null;
|
cipherId: string = null;
|
||||||
favorites: boolean = false;
|
favorites = false;
|
||||||
type: CipherType = null;
|
type: CipherType = null;
|
||||||
folderId: string = null;
|
folderId: string = null;
|
||||||
collectionId: string = null;
|
collectionId: string = null;
|
||||||
|
@ -140,7 +135,7 @@ export class VaultComponent implements OnInit, OnDestroy {
|
||||||
case "modalClosed":
|
case "modalClosed":
|
||||||
this.showingModal = false;
|
this.showingModal = false;
|
||||||
break;
|
break;
|
||||||
case "copyUsername":
|
case "copyUsername": {
|
||||||
const uComponent =
|
const uComponent =
|
||||||
this.addEditComponent == null ? this.viewComponent : this.addEditComponent;
|
this.addEditComponent == null ? this.viewComponent : this.addEditComponent;
|
||||||
const uCipher = uComponent != null ? uComponent.cipher : null;
|
const uCipher = uComponent != null ? uComponent.cipher : null;
|
||||||
|
@ -154,7 +149,8 @@ export class VaultComponent implements OnInit, OnDestroy {
|
||||||
this.copyValue(uCipher, uCipher.login.username, "username", "Username");
|
this.copyValue(uCipher, uCipher.login.username, "username", "Username");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "copyPassword":
|
}
|
||||||
|
case "copyPassword": {
|
||||||
const pComponent =
|
const pComponent =
|
||||||
this.addEditComponent == null ? this.viewComponent : this.addEditComponent;
|
this.addEditComponent == null ? this.viewComponent : this.addEditComponent;
|
||||||
const pCipher = pComponent != null ? pComponent.cipher : null;
|
const pCipher = pComponent != null ? pComponent.cipher : null;
|
||||||
|
@ -169,7 +165,8 @@ export class VaultComponent implements OnInit, OnDestroy {
|
||||||
this.copyValue(pCipher, pCipher.login.password, "password", "Password");
|
this.copyValue(pCipher, pCipher.login.password, "password", "Password");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "copyTotp":
|
}
|
||||||
|
case "copyTotp": {
|
||||||
const tComponent =
|
const tComponent =
|
||||||
this.addEditComponent == null ? this.viewComponent : this.addEditComponent;
|
this.addEditComponent == null ? this.viewComponent : this.addEditComponent;
|
||||||
const tCipher = tComponent != null ? tComponent.cipher : null;
|
const tCipher = tComponent != null ? tComponent.cipher : null;
|
||||||
|
@ -184,6 +181,8 @@ export class VaultComponent implements OnInit, OnDestroy {
|
||||||
const value = await this.totpService.getCode(tCipher.login.totp);
|
const value = await this.totpService.getCode(tCipher.login.totp);
|
||||||
this.copyValue(tCipher, value, "verificationCodeTotp", "TOTP");
|
this.copyValue(tCipher, value, "verificationCodeTotp", "TOTP");
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
detectChanges = false;
|
detectChanges = false;
|
||||||
break;
|
break;
|
||||||
|
@ -735,7 +734,7 @@ export class VaultComponent implements OnInit, OnDestroy {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private functionWithChangeDetection(func: Function) {
|
private functionWithChangeDetection(func: () => void) {
|
||||||
this.ngZone.run(() => {
|
this.ngZone.run(() => {
|
||||||
func();
|
func();
|
||||||
this.changeDetectorRef.detectChanges();
|
this.changeDetectorRef.detectChanges();
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
import { Component } from "@angular/core";
|
import { Component } from "@angular/core";
|
||||||
|
|
||||||
import { EventService } from "jslib-common/abstractions/event.service";
|
|
||||||
|
|
||||||
import { ViewCustomFieldsComponent as BaseViewCustomFieldsComponent } from "jslib-angular/components/view-custom-fields.component";
|
import { ViewCustomFieldsComponent as BaseViewCustomFieldsComponent } from "jslib-angular/components/view-custom-fields.component";
|
||||||
|
import { EventService } from "jslib-common/abstractions/event.service";
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: "app-vault-view-custom-fields",
|
selector: "app-vault-view-custom-fields",
|
||||||
|
|
|
@ -7,6 +7,7 @@ import {
|
||||||
Output,
|
Output,
|
||||||
} from "@angular/core";
|
} from "@angular/core";
|
||||||
|
|
||||||
|
import { ViewComponent as BaseViewComponent } from "jslib-angular/components/view.component";
|
||||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||||
import { AuditService } from "jslib-common/abstractions/audit.service";
|
import { AuditService } from "jslib-common/abstractions/audit.service";
|
||||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||||
|
@ -21,9 +22,6 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
import { TokenService } from "jslib-common/abstractions/token.service";
|
import { TokenService } from "jslib-common/abstractions/token.service";
|
||||||
import { TotpService } from "jslib-common/abstractions/totp.service";
|
import { TotpService } from "jslib-common/abstractions/totp.service";
|
||||||
|
|
||||||
import { ViewComponent as BaseViewComponent } from "jslib-angular/components/view.component";
|
|
||||||
|
|
||||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||||
|
|
||||||
const BroadcasterSubscriptionId = "ViewComponent";
|
const BroadcasterSubscriptionId = "ViewComponent";
|
||||||
|
|
|
@ -10,7 +10,7 @@ if (
|
||||||
process.argv.some((arg) => arg.indexOf("chrome-extension://") !== -1 || arg.indexOf("{") !== -1)
|
process.argv.some((arg) => arg.indexOf("chrome-extension://") !== -1 || arg.indexOf("{") !== -1)
|
||||||
) {
|
) {
|
||||||
if (process.platform === "darwin") {
|
if (process.platform === "darwin") {
|
||||||
// tslint:disable-next-line
|
// eslint-disable-next-line
|
||||||
const app = require("electron").app;
|
const app = require("electron").app;
|
||||||
|
|
||||||
app.on("ready", () => {
|
app.on("ready", () => {
|
||||||
|
@ -27,7 +27,7 @@ if (
|
||||||
const proxy = new NativeMessagingProxy();
|
const proxy = new NativeMessagingProxy();
|
||||||
proxy.run();
|
proxy.run();
|
||||||
} else {
|
} else {
|
||||||
// tslint:disable-next-line
|
// eslint-disable-next-line
|
||||||
const Main = require("./main").Main;
|
const Main = require("./main").Main;
|
||||||
|
|
||||||
const main = new Main();
|
const main = new Main();
|
||||||
|
|
31
src/main.ts
31
src/main.ts
|
@ -1,32 +1,25 @@
|
||||||
import { app } from "electron";
|
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
|
|
||||||
import { I18nService } from "./services/i18n.service";
|
import { app } from "electron";
|
||||||
|
|
||||||
import { MenuMain } from "./main/menu.main";
|
|
||||||
import { MessagingMain } from "./main/messaging.main";
|
|
||||||
import { PowerMonitorMain } from "./main/powerMonitor.main";
|
|
||||||
|
|
||||||
import { BiometricMain } from "jslib-common/abstractions/biometric.main";
|
import { BiometricMain } from "jslib-common/abstractions/biometric.main";
|
||||||
|
import { StateFactory } from "jslib-common/factories/stateFactory";
|
||||||
|
import { GlobalState } from "jslib-common/models/domain/globalState";
|
||||||
|
import { StateService } from "jslib-common/services/state.service";
|
||||||
import { KeytarStorageListener } from "jslib-electron/keytarStorageListener";
|
import { KeytarStorageListener } from "jslib-electron/keytarStorageListener";
|
||||||
|
|
||||||
import { ElectronLogService } from "jslib-electron/services/electronLog.service";
|
import { ElectronLogService } from "jslib-electron/services/electronLog.service";
|
||||||
import { ElectronMainMessagingService } from "jslib-electron/services/electronMainMessaging.service";
|
import { ElectronMainMessagingService } from "jslib-electron/services/electronMainMessaging.service";
|
||||||
import { ElectronStorageService } from "jslib-electron/services/electronStorage.service";
|
import { ElectronStorageService } from "jslib-electron/services/electronStorage.service";
|
||||||
|
|
||||||
import { TrayMain } from "jslib-electron/tray.main";
|
import { TrayMain } from "jslib-electron/tray.main";
|
||||||
import { UpdaterMain } from "jslib-electron/updater.main";
|
import { UpdaterMain } from "jslib-electron/updater.main";
|
||||||
import { WindowMain } from "jslib-electron/window.main";
|
import { WindowMain } from "jslib-electron/window.main";
|
||||||
|
|
||||||
|
import { MenuMain } from "./main/menu.main";
|
||||||
|
import { MessagingMain } from "./main/messaging.main";
|
||||||
import { NativeMessagingMain } from "./main/nativeMessaging.main";
|
import { NativeMessagingMain } from "./main/nativeMessaging.main";
|
||||||
|
import { PowerMonitorMain } from "./main/powerMonitor.main";
|
||||||
import { StateService } from "jslib-common/services/state.service";
|
|
||||||
|
|
||||||
import { Account } from "./models/account";
|
import { Account } from "./models/account";
|
||||||
|
import { I18nService } from "./services/i18n.service";
|
||||||
import { GlobalState } from "jslib-common/models/domain/globalState";
|
|
||||||
|
|
||||||
import { StateFactory } from "jslib-common/factories/stateFactory";
|
|
||||||
|
|
||||||
export class Main {
|
export class Main {
|
||||||
logService: ElectronLogService;
|
logService: ElectronLogService;
|
||||||
|
@ -69,7 +62,7 @@ export class Main {
|
||||||
const watch = args.some((val) => val === "--watch");
|
const watch = args.some((val) => val === "--watch");
|
||||||
|
|
||||||
if (watch) {
|
if (watch) {
|
||||||
// tslint:disable-next-line
|
// eslint-disable-next-line
|
||||||
require("electron-reload")(__dirname, {});
|
require("electron-reload")(__dirname, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -121,6 +114,7 @@ export class Main {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (process.platform === "win32") {
|
if (process.platform === "win32") {
|
||||||
|
// eslint-disable-next-line
|
||||||
const BiometricWindowsMain = require("jslib-electron/biometric.windows.main").default;
|
const BiometricWindowsMain = require("jslib-electron/biometric.windows.main").default;
|
||||||
this.biometricMain = new BiometricWindowsMain(
|
this.biometricMain = new BiometricWindowsMain(
|
||||||
this.i18nService,
|
this.i18nService,
|
||||||
|
@ -129,6 +123,7 @@ export class Main {
|
||||||
this.logService
|
this.logService
|
||||||
);
|
);
|
||||||
} else if (process.platform === "darwin") {
|
} else if (process.platform === "darwin") {
|
||||||
|
// eslint-disable-next-line
|
||||||
const BiometricDarwinMain = require("jslib-electron/biometric.darwin.main").default;
|
const BiometricDarwinMain = require("jslib-electron/biometric.darwin.main").default;
|
||||||
this.biometricMain = new BiometricDarwinMain(this.i18nService, this.stateService);
|
this.biometricMain = new BiometricDarwinMain(this.i18nService, this.stateService);
|
||||||
}
|
}
|
||||||
|
@ -198,7 +193,7 @@ export class Main {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
(e: any) => {
|
(e: any) => {
|
||||||
// tslint:disable-next-line
|
// eslint-disable-next-line
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import { BrowserWindow, clipboard, dialog, MenuItemConstructorOptions } from "electron";
|
import { BrowserWindow, clipboard, dialog, MenuItemConstructorOptions } from "electron";
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
|
|
||||||
import { UpdaterMain } from "jslib-electron/updater.main";
|
import { UpdaterMain } from "jslib-electron/updater.main";
|
||||||
import { isSnapStore, isWindowsStore } from "jslib-electron/utils";
|
import { isSnapStore, isWindowsStore } from "jslib-electron/utils";
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ import { BrowserWindow, dialog, MenuItemConstructorOptions, shell } from "electr
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
|
|
||||||
import { isMacAppStore, isWindowsStore } from "jslib-electron/utils";
|
import { isMacAppStore, isWindowsStore } from "jslib-electron/utils";
|
||||||
|
|
||||||
import { IMenubarMenu } from "./menubar";
|
import { IMenubarMenu } from "./menubar";
|
||||||
|
|
|
@ -2,14 +2,12 @@ import { BrowserWindow, MenuItemConstructorOptions } from "electron";
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
|
|
||||||
import { UpdaterMain } from "jslib-electron/updater.main";
|
import { UpdaterMain } from "jslib-electron/updater.main";
|
||||||
import { isMac } from "jslib-electron/utils";
|
import { isMac } from "jslib-electron/utils";
|
||||||
|
|
||||||
import { IMenubarMenu } from "./menubar";
|
|
||||||
|
|
||||||
import { FirstMenu } from "./menu.first";
|
import { FirstMenu } from "./menu.first";
|
||||||
import { MenuAccount } from "./menu.updater";
|
import { MenuAccount } from "./menu.updater";
|
||||||
|
import { IMenubarMenu } from "./menubar";
|
||||||
|
|
||||||
// AKA: "FirstMenu" or "MacMenu" - the first menu that shows on all macOs apps
|
// AKA: "FirstMenu" or "MacMenu" - the first menu that shows on all macOs apps
|
||||||
export class BitwardenMenu extends FirstMenu implements IMenubarMenu {
|
export class BitwardenMenu extends FirstMenu implements IMenubarMenu {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
|
import { MenuItemConstructorOptions } from "electron";
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
|
|
||||||
import { IMenubarMenu } from "./menubar";
|
import { IMenubarMenu } from "./menubar";
|
||||||
|
|
||||||
import { MenuItemConstructorOptions } from "electron";
|
|
||||||
|
|
||||||
export class EditMenu implements IMenubarMenu {
|
export class EditMenu implements IMenubarMenu {
|
||||||
readonly id: string = "editMenu";
|
readonly id: string = "editMenu";
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,12 @@ import { BrowserWindow, MenuItemConstructorOptions } from "electron";
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
|
import { UpdaterMain } from "jslib-electron/updater.main";
|
||||||
import { IMenubarMenu } from "./menubar";
|
import { isMac, isMacAppStore } from "jslib-electron/utils";
|
||||||
|
|
||||||
import { FirstMenu } from "./menu.first";
|
import { FirstMenu } from "./menu.first";
|
||||||
import { MenuAccount } from "./menu.updater";
|
import { MenuAccount } from "./menu.updater";
|
||||||
|
import { IMenubarMenu } from "./menubar";
|
||||||
import { UpdaterMain } from "jslib-electron/updater.main";
|
|
||||||
import { isMac, isMacAppStore } from "jslib-electron/utils";
|
|
||||||
|
|
||||||
export class FileMenu extends FirstMenu implements IMenubarMenu {
|
export class FileMenu extends FirstMenu implements IMenubarMenu {
|
||||||
readonly id: string = "fileMenu";
|
readonly id: string = "fileMenu";
|
||||||
|
|
|
@ -2,7 +2,6 @@ import { BrowserWindow, dialog, MenuItem, MenuItemConstructorOptions } from "ele
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
|
|
||||||
import { UpdaterMain } from "jslib-electron/updater.main";
|
import { UpdaterMain } from "jslib-electron/updater.main";
|
||||||
import { isMacAppStore, isSnapStore, isWindowsStore } from "jslib-electron/utils";
|
import { isMacAppStore, isSnapStore, isWindowsStore } from "jslib-electron/utils";
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
|
import { shell, MenuItemConstructorOptions } from "electron";
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { IMenubarMenu } from "./menubar";
|
|
||||||
|
|
||||||
import { shell } from "electron";
|
|
||||||
|
|
||||||
import { isMacAppStore, isWindowsStore } from "jslib-electron/utils";
|
import { isMacAppStore, isWindowsStore } from "jslib-electron/utils";
|
||||||
|
|
||||||
import { MenuItemConstructorOptions } from "electron";
|
|
||||||
import { AboutMenu } from "./menu.about";
|
import { AboutMenu } from "./menu.about";
|
||||||
|
import { IMenubarMenu } from "./menubar";
|
||||||
|
|
||||||
export class HelpMenu implements IMenubarMenu {
|
export class HelpMenu implements IMenubarMenu {
|
||||||
readonly id: string = "help";
|
readonly id: string = "help";
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import { app, Menu } from "electron";
|
import { app, Menu } from "electron";
|
||||||
|
|
||||||
import { Main } from "../main";
|
|
||||||
|
|
||||||
import { BaseMenu } from "jslib-electron/baseMenu";
|
import { BaseMenu } from "jslib-electron/baseMenu";
|
||||||
|
|
||||||
|
import { Main } from "../main";
|
||||||
|
|
||||||
import { MenuUpdateRequest } from "./menu.updater";
|
import { MenuUpdateRequest } from "./menu.updater";
|
||||||
import { Menubar } from "./menubar";
|
import { Menubar } from "./menubar";
|
||||||
|
|
||||||
const cloudWebVaultUrl: string = "https://vault.bitwarden.com";
|
const cloudWebVaultUrl = "https://vault.bitwarden.com";
|
||||||
|
|
||||||
export class MenuMain extends BaseMenu {
|
export class MenuMain extends BaseMenu {
|
||||||
constructor(private main: Main) {
|
constructor(private main: Main) {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
|
import { MenuItemConstructorOptions } from "electron";
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
|
|
||||||
import { IMenubarMenu } from "./menubar";
|
import { IMenubarMenu } from "./menubar";
|
||||||
|
|
||||||
import { MenuItemConstructorOptions } from "electron";
|
|
||||||
|
|
||||||
export class ViewMenu implements IMenubarMenu {
|
export class ViewMenu implements IMenubarMenu {
|
||||||
readonly id: "viewMenu";
|
readonly id: "viewMenu";
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
|
import { MenuItemConstructorOptions } from "electron";
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
|
|
||||||
import { isMac } from "jslib-electron/utils";
|
import { isMac } from "jslib-electron/utils";
|
||||||
import { WindowMain } from "jslib-electron/window.main";
|
import { WindowMain } from "jslib-electron/window.main";
|
||||||
|
|
||||||
import { IMenubarMenu } from "./menubar";
|
import { IMenubarMenu } from "./menubar";
|
||||||
|
|
||||||
import { MenuItemConstructorOptions } from "electron";
|
|
||||||
|
|
||||||
export class WindowMenu implements IMenubarMenu {
|
export class WindowMenu implements IMenubarMenu {
|
||||||
readonly id: string;
|
readonly id: string;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
import { Menu, MenuItemConstructorOptions } from "electron";
|
import { Menu, MenuItemConstructorOptions } from "electron";
|
||||||
|
|
||||||
|
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||||
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
|
import { UpdaterMain } from "jslib-electron/updater.main";
|
||||||
|
import { isMac } from "jslib-electron/utils";
|
||||||
|
import { WindowMain } from "jslib-electron/window.main";
|
||||||
|
|
||||||
import { AboutMenu } from "./menu.about";
|
import { AboutMenu } from "./menu.about";
|
||||||
import { AccountMenu } from "./menu.account";
|
import { AccountMenu } from "./menu.account";
|
||||||
import { BitwardenMenu } from "./menu.bitwarden";
|
import { BitwardenMenu } from "./menu.bitwarden";
|
||||||
|
@ -10,13 +16,6 @@ import { MenuUpdateRequest } from "./menu.updater";
|
||||||
import { ViewMenu } from "./menu.view";
|
import { ViewMenu } from "./menu.view";
|
||||||
import { WindowMenu } from "./menu.window";
|
import { WindowMenu } from "./menu.window";
|
||||||
|
|
||||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
|
||||||
|
|
||||||
import { UpdaterMain } from "jslib-electron/updater.main";
|
|
||||||
import { isMac } from "jslib-electron/utils";
|
|
||||||
import { WindowMain } from "jslib-electron/window.main";
|
|
||||||
|
|
||||||
export interface IMenubarMenu {
|
export interface IMenubarMenu {
|
||||||
id: string;
|
id: string;
|
||||||
label: string;
|
label: string;
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import { app, ipcMain } from "electron";
|
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
|
|
||||||
import { Main } from "../main";
|
import { app, ipcMain } from "electron";
|
||||||
|
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
|
|
||||||
|
import { Main } from "../main";
|
||||||
|
|
||||||
import { MenuUpdateRequest } from "./menu.updater";
|
import { MenuUpdateRequest } from "./menu.updater";
|
||||||
|
|
||||||
const SyncInterval = 5 * 60 * 1000; // 5 minutes
|
const SyncInterval = 5 * 60 * 1000; // 5 minutes
|
||||||
|
@ -56,6 +57,7 @@ export class MessagingMain {
|
||||||
break;
|
break;
|
||||||
case "removeOpenAtLogin":
|
case "removeOpenAtLogin":
|
||||||
this.removeOpenAtLogin();
|
this.removeOpenAtLogin();
|
||||||
|
break;
|
||||||
case "setFocus":
|
case "setFocus":
|
||||||
this.setFocus();
|
this.setFocus();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
import { existsSync, promises as fs } from "fs";
|
import { existsSync, promises as fs } from "fs";
|
||||||
import { Socket } from "net";
|
import { Socket } from "net";
|
||||||
import * as ipc from "node-ipc";
|
|
||||||
import { homedir, userInfo } from "os";
|
import { homedir, userInfo } from "os";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
import * as util from "util";
|
import * as util from "util";
|
||||||
|
|
||||||
import { ipcMain } from "electron";
|
import { ipcMain } from "electron";
|
||||||
|
import * as ipc from "node-ipc";
|
||||||
|
|
||||||
import { LogService } from "jslib-common/abstractions/log.service";
|
import { LogService } from "jslib-common/abstractions/log.service";
|
||||||
import { WindowMain } from "jslib-electron/window.main";
|
import { WindowMain } from "jslib-electron/window.main";
|
||||||
|
|
||||||
|
@ -98,7 +99,7 @@ export class NativeMessagingMain {
|
||||||
};
|
};
|
||||||
|
|
||||||
switch (process.platform) {
|
switch (process.platform) {
|
||||||
case "win32":
|
case "win32": {
|
||||||
const destination = path.join(this.userPath, "browsers");
|
const destination = path.join(this.userPath, "browsers");
|
||||||
this.writeManifest(path.join(destination, "firefox.json"), firefoxJson);
|
this.writeManifest(path.join(destination, "firefox.json"), firefoxJson);
|
||||||
this.writeManifest(path.join(destination, "chrome.json"), chromeJson);
|
this.writeManifest(path.join(destination, "chrome.json"), chromeJson);
|
||||||
|
@ -114,7 +115,8 @@ export class NativeMessagingMain {
|
||||||
path.join(destination, "chrome.json")
|
path.join(destination, "chrome.json")
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case "darwin":
|
}
|
||||||
|
case "darwin": {
|
||||||
const nmhs = this.getDarwinNMHS();
|
const nmhs = this.getDarwinNMHS();
|
||||||
for (const [key, value] of Object.entries(nmhs)) {
|
for (const [key, value] of Object.entries(nmhs)) {
|
||||||
if (existsSync(value)) {
|
if (existsSync(value)) {
|
||||||
|
@ -133,6 +135,7 @@ export class NativeMessagingMain {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case "linux":
|
case "linux":
|
||||||
if (existsSync(`${this.homedir()}/.mozilla/`)) {
|
if (existsSync(`${this.homedir()}/.mozilla/`)) {
|
||||||
this.writeManifest(
|
this.writeManifest(
|
||||||
|
@ -172,15 +175,16 @@ export class NativeMessagingMain {
|
||||||
"HKCU\\SOFTWARE\\Google\\Chrome\\NativeMessagingHosts\\com.8bit.bitwarden"
|
"HKCU\\SOFTWARE\\Google\\Chrome\\NativeMessagingHosts\\com.8bit.bitwarden"
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case "darwin":
|
case "darwin": {
|
||||||
const nmhs = this.getDarwinNMHS();
|
const nmhs = this.getDarwinNMHS();
|
||||||
for (const [_, value] of Object.entries(nmhs)) {
|
for (const [, value] of Object.entries(nmhs)) {
|
||||||
const p = path.join(value, "NativeMessagingHosts", "com.8bit.bitwarden.json");
|
const p = path.join(value, "NativeMessagingHosts", "com.8bit.bitwarden.json");
|
||||||
if (existsSync(p)) {
|
if (existsSync(p)) {
|
||||||
fs.unlink(p);
|
fs.unlink(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case "linux":
|
case "linux":
|
||||||
if (
|
if (
|
||||||
existsSync(`${this.homedir()}/.mozilla/native-messaging-hosts/com.8bit.bitwarden.json`)
|
existsSync(`${this.homedir()}/.mozilla/native-messaging-hosts/com.8bit.bitwarden.json`)
|
||||||
|
@ -214,6 +218,7 @@ export class NativeMessagingMain {
|
||||||
}
|
}
|
||||||
|
|
||||||
private getDarwinNMHS() {
|
private getDarwinNMHS() {
|
||||||
|
/* eslint-disable no-useless-escape */
|
||||||
return {
|
return {
|
||||||
Firefox: `${this.homedir()}/Library/Application\ Support/Mozilla/`,
|
Firefox: `${this.homedir()}/Library/Application\ Support/Mozilla/`,
|
||||||
Chrome: `${this.homedir()}/Library/Application\ Support/Google/Chrome/`,
|
Chrome: `${this.homedir()}/Library/Application\ Support/Google/Chrome/`,
|
||||||
|
@ -227,6 +232,7 @@ export class NativeMessagingMain {
|
||||||
"Microsoft Edge Canary": `${this.homedir()}/Library/Application\ Support/Microsoft\ Edge\ Canary/`,
|
"Microsoft Edge Canary": `${this.homedir()}/Library/Application\ Support/Microsoft\ Edge\ Canary/`,
|
||||||
Vivaldi: `${this.homedir()}/Library/Application\ Support/Vivaldi/`,
|
Vivaldi: `${this.homedir()}/Library/Application\ Support/Vivaldi/`,
|
||||||
};
|
};
|
||||||
|
/* eslint-enable no-useless-escape */
|
||||||
}
|
}
|
||||||
|
|
||||||
private async writeManifest(destination: string, manifest: object) {
|
private async writeManifest(destination: string, manifest: object) {
|
||||||
|
@ -245,6 +251,7 @@ export class NativeMessagingMain {
|
||||||
}
|
}
|
||||||
|
|
||||||
private getRegeditInstance() {
|
private getRegeditInstance() {
|
||||||
|
// eslint-disable-next-line
|
||||||
const regedit = require("regedit");
|
const regedit = require("regedit");
|
||||||
regedit.setExternalVBSLocation(path.join(path.dirname(this.exePath), "resources/regedit/vbs"));
|
regedit.setExternalVBSLocation(path.join(path.dirname(this.exePath), "resources/regedit/vbs"));
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ const IdleLockSeconds = 5 * 60; // 5 minutes
|
||||||
const IdleCheckInterval = 30 * 1000; // 30 seconds
|
const IdleCheckInterval = 30 * 1000; // 30 seconds
|
||||||
|
|
||||||
export class PowerMonitorMain {
|
export class PowerMonitorMain {
|
||||||
private idle: boolean = false;
|
private idle = false;
|
||||||
|
|
||||||
constructor(private main: Main) {}
|
constructor(private main: Main) {}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ import {
|
||||||
} from "jslib-common/models/domain/account";
|
} from "jslib-common/models/domain/account";
|
||||||
|
|
||||||
export class AccountSettings extends BaseAccountSettings {
|
export class AccountSettings extends BaseAccountSettings {
|
||||||
vaultTimeout: number = -1; // On Restart
|
vaultTimeout = -1; // On Restart
|
||||||
}
|
}
|
||||||
|
|
||||||
export class Account extends BaseAccount {
|
export class Account extends BaseAccount {
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
/* tslint:disable:no-console */
|
/* eslint-disable no-console */
|
||||||
import * as ipc from "node-ipc";
|
|
||||||
import { homedir } from "os";
|
import { homedir } from "os";
|
||||||
|
|
||||||
|
import * as ipc from "node-ipc";
|
||||||
|
|
||||||
ipc.config.id = "proxy";
|
ipc.config.id = "proxy";
|
||||||
ipc.config.retry = 1500;
|
ipc.config.retry = 1500;
|
||||||
ipc.config.logger = console.warn; // Stdout is used for native messaging
|
ipc.config.logger = console.warn; // Stdout is used for native messaging
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* tslint:disable:no-console */
|
/* eslint-disable no-console */
|
||||||
import IPC from "./ipc";
|
import IPC from "./ipc";
|
||||||
|
|
||||||
// Mostly based on the example from MDN,
|
// Mostly based on the example from MDN,
|
||||||
|
|
|
@ -9,14 +9,11 @@ import { LogService } from "jslib-common/abstractions/log.service";
|
||||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||||
import { StateService } from "jslib-common/abstractions/state.service";
|
import { StateService } from "jslib-common/abstractions/state.service";
|
||||||
|
import { KeySuffixOptions } from "jslib-common/enums/keySuffixOptions";
|
||||||
import { Utils } from "jslib-common/misc/utils";
|
import { Utils } from "jslib-common/misc/utils";
|
||||||
|
|
||||||
import { EncString } from "jslib-common/models/domain/encString";
|
import { EncString } from "jslib-common/models/domain/encString";
|
||||||
import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey";
|
import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey";
|
||||||
|
|
||||||
import { KeySuffixOptions } from "jslib-common/enums/keySuffixOptions";
|
|
||||||
|
|
||||||
const MessageValidTimeout = 10 * 1000;
|
const MessageValidTimeout = 10 * 1000;
|
||||||
const EncryptionAlgorithm = "sha1";
|
const EncryptionAlgorithm = "sha1";
|
||||||
|
|
||||||
|
@ -122,7 +119,7 @@ export class NativeMessagingService {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (message.command) {
|
switch (message.command) {
|
||||||
case "biometricUnlock":
|
case "biometricUnlock": {
|
||||||
if (!this.platformUtilService.supportsBiometric()) {
|
if (!this.platformUtilService.supportsBiometric()) {
|
||||||
return this.send({ command: "biometricUnlock", response: "not supported" }, appId);
|
return this.send({ command: "biometricUnlock", response: "not supported" }, appId);
|
||||||
}
|
}
|
||||||
|
@ -154,8 +151,10 @@ export class NativeMessagingService {
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
this.logService.error("NativeMessage, got unknown command.");
|
this.logService.error("NativeMessage, got unknown command.");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { Injectable } from "@angular/core";
|
import { Injectable } from "@angular/core";
|
||||||
|
|
||||||
import { PasswordRepromptService as BasePasswordRepromptService } from "jslib-angular/services/passwordReprompt.service";
|
import { PasswordRepromptService as BasePasswordRepromptService } from "jslib-angular/services/passwordReprompt.service";
|
||||||
|
|
||||||
import { PasswordRepromptComponent } from "../app/components/password-reprompt.component";
|
import { PasswordRepromptComponent } from "../app/components/password-reprompt.component";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|
|
@ -1,11 +1,9 @@
|
||||||
|
import { StateService as StateServiceAbstraction } from "jslib-common/abstractions/state.service";
|
||||||
|
import { GlobalState } from "jslib-common/models/domain/globalState";
|
||||||
import { StateService as BaseStateService } from "jslib-common/services/state.service";
|
import { StateService as BaseStateService } from "jslib-common/services/state.service";
|
||||||
|
|
||||||
import { Account } from "../models/account";
|
import { Account } from "../models/account";
|
||||||
|
|
||||||
import { StateService as StateServiceAbstraction } from "jslib-common/abstractions/state.service";
|
|
||||||
|
|
||||||
import { GlobalState } from "jslib-common/models/domain/globalState";
|
|
||||||
|
|
||||||
export class StateService
|
export class StateService
|
||||||
extends BaseStateService<GlobalState, Account>
|
extends BaseStateService<GlobalState, Account>
|
||||||
implements StateServiceAbstraction
|
implements StateServiceAbstraction
|
||||||
|
|
67
tslint.json
67
tslint.json
|
@ -1,67 +0,0 @@
|
||||||
{
|
|
||||||
"extends": "tslint:recommended",
|
|
||||||
"rules": {
|
|
||||||
"align": [true, "statements", "members"],
|
|
||||||
"ban-types": {
|
|
||||||
"options": [
|
|
||||||
["Object", "Avoid using the `Object` type. Did you mean `object`?"],
|
|
||||||
["Boolean", "Avoid using the `Boolean` type. Did you mean `boolean`?"],
|
|
||||||
["Number", "Avoid using the `Number` type. Did you mean `number`?"],
|
|
||||||
["String", "Avoid using the `String` type. Did you mean `string`?"],
|
|
||||||
["Symbol", "Avoid using the `Symbol` type. Did you mean `symbol`?"]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"member-access": [true, "no-public"],
|
|
||||||
"member-ordering": [
|
|
||||||
true,
|
|
||||||
{
|
|
||||||
"order": [
|
|
||||||
"public-static-field",
|
|
||||||
"public-static-method",
|
|
||||||
"protected-static-field",
|
|
||||||
"protected-static-method",
|
|
||||||
"private-static-field",
|
|
||||||
"private-static-method",
|
|
||||||
"public-instance-field",
|
|
||||||
"protected-instance-field",
|
|
||||||
"private-instance-field",
|
|
||||||
"public-constructor",
|
|
||||||
"protected-constructor",
|
|
||||||
"private-constructor",
|
|
||||||
"public-instance-method",
|
|
||||||
"protected-instance-method",
|
|
||||||
"private-instance-method"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"no-empty": [true],
|
|
||||||
"object-literal-sort-keys": false,
|
|
||||||
"object-literal-shorthand": [true, "never"],
|
|
||||||
"prefer-for-of": false,
|
|
||||||
"whitespace": [
|
|
||||||
true,
|
|
||||||
"check-branch",
|
|
||||||
"check-decl",
|
|
||||||
"check-module",
|
|
||||||
"check-operator",
|
|
||||||
"check-preblock",
|
|
||||||
"check-separator",
|
|
||||||
"check-type"
|
|
||||||
],
|
|
||||||
"max-classes-per-file": false,
|
|
||||||
"ordered-imports": true,
|
|
||||||
"arrow-parens": [true],
|
|
||||||
"trailing-comma": [
|
|
||||||
true,
|
|
||||||
{
|
|
||||||
"multiline": {
|
|
||||||
"objects": "always",
|
|
||||||
"arrays": "always",
|
|
||||||
"functions": "ignore",
|
|
||||||
"typeLiterals": "ignore"
|
|
||||||
},
|
|
||||||
"singleline": "never"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -9,11 +9,6 @@ const NODE_ENV = process.env.NODE_ENV == null ? "development" : process.env.NODE
|
||||||
const common = {
|
const common = {
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{
|
|
||||||
test: /\.ts$/,
|
|
||||||
enforce: "pre",
|
|
||||||
loader: "tslint-loader",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
test: /\.tsx?$/,
|
test: /\.tsx?$/,
|
||||||
use: "ts-loader",
|
use: "ts-loader",
|
||||||
|
|
|
@ -8,11 +8,6 @@ const { AngularWebpackPlugin } = require("@ngtools/webpack");
|
||||||
const common = {
|
const common = {
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
{
|
|
||||||
test: /\.ts$/,
|
|
||||||
enforce: "pre",
|
|
||||||
loader: "tslint-loader",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/,
|
test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/,
|
||||||
loader: "@ngtools/webpack",
|
loader: "@ngtools/webpack",
|
||||||
|
|
Loading…
Reference in New Issue