mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-21 11:35:34 +01:00
Add eslint (#2405)
This commit is contained in:
parent
b0dbb6f2f9
commit
c27f421d56
9
.eslintignore
Normal file
9
.eslintignore
Normal file
@ -0,0 +1,9 @@
|
||||
**/build
|
||||
jslib
|
||||
webpack.config.js
|
||||
karma.conf.js
|
||||
gulpfile.js
|
||||
src/content/autofill.js
|
||||
src/scripts/duo.js
|
||||
|
||||
**/node_modules
|
32
.eslintrc.json
Normal file
32
.eslintrc.json
Normal file
@ -0,0 +1,32 @@
|
||||
{
|
||||
"root": true,
|
||||
"env": {
|
||||
"browser": true,
|
||||
"webextensions": 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"]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
22
gulpfile.js
22
gulpfile.js
@ -1,13 +1,15 @@
|
||||
const gulp = require("gulp"),
|
||||
gulpif = require("gulp-if"),
|
||||
filter = require("gulp-filter"),
|
||||
replace = require("gulp-replace"),
|
||||
jeditor = require("gulp-json-editor"),
|
||||
child = require("child_process"),
|
||||
zip = require("gulp-zip"),
|
||||
manifest = require("./src/manifest.json"),
|
||||
del = require("del"),
|
||||
fs = require("fs");
|
||||
const child = require("child_process");
|
||||
const fs = require("fs");
|
||||
|
||||
const del = require("del");
|
||||
const gulp = require("gulp");
|
||||
const filter = require("gulp-filter");
|
||||
const gulpif = require("gulp-if");
|
||||
const jeditor = require("gulp-json-editor");
|
||||
const replace = require("gulp-replace");
|
||||
const zip = require("gulp-zip");
|
||||
|
||||
const manifest = require("./src/manifest.json");
|
||||
|
||||
const paths = {
|
||||
build: "./build/",
|
||||
|
2425
package-lock.json
generated
2425
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
15
package.json
15
package.json
@ -21,8 +21,8 @@
|
||||
"dist:safari:mas": "npm run build:prod && gulp dist:safari:mas",
|
||||
"dist:safari:masdev": "npm run build:prod && gulp dist:safari:masdev",
|
||||
"dist:safari:dmg": "npm run build:prod && gulp dist:safari:dmg",
|
||||
"lint": "tslint 'src/**/*.ts' && prettier --check .",
|
||||
"lint:fix": "tslint 'src/**/*.ts' --fix",
|
||||
"lint": "eslint . && prettier --check .",
|
||||
"lint:fix": "eslint . --fix",
|
||||
"test": "karma start --single-run",
|
||||
"test:watch": "karma start",
|
||||
"prettier": "prettier --write .",
|
||||
@ -36,12 +36,18 @@
|
||||
"@types/jasmine": "^3.7.6",
|
||||
"@types/mousetrap": "^1.6.8",
|
||||
"@types/node": "^16.11.12",
|
||||
"@typescript-eslint/eslint-plugin": "^5.12.1",
|
||||
"@typescript-eslint/parser": "^5.12.1",
|
||||
"buffer": "^6.0.3",
|
||||
"clean-webpack-plugin": "^4.0.0",
|
||||
"copy-webpack-plugin": "^10.0.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"css-loader": "^6.5.1",
|
||||
"del": "^6.0.0",
|
||||
"eslint": "^8.9.0",
|
||||
"eslint-config-prettier": "^8.4.0",
|
||||
"eslint-import-resolver-typescript": "^2.5.0",
|
||||
"eslint-plugin-import": "^2.25.4",
|
||||
"gulp": "^4.0.2",
|
||||
"gulp-filter": "^7.0.0",
|
||||
"gulp-if": "^3.0.0",
|
||||
@ -68,8 +74,6 @@
|
||||
"style-loader": "^3.3.1",
|
||||
"tapable": "^1.1.3",
|
||||
"ts-loader": "^9.2.5",
|
||||
"tslint": "^6.1.0",
|
||||
"tslint-loader": "^3.5.4",
|
||||
"typescript": "4.3.5",
|
||||
"url": "^0.11.0",
|
||||
"util": "^0.12.4",
|
||||
@ -101,6 +105,7 @@
|
||||
"npm": "~8"
|
||||
},
|
||||
"lint-staged": {
|
||||
"./!(jslib)**": "prettier --ignore-unknown --write"
|
||||
"./!(jslib)**": "prettier --ignore-unknown --write",
|
||||
"*.ts": "eslint --fix"
|
||||
}
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
|
||||
import MainBackground from "./main.background";
|
||||
|
||||
import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
|
||||
import MainBackground from "./main.background";
|
||||
import LockedVaultPendingNotificationsItem from "./models/lockedVaultPendingNotificationsItem";
|
||||
|
||||
export default class CommandsBackground {
|
||||
|
@ -1,17 +1,16 @@
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
|
||||
import MainBackground from "./main.background";
|
||||
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { EventService } from "jslib-common/abstractions/event.service";
|
||||
import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { TotpService } from "jslib-common/abstractions/totp.service";
|
||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||
|
||||
import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType";
|
||||
import { EventType } from "jslib-common/enums/eventType";
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
|
||||
import MainBackground from "./main.background";
|
||||
import LockedVaultPendingNotificationsItem from "./models/lockedVaultPendingNotificationsItem";
|
||||
|
||||
export default class ContextMenusBackground {
|
||||
|
@ -1,41 +1,3 @@
|
||||
import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType";
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
|
||||
import { GlobalState } from "jslib-common/models/domain/globalState";
|
||||
|
||||
import { ApiService } from "jslib-common/services/api.service";
|
||||
import { AppIdService } from "jslib-common/services/appId.service";
|
||||
import { AuditService } from "jslib-common/services/audit.service";
|
||||
import { AuthService } from "jslib-common/services/auth.service";
|
||||
import { CipherService } from "jslib-common/services/cipher.service";
|
||||
import { CollectionService } from "jslib-common/services/collection.service";
|
||||
import { ConsoleLogService } from "jslib-common/services/consoleLog.service";
|
||||
import { ContainerService } from "jslib-common/services/container.service";
|
||||
import { EnvironmentService } from "jslib-common/services/environment.service";
|
||||
import { EventService } from "jslib-common/services/event.service";
|
||||
import { ExportService } from "jslib-common/services/export.service";
|
||||
import { FileUploadService } from "jslib-common/services/fileUpload.service";
|
||||
import { FolderService } from "jslib-common/services/folder.service";
|
||||
import { KeyConnectorService } from "jslib-common/services/keyConnector.service";
|
||||
import { NotificationsService } from "jslib-common/services/notifications.service";
|
||||
import { OrganizationService } from "jslib-common/services/organization.service";
|
||||
import { PasswordGenerationService } from "jslib-common/services/passwordGeneration.service";
|
||||
import { PolicyService } from "jslib-common/services/policy.service";
|
||||
import { ProviderService } from "jslib-common/services/provider.service";
|
||||
import { SearchService } from "jslib-common/services/search.service";
|
||||
import { SendService } from "jslib-common/services/send.service";
|
||||
import { SettingsService } from "jslib-common/services/settings.service";
|
||||
import { StateMigrationService } from "jslib-common/services/stateMigration.service";
|
||||
import { SyncService } from "jslib-common/services/sync.service";
|
||||
import { SystemService } from "jslib-common/services/system.service";
|
||||
import { TokenService } from "jslib-common/services/token.service";
|
||||
import { TotpService } from "jslib-common/services/totp.service";
|
||||
import { TwoFactorService } from "jslib-common/services/twoFactor.service";
|
||||
import { UserVerificationService } from "jslib-common/services/userVerification.service";
|
||||
import { WebCryptoFunctionService } from "jslib-common/services/webCryptoFunction.service";
|
||||
|
||||
import { ApiService as ApiServiceAbstraction } from "jslib-common/abstractions/api.service";
|
||||
import { AppIdService as AppIdServiceAbstraction } from "jslib-common/abstractions/appId.service";
|
||||
import { AuditService as AuditServiceAbstraction } from "jslib-common/abstractions/audit.service";
|
||||
@ -70,25 +32,48 @@ import { TotpService as TotpServiceAbstraction } from "jslib-common/abstractions
|
||||
import { TwoFactorService as TwoFactorServiceAbstraction } from "jslib-common/abstractions/twoFactor.service";
|
||||
import { UserVerificationService as UserVerificationServiceAbstraction } from "jslib-common/abstractions/userVerification.service";
|
||||
import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "jslib-common/abstractions/vaultTimeout.service";
|
||||
|
||||
import { AutofillService as AutofillServiceAbstraction } from "../services/abstractions/autofill.service";
|
||||
import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType";
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
import { StateFactory } from "jslib-common/factories/stateFactory";
|
||||
import { GlobalState } from "jslib-common/models/domain/globalState";
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
import { ApiService } from "jslib-common/services/api.service";
|
||||
import { AppIdService } from "jslib-common/services/appId.service";
|
||||
import { AuditService } from "jslib-common/services/audit.service";
|
||||
import { AuthService } from "jslib-common/services/auth.service";
|
||||
import { CipherService } from "jslib-common/services/cipher.service";
|
||||
import { CollectionService } from "jslib-common/services/collection.service";
|
||||
import { ConsoleLogService } from "jslib-common/services/consoleLog.service";
|
||||
import { ContainerService } from "jslib-common/services/container.service";
|
||||
import { EnvironmentService } from "jslib-common/services/environment.service";
|
||||
import { EventService } from "jslib-common/services/event.service";
|
||||
import { ExportService } from "jslib-common/services/export.service";
|
||||
import { FileUploadService } from "jslib-common/services/fileUpload.service";
|
||||
import { FolderService } from "jslib-common/services/folder.service";
|
||||
import { KeyConnectorService } from "jslib-common/services/keyConnector.service";
|
||||
import { NotificationsService } from "jslib-common/services/notifications.service";
|
||||
import { OrganizationService } from "jslib-common/services/organization.service";
|
||||
import { PasswordGenerationService } from "jslib-common/services/passwordGeneration.service";
|
||||
import { PolicyService } from "jslib-common/services/policy.service";
|
||||
import { ProviderService } from "jslib-common/services/provider.service";
|
||||
import { SearchService } from "jslib-common/services/search.service";
|
||||
import { SendService } from "jslib-common/services/send.service";
|
||||
import { SettingsService } from "jslib-common/services/settings.service";
|
||||
import { StateMigrationService } from "jslib-common/services/stateMigration.service";
|
||||
import { SyncService } from "jslib-common/services/sync.service";
|
||||
import { SystemService } from "jslib-common/services/system.service";
|
||||
import { TokenService } from "jslib-common/services/token.service";
|
||||
import { TotpService } from "jslib-common/services/totp.service";
|
||||
import { TwoFactorService } from "jslib-common/services/twoFactor.service";
|
||||
import { UserVerificationService } from "jslib-common/services/userVerification.service";
|
||||
import { WebCryptoFunctionService } from "jslib-common/services/webCryptoFunction.service";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
import { SafariApp } from "../browser/safariApp";
|
||||
|
||||
import CommandsBackground from "./commands.background";
|
||||
import ContextMenusBackground from "./contextMenus.background";
|
||||
import IdleBackground from "./idle.background";
|
||||
import { NativeMessagingBackground } from "./nativeMessaging.background";
|
||||
import NotificationBackground from "./notification.background";
|
||||
import RuntimeBackground from "./runtime.background";
|
||||
import TabsBackground from "./tabs.background";
|
||||
import WebRequestBackground from "./webRequest.background";
|
||||
import WindowsBackground from "./windows.background";
|
||||
|
||||
import { StateService as StateServiceAbstraction } from "../services/abstractions/state.service";
|
||||
|
||||
import { Account } from "../models/account";
|
||||
import { PopupUtilsService } from "../popup/services/popup-utils.service";
|
||||
import { AutofillService as AutofillServiceAbstraction } from "../services/abstractions/autofill.service";
|
||||
import { StateService as StateServiceAbstraction } from "../services/abstractions/state.service";
|
||||
import AutofillService from "../services/autofill.service";
|
||||
import { BrowserCryptoService } from "../services/browserCrypto.service";
|
||||
import BrowserMessagingService from "../services/browserMessaging.service";
|
||||
@ -99,9 +84,15 @@ import I18nService from "../services/i18n.service";
|
||||
import { StateService } from "../services/state.service";
|
||||
import VaultTimeoutService from "../services/vaultTimeout.service";
|
||||
|
||||
import { Account } from "../models/account";
|
||||
|
||||
import { StateFactory } from "jslib-common/factories/stateFactory";
|
||||
import CommandsBackground from "./commands.background";
|
||||
import ContextMenusBackground from "./contextMenus.background";
|
||||
import IdleBackground from "./idle.background";
|
||||
import { NativeMessagingBackground } from "./nativeMessaging.background";
|
||||
import NotificationBackground from "./notification.background";
|
||||
import RuntimeBackground from "./runtime.background";
|
||||
import TabsBackground from "./tabs.background";
|
||||
import WebRequestBackground from "./webRequest.background";
|
||||
import WindowsBackground from "./windows.background";
|
||||
|
||||
export default class MainBackground {
|
||||
messagingService: MessagingServiceAbstraction;
|
||||
@ -460,6 +451,7 @@ export default class MainBackground {
|
||||
|
||||
this.twoFactorService = new TwoFactorService(this.i18nService, this.platformUtilsService);
|
||||
|
||||
// eslint-disable-next-line
|
||||
const that = this;
|
||||
const backgroundMessagingService = new (class extends MessagingServiceAbstraction {
|
||||
// AuthService should send the messages to the background not popup.
|
||||
@ -544,7 +536,7 @@ export default class MainBackground {
|
||||
await this.actionSetIcon(this.sidebarAction, suffix);
|
||||
}
|
||||
|
||||
async refreshBadgeAndMenu(forLocked: boolean = false) {
|
||||
async refreshBadgeAndMenu(forLocked = false) {
|
||||
if (!chrome.windows || !chrome.contextMenus) {
|
||||
return;
|
||||
}
|
||||
@ -659,6 +651,7 @@ export default class MainBackground {
|
||||
await clearStorage();
|
||||
|
||||
for (const key in storage) {
|
||||
// eslint-disable-next-line
|
||||
if (!storage.hasOwnProperty(key)) {
|
||||
continue;
|
||||
}
|
||||
@ -891,7 +884,7 @@ export default class MainBackground {
|
||||
return title.replace(/&/g, "&&");
|
||||
}
|
||||
|
||||
private async fullSync(override: boolean = false) {
|
||||
private async fullSync(override = false) {
|
||||
const syncInternal = 6 * 60 * 60 * 1000; // 6 hours
|
||||
const lastSync = await this.syncService.getLastSync();
|
||||
|
||||
|
@ -7,13 +7,12 @@ import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||
|
||||
import { Utils } from "jslib-common/misc/utils";
|
||||
|
||||
import { EncString } from "jslib-common/models/domain/encString";
|
||||
import { SymmetricCryptoKey } from "jslib-common/models/domain/symmetricCryptoKey";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
|
||||
import RuntimeBackground from "./runtime.background";
|
||||
|
||||
const MessageValidTimeout = 10 * 1000;
|
||||
@ -127,7 +126,7 @@ export class NativeMessagingBackground {
|
||||
this.connected = false;
|
||||
this.port.disconnect();
|
||||
break;
|
||||
case "setupEncryption":
|
||||
case "setupEncryption": {
|
||||
// Ignore since it belongs to another device
|
||||
if (message.appId !== this.appId) {
|
||||
return;
|
||||
@ -147,6 +146,7 @@ export class NativeMessagingBackground {
|
||||
this.sharedSecret = new SymmetricCryptoKey(decrypted);
|
||||
this.secureSetupResolve();
|
||||
break;
|
||||
}
|
||||
case "invalidateEncryption":
|
||||
// Ignore since it belongs to another device
|
||||
if (message.appId !== this.appId) {
|
||||
@ -173,6 +173,7 @@ export class NativeMessagingBackground {
|
||||
}
|
||||
case "wrongUserId":
|
||||
this.showWrongUserDialog();
|
||||
break;
|
||||
default:
|
||||
// Ignore since it belongs to another device
|
||||
if (!this.platformUtilsService.isSafari() && message.appId !== this.appId) {
|
||||
@ -279,7 +280,7 @@ export class NativeMessagingBackground {
|
||||
}
|
||||
|
||||
switch (message.command) {
|
||||
case "biometricUnlock":
|
||||
case "biometricUnlock": {
|
||||
await this.stateService.setBiometricAwaitingAcceptance(null);
|
||||
|
||||
if (message.response === "not enabled") {
|
||||
@ -337,8 +338,10 @@ export class NativeMessagingBackground {
|
||||
this.runtimeBackground.processMessage({ command: "unlocked" }, null, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
this.logService.error("NativeMessage, got unknown command: " + message.command);
|
||||
break;
|
||||
}
|
||||
|
||||
if (this.resolver) {
|
||||
|
@ -1,25 +1,19 @@
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
import { LoginUriView } from "jslib-common/models/view/loginUriView";
|
||||
import { LoginView } from "jslib-common/models/view/loginView";
|
||||
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { FolderService } from "jslib-common/abstractions/folder.service";
|
||||
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||
|
||||
import { AutofillService } from "../services/abstractions/autofill.service";
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
import { PolicyType } from "jslib-common/enums/policyType";
|
||||
import { Utils } from "jslib-common/misc/utils";
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
import { LoginUriView } from "jslib-common/models/view/loginUriView";
|
||||
import { LoginView } from "jslib-common/models/view/loginView";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
import { AutofillService } from "../services/abstractions/autofill.service";
|
||||
import { StateService } from "../services/abstractions/state.service";
|
||||
|
||||
import MainBackground from "./main.background";
|
||||
|
||||
import { Utils } from "jslib-common/misc/utils";
|
||||
|
||||
import { PolicyType } from "jslib-common/enums/policyType";
|
||||
|
||||
import { StateService } from "../services/abstractions/state.service";
|
||||
import AddChangePasswordQueueMessage from "./models/addChangePasswordQueueMessage";
|
||||
import AddLoginQueueMessage from "./models/addLoginQueueMessage";
|
||||
import AddLoginRuntimeMessage from "./models/addLoginRuntimeMessage";
|
||||
@ -107,13 +101,14 @@ export default class NotificationBackground {
|
||||
break;
|
||||
case "collectPageDetailsResponse":
|
||||
switch (msg.sender) {
|
||||
case "notificationBar":
|
||||
case "notificationBar": {
|
||||
const forms = this.autofillService.getFormsWithPasswordFields(msg.details);
|
||||
await BrowserApi.tabSendMessageData(msg.tab, "notificationBarPageDetails", {
|
||||
details: msg.details,
|
||||
forms: forms,
|
||||
});
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -253,7 +248,7 @@ export default class NotificationBackground {
|
||||
loginDomain: string,
|
||||
loginInfo: AddLoginRuntimeMessage,
|
||||
tab: chrome.tabs.Tab,
|
||||
isVaultLocked: boolean = false
|
||||
isVaultLocked = false
|
||||
) {
|
||||
// remove any old messages for this tab
|
||||
this.removeTabFromNotificationQueue(tab);
|
||||
@ -304,7 +299,7 @@ export default class NotificationBackground {
|
||||
loginDomain: string,
|
||||
newPassword: string,
|
||||
tab: chrome.tabs.Tab,
|
||||
isVaultLocked: boolean = false
|
||||
isVaultLocked = false
|
||||
) {
|
||||
// remove any old messages for this tab
|
||||
this.removeTabFromNotificationQueue(tab);
|
||||
|
@ -3,17 +3,14 @@ import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { LogService } from "jslib-common/abstractions/log.service";
|
||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||
import { NotificationsService } from "jslib-common/abstractions/notifications.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { SystemService } from "jslib-common/abstractions/system.service";
|
||||
import { Utils } from "jslib-common/misc/utils";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
import { AutofillService } from "../services/abstractions/autofill.service";
|
||||
import BrowserPlatformUtilsService from "../services/browserPlatformUtils.service";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
|
||||
import MainBackground from "./main.background";
|
||||
|
||||
import { Utils } from "jslib-common/misc/utils";
|
||||
import LockedVaultPendingNotificationsItem from "./models/lockedVaultPendingNotificationsItem";
|
||||
|
||||
export default class RuntimeBackground {
|
||||
@ -62,7 +59,7 @@ export default class RuntimeBackground {
|
||||
async processMessage(msg: any, sender: any, sendResponse: any) {
|
||||
switch (msg.command) {
|
||||
case "loggedIn":
|
||||
case "unlocked":
|
||||
case "unlocked": {
|
||||
let item: LockedVaultPendingNotificationsItem;
|
||||
|
||||
if (this.lockedVaultPendingNotifications?.length > 0) {
|
||||
@ -87,6 +84,7 @@ export default class RuntimeBackground {
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "addToLockedVaultPendingNotifications":
|
||||
this.lockedVaultPendingNotifications.push(msg.data);
|
||||
break;
|
||||
@ -122,7 +120,7 @@ export default class RuntimeBackground {
|
||||
case "collectPageDetailsResponse":
|
||||
switch (msg.sender) {
|
||||
case "autofiller":
|
||||
case "autofill_cmd":
|
||||
case "autofill_cmd": {
|
||||
const totpCode = await this.autofillService.doAutoFillActiveTab(
|
||||
[
|
||||
{
|
||||
@ -137,6 +135,7 @@ export default class RuntimeBackground {
|
||||
this.platformUtilsService.copyToClipboard(totpCode, { window: window });
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "contextMenu":
|
||||
clearTimeout(this.autofillTimeout);
|
||||
this.pageDetailsToAutoFill.push({
|
||||
@ -150,7 +149,7 @@ export default class RuntimeBackground {
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case "authResult":
|
||||
case "authResult": {
|
||||
const vaultUrl = this.environmentService.getWebVaultUrl();
|
||||
|
||||
if (msg.referrer == null || Utils.getHostname(vaultUrl) !== msg.referrer) {
|
||||
@ -168,10 +167,11 @@ export default class RuntimeBackground {
|
||||
this.logService.error("Unable to open sso popout tab");
|
||||
}
|
||||
break;
|
||||
case "webAuthnResult":
|
||||
const vaultUrl2 = this.environmentService.getWebVaultUrl();
|
||||
}
|
||||
case "webAuthnResult": {
|
||||
const vaultUrl = this.environmentService.getWebVaultUrl();
|
||||
|
||||
if (msg.referrer == null || Utils.getHostname(vaultUrl2) !== msg.referrer) {
|
||||
if (msg.referrer == null || Utils.getHostname(vaultUrl) !== msg.referrer) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -184,6 +184,7 @@ export default class RuntimeBackground {
|
||||
false
|
||||
);
|
||||
break;
|
||||
}
|
||||
case "reloadPopup":
|
||||
this.messagingService.send("reloadPopup");
|
||||
break;
|
||||
@ -198,6 +199,7 @@ export default class RuntimeBackground {
|
||||
break;
|
||||
case "getClickedElementResponse":
|
||||
this.platformUtilsService.copyToClipboard(msg.identifier, { window: window });
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||
|
||||
import { UriMatchType } from "jslib-common/enums/uriMatchType";
|
||||
|
||||
export default class WebRequestBackground {
|
||||
@ -35,6 +34,7 @@ export default class WebRequestBackground {
|
||||
this.pendingAuthRequests.push(details.requestId);
|
||||
|
||||
if (this.isFirefox) {
|
||||
// eslint-disable-next-line
|
||||
return new Promise(async (resolve, reject) => {
|
||||
await this.resolveAuthCredentials(details.url, resolve, reject);
|
||||
});
|
||||
@ -57,6 +57,7 @@ export default class WebRequestBackground {
|
||||
);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line
|
||||
private async resolveAuthCredentials(domain: string, success: Function, error: Function) {
|
||||
if (await this.vaultTimeoutService.isLocked()) {
|
||||
error();
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { SafariApp } from "./safariApp";
|
||||
|
||||
import { Utils } from "jslib-common/misc/utils";
|
||||
|
||||
import { SafariApp } from "./safariApp";
|
||||
|
||||
export class BrowserApi {
|
||||
static isWebExtensionsApi: boolean = typeof browser !== "undefined";
|
||||
static isSafariApi: boolean =
|
||||
@ -104,7 +104,7 @@ export class BrowserApi {
|
||||
return Promise.resolve(chrome.extension.getViews({ type: "popup" }).length > 0);
|
||||
}
|
||||
|
||||
static createNewTab(url: string, extensionPage: boolean = false, active: boolean = true) {
|
||||
static createNewTab(url: string, extensionPage = false, active = true) {
|
||||
chrome.tabs.create({ url: url, active: active });
|
||||
}
|
||||
|
||||
|
@ -18,13 +18,13 @@ document.addEventListener("DOMContentLoaded", (event) => {
|
||||
setInterval(() => doFillIfNeeded(), 500);
|
||||
}
|
||||
});
|
||||
chrome.runtime.onMessage.addListener((msg: any, sender: any, sendResponse: Function) => {
|
||||
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
|
||||
if (msg.command === "fillForm" && pageHref === msg.url) {
|
||||
filledThisHref = true;
|
||||
}
|
||||
});
|
||||
|
||||
function doFillIfNeeded(force: boolean = false) {
|
||||
function doFillIfNeeded(force = false) {
|
||||
if (force || pageHref !== window.location.href) {
|
||||
if (!force) {
|
||||
// Some websites are slow and rendering all page content. Try to fill again later
|
||||
|
@ -63,6 +63,7 @@ document.addEventListener("DOMContentLoaded", (event) => {
|
||||
}
|
||||
|
||||
const domains = obj[activeUserId].settings.neverDomains;
|
||||
// eslint-disable-next-line
|
||||
if (domains != null && domains.hasOwnProperty(window.location.hostname)) {
|
||||
return;
|
||||
}
|
||||
@ -76,11 +77,11 @@ document.addEventListener("DOMContentLoaded", (event) => {
|
||||
}
|
||||
});
|
||||
|
||||
chrome.runtime.onMessage.addListener((msg: any, sender: any, sendResponse: Function) => {
|
||||
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
|
||||
processMessages(msg, sendResponse);
|
||||
});
|
||||
|
||||
function processMessages(msg: any, sendResponse: Function) {
|
||||
function processMessages(msg: any, sendResponse: (response?: any) => void) {
|
||||
if (msg.command === "openNotificationBar") {
|
||||
if (inIframe) {
|
||||
return;
|
||||
|
4
src/globals.d.ts
vendored
4
src/globals.d.ts
vendored
@ -1,4 +1,4 @@
|
||||
declare function escape(s: string): string;
|
||||
declare function unescape(s: string): string;
|
||||
declare var opr: any;
|
||||
declare var safari: any;
|
||||
declare let opr: any;
|
||||
declare let safari: any;
|
||||
|
@ -8,7 +8,7 @@ import { BrowserGroupingsComponentState } from "./browserGroupingsComponentState
|
||||
import { BrowserSendComponentState } from "./browserSendComponentState";
|
||||
|
||||
export class AccountSettings extends BaseAccountSettings {
|
||||
vaultTimeout: number = -1; // On Restart
|
||||
vaultTimeout = -1; // On Restart
|
||||
}
|
||||
|
||||
export class Account extends BaseAccount {
|
||||
|
@ -2,6 +2,7 @@ import { CipherType } from "jslib-common/enums/cipherType";
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
import { CollectionView } from "jslib-common/models/view/collectionView";
|
||||
import { FolderView } from "jslib-common/models/view/folderView";
|
||||
|
||||
import { BrowserComponentState } from "./browserComponentState";
|
||||
|
||||
export class BrowserGroupingsComponentState extends BrowserComponentState {
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { SendType } from "jslib-common/enums/sendType";
|
||||
import { SendView } from "jslib-common/models/view/sendView";
|
||||
|
||||
import { BrowserComponentState } from "./browserComponentState";
|
||||
|
||||
export class BrowserSendComponentState extends BrowserComponentState {
|
||||
|
@ -1,8 +1,9 @@
|
||||
// eslint-disable-next-line
|
||||
require("./bar.scss");
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
var i18n = {};
|
||||
var lang = window.navigator.language;
|
||||
let i18n = {};
|
||||
let lang = window.navigator.language;
|
||||
|
||||
i18n.appName = chrome.i18n.getMessage("appName");
|
||||
i18n.close = chrome.i18n.getMessage("close");
|
||||
@ -12,7 +13,7 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
i18n.notificationAddDesc = chrome.i18n.getMessage("notificationAddDesc");
|
||||
i18n.notificationChangeSave = chrome.i18n.getMessage("notificationChangeSave");
|
||||
i18n.notificationChangeDesc = chrome.i18n.getMessage("notificationChangeDesc");
|
||||
lang = chrome.i18n.getUILanguage();
|
||||
lang = chrome.i18n.getUILanguage(); // eslint-disable-line
|
||||
|
||||
// delay 50ms so that we get proper body dimensions
|
||||
setTimeout(load, 50);
|
||||
@ -53,8 +54,8 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
if (getQueryVariable("add")) {
|
||||
setContent(document.getElementById("template-add"));
|
||||
|
||||
var addButton = document.querySelector("#template-add-clone .add-save"),
|
||||
neverButton = document.querySelector("#template-add-clone .never-save");
|
||||
var addButton = document.querySelector("#template-add-clone .add-save"), // eslint-disable-line
|
||||
neverButton = document.querySelector("#template-add-clone .never-save"); // eslint-disable-line
|
||||
|
||||
addButton.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
@ -89,7 +90,7 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
}
|
||||
} else if (getQueryVariable("change")) {
|
||||
setContent(document.getElementById("template-change"));
|
||||
var changeButton = document.querySelector("#template-change-clone .change-save");
|
||||
var changeButton = document.querySelector("#template-change-clone .change-save"); // eslint-disable-line
|
||||
changeButton.addEventListener("click", (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
|
@ -1,12 +1,11 @@
|
||||
import { Component } from "@angular/core";
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import { EnvironmentComponent as BaseEnvironmentComponent } from "jslib-angular/components/environment.component";
|
||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
|
||||
import { EnvironmentComponent as BaseEnvironmentComponent } from "jslib-angular/components/environment.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-environment",
|
||||
templateUrl: "environment.component.html",
|
||||
|
@ -1,13 +1,12 @@
|
||||
import { Component } from "@angular/core";
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import { HintComponent as BaseHintComponent } from "jslib-angular/components/hint.component";
|
||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { LogService } from "jslib-common/abstractions/log.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
|
||||
import { HintComponent as BaseHintComponent } from "jslib-angular/components/hint.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-hint",
|
||||
templateUrl: "hint.component.html",
|
||||
|
@ -5,7 +5,6 @@ import { EnvironmentService } from "jslib-common/abstractions/environment.servic
|
||||
import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
|
||||
import { Utils } from "jslib-common/misc/utils";
|
||||
|
||||
@Component({
|
||||
|
@ -2,6 +2,7 @@ import { Component, NgZone } from "@angular/core";
|
||||
import { Router } from "@angular/router";
|
||||
import Swal from "sweetalert2";
|
||||
|
||||
import { LockComponent as BaseLockComponent } from "jslib-angular/components/lock.component";
|
||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||
@ -13,8 +14,6 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||
|
||||
import { LockComponent as BaseLockComponent } from "jslib-angular/components/lock.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-lock",
|
||||
templateUrl: "lock.component.html",
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { Component, NgZone } from "@angular/core";
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import { LoginComponent as BaseLoginComponent } from "jslib-angular/components/login.component";
|
||||
import { AuthService } from "jslib-common/abstractions/auth.service";
|
||||
import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service";
|
||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||
@ -11,14 +12,12 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||
|
||||
import { LoginComponent as BaseLoginComponent } from "jslib-angular/components/login.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-login",
|
||||
templateUrl: "login.component.html",
|
||||
})
|
||||
export class LoginComponent extends BaseLoginComponent {
|
||||
protected alwaysRememberEmail: boolean = true;
|
||||
protected alwaysRememberEmail = true;
|
||||
|
||||
constructor(
|
||||
authService: AuthService,
|
||||
|
@ -1,18 +1,17 @@
|
||||
import { Component } from "@angular/core";
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import { RegisterComponent as BaseRegisterComponent } from "jslib-angular/components/register.component";
|
||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||
import { AuthService } from "jslib-common/abstractions/auth.service";
|
||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { LogService } from "jslib-common/abstractions/log.service";
|
||||
import { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
|
||||
import { RegisterComponent as BaseRegisterComponent } from "jslib-angular/components/register.component";
|
||||
import { LogService } from "jslib-common/abstractions/log.service";
|
||||
|
||||
@Component({
|
||||
selector: "app-register",
|
||||
templateUrl: "register.component.html",
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Component } from "@angular/core";
|
||||
|
||||
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 { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
@ -12,8 +12,6 @@ import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||
|
||||
import { SetPasswordComponent as BaseSetPasswordComponent } from "jslib-angular/components/set-password.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-set-password",
|
||||
templateUrl: "set-password.component.html",
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Component } from "@angular/core";
|
||||
|
||||
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 { AuthService } from "jslib-common/abstractions/auth.service";
|
||||
import { CryptoFunctionService } from "jslib-common/abstractions/cryptoFunction.service";
|
||||
@ -14,7 +14,6 @@ import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||
|
||||
import { SsoComponent as BaseSsoComponent } from "jslib-angular/components/sso.component";
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
|
||||
@Component({
|
||||
|
@ -1,12 +1,11 @@
|
||||
import { Component } from "@angular/core";
|
||||
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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service";
|
||||
|
||||
import { TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent } from "jslib-angular/components/two-factor-options.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-two-factor-options",
|
||||
templateUrl: "two-factor-options.component.html",
|
||||
|
@ -2,8 +2,7 @@ import { Component } from "@angular/core";
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType";
|
||||
|
||||
import { TwoFactorComponent as BaseTwoFactorComponent } from "jslib-angular/components/two-factor.component";
|
||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||
import { AuthService } from "jslib-common/abstractions/auth.service";
|
||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||
@ -15,12 +14,10 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||
import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service";
|
||||
|
||||
import { TwoFactorComponent as BaseTwoFactorComponent } from "jslib-angular/components/two-factor.component";
|
||||
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
import { TwoFactorProviderType } from "jslib-common/enums/twoFactorProviderType";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
const BroadcasterSubscriptionId = "TwoFactorComponent";
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
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 { CryptoService } from "jslib-common/abstractions/crypto.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 { SyncService } from "jslib-common/abstractions/sync.service";
|
||||
|
||||
import { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from "jslib-angular/components/update-temp-password.component";
|
||||
|
||||
interface MasterPasswordScore {
|
||||
Color: string;
|
||||
Text: string;
|
||||
|
@ -1,7 +1,5 @@
|
||||
import { animate, group, query, style, transition, trigger } from "@angular/animations";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
|
||||
const queryShown = query(
|
||||
":enter, :leave",
|
||||
[style({ position: "fixed", width: "100%", height: "100%" })],
|
||||
@ -22,7 +20,7 @@ export function queryTranslate(
|
||||
axis: string,
|
||||
from: number,
|
||||
to: number,
|
||||
zIndex: number = 1000
|
||||
zIndex = 1000
|
||||
) {
|
||||
return query(
|
||||
":" + direction,
|
||||
@ -38,21 +36,11 @@ export function queryTranslate(
|
||||
);
|
||||
}
|
||||
|
||||
export function queryTranslateX(
|
||||
direction: string,
|
||||
from: number,
|
||||
to: number,
|
||||
zIndex: number = 1000
|
||||
) {
|
||||
export function queryTranslateX(direction: string, from: number, to: number, zIndex = 1000) {
|
||||
return queryTranslate(direction, "X", from, to, zIndex);
|
||||
}
|
||||
|
||||
export function queryTranslateY(
|
||||
direction: string,
|
||||
from: number,
|
||||
to: number,
|
||||
zIndex: number = 1000
|
||||
) {
|
||||
export function queryTranslateY(direction: string, from: number, to: number, zIndex = 1000) {
|
||||
return queryTranslate(direction, "Y", from, to, zIndex);
|
||||
}
|
||||
|
||||
@ -81,6 +69,7 @@ const inSlideDown = [
|
||||
group([queryTranslateY("enter", -100, 0, 1010), queryTranslateY("leave", 0, 0), queryChildRoute]),
|
||||
];
|
||||
|
||||
// eslint-disable-next-line
|
||||
const outSlideUp = [
|
||||
queryShown,
|
||||
group([queryTranslateY("enter", 0, 0), queryTranslateY("leave", 0, -100, 1010)]),
|
||||
|
@ -5,8 +5,6 @@ import { AuthGuardService } from "jslib-angular/services/auth-guard.service";
|
||||
import { LockGuardService } from "jslib-angular/services/lock-guard.service";
|
||||
import { UnauthGuardService } from "jslib-angular/services/unauth-guard.service";
|
||||
|
||||
import { DebounceNavigationService } from "./services/debounceNavigationService";
|
||||
|
||||
import { EnvironmentComponent } from "./accounts/environment.component";
|
||||
import { HintComponent } from "./accounts/hint.component";
|
||||
import { HomeComponent } from "./accounts/home.component";
|
||||
@ -19,12 +17,12 @@ 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 { PasswordGeneratorHistoryComponent } from "./generator/password-generator-history.component";
|
||||
import { PasswordGeneratorComponent } from "./generator/password-generator.component";
|
||||
|
||||
import { TabsComponent } from "./tabs.component";
|
||||
|
||||
import { SendAddEditComponent } from "./send/send-add-edit.component";
|
||||
import { SendGroupingsComponent } from "./send/send-groupings.component";
|
||||
import { SendTypeComponent } from "./send/send-type.component";
|
||||
import { DebounceNavigationService } from "./services/debounceNavigationService";
|
||||
import { ExcludedDomainsComponent } from "./settings/excluded-domains.component";
|
||||
import { ExportComponent } from "./settings/export.component";
|
||||
import { FolderAddEditComponent } from "./settings/folder-add-edit.component";
|
||||
@ -33,7 +31,7 @@ import { OptionsComponent } from "./settings/options.component";
|
||||
import { PremiumComponent } from "./settings/premium.component";
|
||||
import { SettingsComponent } from "./settings/settings.component";
|
||||
import { SyncComponent } from "./settings/sync.component";
|
||||
|
||||
import { TabsComponent } from "./tabs.component";
|
||||
import { AddEditComponent } from "./vault/add-edit.component";
|
||||
import { AttachmentsComponent } from "./vault/attachments.component";
|
||||
import { CiphersComponent } from "./vault/ciphers.component";
|
||||
@ -44,10 +42,6 @@ import { PasswordHistoryComponent } from "./vault/password-history.component";
|
||||
import { ShareComponent } from "./vault/share.component";
|
||||
import { ViewComponent } from "./vault/view.component";
|
||||
|
||||
import { SendAddEditComponent } from "./send/send-add-edit.component";
|
||||
import { SendGroupingsComponent } from "./send/send-groupings.component";
|
||||
import { SendTypeComponent } from "./send/send-type.component";
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: "",
|
||||
@ -315,6 +309,7 @@ export class NoRouteReuseStrategy implements RouteReuseStrategy {
|
||||
return false;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line
|
||||
store(route: ActivatedRouteSnapshot, handle: {}) {
|
||||
/* Nothing */
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ import { DomSanitizer } from "@angular/platform-browser";
|
||||
import { NavigationEnd, Router, RouterOutlet } from "@angular/router";
|
||||
import { IndividualConfig, ToastrService } from "ngx-toastr";
|
||||
import Swal, { SweetAlertIcon } from "sweetalert2/src/sweetalert2.js";
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
|
||||
import { AuthService } from "jslib-common/abstractions/auth.service";
|
||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||
@ -11,6 +10,7 @@ import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
import { StateService } from "../services/abstractions/state.service";
|
||||
|
||||
import { routerTransition } from "./app-routing.animations";
|
||||
|
@ -1,92 +1,6 @@
|
||||
import { A11yModule } from "@angular/cdk/a11y";
|
||||
import { DragDropModule } from "@angular/cdk/drag-drop";
|
||||
import { ScrollingModule } from "@angular/cdk/scrolling";
|
||||
|
||||
import { AppRoutingModule } from "./app-routing.module";
|
||||
import { ServicesModule } from "./services/services.module";
|
||||
|
||||
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 { EnvironmentComponent } from "./accounts/environment.component";
|
||||
import { HintComponent } from "./accounts/hint.component";
|
||||
import { HomeComponent } from "./accounts/home.component";
|
||||
import { LockComponent } from "./accounts/lock.component";
|
||||
import { LoginComponent } from "./accounts/login.component";
|
||||
import { RegisterComponent } from "./accounts/register.component";
|
||||
import { RemovePasswordComponent } from "./accounts/remove-password.component";
|
||||
import { SetPasswordComponent } from "./accounts/set-password.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 { PasswordGeneratorHistoryComponent } from "./generator/password-generator-history.component";
|
||||
import { PasswordGeneratorComponent } from "./generator/password-generator.component";
|
||||
|
||||
import { AppComponent } from "./app.component";
|
||||
import { TabsComponent } from "./tabs.component";
|
||||
|
||||
import { ExcludedDomainsComponent } from "./settings/excluded-domains.component";
|
||||
import { ExportComponent } from "./settings/export.component";
|
||||
import { FolderAddEditComponent } from "./settings/folder-add-edit.component";
|
||||
import { FoldersComponent } from "./settings/folders.component";
|
||||
import { OptionsComponent } from "./settings/options.component";
|
||||
import { PremiumComponent } from "./settings/premium.component";
|
||||
import { SettingsComponent } from "./settings/settings.component";
|
||||
import { SyncComponent } from "./settings/sync.component";
|
||||
import { VaultTimeoutInputComponent } from "./settings/vault-timeout-input.component";
|
||||
|
||||
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 { CurrentTabComponent } from "./vault/current-tab.component";
|
||||
import { GroupingsComponent } from "./vault/groupings.component";
|
||||
import { PasswordHistoryComponent } from "./vault/password-history.component";
|
||||
import { ShareComponent } from "./vault/share.component";
|
||||
import { ViewCustomFieldsComponent } from "./vault/view-custom-fields.component";
|
||||
import { ViewComponent } from "./vault/view.component";
|
||||
|
||||
import { EffluxDatesComponent as SendEffluxDatesComponent } from "./send/efflux-dates.component";
|
||||
import { SendAddEditComponent } from "./send/send-add-edit.component";
|
||||
import { SendGroupingsComponent } from "./send/send-groupings.component";
|
||||
import { SendTypeComponent } from "./send/send-type.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 { ColorPasswordCountPipe } from "jslib-angular/pipes/color-password-count.pipe";
|
||||
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 { ActionButtonsComponent } from "./components/action-buttons.component";
|
||||
import { CipherRowComponent } from "./components/cipher-row.component";
|
||||
import { PasswordRepromptComponent } from "./components/password-reprompt.component";
|
||||
import { PopOutComponent } from "./components/pop-out.component";
|
||||
import { PrivateModeWarningComponent } from "./components/private-mode-warning.component";
|
||||
import { SendListComponent } from "./components/send-list.component";
|
||||
import { SetPinComponent } from "./components/set-pin.component";
|
||||
import { VerifyMasterPasswordComponent } from "./components/verify-master-password.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 { CurrencyPipe, DatePipe, registerLocaleData } from "@angular/common";
|
||||
import localeAz from "@angular/common/locales/az";
|
||||
import localeBe from "@angular/common/locales/be";
|
||||
@ -130,6 +44,81 @@ import localeUk from "@angular/common/locales/uk";
|
||||
import localeVi from "@angular/common/locales/vi";
|
||||
import localeZhCn from "@angular/common/locales/zh-Hans";
|
||||
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 { 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 { ColorPasswordCountPipe } from "jslib-angular/pipes/color-password-count.pipe";
|
||||
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 { HomeComponent } from "./accounts/home.component";
|
||||
import { LockComponent } from "./accounts/lock.component";
|
||||
import { LoginComponent } from "./accounts/login.component";
|
||||
import { RegisterComponent } from "./accounts/register.component";
|
||||
import { RemovePasswordComponent } from "./accounts/remove-password.component";
|
||||
import { SetPasswordComponent } from "./accounts/set-password.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 { AppRoutingModule } from "./app-routing.module";
|
||||
import { AppComponent } from "./app.component";
|
||||
import { ActionButtonsComponent } from "./components/action-buttons.component";
|
||||
import { CipherRowComponent } from "./components/cipher-row.component";
|
||||
import { PasswordRepromptComponent } from "./components/password-reprompt.component";
|
||||
import { PopOutComponent } from "./components/pop-out.component";
|
||||
import { PrivateModeWarningComponent } from "./components/private-mode-warning.component";
|
||||
import { SendListComponent } from "./components/send-list.component";
|
||||
import { SetPinComponent } from "./components/set-pin.component";
|
||||
import { VerifyMasterPasswordComponent } from "./components/verify-master-password.component";
|
||||
import { PasswordGeneratorHistoryComponent } from "./generator/password-generator-history.component";
|
||||
import { PasswordGeneratorComponent } from "./generator/password-generator.component";
|
||||
import { EffluxDatesComponent as SendEffluxDatesComponent } from "./send/efflux-dates.component";
|
||||
import { SendAddEditComponent } from "./send/send-add-edit.component";
|
||||
import { SendGroupingsComponent } from "./send/send-groupings.component";
|
||||
import { SendTypeComponent } from "./send/send-type.component";
|
||||
import { ServicesModule } from "./services/services.module";
|
||||
import { ExcludedDomainsComponent } from "./settings/excluded-domains.component";
|
||||
import { ExportComponent } from "./settings/export.component";
|
||||
import { FolderAddEditComponent } from "./settings/folder-add-edit.component";
|
||||
import { FoldersComponent } from "./settings/folders.component";
|
||||
import { OptionsComponent } from "./settings/options.component";
|
||||
import { PremiumComponent } from "./settings/premium.component";
|
||||
import { SettingsComponent } from "./settings/settings.component";
|
||||
import { SyncComponent } from "./settings/sync.component";
|
||||
import { VaultTimeoutInputComponent } from "./settings/vault-timeout-input.component";
|
||||
import { TabsComponent } from "./tabs.component";
|
||||
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 { CurrentTabComponent } from "./vault/current-tab.component";
|
||||
import { GroupingsComponent } from "./vault/groupings.component";
|
||||
import { PasswordHistoryComponent } from "./vault/password-history.component";
|
||||
import { ShareComponent } from "./vault/share.component";
|
||||
import { ViewCustomFieldsComponent } from "./vault/view-custom-fields.component";
|
||||
import { ViewComponent } from "./vault/view.component";
|
||||
|
||||
registerLocaleData(localeAz, "az");
|
||||
registerLocaleData(localeBe, "be");
|
||||
|
@ -1,17 +1,15 @@
|
||||
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
||||
|
||||
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 { EventService } from "jslib-common/abstractions/event.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.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 { 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";
|
||||
|
||||
@Component({
|
||||
selector: "app-action-buttons",
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { Component, OnInit } from "@angular/core";
|
||||
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
@Component({
|
||||
|
@ -1,8 +1,7 @@
|
||||
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
||||
|
||||
import { SendView } from "jslib-common/models/view/sendView";
|
||||
|
||||
import { SendType } from "jslib-common/enums/sendType";
|
||||
import { SendView } from "jslib-common/models/view/sendView";
|
||||
|
||||
@Component({
|
||||
selector: "app-send-list",
|
||||
|
@ -1,12 +1,11 @@
|
||||
import { Location } from "@angular/common";
|
||||
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 { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
|
||||
import { PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent } from "jslib-angular/components/password-generator-history.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-password-generator-history",
|
||||
templateUrl: "password-generator-history.component.html",
|
||||
|
@ -1,15 +1,13 @@
|
||||
import { Location } from "@angular/common";
|
||||
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 { PasswordGenerationService } from "jslib-common/abstractions/passwordGeneration.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
|
||||
import { PasswordGeneratorComponent as BasePasswordGeneratorComponent } from "jslib-angular/components/password-generator.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-password-generator",
|
||||
templateUrl: "password-generator.component.html",
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { enableProdMode } from "@angular/core";
|
||||
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
|
||||
|
||||
// tslint:disable-next-line
|
||||
require("./scss/popup.scss");
|
||||
|
||||
import { AppModule } from "./app.module";
|
||||
|
@ -1,6 +1,4 @@
|
||||
/* tslint:disable */
|
||||
import "core-js/stable";
|
||||
import "date-input-polyfill";
|
||||
import "web-animations-js";
|
||||
import "zone.js/dist/zone";
|
||||
/* tslint:enable */
|
||||
|
@ -1,14 +1,11 @@
|
||||
import { DatePipe } from "@angular/common";
|
||||
|
||||
import { Component, EventEmitter, Input, Output } from "@angular/core";
|
||||
|
||||
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 { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
|
||||
import { EffluxDatesComponent as BaseEffluxDatesComponent } from "jslib-angular/components/send/efflux-dates.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-send-efflux-dates",
|
||||
templateUrl: "efflux-dates.component.html",
|
||||
|
@ -1,11 +1,9 @@
|
||||
import { DatePipe, Location } from "@angular/common";
|
||||
|
||||
import { Component } from "@angular/core";
|
||||
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/send/add-edit.component";
|
||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { LogService } from "jslib-common/abstractions/log.service";
|
||||
@ -15,11 +13,8 @@ import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||
import { SendService } from "jslib-common/abstractions/send.service";
|
||||
|
||||
import { StateService } from "../../services/abstractions/state.service";
|
||||
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/send/add-edit.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-send-add-edit",
|
||||
templateUrl: "send-add-edit.component.html",
|
||||
|
@ -1,11 +1,7 @@
|
||||
import { ChangeDetectorRef, Component, NgZone } from "@angular/core";
|
||||
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import { SendView } from "jslib-common/models/view/sendView";
|
||||
|
||||
import { SendComponent as BaseSendComponent } from "jslib-angular/components/send/send.component";
|
||||
|
||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
@ -15,14 +11,14 @@ import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||
import { SearchService } from "jslib-common/abstractions/search.service";
|
||||
import { SendService } from "jslib-common/abstractions/send.service";
|
||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||
import { SendType } from "jslib-common/enums/sendType";
|
||||
import { SendView } from "jslib-common/models/view/sendView";
|
||||
|
||||
import { BrowserSendComponentState } from "src/models/browserSendComponentState";
|
||||
|
||||
import { StateService } from "../../services/abstractions/state.service";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
import { SendType } from "jslib-common/enums/sendType";
|
||||
|
||||
import { BrowserSendComponentState } from "src/models/browserSendComponentState";
|
||||
|
||||
const ComponentId = "SendComponent";
|
||||
|
||||
@Component({
|
||||
|
@ -1,15 +1,9 @@
|
||||
import { Location } from "@angular/common";
|
||||
import { ChangeDetectorRef, Component, NgZone } from "@angular/core";
|
||||
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { Location } from "@angular/common";
|
||||
|
||||
import { SendView } from "jslib-common/models/view/sendView";
|
||||
|
||||
import { SendComponent as BaseSendComponent } from "jslib-angular/components/send/send.component";
|
||||
|
||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
@ -18,13 +12,12 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||
import { SearchService } from "jslib-common/abstractions/search.service";
|
||||
import { SendService } from "jslib-common/abstractions/send.service";
|
||||
|
||||
import { StateService } from "../../services/abstractions/state.service";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
import { SendType } from "jslib-common/enums/sendType";
|
||||
import { SendView } from "jslib-common/models/view/sendView";
|
||||
|
||||
import { BrowserComponentState } from "../../models/browserComponentState";
|
||||
import { StateService } from "../../services/abstractions/state.service";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
const ComponentId = "SendTypeComponent";
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
import { Injectable, OnDestroy } from "@angular/core";
|
||||
import { CanActivate, NavigationEnd, NavigationStart, Router } from "@angular/router";
|
||||
|
||||
import { Subscription } from "rxjs";
|
||||
import { filter, pairwise } from "rxjs/operators";
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
|
||||
import { ConsoleLogService } from "jslib-common/services/consoleLog.service";
|
||||
import { SearchService } from "jslib-common/services/search.service";
|
||||
|
||||
|
@ -30,12 +30,12 @@ export class PopupUtilsService {
|
||||
return this.privateMode;
|
||||
}
|
||||
|
||||
getContentScrollY(win: Window, scrollingContainer: string = "content"): number {
|
||||
getContentScrollY(win: Window, scrollingContainer = "content"): number {
|
||||
const content = win.document.getElementsByTagName(scrollingContainer)[0];
|
||||
return content.scrollTop;
|
||||
}
|
||||
|
||||
setContentScrollY(win: Window, scrollY: number, scrollingContainer: string = "content"): void {
|
||||
setContentScrollY(win: Window, scrollY: number, scrollingContainer = "content"): void {
|
||||
if (scrollY != null) {
|
||||
const content = win.document.getElementsByTagName(scrollingContainer)[0];
|
||||
content.scrollTop = scrollY;
|
||||
|
@ -1,16 +1,8 @@
|
||||
import { APP_INITIALIZER, LOCALE_ID, NgModule } from "@angular/core";
|
||||
|
||||
import { DebounceNavigationService } from "./debounceNavigationService";
|
||||
import { LockGuardService } from "./lock-guard.service";
|
||||
import { PasswordRepromptService } from "./password-reprompt.service";
|
||||
import { UnauthGuardService } from "./unauth-guard.service";
|
||||
|
||||
import { JslibServicesModule } from "jslib-angular/services/jslib-services.module";
|
||||
import { LockGuardService as BaseLockGuardService } from "jslib-angular/services/lock-guard.service";
|
||||
import { UnauthGuardService as BaseUnauthGuardService } from "jslib-angular/services/unauth-guard.service";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
|
||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||
import { AppIdService } from "jslib-common/abstractions/appId.service";
|
||||
import { AuditService } from "jslib-common/abstractions/audit.service";
|
||||
@ -46,24 +38,24 @@ import { TotpService } from "jslib-common/abstractions/totp.service";
|
||||
import { TwoFactorService } from "jslib-common/abstractions/twoFactor.service";
|
||||
import { UserVerificationService } from "jslib-common/abstractions/userVerification.service";
|
||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||
|
||||
import { AutofillService } from "../../services/abstractions/autofill.service";
|
||||
|
||||
import BrowserMessagingService from "../../services/browserMessaging.service";
|
||||
import BrowserMessagingPrivateModePopupService from "../../services/browserMessagingPrivateModePopup.service";
|
||||
|
||||
import { ThemeType } from "jslib-common/enums/themeType";
|
||||
import { AuthService } from "jslib-common/services/auth.service";
|
||||
import { ConsoleLogService } from "jslib-common/services/consoleLog.service";
|
||||
import { SearchService } from "jslib-common/services/search.service";
|
||||
|
||||
import MainBackground from "../../background/main.background";
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
import { AutofillService } from "../../services/abstractions/autofill.service";
|
||||
import { StateService as StateServiceAbstraction } from "../../services/abstractions/state.service";
|
||||
import BrowserMessagingService from "../../services/browserMessaging.service";
|
||||
import BrowserMessagingPrivateModePopupService from "../../services/browserMessagingPrivateModePopup.service";
|
||||
|
||||
import { DebounceNavigationService } from "./debounceNavigationService";
|
||||
import { LockGuardService } from "./lock-guard.service";
|
||||
import { PasswordRepromptService } from "./password-reprompt.service";
|
||||
import { PopupSearchService } from "./popup-search.service";
|
||||
import { PopupUtilsService } from "./popup-utils.service";
|
||||
|
||||
import { ThemeType } from "jslib-common/enums/themeType";
|
||||
|
||||
import { StateService as StateServiceAbstraction } from "../../services/abstractions/state.service";
|
||||
|
||||
import MainBackground from "../../background/main.background";
|
||||
import { UnauthGuardService } from "./unauth-guard.service";
|
||||
|
||||
const isPrivateMode = BrowserApi.getBackgroundPage() == null;
|
||||
const mainBackground: MainBackground = isPrivateMode
|
||||
@ -88,7 +80,7 @@ export function initFactory(
|
||||
popupUtilsService: PopupUtilsService,
|
||||
stateService: StateServiceAbstraction,
|
||||
logService: LogServiceAbstraction
|
||||
): Function {
|
||||
): () => void {
|
||||
return async () => {
|
||||
await stateService.init();
|
||||
|
||||
|
@ -1,16 +1,14 @@
|
||||
import { Component, NgZone, OnDestroy, OnInit } from "@angular/core";
|
||||
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { Utils } from "jslib-common/misc/utils";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
|
||||
import { Utils } from "jslib-common/misc/utils";
|
||||
|
||||
interface ExcludedDomain {
|
||||
uri: string;
|
||||
showCurrentUris: boolean;
|
||||
|
@ -2,6 +2,7 @@ import { Component } from "@angular/core";
|
||||
import { FormBuilder } from "@angular/forms";
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import { ExportComponent as BaseExportComponent } from "jslib-angular/components/export.component";
|
||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||
import { EventService } from "jslib-common/abstractions/event.service";
|
||||
import { ExportService } from "jslib-common/abstractions/export.service";
|
||||
@ -11,8 +12,6 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||
import { UserVerificationService } from "jslib-common/abstractions/userVerification.service";
|
||||
|
||||
import { ExportComponent as BaseExportComponent } from "jslib-angular/components/export.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-export",
|
||||
templateUrl: "export.component.html",
|
||||
|
@ -1,15 +1,13 @@
|
||||
import { Component } from "@angular/core";
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { FolderAddEditComponent as BaseFolderAddEditComponent } from "jslib-angular/components/folder-add-edit.component";
|
||||
import { FolderService } from "jslib-common/abstractions/folder.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { LogService } from "jslib-common/abstractions/log.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
|
||||
import { FolderAddEditComponent as BaseFolderAddEditComponent } from "jslib-angular/components/folder-add-edit.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-folder-add-edit",
|
||||
templateUrl: "folder-add-edit.component.html",
|
||||
|
@ -1,9 +1,8 @@
|
||||
import { Component, OnInit } from "@angular/core";
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import { FolderView } from "jslib-common/models/view/folderView";
|
||||
|
||||
import { FolderService } from "jslib-common/abstractions/folder.service";
|
||||
import { FolderView } from "jslib-common/models/view/folderView";
|
||||
|
||||
@Component({
|
||||
selector: "app-folders",
|
||||
|
@ -1,12 +1,11 @@
|
||||
import { Component, OnInit } from "@angular/core";
|
||||
|
||||
import { ThemeType } from "jslib-common/enums/themeType";
|
||||
import { UriMatchType } from "jslib-common/enums/uriMatchType";
|
||||
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { TotpService } from "jslib-common/abstractions/totp.service";
|
||||
import { ThemeType } from "jslib-common/enums/themeType";
|
||||
import { UriMatchType } from "jslib-common/enums/uriMatchType";
|
||||
|
||||
@Component({
|
||||
selector: "app-options",
|
||||
@ -31,9 +30,9 @@ export class OptionsComponent implements OnInit {
|
||||
uriMatchOptions: any[];
|
||||
clearClipboard: number;
|
||||
clearClipboardOptions: any[];
|
||||
showGeneral: boolean = true;
|
||||
showAutofill: boolean = true;
|
||||
showDisplay: boolean = true;
|
||||
showGeneral = true;
|
||||
showAutofill = true;
|
||||
showDisplay = true;
|
||||
|
||||
constructor(
|
||||
private messagingService: MessagingService,
|
||||
|
@ -1,14 +1,13 @@
|
||||
import { CurrencyPipe } from "@angular/common";
|
||||
import { Component } from "@angular/core";
|
||||
|
||||
import { PremiumComponent as BasePremiumComponent } from "jslib-angular/components/premium.component";
|
||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { LogService } from "jslib-common/abstractions/log.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
|
||||
import { PremiumComponent as BasePremiumComponent } from "jslib-angular/components/premium.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-premium",
|
||||
templateUrl: "premium.component.html",
|
||||
|
@ -3,10 +3,7 @@ import { FormControl } from "@angular/forms";
|
||||
import { Router } from "@angular/router";
|
||||
import Swal from "sweetalert2/src/sweetalert2.js";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
|
||||
import { DeviceType } from "jslib-common/enums/deviceType";
|
||||
|
||||
import { ModalService } from "jslib-angular/services/modal.service";
|
||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||
import { EnvironmentService } from "jslib-common/abstractions/environment.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
@ -15,11 +12,11 @@ import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { VaultTimeoutService } from "jslib-common/abstractions/vaultTimeout.service";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
import { ModalService } from "jslib-angular/services/modal.service";
|
||||
import { DeviceType } from "jslib-common/enums/deviceType";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
import { SetPinComponent } from "../components/set-pin.component";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
const RateUrls = {
|
||||
[DeviceType.ChromeExtension]:
|
||||
@ -47,7 +44,7 @@ export class SettingsComponent implements OnInit {
|
||||
vaultTimeoutAction: string;
|
||||
pin: boolean = null;
|
||||
supportsBiometric: boolean;
|
||||
biometric: boolean = false;
|
||||
biometric = false;
|
||||
disableAutoBiometricsPrompt = true;
|
||||
previousVaultTimeout: number = null;
|
||||
showChangeMasterPass = true;
|
||||
@ -206,7 +203,7 @@ export class SettingsComponent implements OnInit {
|
||||
try {
|
||||
granted = await BrowserApi.requestPermission({ permissions: ["nativeMessaging"] });
|
||||
} catch (e) {
|
||||
// tslint:disable-next-line
|
||||
// eslint-disable-next-line
|
||||
console.error(e);
|
||||
|
||||
if (this.platformUtilsService.isFirefox() && this.popupUtilsService.inSidebar(window)) {
|
||||
|
@ -7,7 +7,7 @@ import { PopupUtilsService } from "./services/popup-utils.service";
|
||||
templateUrl: "tabs.component.html",
|
||||
})
|
||||
export class TabsComponent implements OnInit {
|
||||
showCurrentTab: boolean = true;
|
||||
showCurrentTab = true;
|
||||
|
||||
constructor(private popupUtilsService: PopupUtilsService) {}
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { Component } from "@angular/core";
|
||||
|
||||
import { AddEditCustomFieldsComponent as BaseAddEditCustomFieldsComponent } from "jslib-angular/components/add-edit-custom-fields.component";
|
||||
|
||||
import { EventService } from "jslib-common/abstractions/event.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
|
||||
|
@ -1,11 +1,9 @@
|
||||
import { Location } from "@angular/common";
|
||||
import { Component } from "@angular/core";
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
|
||||
import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/add-edit.component";
|
||||
import { AuditService } from "jslib-common/abstractions/audit.service";
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
||||
@ -19,14 +17,11 @@ import { PasswordRepromptService } from "jslib-common/abstractions/passwordRepro
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { PolicyService } from "jslib-common/abstractions/policy.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
import { LoginUriView } from "jslib-common/models/view/loginUriView";
|
||||
|
||||
import { AddEditComponent as BaseAddEditComponent } from "jslib-angular/components/add-edit.component";
|
||||
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
@Component({
|
||||
selector: "app-vault-add-edit",
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { Location } from "@angular/common";
|
||||
import { Component } from "@angular/core";
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
|
||||
import { ActivatedRoute } from "@angular/router";
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { AttachmentsComponent as BaseAttachmentsComponent } from "jslib-angular/components/attachments.component";
|
||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { CryptoService } from "jslib-common/abstractions/crypto.service";
|
||||
@ -12,8 +12,6 @@ import { LogService } from "jslib-common/abstractions/log.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
|
||||
import { AttachmentsComponent as BaseAttachmentsComponent } from "jslib-angular/components/attachments.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-vault-attachments",
|
||||
templateUrl: "attachments.component.html",
|
||||
|
@ -1,11 +1,9 @@
|
||||
import { Location } from "@angular/common";
|
||||
import { ChangeDetectorRef, Component, NgZone, OnDestroy, OnInit } from "@angular/core";
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
|
||||
import { CiphersComponent as BaseCiphersComponent } from "jslib-angular/components/ciphers.component";
|
||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
||||
@ -13,18 +11,15 @@ import { FolderService } from "jslib-common/abstractions/folder.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { SearchService } from "jslib-common/abstractions/search.service";
|
||||
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
|
||||
import { TreeNode } from "jslib-common/models/domain/treeNode";
|
||||
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
import { CollectionView } from "jslib-common/models/view/collectionView";
|
||||
import { FolderView } from "jslib-common/models/view/folderView";
|
||||
|
||||
import { CiphersComponent as BaseCiphersComponent } from "jslib-angular/components/ciphers.component";
|
||||
|
||||
import { BrowserComponentState } from "src/models/browserComponentState";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
import { StateService } from "../../services/abstractions/state.service";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
|
@ -3,14 +3,13 @@ import { Component } from "@angular/core";
|
||||
import { ActivatedRoute } from "@angular/router";
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { CollectionsComponent as BaseCollectionsComponent } from "jslib-angular/components/collections.component";
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { LogService } from "jslib-common/abstractions/log.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
|
||||
import { CollectionsComponent as BaseCollectionsComponent } from "jslib-angular/components/collections.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-vault-collections",
|
||||
templateUrl: "collections.component.html",
|
||||
|
@ -1,13 +1,6 @@
|
||||
import { ChangeDetectorRef, Component, NgZone, OnDestroy, OnInit } from "@angular/core";
|
||||
import { Router } from "@angular/router";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
|
||||
import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType";
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
|
||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
@ -16,12 +9,14 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||
import { SearchService } from "jslib-common/abstractions/search.service";
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||
|
||||
import { AutofillService } from "../../services/abstractions/autofill.service";
|
||||
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType";
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
import { Utils } from "jslib-common/misc/utils";
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
import { AutofillService } from "../../services/abstractions/autofill.service";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
const BroadcasterSubscriptionId = "CurrentTabComponent";
|
||||
|
||||
|
@ -1,17 +1,9 @@
|
||||
import { Location } from "@angular/common";
|
||||
import { ChangeDetectorRef, Component, NgZone, OnDestroy, OnInit } from "@angular/core";
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
import { CollectionView } from "jslib-common/models/view/collectionView";
|
||||
import { FolderView } from "jslib-common/models/view/folderView";
|
||||
|
||||
import { GroupingsComponent as BaseGroupingsComponent } from "jslib-angular/components/groupings.component";
|
||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
||||
@ -19,15 +11,17 @@ import { FolderService } from "jslib-common/abstractions/folder.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { SearchService } from "jslib-common/abstractions/search.service";
|
||||
import { SyncService } from "jslib-common/abstractions/sync.service";
|
||||
|
||||
import { GroupingsComponent as BaseGroupingsComponent } from "jslib-angular/components/groupings.component";
|
||||
|
||||
import { StateService } from "../../services/abstractions/state.service";
|
||||
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
import { CollectionView } from "jslib-common/models/view/collectionView";
|
||||
import { FolderView } from "jslib-common/models/view/folderView";
|
||||
|
||||
import { BrowserGroupingsComponentState } from "src/models/browserGroupingsComponentState";
|
||||
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
import { StateService } from "../../services/abstractions/state.service";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
||||
const ComponentId = "GroupingsComponent";
|
||||
|
||||
@Component({
|
||||
|
@ -1,15 +1,13 @@
|
||||
import { Location } from "@angular/common";
|
||||
import { Component } from "@angular/core";
|
||||
import { ActivatedRoute } from "@angular/router";
|
||||
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { PasswordHistoryComponent as BasePasswordHistoryComponent } from "jslib-angular/components/password-history.component";
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
|
||||
import { PasswordHistoryComponent as BasePasswordHistoryComponent } from "jslib-angular/components/password-history.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-password-history",
|
||||
templateUrl: "password-history.component.html",
|
||||
|
@ -1,8 +1,8 @@
|
||||
import { Component } from "@angular/core";
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { ShareComponent as BaseShareComponent } from "jslib-angular/components/share.component";
|
||||
import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { CollectionService } from "jslib-common/abstractions/collection.service";
|
||||
import { I18nService } from "jslib-common/abstractions/i18n.service";
|
||||
@ -10,8 +10,6 @@ import { LogService } from "jslib-common/abstractions/log.service";
|
||||
import { OrganizationService } from "jslib-common/abstractions/organization.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
|
||||
import { ShareComponent as BaseShareComponent } from "jslib-angular/components/share.component";
|
||||
|
||||
@Component({
|
||||
selector: "app-vault-share",
|
||||
templateUrl: "share.component.html",
|
||||
|
@ -1,8 +1,7 @@
|
||||
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 { EventService } from "jslib-common/abstractions/event.service";
|
||||
|
||||
@Component({
|
||||
selector: "app-vault-view-custom-fields",
|
||||
|
@ -1,9 +1,9 @@
|
||||
import { Location } from "@angular/common";
|
||||
import { ChangeDetectorRef, Component, NgZone } from "@angular/core";
|
||||
import { ActivatedRoute, Router } from "@angular/router";
|
||||
|
||||
import { first } from "rxjs/operators";
|
||||
|
||||
import { ViewComponent as BaseViewComponent } from "jslib-angular/components/view.component";
|
||||
import { ApiService } from "jslib-common/abstractions/api.service";
|
||||
import { AuditService } from "jslib-common/abstractions/audit.service";
|
||||
import { BroadcasterService } from "jslib-common/abstractions/broadcaster.service";
|
||||
@ -18,13 +18,10 @@ import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.se
|
||||
import { StateService } from "jslib-common/abstractions/state.service";
|
||||
import { TokenService } from "jslib-common/abstractions/token.service";
|
||||
import { TotpService } from "jslib-common/abstractions/totp.service";
|
||||
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
import { Cipher } from "jslib-common/models/domain/cipher";
|
||||
import { LoginUriView } from "jslib-common/models/view/loginUriView";
|
||||
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
|
||||
import { ViewComponent as BaseViewComponent } from "jslib-angular/components/view.component";
|
||||
import { BrowserApi } from "../../browser/browserApi";
|
||||
import { AutofillService } from "../../services/abstractions/autofill.service";
|
||||
import { PopupUtilsService } from "../services/popup-utils.service";
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { StateService as BaseStateServiceAbstraction } from "jslib-common/abstractions/state.service";
|
||||
|
||||
import { StorageOptions } from "jslib-common/models/domain/storageOptions";
|
||||
|
||||
import { Account } from "src/models/account";
|
||||
|
@ -2,25 +2,20 @@ import { CipherService } from "jslib-common/abstractions/cipher.service";
|
||||
import { EventService } from "jslib-common/abstractions/event.service";
|
||||
import { LogService } from "jslib-common/abstractions/log.service";
|
||||
import { TotpService } from "jslib-common/abstractions/totp.service";
|
||||
|
||||
import { AutofillService as AutofillServiceInterface } from "./abstractions/autofill.service";
|
||||
|
||||
import { CipherRepromptType } from "jslib-common/enums/cipherRepromptType";
|
||||
import { CipherType } from "jslib-common/enums/cipherType";
|
||||
import { EventType } from "jslib-common/enums/eventType";
|
||||
import { FieldType } from "jslib-common/enums/fieldType";
|
||||
|
||||
import { CipherView } from "jslib-common/models/view/cipherView";
|
||||
import { FieldView } from "jslib-common/models/view/fieldView";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
import AutofillField from "../models/autofillField";
|
||||
import AutofillPageDetails from "../models/autofillPageDetails";
|
||||
import AutofillScript from "../models/autofillScript";
|
||||
|
||||
import { StateService } from "../services/abstractions/state.service";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
|
||||
import { AutofillService as AutofillServiceInterface } from "./abstractions/autofill.service";
|
||||
import {
|
||||
AutoFillConstants,
|
||||
CreditCardAutoFillConstants,
|
||||
@ -45,6 +40,7 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||
}
|
||||
|
||||
for (const formKey in pageDetails.forms) {
|
||||
// eslint-disable-next-line
|
||||
if (!pageDetails.forms.hasOwnProperty(formKey)) {
|
||||
continue;
|
||||
}
|
||||
@ -219,6 +215,7 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||
});
|
||||
|
||||
pageDetails.fields.forEach((field: any) => {
|
||||
// eslint-disable-next-line
|
||||
if (filledFields.hasOwnProperty(field.opid)) {
|
||||
return;
|
||||
}
|
||||
@ -310,6 +307,7 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||
}
|
||||
|
||||
for (const formKey in pageDetails.forms) {
|
||||
// eslint-disable-next-line
|
||||
if (!pageDetails.forms.hasOwnProperty(formKey)) {
|
||||
continue;
|
||||
}
|
||||
@ -375,6 +373,7 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||
}
|
||||
|
||||
usernames.forEach((u) => {
|
||||
// eslint-disable-next-line
|
||||
if (filledFields.hasOwnProperty(u.opid)) {
|
||||
return;
|
||||
}
|
||||
@ -384,6 +383,7 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||
});
|
||||
|
||||
passwords.forEach((p) => {
|
||||
// eslint-disable-next-line
|
||||
if (filledFields.hasOwnProperty(p.opid)) {
|
||||
return;
|
||||
}
|
||||
@ -419,6 +419,7 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||
|
||||
for (let i = 0; i < CreditCardAutoFillConstants.CardAttributes.length; i++) {
|
||||
const attr = CreditCardAutoFillConstants.CardAttributes[i];
|
||||
// eslint-disable-next-line
|
||||
if (!f.hasOwnProperty(attr) || !f[attr] || !f.viewable) {
|
||||
continue;
|
||||
}
|
||||
@ -717,6 +718,7 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||
|
||||
let doesContain = false;
|
||||
CreditCardAutoFillConstants.CardAttributesExtended.forEach((attr) => {
|
||||
// eslint-disable-next-line
|
||||
if (doesContain || !field.hasOwnProperty(attr) || !field[attr]) {
|
||||
return;
|
||||
}
|
||||
@ -752,6 +754,7 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||
|
||||
for (let i = 0; i < IdentityAutoFillConstants.IdentityAttributes.length; i++) {
|
||||
const attr = IdentityAutoFillConstants.IdentityAttributes[i];
|
||||
// eslint-disable-next-line
|
||||
if (!f.hasOwnProperty(attr) || !f[attr] || !f.viewable) {
|
||||
continue;
|
||||
}
|
||||
@ -1055,6 +1058,7 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||
return false;
|
||||
}
|
||||
// Removes all whitespace, _ and - characters
|
||||
// eslint-disable-next-line
|
||||
const cleanedValue = value.toLowerCase().replace(/[\s_\-]/g, "");
|
||||
|
||||
if (cleanedValue.indexOf("password") < 0) {
|
||||
@ -1279,6 +1283,7 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||
let lastPasswordField: AutofillField = null;
|
||||
|
||||
for (const opid in filledFields) {
|
||||
// eslint-disable-next-line
|
||||
if (filledFields.hasOwnProperty(opid) && filledFields[opid].viewable) {
|
||||
lastField = filledFields[opid];
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import BrowserPlatformUtilsService from "./browserPlatformUtils.service";
|
||||
|
||||
import { DeviceType } from "jslib-common/enums/deviceType";
|
||||
|
||||
import BrowserPlatformUtilsService from "./browserPlatformUtils.service";
|
||||
|
||||
const platformUtilsFactory = () => new BrowserPlatformUtilsService(null, null, null, null);
|
||||
|
||||
describe("Browser Utils Service", () => {
|
||||
|
@ -1,13 +1,11 @@
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
import { SafariApp } from "../browser/safariApp";
|
||||
|
||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
import { ClientType } from "jslib-common/enums/clientType";
|
||||
import { DeviceType } from "jslib-common/enums/deviceType";
|
||||
import { ThemeType } from "jslib-common/enums/themeType";
|
||||
|
||||
import { MessagingService } from "jslib-common/abstractions/messaging.service";
|
||||
import { PlatformUtilsService } from "jslib-common/abstractions/platformUtils.service";
|
||||
|
||||
import { BrowserApi } from "../browser/browserApi";
|
||||
import { SafariApp } from "../browser/safariApp";
|
||||
import { StateService } from "../services/abstractions/state.service";
|
||||
|
||||
const DialogPromiseExpiration = 600000; // 10 minutes
|
||||
@ -162,7 +160,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService
|
||||
confirmText?: string,
|
||||
cancelText?: string,
|
||||
type?: string,
|
||||
bodyIsHtml: boolean = false
|
||||
bodyIsHtml = false
|
||||
) {
|
||||
const dialogId = Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);
|
||||
this.messagingService.send("showDialog", {
|
||||
@ -239,7 +237,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService
|
||||
this.clipboardWriteCallback(text, clearMs);
|
||||
}
|
||||
} catch (e) {
|
||||
// tslint:disable-next-line
|
||||
// eslint-disable-next-line
|
||||
console.warn("Copy to clipboard failed.", e);
|
||||
} finally {
|
||||
doc.body.removeChild(textarea);
|
||||
@ -277,7 +275,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService
|
||||
return textarea.value;
|
||||
}
|
||||
} catch (e) {
|
||||
// tslint:disable-next-line
|
||||
// eslint-disable-next-line
|
||||
console.warn("Read from clipboard failed.", e);
|
||||
} finally {
|
||||
doc.body.removeChild(textarea);
|
||||
|
@ -6,6 +6,7 @@ import { Account } from "../models/account";
|
||||
import { BrowserComponentState } from "../models/browserComponentState";
|
||||
import { BrowserGroupingsComponentState } from "../models/browserGroupingsComponentState";
|
||||
import { BrowserSendComponentState } from "../models/browserSendComponentState";
|
||||
|
||||
import { StateService as StateServiceAbstraction } from "./abstractions/state.service";
|
||||
|
||||
export class StateService
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { VaultTimeoutService as BaseVaultTimeoutService } from "jslib-common/services/vaultTimeout.service";
|
||||
|
||||
import { SafariApp } from "../browser/safariApp";
|
||||
|
||||
export default class VaultTimeoutService extends BaseVaultTimeoutService {
|
||||
@ -15,12 +16,13 @@ export default class VaultTimeoutService extends BaseVaultTimeoutService {
|
||||
// setIntervals. It works by calling the native extension which sleeps for 10s,
|
||||
// efficiently replicating setInterval.
|
||||
async checkSafari() {
|
||||
// eslint-disable-next-line
|
||||
while (true) {
|
||||
try {
|
||||
await SafariApp.sendMessageToApp("sleep");
|
||||
this.checkVaultTimeout();
|
||||
} catch (e) {
|
||||
// tslint:disable-next-line
|
||||
// eslint-disable-next-line
|
||||
console.log("Exception Safari VaultTimeout", e);
|
||||
}
|
||||
}
|
||||
|
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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -13,11 +13,6 @@ if (process.env.NODE_ENV == null) {
|
||||
const ENV = (process.env.ENV = process.env.NODE_ENV);
|
||||
|
||||
const moduleRules = [
|
||||
{
|
||||
test: /\.ts$/,
|
||||
enforce: "pre",
|
||||
loader: "tslint-loader",
|
||||
},
|
||||
{
|
||||
test: /\.(html)$/,
|
||||
loader: "html-loader",
|
||||
|
Loading…
Reference in New Issue
Block a user