From 162db0b6006c3f7c0f434d8729662e292c0e5fbf Mon Sep 17 00:00:00 2001 From: Thomas Rittson <31796059+eliykat@users.noreply.github.com> Date: Tue, 4 Oct 2022 06:50:43 +1000 Subject: [PATCH 01/82] [EC-582] Add domain object serialization (#3623) --- .../spec/models/domain/attachment.spec.ts | 23 ++++++- libs/common/spec/models/domain/card.spec.ts | 32 ++++++++- libs/common/spec/models/domain/cipher.spec.ts | 66 ++++++++++++++++++- .../spec/models/domain/encString.spec.ts | 4 ++ libs/common/spec/models/domain/field.spec.ts | 24 ++++++- libs/common/spec/models/domain/folder.spec.ts | 3 +- .../spec/models/domain/identity.spec.ts | 56 +++++++++++++++- libs/common/spec/models/domain/login.spec.ts | 32 ++++++++- .../spec/models/domain/loginUri.spec.ts | 24 ++++++- .../spec/models/domain/password.spec.ts | 25 ++++++- .../spec/models/domain/secureNote.spec.ts | 6 ++ .../spec/models/view/attachmentView.spec.ts | 5 +- .../spec/models/view/cipherView.spec.ts | 4 +- .../common/spec/models/view/loginView.spec.ts | 5 +- libs/common/spec/utils.ts | 5 ++ libs/common/src/models/domain/attachment.ts | 16 +++++ libs/common/src/models/domain/card.ts | 23 +++++++ libs/common/src/models/domain/cipher.ts | 46 +++++++++++++ libs/common/src/models/domain/encString.ts | 4 ++ libs/common/src/models/domain/field.ts | 16 +++++ libs/common/src/models/domain/identity.ts | 48 ++++++++++++++ libs/common/src/models/domain/login.ts | 23 +++++++ libs/common/src/models/domain/loginUri.ts | 13 ++++ libs/common/src/models/domain/password.ts | 16 +++++ libs/common/src/models/domain/secureNote.ts | 10 +++ 25 files changed, 513 insertions(+), 16 deletions(-) diff --git a/libs/common/spec/models/domain/attachment.spec.ts b/libs/common/spec/models/domain/attachment.spec.ts index 835628d47d2..322061987a5 100644 --- a/libs/common/spec/models/domain/attachment.spec.ts +++ b/libs/common/spec/models/domain/attachment.spec.ts @@ -8,7 +8,7 @@ import { EncString } from "@bitwarden/common/models/domain/encString"; import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; import { ContainerService } from "@bitwarden/common/services/container.service"; -import { makeStaticByteArray, mockEnc } from "../../utils"; +import { makeStaticByteArray, mockEnc, mockFromJson } from "../../utils"; describe("Attachment", () => { let data: AttachmentData; @@ -131,4 +131,25 @@ describe("Attachment", () => { }); }); }); + + describe("fromJSON", () => { + it("initializes nested objects", () => { + jest.spyOn(EncString, "fromJSON").mockImplementation(mockFromJson); + + const actual = Attachment.fromJSON({ + key: "myKey", + fileName: "myFileName", + }); + + expect(actual).toEqual({ + key: "myKey_fromJSON", + fileName: "myFileName_fromJSON", + }); + expect(actual).toBeInstanceOf(Attachment); + }); + + it("returns null if object is null", () => { + expect(Attachment.fromJSON(null)).toBeNull(); + }); + }); }); diff --git a/libs/common/spec/models/domain/card.spec.ts b/libs/common/spec/models/domain/card.spec.ts index 01357e005e3..3b7e32b91ac 100644 --- a/libs/common/spec/models/domain/card.spec.ts +++ b/libs/common/spec/models/domain/card.spec.ts @@ -1,7 +1,8 @@ import { CardData } from "@bitwarden/common/models/data/cardData"; import { Card } from "@bitwarden/common/models/domain/card"; +import { EncString } from "@bitwarden/common/models/domain/encString"; -import { mockEnc } from "../../utils"; +import { mockEnc, mockFromJson } from "../../utils"; describe("Card", () => { let data: CardData; @@ -70,4 +71,33 @@ describe("Card", () => { expYear: "expYear", }); }); + + describe("fromJSON", () => { + it("initializes nested objects", () => { + jest.spyOn(EncString, "fromJSON").mockImplementation(mockFromJson); + + const actual = Card.fromJSON({ + cardholderName: "mockCardHolder", + brand: "mockBrand", + number: "mockNumber", + expMonth: "mockExpMonth", + expYear: "mockExpYear", + code: "mockCode", + }); + + expect(actual).toEqual({ + cardholderName: "mockCardHolder_fromJSON", + brand: "mockBrand_fromJSON", + number: "mockNumber_fromJSON", + expMonth: "mockExpMonth_fromJSON", + expYear: "mockExpYear_fromJSON", + code: "mockCode_fromJSON", + }); + expect(actual).toBeInstanceOf(Card); + }); + + it("returns null if object is null", () => { + expect(Card.fromJSON(null)).toBeNull(); + }); + }); }); diff --git a/libs/common/spec/models/domain/cipher.spec.ts b/libs/common/spec/models/domain/cipher.spec.ts index 0158945d8ce..47d0d4f547f 100644 --- a/libs/common/spec/models/domain/cipher.spec.ts +++ b/libs/common/spec/models/domain/cipher.spec.ts @@ -1,4 +1,5 @@ import { Substitute, Arg } from "@fluffy-spoon/substitute"; +import { Jsonify } from "type-fest"; import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { CipherType } from "@bitwarden/common/enums/cipherType"; @@ -6,16 +7,20 @@ import { FieldType } from "@bitwarden/common/enums/fieldType"; import { SecureNoteType } from "@bitwarden/common/enums/secureNoteType"; import { UriMatchType } from "@bitwarden/common/enums/uriMatchType"; import { CipherData } from "@bitwarden/common/models/data/cipherData"; +import { Attachment } from "@bitwarden/common/models/domain/attachment"; import { Card } from "@bitwarden/common/models/domain/card"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; +import { EncString } from "@bitwarden/common/models/domain/encString"; +import { Field } from "@bitwarden/common/models/domain/field"; import { Identity } from "@bitwarden/common/models/domain/identity"; import { Login } from "@bitwarden/common/models/domain/login"; +import { Password } from "@bitwarden/common/models/domain/password"; import { SecureNote } from "@bitwarden/common/models/domain/secureNote"; import { CardView } from "@bitwarden/common/models/view/cardView"; import { IdentityView } from "@bitwarden/common/models/view/identityView"; import { LoginView } from "@bitwarden/common/models/view/loginView"; -import { mockEnc } from "../../utils"; +import { mockEnc, mockFromJson } from "../../utils"; describe("Cipher DTO", () => { it("Convert from empty CipherData", () => { @@ -587,4 +592,63 @@ describe("Cipher DTO", () => { }); }); }); + + describe("fromJSON", () => { + it("initializes nested objects", () => { + jest.spyOn(Attachment, "fromJSON").mockImplementation(mockFromJson); + jest.spyOn(Field, "fromJSON").mockImplementation(mockFromJson); + jest.spyOn(Password, "fromJSON").mockImplementation(mockFromJson); + jest.spyOn(EncString, "fromJSON").mockImplementation(mockFromJson); + + const revisionDate = new Date("2022-08-04T01:06:40.441Z"); + const deletedDate = new Date("2022-09-04T01:06:40.441Z"); + const actual = Cipher.fromJSON({ + name: "myName", + notes: "myNotes", + revisionDate: revisionDate.toISOString(), + attachments: ["attachment1", "attachment2"] as any, + fields: ["field1", "field2"] as any, + passwordHistory: ["ph1", "ph2"] as any, + deletedDate: deletedDate.toISOString(), + } as Jsonify); + + expect(actual).toMatchObject({ + name: "myName_fromJSON", + notes: "myNotes_fromJSON", + revisionDate: revisionDate, + attachments: ["attachment1_fromJSON", "attachment2_fromJSON"], + fields: ["field1_fromJSON", "field2_fromJSON"], + passwordHistory: ["ph1_fromJSON", "ph2_fromJSON"], + deletedDate: deletedDate, + }); + expect(actual).toBeInstanceOf(Cipher); + }); + + test.each([ + // Test description, CipherType, expected output + ["LoginView", CipherType.Login, { login: "myLogin_fromJSON" }], + ["CardView", CipherType.Card, { card: "myCard_fromJSON" }], + ["IdentityView", CipherType.Identity, { identity: "myIdentity_fromJSON" }], + ["Secure Note", CipherType.SecureNote, { secureNote: "mySecureNote_fromJSON" }], + ])("initializes %s", (description: string, cipherType: CipherType, expected: any) => { + jest.spyOn(Login, "fromJSON").mockImplementation(mockFromJson); + jest.spyOn(Identity, "fromJSON").mockImplementation(mockFromJson); + jest.spyOn(Card, "fromJSON").mockImplementation(mockFromJson); + jest.spyOn(SecureNote, "fromJSON").mockImplementation(mockFromJson); + + const actual = Cipher.fromJSON({ + login: "myLogin", + card: "myCard", + identity: "myIdentity", + secureNote: "mySecureNote", + type: cipherType, + } as any); + + expect(actual).toMatchObject(expected); + }); + + it("returns null if object is null", () => { + expect(Cipher.fromJSON(null)).toBeNull(); + }); + }); }); diff --git a/libs/common/spec/models/domain/encString.spec.ts b/libs/common/spec/models/domain/encString.spec.ts index 413d091d68b..a35a02ecc2c 100644 --- a/libs/common/spec/models/domain/encString.spec.ts +++ b/libs/common/spec/models/domain/encString.spec.ts @@ -226,5 +226,9 @@ describe("EncString", () => { expect(encString.toJSON()).toBe(encString.encryptedString); }); + + it("returns null if object is null", () => { + expect(EncString.fromJSON(null)).toBeNull(); + }); }); }); diff --git a/libs/common/spec/models/domain/field.spec.ts b/libs/common/spec/models/domain/field.spec.ts index 2902f7af7ee..de1f184dad6 100644 --- a/libs/common/spec/models/domain/field.spec.ts +++ b/libs/common/spec/models/domain/field.spec.ts @@ -1,8 +1,9 @@ import { FieldType } from "@bitwarden/common/enums/fieldType"; import { FieldData } from "@bitwarden/common/models/data/fieldData"; +import { EncString } from "@bitwarden/common/models/domain/encString"; import { Field } from "@bitwarden/common/models/domain/field"; -import { mockEnc } from "../../utils"; +import { mockEnc, mockFromJson } from "../../utils"; describe("Field", () => { let data: FieldData; @@ -61,4 +62,25 @@ describe("Field", () => { showValue: false, }); }); + + describe("fromJSON", () => { + it("initializes nested objects", () => { + jest.spyOn(EncString, "fromJSON").mockImplementation(mockFromJson); + + const actual = Field.fromJSON({ + name: "myName", + value: "myValue", + }); + + expect(actual).toEqual({ + name: "myName_fromJSON", + value: "myValue_fromJSON", + }); + expect(actual).toBeInstanceOf(Field); + }); + + it("returns null if object is null", () => { + expect(Field.fromJSON(null)).toBeNull(); + }); + }); }); diff --git a/libs/common/spec/models/domain/folder.spec.ts b/libs/common/spec/models/domain/folder.spec.ts index 7ae36f9b391..83e935d82a1 100644 --- a/libs/common/spec/models/domain/folder.spec.ts +++ b/libs/common/spec/models/domain/folder.spec.ts @@ -2,7 +2,7 @@ import { FolderData } from "@bitwarden/common/models/data/folderData"; import { EncString } from "@bitwarden/common/models/domain/encString"; import { Folder } from "@bitwarden/common/models/domain/folder"; -import { mockEnc } from "../../utils"; +import { mockEnc, mockFromJson } from "../../utils"; describe("Folder", () => { let data: FolderData; @@ -42,7 +42,6 @@ describe("Folder", () => { describe("fromJSON", () => { jest.mock("@bitwarden/common/models/domain/encString"); - const mockFromJson = (stub: any) => (stub + "_fromJSON") as any; jest.spyOn(EncString, "fromJSON").mockImplementation(mockFromJson); it("initializes nested objects", () => { diff --git a/libs/common/spec/models/domain/identity.spec.ts b/libs/common/spec/models/domain/identity.spec.ts index 19f94582be4..78eff0fc44c 100644 --- a/libs/common/spec/models/domain/identity.spec.ts +++ b/libs/common/spec/models/domain/identity.spec.ts @@ -1,7 +1,8 @@ import { IdentityData } from "@bitwarden/common/models/data/identityData"; +import { EncString } from "@bitwarden/common/models/domain/encString"; import { Identity } from "@bitwarden/common/models/domain/identity"; -import { mockEnc } from "../../utils"; +import { mockEnc, mockFromJson } from "../../utils"; describe("Identity", () => { let data: IdentityData; @@ -131,4 +132,57 @@ describe("Identity", () => { username: "mockUsername", }); }); + + describe("fromJSON", () => { + it("initializes nested objects", () => { + jest.spyOn(EncString, "fromJSON").mockImplementation(mockFromJson); + + const actual = Identity.fromJSON({ + firstName: "mockFirstName", + lastName: "mockLastName", + address1: "mockAddress1", + address2: "mockAddress2", + address3: "mockAddress3", + city: "mockCity", + company: "mockCompany", + country: "mockCountry", + email: "mockEmail", + licenseNumber: "mockLicenseNumber", + middleName: "mockMiddleName", + passportNumber: "mockPassportNumber", + phone: "mockPhone", + postalCode: "mockPostalCode", + ssn: "mockSsn", + state: "mockState", + title: "mockTitle", + username: "mockUsername", + }); + + expect(actual).toEqual({ + firstName: "mockFirstName_fromJSON", + lastName: "mockLastName_fromJSON", + address1: "mockAddress1_fromJSON", + address2: "mockAddress2_fromJSON", + address3: "mockAddress3_fromJSON", + city: "mockCity_fromJSON", + company: "mockCompany_fromJSON", + country: "mockCountry_fromJSON", + email: "mockEmail_fromJSON", + licenseNumber: "mockLicenseNumber_fromJSON", + middleName: "mockMiddleName_fromJSON", + passportNumber: "mockPassportNumber_fromJSON", + phone: "mockPhone_fromJSON", + postalCode: "mockPostalCode_fromJSON", + ssn: "mockSsn_fromJSON", + state: "mockState_fromJSON", + title: "mockTitle_fromJSON", + username: "mockUsername_fromJSON", + }); + expect(actual).toBeInstanceOf(Identity); + }); + + it("returns null if object is null", () => { + expect(Identity.fromJSON(null)).toBeNull(); + }); + }); }); diff --git a/libs/common/spec/models/domain/login.spec.ts b/libs/common/spec/models/domain/login.spec.ts index b2235e75831..9234051f417 100644 --- a/libs/common/spec/models/domain/login.spec.ts +++ b/libs/common/spec/models/domain/login.spec.ts @@ -2,11 +2,12 @@ import { Substitute, Arg } from "@fluffy-spoon/substitute"; import { UriMatchType } from "@bitwarden/common/enums/uriMatchType"; import { LoginData } from "@bitwarden/common/models/data/loginData"; +import { EncString } from "@bitwarden/common/models/domain/encString"; import { Login } from "@bitwarden/common/models/domain/login"; import { LoginUri } from "@bitwarden/common/models/domain/loginUri"; import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; -import { mockEnc } from "../../utils"; +import { mockEnc, mockFromJson } from "../../utils"; describe("Login DTO", () => { it("Convert from empty LoginData", () => { @@ -98,4 +99,33 @@ describe("Login DTO", () => { expect(loginData).toEqual(data); }); + + describe("fromJSON", () => { + it("initializes nested objects", () => { + jest.spyOn(EncString, "fromJSON").mockImplementation(mockFromJson); + jest.spyOn(LoginUri, "fromJSON").mockImplementation(mockFromJson); + const passwordRevisionDate = new Date("2022-01-31T12:00:00.000Z"); + + const actual = Login.fromJSON({ + uris: ["loginUri1", "loginUri2"] as any, + username: "myUsername", + password: "myPassword", + passwordRevisionDate: passwordRevisionDate.toISOString(), + totp: "myTotp", + }); + + expect(actual).toEqual({ + uris: ["loginUri1_fromJSON", "loginUri2_fromJSON"] as any, + username: "myUsername_fromJSON", + password: "myPassword_fromJSON", + passwordRevisionDate: passwordRevisionDate, + totp: "myTotp_fromJSON", + }); + expect(actual).toBeInstanceOf(Login); + }); + + it("returns null if object is null", () => { + expect(Login.fromJSON(null)).toBeNull(); + }); + }); }); diff --git a/libs/common/spec/models/domain/loginUri.spec.ts b/libs/common/spec/models/domain/loginUri.spec.ts index 059910917dc..50a6859f986 100644 --- a/libs/common/spec/models/domain/loginUri.spec.ts +++ b/libs/common/spec/models/domain/loginUri.spec.ts @@ -1,8 +1,11 @@ +import { Jsonify } from "type-fest"; + import { UriMatchType } from "@bitwarden/common/enums/uriMatchType"; import { LoginUriData } from "@bitwarden/common/models/data/loginUriData"; +import { EncString } from "@bitwarden/common/models/domain/encString"; import { LoginUri } from "@bitwarden/common/models/domain/loginUri"; -import { mockEnc } from "../../utils"; +import { mockEnc, mockFromJson } from "../../utils"; describe("LoginUri", () => { let data: LoginUriData; @@ -54,4 +57,23 @@ describe("LoginUri", () => { match: 3, }); }); + + describe("fromJSON", () => { + it("initializes nested objects", () => { + jest.spyOn(EncString, "fromJSON").mockImplementation(mockFromJson); + + const actual = LoginUri.fromJSON({ + uri: "myUri", + } as Jsonify); + + expect(actual).toEqual({ + uri: "myUri_fromJSON", + }); + expect(actual).toBeInstanceOf(LoginUri); + }); + + it("returns null if object is null", () => { + expect(LoginUri.fromJSON(null)).toBeNull(); + }); + }); }); diff --git a/libs/common/spec/models/domain/password.spec.ts b/libs/common/spec/models/domain/password.spec.ts index b24f15059ef..bbe29c9a87d 100644 --- a/libs/common/spec/models/domain/password.spec.ts +++ b/libs/common/spec/models/domain/password.spec.ts @@ -1,7 +1,8 @@ import { PasswordHistoryData } from "@bitwarden/common/models/data/passwordHistoryData"; +import { EncString } from "@bitwarden/common/models/domain/encString"; import { Password } from "@bitwarden/common/models/domain/password"; -import { mockEnc } from "../../utils"; +import { mockEnc, mockFromJson } from "../../utils"; describe("Password", () => { let data: PasswordHistoryData; @@ -48,4 +49,26 @@ describe("Password", () => { lastUsedDate: new Date("2022-01-31T12:00:00.000Z"), }); }); + + describe("fromJSON", () => { + it("initializes nested objects", () => { + jest.spyOn(EncString, "fromJSON").mockImplementation(mockFromJson); + const lastUsedDate = new Date("2022-01-31T12:00:00.000Z"); + + const actual = Password.fromJSON({ + password: "myPassword", + lastUsedDate: lastUsedDate.toISOString(), + }); + + expect(actual).toEqual({ + password: "myPassword_fromJSON", + lastUsedDate: lastUsedDate, + }); + expect(actual).toBeInstanceOf(Password); + }); + + it("returns null if object is null", () => { + expect(Password.fromJSON(null)).toBeNull(); + }); + }); }); diff --git a/libs/common/spec/models/domain/secureNote.spec.ts b/libs/common/spec/models/domain/secureNote.spec.ts index 592c991d809..3117961102f 100644 --- a/libs/common/spec/models/domain/secureNote.spec.ts +++ b/libs/common/spec/models/domain/secureNote.spec.ts @@ -43,4 +43,10 @@ describe("SecureNote", () => { type: 0, }); }); + + describe("fromJSON", () => { + it("returns null if object is null", () => { + expect(SecureNote.fromJSON(null)).toBeNull(); + }); + }); }); diff --git a/libs/common/spec/models/view/attachmentView.spec.ts b/libs/common/spec/models/view/attachmentView.spec.ts index d94456daa9c..5784b4b4ffb 100644 --- a/libs/common/spec/models/view/attachmentView.spec.ts +++ b/libs/common/spec/models/view/attachmentView.spec.ts @@ -1,12 +1,13 @@ import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; import { AttachmentView } from "@bitwarden/common/models/view/attachmentView"; +import { mockFromJson } from "../../utils"; + jest.mock("@bitwarden/common/models/domain/symmetricCryptoKey"); describe("AttachmentView", () => { it("fromJSON initializes nested objects", () => { - const mockFromJson = (stub: string) => stub + "_fromJSON"; - jest.spyOn(SymmetricCryptoKey, "fromJSON").mockImplementation(mockFromJson as any); + jest.spyOn(SymmetricCryptoKey, "fromJSON").mockImplementation(mockFromJson); const actual = AttachmentView.fromJSON({ key: "encKeyB64" as any, diff --git a/libs/common/spec/models/view/cipherView.spec.ts b/libs/common/spec/models/view/cipherView.spec.ts index f69bb089dce..1362babc3b9 100644 --- a/libs/common/spec/models/view/cipherView.spec.ts +++ b/libs/common/spec/models/view/cipherView.spec.ts @@ -8,6 +8,8 @@ import { LoginView } from "@bitwarden/common/models/view/loginView"; import { PasswordHistoryView } from "@bitwarden/common/models/view/passwordHistoryView"; import { SecureNoteView } from "@bitwarden/common/models/view/secureNoteView"; +import { mockFromJson } from "../../utils"; + jest.mock("@bitwarden/common/models/view/loginView"); jest.mock("@bitwarden/common/models/view/attachmentView"); jest.mock("@bitwarden/common/models/view/fieldView"); @@ -22,8 +24,6 @@ describe("CipherView", () => { }); describe("fromJSON", () => { - const mockFromJson = (stub: any) => (stub + "_fromJSON") as any; - it("initializes nested objects", () => { jest.spyOn(AttachmentView, "fromJSON").mockImplementation(mockFromJson); jest.spyOn(FieldView, "fromJSON").mockImplementation(mockFromJson); diff --git a/libs/common/spec/models/view/loginView.spec.ts b/libs/common/spec/models/view/loginView.spec.ts index e9b76279574..f50636b8978 100644 --- a/libs/common/spec/models/view/loginView.spec.ts +++ b/libs/common/spec/models/view/loginView.spec.ts @@ -1,6 +1,8 @@ import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; import { LoginView } from "@bitwarden/common/models/view/loginView"; +import { mockFromJson } from "../../utils"; + jest.mock("@bitwarden/common/models/view/loginUriView"); describe("LoginView", () => { @@ -9,8 +11,7 @@ describe("LoginView", () => { }); it("fromJSON initializes nested objects", () => { - const mockFromJson = (stub: string) => stub + "_fromJSON"; - jest.spyOn(LoginUriView, "fromJSON").mockImplementation(mockFromJson as any); + jest.spyOn(LoginUriView, "fromJSON").mockImplementation(mockFromJson); const passwordRevisionDate = new Date(); diff --git a/libs/common/spec/utils.ts b/libs/common/spec/utils.ts index 4f9dc4076f1..d3729d14e50 100644 --- a/libs/common/spec/utils.ts +++ b/libs/common/spec/utils.ts @@ -35,3 +35,8 @@ export function makeStaticByteArray(length: number, start = 0) { } return arr; } + +/** + * Use to mock a return value of a static fromJSON method. + */ +export const mockFromJson = (stub: any) => (stub + "_fromJSON") as any; diff --git a/libs/common/src/models/domain/attachment.ts b/libs/common/src/models/domain/attachment.ts index 6696a0f7533..4ac8fed62ea 100644 --- a/libs/common/src/models/domain/attachment.ts +++ b/libs/common/src/models/domain/attachment.ts @@ -1,3 +1,5 @@ +import { Jsonify } from "type-fest"; + import { Utils } from "../../misc/utils"; import { AttachmentData } from "../data/attachmentData"; import { AttachmentView } from "../view/attachmentView"; @@ -90,4 +92,18 @@ export class Attachment extends Domain { ); return a; } + + static fromJSON(obj: Partial>): Attachment { + if (obj == null) { + return null; + } + + const key = EncString.fromJSON(obj.key); + const fileName = EncString.fromJSON(obj.fileName); + + return Object.assign(new Attachment(), obj, { + key, + fileName, + }); + } } diff --git a/libs/common/src/models/domain/card.ts b/libs/common/src/models/domain/card.ts index 59f73f90287..4c09532e036 100644 --- a/libs/common/src/models/domain/card.ts +++ b/libs/common/src/models/domain/card.ts @@ -1,3 +1,5 @@ +import { Jsonify } from "type-fest"; + import { CardData } from "../data/cardData"; import { CardView } from "../view/cardView"; @@ -62,4 +64,25 @@ export class Card extends Domain { }); return c; } + + static fromJSON(obj: Partial>): Card { + if (obj == null) { + return null; + } + + const cardholderName = EncString.fromJSON(obj.cardholderName); + const brand = EncString.fromJSON(obj.brand); + const number = EncString.fromJSON(obj.number); + const expMonth = EncString.fromJSON(obj.expMonth); + const expYear = EncString.fromJSON(obj.expYear); + const code = EncString.fromJSON(obj.code); + return Object.assign(new Card(), obj, { + cardholderName, + brand, + number, + expMonth, + expYear, + code, + }); + } } diff --git a/libs/common/src/models/domain/cipher.ts b/libs/common/src/models/domain/cipher.ts index 132bcaf3bd6..ca792926c01 100644 --- a/libs/common/src/models/domain/cipher.ts +++ b/libs/common/src/models/domain/cipher.ts @@ -1,3 +1,5 @@ +import { Jsonify } from "type-fest"; + import { CipherRepromptType } from "../../enums/cipherRepromptType"; import { CipherType } from "../../enums/cipherType"; import { CipherData } from "../data/cipherData"; @@ -234,4 +236,48 @@ export class Cipher extends Domain { } return c; } + + static fromJSON(obj: Jsonify) { + if (obj == null) { + return null; + } + + const domain = new Cipher(); + const name = EncString.fromJSON(obj.name); + const notes = EncString.fromJSON(obj.notes); + const revisionDate = obj.revisionDate == null ? null : new Date(obj.revisionDate); + const deletedDate = obj.deletedDate == null ? null : new Date(obj.deletedDate); + const attachments = obj.attachments?.map((a: any) => Attachment.fromJSON(a)); + const fields = obj.fields?.map((f: any) => Field.fromJSON(f)); + const passwordHistory = obj.passwordHistory?.map((ph: any) => Password.fromJSON(ph)); + + Object.assign(domain, obj, { + name, + notes, + revisionDate, + deletedDate, + attachments, + fields, + passwordHistory, + }); + + switch (obj.type) { + case CipherType.Card: + domain.card = Card.fromJSON(obj.card); + break; + case CipherType.Identity: + domain.identity = Identity.fromJSON(obj.identity); + break; + case CipherType.Login: + domain.login = Login.fromJSON(obj.login); + break; + case CipherType.SecureNote: + domain.secureNote = SecureNote.fromJSON(obj.secureNote); + break; + default: + break; + } + + return domain; + } } diff --git a/libs/common/src/models/domain/encString.ts b/libs/common/src/models/domain/encString.ts index c828f4aa52d..25a5bbbf8f9 100644 --- a/libs/common/src/models/domain/encString.ts +++ b/libs/common/src/models/domain/encString.ts @@ -44,6 +44,10 @@ export class EncString implements IEncrypted { } static fromJSON(obj: Jsonify): EncString { + if (obj == null) { + return null; + } + return new EncString(obj); } diff --git a/libs/common/src/models/domain/field.ts b/libs/common/src/models/domain/field.ts index 71dc615afdd..ea242ce24f6 100644 --- a/libs/common/src/models/domain/field.ts +++ b/libs/common/src/models/domain/field.ts @@ -1,3 +1,5 @@ +import { Jsonify } from "type-fest"; + import { FieldType } from "../../enums/fieldType"; import { LinkedIdType } from "../../enums/linkedIdType"; import { FieldData } from "../data/fieldData"; @@ -59,4 +61,18 @@ export class Field extends Domain { ); return f; } + + static fromJSON(obj: Partial>): Field { + if (obj == null) { + return null; + } + + const name = EncString.fromJSON(obj.name); + const value = EncString.fromJSON(obj.value); + + return Object.assign(new Field(), obj, { + name, + value, + }); + } } diff --git a/libs/common/src/models/domain/identity.ts b/libs/common/src/models/domain/identity.ts index 4af228499bc..075f4c8c4f4 100644 --- a/libs/common/src/models/domain/identity.ts +++ b/libs/common/src/models/domain/identity.ts @@ -1,3 +1,5 @@ +import { Jsonify } from "type-fest"; + import { IdentityData } from "../data/identityData"; import { IdentityView } from "../view/identityView"; @@ -110,4 +112,50 @@ export class Identity extends Domain { }); return i; } + + static fromJSON(obj: Jsonify): Identity { + if (obj == null) { + return null; + } + + const title = EncString.fromJSON(obj.title); + const firstName = EncString.fromJSON(obj.firstName); + const middleName = EncString.fromJSON(obj.middleName); + const lastName = EncString.fromJSON(obj.lastName); + const address1 = EncString.fromJSON(obj.address1); + const address2 = EncString.fromJSON(obj.address2); + const address3 = EncString.fromJSON(obj.address3); + const city = EncString.fromJSON(obj.city); + const state = EncString.fromJSON(obj.state); + const postalCode = EncString.fromJSON(obj.postalCode); + const country = EncString.fromJSON(obj.country); + const company = EncString.fromJSON(obj.company); + const email = EncString.fromJSON(obj.email); + const phone = EncString.fromJSON(obj.phone); + const ssn = EncString.fromJSON(obj.ssn); + const username = EncString.fromJSON(obj.username); + const passportNumber = EncString.fromJSON(obj.passportNumber); + const licenseNumber = EncString.fromJSON(obj.licenseNumber); + + return Object.assign(new Identity(), obj, { + title, + firstName, + middleName, + lastName, + address1, + address2, + address3, + city, + state, + postalCode, + country, + company, + email, + phone, + ssn, + username, + passportNumber, + licenseNumber, + }); + } } diff --git a/libs/common/src/models/domain/login.ts b/libs/common/src/models/domain/login.ts index 76ba402000f..19b99e956af 100644 --- a/libs/common/src/models/domain/login.ts +++ b/libs/common/src/models/domain/login.ts @@ -1,3 +1,5 @@ +import { Jsonify } from "type-fest"; + import { LoginData } from "../data/loginData"; import { LoginView } from "../view/loginView"; @@ -85,4 +87,25 @@ export class Login extends Domain { return l; } + + static fromJSON(obj: Partial>): Login { + if (obj == null) { + return null; + } + + const username = EncString.fromJSON(obj.username); + const password = EncString.fromJSON(obj.password); + const totp = EncString.fromJSON(obj.totp); + const passwordRevisionDate = + obj.passwordRevisionDate == null ? null : new Date(obj.passwordRevisionDate); + const uris = obj.uris?.map((uri: any) => LoginUri.fromJSON(uri)); + + return Object.assign(new Login(), obj, { + username, + password, + totp, + passwordRevisionDate: passwordRevisionDate, + uris: uris, + }); + } } diff --git a/libs/common/src/models/domain/loginUri.ts b/libs/common/src/models/domain/loginUri.ts index 9bd78c655f4..419268cd514 100644 --- a/libs/common/src/models/domain/loginUri.ts +++ b/libs/common/src/models/domain/loginUri.ts @@ -1,3 +1,5 @@ +import { Jsonify } from "type-fest"; + import { UriMatchType } from "../../enums/uriMatchType"; import { LoginUriData } from "../data/loginUriData"; import { LoginUriView } from "../view/loginUriView"; @@ -51,4 +53,15 @@ export class LoginUri extends Domain { ); return u; } + + static fromJSON(obj: Jsonify): LoginUri { + if (obj == null) { + return null; + } + + const uri = EncString.fromJSON(obj.uri); + return Object.assign(new LoginUri(), obj, { + uri, + }); + } } diff --git a/libs/common/src/models/domain/password.ts b/libs/common/src/models/domain/password.ts index ae47b18db86..81ae30551f9 100644 --- a/libs/common/src/models/domain/password.ts +++ b/libs/common/src/models/domain/password.ts @@ -1,3 +1,5 @@ +import { Jsonify } from "type-fest"; + import { PasswordHistoryData } from "../data/passwordHistoryData"; import { PasswordHistoryView } from "../view/passwordHistoryView"; @@ -40,4 +42,18 @@ export class Password extends Domain { }); return ph; } + + static fromJSON(obj: Partial>): Password { + if (obj == null) { + return null; + } + + const password = EncString.fromJSON(obj.password); + const lastUsedDate = obj.lastUsedDate == null ? null : new Date(obj.lastUsedDate); + + return Object.assign(new Password(), obj, { + password, + lastUsedDate, + }); + } } diff --git a/libs/common/src/models/domain/secureNote.ts b/libs/common/src/models/domain/secureNote.ts index 8bde3164e78..475ad5300c5 100644 --- a/libs/common/src/models/domain/secureNote.ts +++ b/libs/common/src/models/domain/secureNote.ts @@ -1,3 +1,5 @@ +import { Jsonify } from "type-fest"; + import { SecureNoteType } from "../../enums/secureNoteType"; import { SecureNoteData } from "../data/secureNoteData"; import { SecureNoteView } from "../view/secureNoteView"; @@ -26,4 +28,12 @@ export class SecureNote extends Domain { n.type = this.type; return n; } + + static fromJSON(obj: Jsonify): SecureNote { + if (obj == null) { + return null; + } + + return Object.assign(new SecureNote(), obj); + } } From 9ca877a7bea745fd62a0d4f1e30fe4dfa73ea9fe Mon Sep 17 00:00:00 2001 From: Alexey Zilber <110793805+alex8bitw@users.noreply.github.com> Date: Tue, 4 Oct 2022 21:38:48 +0800 Subject: [PATCH 02/82] Cloudops 165 (#3661) * Upload artifacts to R2 after we do S3. * Added beta check line to R2 upload --- .github/workflows/release-desktop-beta.yml | 20 +++++++++++++++++++- .github/workflows/release-desktop.yml | 21 ++++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-desktop-beta.yml b/.github/workflows/release-desktop-beta.yml index 2d34ab257e9..79a4eaa24cb 100644 --- a/.github/workflows/release-desktop-beta.yml +++ b/.github/workflows/release-desktop-beta.yml @@ -944,7 +944,11 @@ jobs: SECRETS: | aws-electron-access-id, aws-electron-access-key, - aws-electron-bucket-name + aws-electron-bucket-name, + r2-electron-access-id, + r2-electron-access-key, + r2-electron-bucket-name, + cf-prod-account run: | for i in ${SECRETS//,/ } do @@ -977,6 +981,20 @@ jobs: --recursive \ --quiet + - name: Publish artifacts to R2 + env: + AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.r2-electron-access-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.r2-electron-access-key }} + AWS_DEFAULT_REGION: 'us-east-1' + AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.r2-electron-bucket-name }} + CF_ACCOUNT: ${{ steps.retrieve-secrets.outputs.cf-prod-account }} + working-directory: apps/desktop/artifacts + run: | + aws s3 cp ./ $AWS_S3_BUCKET_NAME/desktop/ \ + --recursive \ + --quiet \ + --endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com + - name: Update deployment status to Success if: ${{ success() }} uses: chrnorm/deployment-status@07b3930847f65e71c9c6802ff5a402f6dfb46b86 diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml index 9a51a3b0bea..f4e28c71460 100644 --- a/.github/workflows/release-desktop.yml +++ b/.github/workflows/release-desktop.yml @@ -98,7 +98,11 @@ jobs: SECRETS: | aws-electron-access-id, aws-electron-access-key, - aws-electron-bucket-name + aws-electron-bucket-name, + r2-electron-access-id, + r2-electron-access-key, + r2-electron-bucket-name, + cf-prod-account run: | for i in ${SECRETS//,/ } do @@ -145,6 +149,21 @@ jobs: --recursive \ --quiet + - name: Publish artifacts to R2 + if: ${{ github.event.inputs.release_type != 'Dry Run' }} + env: + AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.r2-electron-access-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.r2-electron-access-key }} + AWS_DEFAULT_REGION: 'us-east-1' + AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.r2-electron-bucket-name }} + CF_ACCOUNT: ${{ steps.retrieve-secrets.outputs.cf-prod-account }} + working-directory: apps/desktop/artifacts + run: | + aws s3 cp ./ $AWS_S3_BUCKET_NAME/desktop/ \ + --recursive \ + --quiet \ + --endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com + - name: Create release uses: ncipollo/release-action@95215a3cb6e6a1908b3c44e00b4fdb15548b1e09 # v2.8.5 if: ${{ steps.release-channel.outputs.channel == 'latest' && github.event.inputs.release_type != 'Dry Run' }} From b153ed6d01397657b29288c310a0841d66d318ac Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Tue, 4 Oct 2022 15:40:00 +0200 Subject: [PATCH 03/82] [SM-265] Add eslint rule forbidding get().value (#3671) --- .eslintrc.json | 4 ++++ .../src/app/accounts/login/login.component.ts | 6 +++--- .../register-form/register-form.component.ts | 2 +- .../trial-initiation/billing.component.ts | 4 ++-- libs/angular/src/components/login.component.ts | 16 +++++++--------- .../angular/src/components/register.component.ts | 10 +++++----- .../settings/vault-timeout-input.component.ts | 6 +++--- 7 files changed, 25 insertions(+), 23 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 8485a9f30a0..583c8e3697b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -73,6 +73,10 @@ { "message": "Calling `svgIcon` directly is not allowed", "selector": "CallExpression[callee.name='svgIcon']" + }, + { + "message": "Accessing FormGroup using `get` is not allowed, use `.value` instead", + "selector": "ChainExpression[expression.object.callee.property.name='get'][expression.property.name='value']" } ], "curly": ["error", "all"], diff --git a/apps/web/src/app/accounts/login/login.component.ts b/apps/web/src/app/accounts/login/login.component.ts index 2568d5a3e74..c27ba536360 100644 --- a/apps/web/src/app/accounts/login/login.component.ts +++ b/apps/web/src/app/accounts/login/login.component.ts @@ -135,7 +135,7 @@ export class LoginComponent extends BaseLoginComponent { } async goAfterLogIn() { - const masterPassword = this.formGroup.get("masterPassword")?.value; + const masterPassword = this.formGroup.value.masterPassword; // Check master password against policy if (this.enforcedPasswordPolicyOptions != null) { @@ -170,7 +170,7 @@ export class LoginComponent extends BaseLoginComponent { } async submit() { - const rememberEmail = this.formGroup.get("rememberEmail")?.value; + const rememberEmail = this.formGroup.value.rememberEmail; await this.stateService.setRememberEmail(rememberEmail); if (!rememberEmail) { @@ -192,7 +192,7 @@ export class LoginComponent extends BaseLoginComponent { } private getPasswordStrengthUserInput() { - const email = this.formGroup.get("email")?.value; + const email = this.formGroup.value.email; let userInput: string[] = []; const atPosition = email.indexOf("@"); if (atPosition > -1) { diff --git a/apps/web/src/app/accounts/register-form/register-form.component.ts b/apps/web/src/app/accounts/register-form/register-form.component.ts index 8045ef18f1e..ad3341fb6c0 100644 --- a/apps/web/src/app/accounts/register-form/register-form.component.ts +++ b/apps/web/src/app/accounts/register-form/register-form.component.ts @@ -73,7 +73,7 @@ export class RegisterFormComponent extends BaseRegisterComponent { this.enforcedPolicyOptions != null && !this.policyService.evaluateMasterPassword( this.passwordStrengthResult.score, - this.formGroup.get("masterPassword")?.value, + this.formGroup.value.masterPassword, this.enforcedPolicyOptions ) ) { diff --git a/apps/web/src/app/accounts/trial-initiation/billing.component.ts b/apps/web/src/app/accounts/trial-initiation/billing.component.ts index aff798b5b86..0817c19c26b 100644 --- a/apps/web/src/app/accounts/trial-initiation/billing.component.ts +++ b/apps/web/src/app/accounts/trial-initiation/billing.component.ts @@ -57,8 +57,8 @@ export class BillingComponent extends OrganizationPlansComponent { async ngOnInit() { const additionalSeats = this.product == ProductType.Families ? 0 : 1; this.formGroup.patchValue({ - name: this.orgInfoForm.get("name")?.value, - billingEmail: this.orgInfoForm.get("email")?.value, + name: this.orgInfoForm.value.name, + billingEmail: this.orgInfoForm.value.email, additionalSeats: additionalSeats, plan: this.plan, product: this.product, diff --git a/libs/angular/src/components/login.component.ts b/libs/angular/src/components/login.component.ts index 1bc2e8ed871..8e35a230aa9 100644 --- a/libs/angular/src/components/login.component.ts +++ b/libs/angular/src/components/login.component.ts @@ -65,7 +65,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit } async ngOnInit() { - let email = this.formGroup.get("email")?.value; + let email = this.formGroup.value.email; if (email == null || email === "") { email = await this.stateService.getRememberedEmail(); this.formGroup.get("email")?.setValue(email); @@ -81,9 +81,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit } async submit(showToast = true) { - const email = this.formGroup.get("email")?.value; - const masterPassword = this.formGroup.get("masterPassword")?.value; - const rememberEmail = this.formGroup.get("rememberEmail")?.value; + const data = this.formGroup.value; await this.setupCaptcha(); @@ -103,15 +101,15 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit try { const credentials = new PasswordLogInCredentials( - email, - masterPassword, + data.email, + data.masterPassword, this.captchaToken, null ); this.formPromise = this.authService.logIn(credentials); const response = await this.formPromise; - if (rememberEmail || this.alwaysRememberEmail) { - await this.stateService.setRememberedEmail(email); + if (data.rememberEmail || this.alwaysRememberEmail) { + await this.stateService.setRememberedEmail(data.email); } else { await this.stateService.setRememberedEmail(null); } @@ -216,7 +214,7 @@ export class LoginComponent extends CaptchaProtectedComponent implements OnInit } protected focusInput() { - const email = this.formGroup.get("email")?.value; + const email = this.formGroup.value.email; document.getElementById(email == null || email === "" ? "email" : "masterPassword").focus(); } } diff --git a/libs/angular/src/components/register.component.ts b/libs/angular/src/components/register.component.ts index 2fba7781297..d873ae9955d 100644 --- a/libs/angular/src/components/register.component.ts +++ b/libs/angular/src/components/register.component.ts @@ -96,11 +96,11 @@ export class RegisterComponent extends CaptchaProtectedComponent implements OnIn } async submit(showToast = true) { - let email = this.formGroup.get("email")?.value; + let email = this.formGroup.value.email; email = email.trim().toLowerCase(); - let name = this.formGroup.get("name")?.value; + let name = this.formGroup.value.name; name = name === "" ? null : name; // Why do we do this? - const masterPassword = this.formGroup.get("masterPassword")?.value; + const masterPassword = this.formGroup.value.masterPassword; try { if (!this.accountCreated) { const registerResponse = await this.registerAccount( @@ -125,7 +125,7 @@ export class RegisterComponent extends CaptchaProtectedComponent implements OnIn if (loginResponse.captchaRequired) { return; } - this.createdAccount.emit(this.formGroup.get("email")?.value); + this.createdAccount.emit(this.formGroup.value.email); } else { this.platformUtilsService.showToast( "success", @@ -232,7 +232,7 @@ export class RegisterComponent extends CaptchaProtectedComponent implements OnIn masterPassword: string, name: string ): Promise { - const hint = this.formGroup.get("hint")?.value; + const hint = this.formGroup.value.hint; const kdf = DEFAULT_KDF_TYPE; const kdfIterations = DEFAULT_KDF_ITERATIONS; const key = await this.cryptoService.makeKey(masterPassword, email, kdf, kdfIterations); diff --git a/libs/angular/src/components/settings/vault-timeout-input.component.ts b/libs/angular/src/components/settings/vault-timeout-input.component.ts index 8b5b8c24761..f63724578e2 100644 --- a/libs/angular/src/components/settings/vault-timeout-input.component.ts +++ b/libs/angular/src/components/settings/vault-timeout-input.component.ts @@ -2,7 +2,7 @@ import { Directive, Input, OnInit } from "@angular/core"; import { AbstractControl, ControlValueAccessor, - UntypedFormBuilder, + FormBuilder, ValidationErrors, Validator, } from "@angular/forms"; @@ -44,7 +44,7 @@ export class VaultTimeoutInputComponent implements ControlValueAccessor, Validat private validatorChange: () => void; constructor( - private formBuilder: UntypedFormBuilder, + private formBuilder: FormBuilder, private policyService: PolicyService, private i18nService: I18nService ) {} @@ -152,6 +152,6 @@ export class VaultTimeoutInputComponent implements ControlValueAccessor, Validat } private customTimeInMinutes() { - return this.form.get("custom.hours")?.value * 60 + this.form.get("custom.minutes")?.value; + return this.form.value.custom.hours * 60 + this.form.value.custom.minutes; } } From 43d586ff9900cb8bc2ee158ed19cd6823669cc64 Mon Sep 17 00:00:00 2001 From: Daniel James Smith Date: Tue, 4 Oct 2022 20:43:51 +0200 Subject: [PATCH 04/82] [PS-1514] Do not subscribe to activeAccount-observable and execute load asynchronously (#3608) * Fix async subscribe * Revert "[PS-1066] Browser and Desktop - SSO User does not see Update Master Password screen after Owner does a Admin Password Reset (#3207)" This reverts commit 0eda4185911090313146842038f871c7911640a2. --- .../src/popup/accounts/lock.component.ts | 13 ++---------- .../src/app/accounts/lock.component.ts | 11 +--------- libs/angular/src/components/lock.component.ts | 21 ++++++++++++------- 3 files changed, 16 insertions(+), 29 deletions(-) diff --git a/apps/browser/src/popup/accounts/lock.component.ts b/apps/browser/src/popup/accounts/lock.component.ts index c288a54a65b..775ecaa3ca0 100644 --- a/apps/browser/src/popup/accounts/lock.component.ts +++ b/apps/browser/src/popup/accounts/lock.component.ts @@ -12,7 +12,6 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service"; import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service"; import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStatus"; @@ -28,8 +27,6 @@ export class LockComponent extends BaseLockComponent { biometricError: string; pendingBiometric = false; - authenicatedUrl = "/tabs/current"; - unAuthenicatedUrl = "/update-temp-password"; constructor( router: Router, @@ -45,8 +42,7 @@ export class LockComponent extends BaseLockComponent { logService: LogService, keyConnectorService: KeyConnectorService, ngZone: NgZone, - private authService: AuthService, - private syncService: SyncService + private authService: AuthService ) { super( router, @@ -63,17 +59,12 @@ export class LockComponent extends BaseLockComponent { keyConnectorService, ngZone ); - + this.successRoute = "/tabs/current"; this.isInitialLockScreen = (window as any).previousPopupUrl == null; } async ngOnInit() { await super.ngOnInit(); - await this.syncService.fullSync(true); - - const forcePasswordReset = await this.stateService.getForcePasswordReset(); - this.successRoute = forcePasswordReset === true ? this.unAuthenicatedUrl : this.authenicatedUrl; - const disableAutoBiometricsPrompt = (await this.stateService.getDisableAutoBiometricsPrompt()) ?? true; diff --git a/apps/desktop/src/app/accounts/lock.component.ts b/apps/desktop/src/app/accounts/lock.component.ts index ff136aa982e..5cb28802796 100644 --- a/apps/desktop/src/app/accounts/lock.component.ts +++ b/apps/desktop/src/app/accounts/lock.component.ts @@ -13,7 +13,6 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; import { VaultTimeoutService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service"; import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service"; @@ -25,8 +24,6 @@ const BroadcasterSubscriptionId = "LockComponent"; }) export class LockComponent extends BaseLockComponent { private deferFocus: boolean = null; - authenicatedUrl = "vault"; - unAuthenicatedUrl = "update-temp-password"; constructor( router: Router, @@ -43,8 +40,7 @@ export class LockComponent extends BaseLockComponent { private broadcasterService: BroadcasterService, ngZone: NgZone, logService: LogService, - keyConnectorService: KeyConnectorService, - private syncService: SyncService + keyConnectorService: KeyConnectorService ) { super( router, @@ -67,11 +63,6 @@ export class LockComponent extends BaseLockComponent { await super.ngOnInit(); const autoPromptBiometric = !(await this.stateService.getNoAutoPromptBiometrics()); - await this.syncService.fullSync(true); - - const forcePasswordReset = await this.stateService.getForcePasswordReset(); - this.successRoute = forcePasswordReset === true ? this.unAuthenicatedUrl : this.authenicatedUrl; - // eslint-disable-next-line rxjs-angular/prefer-takeuntil this.route.queryParams.subscribe((params) => { if (this.supportsBiometric && params.promptBiometric && autoPromptBiometric) { diff --git a/libs/angular/src/components/lock.component.ts b/libs/angular/src/components/lock.component.ts index 0932fab7128..a488d874461 100644 --- a/libs/angular/src/components/lock.component.ts +++ b/libs/angular/src/components/lock.component.ts @@ -1,7 +1,7 @@ import { Directive, NgZone, OnDestroy, OnInit } from "@angular/core"; import { Router } from "@angular/router"; -import { Subscription } from "rxjs"; -import { take } from "rxjs/operators"; +import { Subject } from "rxjs"; +import { concatMap, take, takeUntil } from "rxjs/operators"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; @@ -41,7 +41,7 @@ export class LockComponent implements OnInit, OnDestroy { private invalidPinAttempts = 0; private pinSet: [boolean, boolean]; - private activeAccountSubscription: Subscription; + private destroy$ = new Subject(); constructor( protected router: Router, @@ -60,14 +60,19 @@ export class LockComponent implements OnInit, OnDestroy { ) {} async ngOnInit() { - // eslint-disable-next-line rxjs/no-async-subscribe - this.activeAccountSubscription = this.stateService.activeAccount$.subscribe(async () => { - await this.load(); - }); + this.stateService.activeAccount$ + .pipe( + concatMap(async () => { + await this.load(); + }), + takeUntil(this.destroy$) + ) + .subscribe(); } ngOnDestroy() { - this.activeAccountSubscription.unsubscribe(); + this.destroy$.next(); + this.destroy$.complete(); } async submit() { From 7c3255d9fa73c0df714f0323e6e46a08fdfe3646 Mon Sep 17 00:00:00 2001 From: Thomas Rittson <31796059+eliykat@users.noreply.github.com> Date: Wed, 5 Oct 2022 07:41:35 +1000 Subject: [PATCH 05/82] Add organization-options menu to single org (#3678) --- .../organization-filter.component.html | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html b/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html index 2977f63ed71..9d5d8b45a7c 100644 --- a/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html +++ b/apps/web/src/app/vault/vault-filter/organization-filter/organization-filter.component.html @@ -97,6 +97,14 @@ {{ organizations[0].name }} + + + + + + From f2159d71ea96da81f01a81387c6b9d79d5c247b3 Mon Sep 17 00:00:00 2001 From: Vince Grassia <593223+vgrassia@users.noreply.github.com> Date: Thu, 6 Oct 2022 09:54:37 -0400 Subject: [PATCH 06/82] Add staged rollout desktop workflow (#3702) --- .github/workflows/staged-rollout-desktop.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/staged-rollout-desktop.yml diff --git a/.github/workflows/staged-rollout-desktop.yml b/.github/workflows/staged-rollout-desktop.yml new file mode 100644 index 00000000000..14f2b8e972b --- /dev/null +++ b/.github/workflows/staged-rollout-desktop.yml @@ -0,0 +1,17 @@ +--- +name: Staged Rollout Desktop + +on: + workflow_dispatch: + +defaults: + run: + shell: bash + +jobs: + setup: + name: Stub + runs-on: ubuntu-22.04 + steps: + - name: TEST + run: exit 0 From 8676d194d048e3ef4a1bf51a315a7940c630d2d1 Mon Sep 17 00:00:00 2001 From: cd-bitwarden <106776772+cd-bitwarden@users.noreply.github.com> Date: Thu, 6 Oct 2022 12:31:31 -0400 Subject: [PATCH 07/82] fixes (#3708) --- libs/angular/src/components/export.component.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/angular/src/components/export.component.ts b/libs/angular/src/components/export.component.ts index 352ee1eed1a..eaa635fc5e5 100644 --- a/libs/angular/src/components/export.component.ts +++ b/libs/angular/src/components/export.component.ts @@ -117,6 +117,7 @@ export class ExportComponent implements OnInit, OnDestroy { await this.userVerificationService.verifyUser(secret); } catch (e) { this.platformUtilsService.showToast("error", this.i18nService.t("errorOccurred"), e.message); + return; } this.doExport(); From c0e872e5760489102506bef63d700ddb3471de75 Mon Sep 17 00:00:00 2001 From: Gbubemi Smith Date: Fri, 7 Oct 2022 16:05:20 +0100 Subject: [PATCH 08/82] added 2fa enabled (#3711) --- .../login/login-with-device.component.ts | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/apps/web/src/app/accounts/login/login-with-device.component.ts b/apps/web/src/app/accounts/login/login-with-device.component.ts index 4c6f6268dfd..32d350a1e05 100644 --- a/apps/web/src/app/accounts/login/login-with-device.component.ts +++ b/apps/web/src/app/accounts/login/login-with-device.component.ts @@ -37,9 +37,11 @@ export class LoginWithDeviceComponent onSuccessfulLoginTwoFactorNavigate: () => Promise; onSuccessfulLogin: () => Promise; onSuccessfulLoginNavigate: () => Promise; + onSuccessfulLoginForceResetNavigate: () => Promise; protected twoFactorRoute = "2fa"; protected successRoute = "vault"; + protected forcePasswordResetRoute = "update-temp-password"; private authRequestKeyPair: [publicKey: ArrayBuffer, privateKey: ArrayBuffer]; constructor( @@ -119,14 +121,29 @@ export class LoginWithDeviceComponent } const credentials = await this.buildLoginCredntials(requestId, response); - await this.authService.logIn(credentials); - if (this.onSuccessfulLogin != null) { - this.onSuccessfulLogin(); - } - if (this.onSuccessfulLoginNavigate != null) { - this.onSuccessfulLoginNavigate(); + const loginResponse = await this.authService.logIn(credentials); + + if (loginResponse.requiresTwoFactor) { + if (this.onSuccessfulLoginTwoFactorNavigate != null) { + this.onSuccessfulLoginTwoFactorNavigate(); + } else { + this.router.navigate([this.twoFactorRoute]); + } + } else if (loginResponse.forcePasswordReset) { + if (this.onSuccessfulLoginForceResetNavigate != null) { + this.onSuccessfulLoginForceResetNavigate(); + } else { + this.router.navigate([this.forcePasswordResetRoute]); + } } else { - this.router.navigate([this.successRoute]); + if (this.onSuccessfulLogin != null) { + this.onSuccessfulLogin(); + } + if (this.onSuccessfulLoginNavigate != null) { + this.onSuccessfulLoginNavigate(); + } else { + this.router.navigate([this.successRoute]); + } } } catch (error) { this.logService.error(error); From 96c99058c4a490e3f9192b21eec886209dcf32fa Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Fri, 7 Oct 2022 18:24:49 +0200 Subject: [PATCH 09/82] [CL-42] Add code color (#3662) --- libs/components/src/stories/colors.stories.mdx | 7 +++++++ libs/components/src/tw-theme.css | 2 ++ libs/components/tailwind.config.base.js | 2 ++ 3 files changed, 11 insertions(+) diff --git a/libs/components/src/stories/colors.stories.mdx b/libs/components/src/stories/colors.stories.mdx index 255b1e542a0..2daaa0325d1 100644 --- a/libs/components/src/stories/colors.stories.mdx +++ b/libs/components/src/stories/colors.stories.mdx @@ -49,11 +49,18 @@ export const Table = (args) => ( {Row("info-500")} {Row("info-700")} + + + Text + + + {Row("text-main")} {Row("text-muted")} {Row("text-contrast")} {Row("text-alt2")} + {Row("text-code")} ); diff --git a/libs/components/src/tw-theme.css b/libs/components/src/tw-theme.css index f76c838585d..7acdb02ebf7 100644 --- a/libs/components/src/tw-theme.css +++ b/libs/components/src/tw-theme.css @@ -30,6 +30,7 @@ --color-text-muted: 109 117 126; --color-text-contrast: 255 255 255; --color-text-alt2: 255 255 255; + --color-text-code: 192 17 118; --tw-ring-offset-color: #ffffff; } @@ -70,6 +71,7 @@ --color-text-muted: 186 192 206; --color-text-contrast: 25 30 38; --color-text-alt2: 255 255 255; + --color-text-code: 240 141 199; --tw-ring-offset-color: #1f242e; } diff --git a/libs/components/tailwind.config.base.js b/libs/components/tailwind.config.base.js index 082abe73726..5abb5694271 100644 --- a/libs/components/tailwind.config.base.js +++ b/libs/components/tailwind.config.base.js @@ -50,6 +50,7 @@ module.exports = { muted: rgba("--color-text-muted"), contrast: rgba("--color-text-contrast"), alt2: rgba("--color-text-alt2"), + code: rgba("--color-text-code"), }, background: { DEFAULT: rgba("--color-background"), @@ -62,6 +63,7 @@ module.exports = { muted: rgba("--color-text-muted"), contrast: rgba("--color-text-contrast"), alt2: rgba("--color-text-alt2"), + code: rgba("--color-text-code"), success: rgba("--color-success-500"), danger: rgba("--color-danger-500"), warning: rgba("--color-warning-500"), From bb4f063fe7e088deb7b9f4e1c1e9d03023c24da0 Mon Sep 17 00:00:00 2001 From: Andreas Coroiu Date: Mon, 10 Oct 2022 16:04:29 +0200 Subject: [PATCH 10/82] [EC-558] Reflecting async progress on buttons and forms (#3548) * [EC-556] feat: convert button into component * [EC-556] feat: implement loading state * [EC-556] feat: remove loading from submit button * [EC-556] fix: add missing import * [EC-556] fix: disabling button using regular attribute * [EC-556] feat: implement bitFormButton * [EC-556] feat: use bitFormButton in submit button * [EC-556] fix: missing import * [EC-558] chore: rename file to match class name * [EC-558] feat: allow skipping bitButton on form buttons * [EC-558]: only show spinner on submit button * [EC-558] feat: add new bit async directive * [EC-558] feat: add functionToObservable util * [EC-558] feat: implement bitAction directive * [EC-558] refactor: simplify bitSubmit using functionToObservable * [EC-558] feat: connect bit action with form button * [EC-558] feat: execute function immediately to allow for form validation * [EC-558] feat: disable form on loading * [EC-558] chore: remove duplicate types * [EC-558] feat: move validation service to common * [EC-558] feat: add error handling using validation service * [EC-558] feat: add support for icon button * [EC-558] fix: icon button hover border styles * [EC-558] chore: refactor icon button story to show all styles * [EC-558] fix: better align loading spinner to middle * [EC-558] fix: simplify try catch * [EC-558] chore: reorganize async actions * [EC-558] chore: rename stories * [EC-558] docs: add documentation * [EC-558] feat: decouple buttons and form buttons * [EC-558] chore: rename button like abstraction * [EC-558] chore: remove null check * [EC-558] docs: add jsdocs to directives * [EC-558] fix: switch abs imports to relative * [EC-558] chore: add async actions module to web shared module * [EC-558] chore: remove unecessary null check * [EC-558] chore: apply suggestions from code review Co-authored-by: Oscar Hinton * [EC-558] fix: whitespaces * [EC-558] feat: dont disable form by default * [EC-558] fix: bug where form could be submit during a previous submit * [EC-558] feat: remove ability to disable form Co-authored-by: Oscar Hinton --- .../src/app/common/base.people.component.ts | 2 +- .../organizations/manage/people.component.ts | 2 +- ...families-for-enterprise-setup.component.ts | 2 +- apps/web/src/app/shared/shared.module.ts | 2 + .../clients/add-organization.component.ts | 2 +- .../providers/clients/clients.component.ts | 2 +- .../app/providers/manage/people.component.ts | 2 +- .../app/providers/setup/setup.component.ts | 2 +- .../src/directives/api-action.directive.ts | 3 +- .../src/services/jslib-services.module.ts | 9 +- .../src/abstractions/validation.service.ts | 3 + libs/common/src/misc/utils.ts | 6 + .../src/services/validation.service.ts | 12 +- .../src/async-actions/async-actions.module.ts | 14 ++ .../src/async-actions/bit-action.directive.ts | 58 +++++++ .../src/async-actions/bit-submit.directive.ts | 83 ++++++++++ .../async-actions/form-button.directive.ts | 58 +++++++ .../src/async-actions/in-forms.stories.mdx | 114 +++++++++++++ .../src/async-actions/in-forms.stories.ts | 156 ++++++++++++++++++ libs/components/src/async-actions/index.ts | 3 + .../src/async-actions/overview.stories.mdx | 26 +++ .../src/async-actions/standalone.stories.mdx | 63 +++++++ .../src/async-actions/standalone.stories.ts | 97 +++++++++++ .../src/button/button.component.html | 7 +- .../components/src/button/button.component.ts | 5 +- .../icon-button/icon-button.component.html | 15 ++ .../src/icon-button/icon-button.component.ts | 29 +++- .../src/icon-button/icon-button.stories.ts | 108 +++++++----- libs/components/src/index.ts | 1 + .../src/shared/button-like.abstraction.ts | 4 + .../src/utils/function-to-observable.spec.ts | 103 ++++++++++++ .../src/utils/function-to-observable.ts | 27 +++ 32 files changed, 955 insertions(+), 65 deletions(-) create mode 100644 libs/common/src/abstractions/validation.service.ts rename libs/{angular => common}/src/services/validation.service.ts (72%) create mode 100644 libs/components/src/async-actions/async-actions.module.ts create mode 100644 libs/components/src/async-actions/bit-action.directive.ts create mode 100644 libs/components/src/async-actions/bit-submit.directive.ts create mode 100644 libs/components/src/async-actions/form-button.directive.ts create mode 100644 libs/components/src/async-actions/in-forms.stories.mdx create mode 100644 libs/components/src/async-actions/in-forms.stories.ts create mode 100644 libs/components/src/async-actions/index.ts create mode 100644 libs/components/src/async-actions/overview.stories.mdx create mode 100644 libs/components/src/async-actions/standalone.stories.mdx create mode 100644 libs/components/src/async-actions/standalone.stories.ts create mode 100644 libs/components/src/icon-button/icon-button.component.html create mode 100644 libs/components/src/shared/button-like.abstraction.ts create mode 100644 libs/components/src/utils/function-to-observable.spec.ts create mode 100644 libs/components/src/utils/function-to-observable.ts diff --git a/apps/web/src/app/common/base.people.component.ts b/apps/web/src/app/common/base.people.component.ts index 8d9a3324244..e7c2c8f4ea9 100644 --- a/apps/web/src/app/common/base.people.component.ts +++ b/apps/web/src/app/common/base.people.component.ts @@ -3,7 +3,6 @@ import { Directive, ViewChild, ViewContainerRef } from "@angular/core"; import { SearchPipe } from "@bitwarden/angular/pipes/search.pipe"; import { UserNamePipe } from "@bitwarden/angular/pipes/user-name.pipe"; import { ModalService } from "@bitwarden/angular/services/modal.service"; -import { ValidationService } from "@bitwarden/angular/services/validation.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; @@ -11,6 +10,7 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; import { OrganizationUserStatusType } from "@bitwarden/common/enums/organizationUserStatusType"; import { OrganizationUserType } from "@bitwarden/common/enums/organizationUserType"; import { ProviderUserStatusType } from "@bitwarden/common/enums/providerUserStatusType"; diff --git a/apps/web/src/app/organizations/manage/people.component.ts b/apps/web/src/app/organizations/manage/people.component.ts index d8535c14352..94e9493431a 100644 --- a/apps/web/src/app/organizations/manage/people.component.ts +++ b/apps/web/src/app/organizations/manage/people.component.ts @@ -5,7 +5,6 @@ import { first } from "rxjs/operators"; import { SearchPipe } from "@bitwarden/angular/pipes/search.pipe"; import { UserNamePipe } from "@bitwarden/angular/pipes/user-name.pipe"; import { ModalService } from "@bitwarden/angular/services/modal.service"; -import { ValidationService } from "@bitwarden/angular/services/validation.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; @@ -18,6 +17,7 @@ import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.serv import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; import { OrganizationUserStatusType } from "@bitwarden/common/enums/organizationUserStatusType"; import { OrganizationUserType } from "@bitwarden/common/enums/organizationUserType"; import { PolicyType } from "@bitwarden/common/enums/policyType"; diff --git a/apps/web/src/app/organizations/sponsorships/families-for-enterprise-setup.component.ts b/apps/web/src/app/organizations/sponsorships/families-for-enterprise-setup.component.ts index 7d7f8193065..9ce3d599325 100644 --- a/apps/web/src/app/organizations/sponsorships/families-for-enterprise-setup.component.ts +++ b/apps/web/src/app/organizations/sponsorships/families-for-enterprise-setup.component.ts @@ -4,12 +4,12 @@ import { Observable, Subject } from "rxjs"; import { first, map, takeUntil } from "rxjs/operators"; import { ModalService } from "@bitwarden/angular/services/modal.service"; -import { ValidationService } from "@bitwarden/angular/services/validation.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; import { PlanSponsorshipType } from "@bitwarden/common/enums/planSponsorshipType"; import { PlanType } from "@bitwarden/common/enums/planType"; import { ProductType } from "@bitwarden/common/enums/productType"; diff --git a/apps/web/src/app/shared/shared.module.ts b/apps/web/src/app/shared/shared.module.ts index c0a076e545e..f8c79ebb5e4 100644 --- a/apps/web/src/app/shared/shared.module.ts +++ b/apps/web/src/app/shared/shared.module.ts @@ -14,6 +14,7 @@ import { FormFieldModule, MenuModule, IconModule, + AsyncActionsModule, } from "@bitwarden/components"; // Register the locales for the application @@ -47,6 +48,7 @@ import "./locales"; ], exports: [ CommonModule, + AsyncActionsModule, DragDropModule, FormsModule, InfiniteScrollModule, diff --git a/bitwarden_license/bit-web/src/app/providers/clients/add-organization.component.ts b/bitwarden_license/bit-web/src/app/providers/clients/add-organization.component.ts index 8544acc4052..292c4649a9a 100644 --- a/bitwarden_license/bit-web/src/app/providers/clients/add-organization.component.ts +++ b/bitwarden_license/bit-web/src/app/providers/clients/add-organization.component.ts @@ -1,9 +1,9 @@ import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; -import { ValidationService } from "@bitwarden/angular/services/validation.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { ProviderService } from "@bitwarden/common/abstractions/provider.service"; +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; import { Organization } from "@bitwarden/common/models/domain/organization"; import { Provider } from "@bitwarden/common/models/domain/provider"; diff --git a/bitwarden_license/bit-web/src/app/providers/clients/clients.component.ts b/bitwarden_license/bit-web/src/app/providers/clients/clients.component.ts index f98a7f3ac18..a87302511a2 100644 --- a/bitwarden_license/bit-web/src/app/providers/clients/clients.component.ts +++ b/bitwarden_license/bit-web/src/app/providers/clients/clients.component.ts @@ -3,7 +3,6 @@ import { ActivatedRoute } from "@angular/router"; import { first } from "rxjs/operators"; import { ModalService } from "@bitwarden/angular/services/modal.service"; -import { ValidationService } from "@bitwarden/angular/services/validation.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; @@ -12,6 +11,7 @@ import { OrganizationService } from "@bitwarden/common/abstractions/organization import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { ProviderService } from "@bitwarden/common/abstractions/provider.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; import { PlanType } from "@bitwarden/common/enums/planType"; import { ProviderUserType } from "@bitwarden/common/enums/providerUserType"; import { Organization } from "@bitwarden/common/models/domain/organization"; diff --git a/bitwarden_license/bit-web/src/app/providers/manage/people.component.ts b/bitwarden_license/bit-web/src/app/providers/manage/people.component.ts index 2ffd0e7a53b..bdb7c30e904 100644 --- a/bitwarden_license/bit-web/src/app/providers/manage/people.component.ts +++ b/bitwarden_license/bit-web/src/app/providers/manage/people.component.ts @@ -5,7 +5,6 @@ import { first } from "rxjs/operators"; import { SearchPipe } from "@bitwarden/angular/pipes/search.pipe"; import { UserNamePipe } from "@bitwarden/angular/pipes/user-name.pipe"; import { ModalService } from "@bitwarden/angular/services/modal.service"; -import { ValidationService } from "@bitwarden/angular/services/validation.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; @@ -14,6 +13,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { ProviderService } from "@bitwarden/common/abstractions/provider.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; import { ProviderUserStatusType } from "@bitwarden/common/enums/providerUserStatusType"; import { ProviderUserType } from "@bitwarden/common/enums/providerUserType"; import { ProviderUserBulkRequest } from "@bitwarden/common/models/request/provider/providerUserBulkRequest"; diff --git a/bitwarden_license/bit-web/src/app/providers/setup/setup.component.ts b/bitwarden_license/bit-web/src/app/providers/setup/setup.component.ts index 531f1e9e21a..bdc9b498263 100644 --- a/bitwarden_license/bit-web/src/app/providers/setup/setup.component.ts +++ b/bitwarden_license/bit-web/src/app/providers/setup/setup.component.ts @@ -2,12 +2,12 @@ import { Component, OnInit } from "@angular/core"; import { ActivatedRoute, Router } from "@angular/router"; import { first } from "rxjs/operators"; -import { ValidationService } from "@bitwarden/angular/services/validation.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; import { ProviderSetupRequest } from "@bitwarden/common/models/request/provider/providerSetupRequest"; @Component({ diff --git a/libs/angular/src/directives/api-action.directive.ts b/libs/angular/src/directives/api-action.directive.ts index 4a4e06201ff..f68e7f8665a 100644 --- a/libs/angular/src/directives/api-action.directive.ts +++ b/libs/angular/src/directives/api-action.directive.ts @@ -1,10 +1,9 @@ import { Directive, ElementRef, Input, OnChanges } from "@angular/core"; import { LogService } from "@bitwarden/common/abstractions/log.service"; +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; import { ErrorResponse } from "@bitwarden/common/models/response/errorResponse"; -import { ValidationService } from "../services/validation.service"; - /** * Provides error handling, in particular for any error returned by the server in an api call. * Attach it to a
element and provide the name of the class property that will hold the api call promise. diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index 83ed944bc89..b1bbcc0a87b 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -55,6 +55,7 @@ import { TwoFactorService as TwoFactorServiceAbstraction } from "@bitwarden/comm import { UserVerificationApiServiceAbstraction } from "@bitwarden/common/abstractions/userVerification/userVerification-api.service.abstraction"; import { UserVerificationService as UserVerificationServiceAbstraction } from "@bitwarden/common/abstractions/userVerification/userVerification.service.abstraction"; import { UsernameGenerationService as UsernameGenerationServiceAbstraction } from "@bitwarden/common/abstractions/usernameGeneration.service"; +import { ValidationService as ValidationServiceAbstraction } from "@bitwarden/common/abstractions/validation.service"; import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeout.service"; import { VaultTimeoutSettingsService as VaultTimeoutSettingsServiceAbstraction } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; @@ -102,6 +103,7 @@ import { TwoFactorService } from "@bitwarden/common/services/twoFactor.service"; import { UserVerificationApiService } from "@bitwarden/common/services/userVerification/userVerification-api.service"; import { UserVerificationService } from "@bitwarden/common/services/userVerification/userVerification.service"; import { UsernameGenerationService } from "@bitwarden/common/services/usernameGeneration.service"; +import { ValidationService } from "@bitwarden/common/services/validation.service"; import { VaultTimeoutService } from "@bitwarden/common/services/vaultTimeout/vaultTimeout.service"; import { VaultTimeoutSettingsService } from "@bitwarden/common/services/vaultTimeout/vaultTimeoutSettings.service"; import { WebCryptoFunctionService } from "@bitwarden/common/services/webCryptoFunction.service"; @@ -127,12 +129,10 @@ import { ModalService } from "./modal.service"; import { PasswordRepromptService } from "./passwordReprompt.service"; import { ThemingService } from "./theming/theming.service"; import { AbstractThemingService } from "./theming/theming.service.abstraction"; -import { ValidationService } from "./validation.service"; @NgModule({ declarations: [], providers: [ - ValidationService, AuthGuard, UnauthGuard, LockGuard, @@ -561,6 +561,11 @@ import { ValidationService } from "./validation.service"; useClass: AnonymousHubService, deps: [EnvironmentServiceAbstraction, AuthServiceAbstraction, LogService], }, + { + provide: ValidationServiceAbstraction, + useClass: ValidationService, + deps: [I18nServiceAbstraction, PlatformUtilsServiceAbstraction], + }, ], }) export class JslibServicesModule {} diff --git a/libs/common/src/abstractions/validation.service.ts b/libs/common/src/abstractions/validation.service.ts new file mode 100644 index 00000000000..c0985847bff --- /dev/null +++ b/libs/common/src/abstractions/validation.service.ts @@ -0,0 +1,3 @@ +export abstract class ValidationService { + showError: (data: any) => string[]; +} diff --git a/libs/common/src/misc/utils.ts b/libs/common/src/misc/utils.ts index 21ddb651e08..f3f03c30eed 100644 --- a/libs/common/src/misc/utils.ts +++ b/libs/common/src/misc/utils.ts @@ -339,6 +339,12 @@ export class Utils { return str == null || typeof str !== "string" || str == ""; } + static isPromise(obj: any): obj is Promise { + return ( + obj != undefined && typeof obj["then"] === "function" && typeof obj["catch"] === "function" + ); + } + static nameOf(name: string & keyof T) { return name; } diff --git a/libs/angular/src/services/validation.service.ts b/libs/common/src/services/validation.service.ts similarity index 72% rename from libs/angular/src/services/validation.service.ts rename to libs/common/src/services/validation.service.ts index a9d4dbbf335..b51d55a2d80 100644 --- a/libs/angular/src/services/validation.service.ts +++ b/libs/common/src/services/validation.service.ts @@ -1,11 +1,9 @@ -import { Injectable } from "@angular/core"; +import { I18nService } from "../abstractions/i18n.service"; +import { PlatformUtilsService } from "../abstractions/platformUtils.service"; +import { ValidationService as ValidationServiceAbstraction } from "../abstractions/validation.service"; +import { ErrorResponse } from "../models/response/errorResponse"; -import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; -import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; -import { ErrorResponse } from "@bitwarden/common/models/response/errorResponse"; - -@Injectable() -export class ValidationService { +export class ValidationService implements ValidationServiceAbstraction { constructor( private i18nService: I18nService, private platformUtilsService: PlatformUtilsService diff --git a/libs/components/src/async-actions/async-actions.module.ts b/libs/components/src/async-actions/async-actions.module.ts new file mode 100644 index 00000000000..8ff1deb2784 --- /dev/null +++ b/libs/components/src/async-actions/async-actions.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from "@angular/core"; + +import { SharedModule } from "../shared"; + +import { BitActionDirective } from "./bit-action.directive"; +import { BitSubmitDirective } from "./bit-submit.directive"; +import { BitFormButtonDirective } from "./form-button.directive"; + +@NgModule({ + imports: [SharedModule], + declarations: [BitActionDirective, BitFormButtonDirective, BitSubmitDirective], + exports: [BitActionDirective, BitFormButtonDirective, BitSubmitDirective], +}) +export class AsyncActionsModule {} diff --git a/libs/components/src/async-actions/bit-action.directive.ts b/libs/components/src/async-actions/bit-action.directive.ts new file mode 100644 index 00000000000..4fb28a4b1fb --- /dev/null +++ b/libs/components/src/async-actions/bit-action.directive.ts @@ -0,0 +1,58 @@ +import { Directive, HostListener, Input, OnDestroy, Optional } from "@angular/core"; +import { BehaviorSubject, finalize, Subject, takeUntil, tap } from "rxjs"; + +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; + +import { ButtonLikeAbstraction } from "../shared/button-like.abstraction"; +import { FunctionReturningAwaitable, functionToObservable } from "../utils/function-to-observable"; + +/** + * Allow a single button to perform async actions on click and reflect the progress in the UI by automatically + * activating the loading effect while the action is processed. + */ +@Directive({ + selector: "[bitAction]", +}) +export class BitActionDirective implements OnDestroy { + private destroy$ = new Subject(); + private _loading$ = new BehaviorSubject(false); + + @Input("bitAction") protected handler: FunctionReturningAwaitable; + + readonly loading$ = this._loading$.asObservable(); + + constructor( + private buttonComponent: ButtonLikeAbstraction, + @Optional() private validationService?: ValidationService + ) {} + + get loading() { + return this._loading$.value; + } + + set loading(value: boolean) { + this._loading$.next(value); + this.buttonComponent.loading = value; + } + + @HostListener("click") + protected async onClick() { + if (!this.handler) { + return; + } + + this.loading = true; + functionToObservable(this.handler) + .pipe( + tap({ error: (err: unknown) => this.validationService?.showError(err) }), + finalize(() => (this.loading = false)), + takeUntil(this.destroy$) + ) + .subscribe(); + } + + ngOnDestroy(): void { + this.destroy$.next(); + this.destroy$.complete(); + } +} diff --git a/libs/components/src/async-actions/bit-submit.directive.ts b/libs/components/src/async-actions/bit-submit.directive.ts new file mode 100644 index 00000000000..334696576b5 --- /dev/null +++ b/libs/components/src/async-actions/bit-submit.directive.ts @@ -0,0 +1,83 @@ +import { Directive, Input, OnDestroy, OnInit, Optional } from "@angular/core"; +import { FormGroupDirective } from "@angular/forms"; +import { BehaviorSubject, catchError, filter, of, Subject, switchMap, takeUntil } from "rxjs"; + +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; + +import { FunctionReturningAwaitable, functionToObservable } from "../utils/function-to-observable"; + +/** + * Allow a form to perform async actions on submit, disabling the form while the action is processing. + */ +@Directive({ + selector: "[formGroup][bitSubmit]", +}) +export class BitSubmitDirective implements OnInit, OnDestroy { + private destroy$ = new Subject(); + private _loading$ = new BehaviorSubject(false); + private _disabled$ = new BehaviorSubject(false); + + @Input("bitSubmit") protected handler: FunctionReturningAwaitable; + @Input("disableFormOnLoading") protected disableFormOnLoading = false; + + readonly loading$ = this._loading$.asObservable(); + readonly disabled$ = this._disabled$.asObservable(); + + constructor( + private formGroupDirective: FormGroupDirective, + @Optional() validationService?: ValidationService + ) { + formGroupDirective.ngSubmit + .pipe( + filter(() => !this.disabled), + switchMap(() => { + // Calling functionToObservable exectues the sync part of the handler + // allowing the function to check form validity before it gets disabled. + const awaitable = functionToObservable(this.handler); + + // Disable form + this.loading = true; + + return awaitable.pipe( + catchError((err: unknown) => { + validationService?.showError(err); + return of(undefined); + }) + ); + }), + takeUntil(this.destroy$) + ) + .subscribe({ + next: () => (this.loading = false), + complete: () => (this.loading = false), + }); + } + + ngOnInit(): void { + this.formGroupDirective.statusChanges + .pipe(takeUntil(this.destroy$)) + .subscribe((c) => this._disabled$.next(c === "DISABLED")); + } + + get disabled() { + return this._disabled$.value; + } + + set disabled(value: boolean) { + this._disabled$.next(value); + } + + get loading() { + return this._loading$.value; + } + + set loading(value: boolean) { + this.disabled = value; + this._loading$.next(value); + } + + ngOnDestroy(): void { + this.destroy$.next(); + this.destroy$.complete(); + } +} diff --git a/libs/components/src/async-actions/form-button.directive.ts b/libs/components/src/async-actions/form-button.directive.ts new file mode 100644 index 00000000000..20ca289f7bc --- /dev/null +++ b/libs/components/src/async-actions/form-button.directive.ts @@ -0,0 +1,58 @@ +import { Directive, Input, OnDestroy, Optional } from "@angular/core"; +import { Subject, takeUntil } from "rxjs"; + +import { ButtonLikeAbstraction } from "../shared/button-like.abstraction"; + +import { BitSubmitDirective } from "./bit-submit.directive"; + +import { BitActionDirective } from "."; + +/** + * This directive has two purposes: + * + * When attached to a submit button: + * - Activates the button loading effect while the form is processing an async submit action. + * - Disables the button while a `bitAction` directive on another button is being processed. + * + * When attached to a standalone button with `bitAction` directive: + * - Disables the form while the `bitAction` directive is processing an async submit action. + */ +@Directive({ + selector: "button[bitFormButton]", +}) +export class BitFormButtonDirective implements OnDestroy { + private destroy$ = new Subject(); + + @Input() type: string; + + constructor( + buttonComponent: ButtonLikeAbstraction, + @Optional() submitDirective?: BitSubmitDirective, + @Optional() actionDirective?: BitActionDirective + ) { + if (submitDirective && buttonComponent) { + submitDirective.loading$.pipe(takeUntil(this.destroy$)).subscribe((loading) => { + if (this.type === "submit") { + buttonComponent.loading = loading; + } else { + buttonComponent.disabled = loading; + } + }); + + submitDirective.disabled$.pipe(takeUntil(this.destroy$)).subscribe((disabled) => { + buttonComponent.disabled = disabled; + }); + } + + if (submitDirective && actionDirective) { + actionDirective.loading$.pipe(takeUntil(this.destroy$)).subscribe((disabled) => { + submitDirective.disabled = disabled; + }); + } + } + + ngOnDestroy(): void { + this.destroy$.next(); + this.destroy$.complete(); + } +} diff --git a/libs/components/src/async-actions/in-forms.stories.mdx b/libs/components/src/async-actions/in-forms.stories.mdx new file mode 100644 index 00000000000..75bedda8ebc --- /dev/null +++ b/libs/components/src/async-actions/in-forms.stories.mdx @@ -0,0 +1,114 @@ +import { Meta } from "@storybook/addon-docs"; + + + +# Async Actions In Forms + +These directives should be used when building forms with buttons that trigger long running tasks in the background, +eg. Submit or Delete buttons. For buttons that are not associated with a form see [Standalone Async Actions](?path=/story/component-library-async-actions-standalone-documentation--page). + +There are two separately supported use-cases: Submit buttons and standalone form buttons (eg. Delete buttons). + +## Usage: Submit buttons + +Adding async actions to submit buttons requires the following 3 steps + +### 1. Add a handler to your `Component` + +A handler is a function that returns a promise or an observable. Functions that return `void` are also supported which is +useful for aborting an action. + +**NOTE:** + +- Defining the handlers as arrow-functions assigned to variables is mandatory if the handler needs access to the parent + component using the variable `this`. +- `formGroup.invalid` will always return `true` after the first `await` operation, event if the form is not actually + invalid. This is due to the form getting disabled by the `bitSubmit` directive while waiting for the async action to complete. + +```ts +@Component({...}) +class Component { + formGroup = this.formBuilder.group({...}); + + // submit can also return Observable instead of Promise + submit = async () => { + if (this.formGroup.invalid) { + return; + } + + await this.cryptoService.encrypt(/* ... */); + + // `formGroup.invalid` will always return `true` here + + await this.apiService.post(/* ... */); + } +} +``` + +### 2. Add directive to the `form` element + +Add the `bitSubmit` directive and supply the handler defined in step 1. + +**NOTE:** The `directive` is defined using the input syntax: `[input]="handler"`. +This is different from how submit handlers are usually defined with the output syntax `(ngSubmit)="handler()"`. + +```html +... +``` + +### 3. Add directive to the `type="submit"` button + +Add both `bitButton` and `bitFormButton` directives to the button. + +```html + +``` + +## Usage: Standalone form buttons + +Adding async actions to standalone form buttons requires the following 3 steps. + +### 1. Add a handler to your `Component` + +A handler is a function that returns a promise or an observable. Functions that return `void` are also supported which is +useful for aborting an action. + +**NOTE:** Defining the handlers as arrow-functions assigned to variables is mandatory if the handler needs access to the parent +component using the variable `this`. + +```ts +@Component({...}) +class Component { + formGroup = this.formBuilder.group({...}); + + submit = async () => { + // not relevant for this example + } + + // action can also return Observable instead of Promise + handler = async () => { + if (/* perform guard check */) { + return; + } + + await this.apiService.post(/* ... */); + }; +} +``` + +### 2. Add directive to the `form` element + +The `bitSubmit` directive is required beacuse of its coordinating role. + +```html +
...
+``` + +### 3. Add directives to the `button` element + +Add `bitButton`, `bitFormButton`, `bitAction` directives to the button. Make sure to supply a handler. + +```html + + +``` diff --git a/libs/components/src/async-actions/in-forms.stories.ts b/libs/components/src/async-actions/in-forms.stories.ts new file mode 100644 index 00000000000..ce0528cc04f --- /dev/null +++ b/libs/components/src/async-actions/in-forms.stories.ts @@ -0,0 +1,156 @@ +import { Component, Input } from "@angular/core"; +import { FormsModule, ReactiveFormsModule, Validators, FormBuilder } from "@angular/forms"; +import { action } from "@storybook/addon-actions"; +import { Meta, moduleMetadata, Story } from "@storybook/angular"; +import { delay, of } from "rxjs"; + +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; +import { I18nService } from "@bitwarden/common/src/abstractions/i18n.service"; + +import { ButtonModule } from "../button"; +import { FormFieldModule } from "../form-field"; +import { IconButtonModule } from "../icon-button"; +import { InputModule } from "../input/input.module"; +import { I18nMockService } from "../utils/i18n-mock.service"; + +import { BitActionDirective } from "./bit-action.directive"; +import { BitSubmitDirective } from "./bit-submit.directive"; +import { BitFormButtonDirective } from "./form-button.directive"; + +const template = ` +
+ + Name + + + + + Email + + + + + + + +
`; + +@Component({ + selector: "app-promise-example", + template, +}) +class PromiseExampleComponent { + formObj = this.formBuilder.group({ + name: ["", [Validators.required]], + email: ["", [Validators.required, Validators.email]], + }); + + @Input() disableFormOnLoading: boolean; + + constructor(private formBuilder: FormBuilder) {} + + submit = async () => { + this.formObj.markAllAsTouched(); + + if (!this.formObj.valid) { + return; + } + + await new Promise((resolve, reject) => { + setTimeout(resolve, 2000); + }); + }; + + delete = async () => { + await new Promise((resolve, reject) => { + setTimeout(resolve, 2000); + }); + }; +} + +@Component({ + selector: "app-observable-example", + template, +}) +class ObservableExampleComponent { + formObj = this.formBuilder.group({ + name: ["", [Validators.required]], + email: ["", [Validators.required, Validators.email]], + }); + + @Input() disableFormOnLoading: boolean; + + constructor(private formBuilder: FormBuilder) {} + + submit = () => { + this.formObj.markAllAsTouched(); + + if (!this.formObj.valid) { + return undefined; + } + + return of("fake observable").pipe(delay(2000)); + }; + + delete = () => { + return of("fake observable").pipe(delay(2000)); + }; +} + +export default { + title: "Component Library/Async Actions/In Forms", + decorators: [ + moduleMetadata({ + declarations: [ + BitSubmitDirective, + BitFormButtonDirective, + PromiseExampleComponent, + ObservableExampleComponent, + BitActionDirective, + ], + imports: [ + FormsModule, + ReactiveFormsModule, + FormFieldModule, + InputModule, + ButtonModule, + IconButtonModule, + ], + providers: [ + { + provide: I18nService, + useFactory: () => { + return new I18nMockService({ + required: "required", + inputRequired: "Input is required.", + inputEmail: "Input is not an email-address.", + }); + }, + }, + { + provide: ValidationService, + useValue: { + showError: action("ValidationService.showError"), + } as Partial, + }, + ], + }), + ], + args: { + disableFormOnLoading: false, + }, +} as Meta; + +const PromiseTemplate: Story = (args: PromiseExampleComponent) => ({ + props: args, + template: ``, +}); + +export const UsingPromise = PromiseTemplate.bind({}); + +const ObservableTemplate: Story = (args: PromiseExampleComponent) => ({ + props: args, + template: ``, +}); + +export const UsingObservable = ObservableTemplate.bind({}); diff --git a/libs/components/src/async-actions/index.ts b/libs/components/src/async-actions/index.ts new file mode 100644 index 00000000000..6515ffc47ca --- /dev/null +++ b/libs/components/src/async-actions/index.ts @@ -0,0 +1,3 @@ +export * from "./async-actions.module"; +export * from "./bit-action.directive"; +export * from "./form-button.directive"; diff --git a/libs/components/src/async-actions/overview.stories.mdx b/libs/components/src/async-actions/overview.stories.mdx new file mode 100644 index 00000000000..9ec792aefdd --- /dev/null +++ b/libs/components/src/async-actions/overview.stories.mdx @@ -0,0 +1,26 @@ +import { Meta } from "@storybook/addon-docs"; + + + +# Async Actions + +The directives in this module makes it easier for developers to reflect the progress of async actions in the UI when using +buttons, while also providing robust and standardized error handling. + +These buttons can either be standalone (such as Refresh buttons), submit buttons for forms or as standalone buttons +that are part of a form (such as Delete buttons). + +These directives are meant to replace the older `appApiAction` directive, providing the option to use `observables` and reduce +clutter inside our view `components`. + +## When to use? + +When building a button that triggers a long running task in the background eg. server API calls. + +## Why? + +To better visualize that the application is processing their request. + +## What does it do? + +It disables buttons and show a spinning animation. diff --git a/libs/components/src/async-actions/standalone.stories.mdx b/libs/components/src/async-actions/standalone.stories.mdx new file mode 100644 index 00000000000..7ed5c46ffde --- /dev/null +++ b/libs/components/src/async-actions/standalone.stories.mdx @@ -0,0 +1,63 @@ +import { Meta } from "@storybook/addon-docs"; + + + +# Standalone Async Actions + +These directives should be used when building a standalone button that triggers a long running task in the background, +eg. Refresh buttons. For non-submit buttons that are associated with forms see [Async Actions In Forms](?path=/story/component-library-async-actions-in-forms-documentation--page). + +## Usage + +Adding async actions to standalone buttons requires the following 2 steps + +### 1. Add a handler to your `Component` + +A handler is a function that returns a promise or an observable. Functions that return `void` are also supported which is +useful for aborting an action. + +**NOTE:** Defining the handlers as arrow-functions assigned to variables is mandatory if the handler needs access to the parent +component using the variable `this`. + +#### Example using promises + +```ts +@Component({...}) +class PromiseExampleComponent { + handler = async () => { + if (/* perform guard check */) { + return; + } + + await this.apiService.post(/* ... */); + }; +} +``` + +#### Example using observables + +```ts +@Component({...}) +class Component { + handler = () => { + if (/* perform guard check */) { + return; + } + + return this.apiService.post$(/* ... */); + }; +} +``` + +### 2. Add directive to the DOM element + +Add the `bitAction` directive and supply the handler defined in step 1. + +**NOTE:** The `directive` is defined using the input syntax: `[input]="handler"`. +This is different from how click handlers are usually defined with the output syntax `(click)="handler()"`. + +```html + + +`; +``` diff --git a/libs/components/src/async-actions/standalone.stories.ts b/libs/components/src/async-actions/standalone.stories.ts new file mode 100644 index 00000000000..cd0c6239b06 --- /dev/null +++ b/libs/components/src/async-actions/standalone.stories.ts @@ -0,0 +1,97 @@ +import { Component } from "@angular/core"; +import { action } from "@storybook/addon-actions"; +import { Meta, moduleMetadata, Story } from "@storybook/angular"; +import { delay, of } from "rxjs"; + +import { ValidationService } from "@bitwarden/common/abstractions/validation.service"; + +import { ButtonModule } from "../button"; +import { IconButtonModule } from "../icon-button"; + +import { BitActionDirective } from "./bit-action.directive"; + +const template = ` + + `; + +@Component({ + template, + selector: "app-promise-example", +}) +class PromiseExampleComponent { + action = async () => { + await new Promise((resolve, reject) => { + setTimeout(resolve, 2000); + }); + }; +} + +@Component({ + template, + selector: "app-observable-example", +}) +class ObservableExampleComponent { + action = () => { + return of("fake observable").pipe(delay(2000)); + }; +} + +@Component({ + template, + selector: "app-rejected-promise-example", +}) +class RejectedPromiseExampleComponent { + action = async () => { + await new Promise((resolve, reject) => { + setTimeout(() => reject(new Error("Simulated error")), 2000); + }); + }; +} + +export default { + title: "Component Library/Async Actions/Standalone", + decorators: [ + moduleMetadata({ + declarations: [ + BitActionDirective, + PromiseExampleComponent, + ObservableExampleComponent, + RejectedPromiseExampleComponent, + ], + imports: [ButtonModule, IconButtonModule], + providers: [ + { + provide: ValidationService, + useValue: { + showError: action("ValidationService.showError"), + } as Partial, + }, + ], + }), + ], +} as Meta; + +const PromiseTemplate: Story = (args: PromiseExampleComponent) => ({ + props: args, + template: ``, +}); + +export const UsingPromise = PromiseTemplate.bind({}); + +const ObservableTemplate: Story = ( + args: ObservableExampleComponent +) => ({ + template: ``, +}); + +export const UsingObservable = ObservableTemplate.bind({}); + +const RejectedPromiseTemplate: Story = ( + args: ObservableExampleComponent +) => ({ + template: ``, +}); + +export const RejectedPromise = RejectedPromiseTemplate.bind({}); diff --git a/libs/components/src/button/button.component.html b/libs/components/src/button/button.component.html index 4875c159e92..ee4d150dfcc 100644 --- a/libs/components/src/button/button.component.html +++ b/libs/components/src/button/button.component.html @@ -2,7 +2,10 @@ - - + + diff --git a/libs/components/src/button/button.component.ts b/libs/components/src/button/button.component.ts index eeba83b8156..9a27bfdd9ed 100644 --- a/libs/components/src/button/button.component.ts +++ b/libs/components/src/button/button.component.ts @@ -1,5 +1,7 @@ import { Input, HostBinding, Component } from "@angular/core"; +import { ButtonLikeAbstraction } from "../shared/button-like.abstraction"; + export type ButtonTypes = "primary" | "secondary" | "danger"; const buttonStyles: Record = { @@ -41,8 +43,9 @@ const buttonStyles: Record = { @Component({ selector: "button[bitButton], a[bitButton]", templateUrl: "button.component.html", + providers: [{ provide: ButtonLikeAbstraction, useExisting: ButtonComponent }], }) -export class ButtonComponent { +export class ButtonComponent implements ButtonLikeAbstraction { @HostBinding("class") get classList() { return [ "tw-font-semibold", diff --git a/libs/components/src/icon-button/icon-button.component.html b/libs/components/src/icon-button/icon-button.component.html new file mode 100644 index 00000000000..6eeaaaffaf0 --- /dev/null +++ b/libs/components/src/icon-button/icon-button.component.html @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/libs/components/src/icon-button/icon-button.component.ts b/libs/components/src/icon-button/icon-button.component.ts index 6696935257f..ef9474bf98d 100644 --- a/libs/components/src/icon-button/icon-button.component.ts +++ b/libs/components/src/icon-button/icon-button.component.ts @@ -1,8 +1,10 @@ import { Component, HostBinding, Input } from "@angular/core"; -export type IconButtonStyle = "contrast" | "main" | "muted" | "primary" | "secondary" | "danger"; +import { ButtonLikeAbstraction } from "../shared/button-like.abstraction"; -const styles: Record = { +export type IconButtonType = "contrast" | "main" | "muted" | "primary" | "secondary" | "danger"; + +const styles: Record = { contrast: [ "tw-bg-transparent", "!tw-text-contrast", @@ -10,6 +12,7 @@ const styles: Record = { "hover:tw-bg-transparent-hover", "hover:tw-border-text-contrast", "focus-visible:before:tw-ring-text-contrast", + "disabled:hover:tw-border-transparent", "disabled:hover:tw-bg-transparent", ], main: [ @@ -19,6 +22,7 @@ const styles: Record = { "hover:tw-bg-transparent-hover", "hover:tw-border-text-main", "focus-visible:before:tw-ring-text-main", + "disabled:hover:tw-border-transparent", "disabled:hover:tw-bg-transparent", ], muted: [ @@ -28,6 +32,7 @@ const styles: Record = { "hover:tw-bg-transparent-hover", "hover:tw-border-primary-700", "focus-visible:before:tw-ring-primary-700", + "disabled:hover:tw-border-transparent", "disabled:hover:tw-bg-transparent", ], primary: [ @@ -37,6 +42,7 @@ const styles: Record = { "hover:tw-bg-primary-700", "hover:tw-border-primary-700", "focus-visible:before:tw-ring-primary-700", + "disabled:hover:tw-border-primary-500", "disabled:hover:tw-bg-primary-500", ], secondary: [ @@ -46,6 +52,7 @@ const styles: Record = { "hover:!tw-text-contrast", "hover:tw-bg-text-muted", "focus-visible:before:tw-ring-primary-700", + "disabled:hover:tw-border-text-muted", "disabled:hover:tw-bg-transparent", "disabled:hover:!tw-text-muted", "disabled:hover:tw-border-text-muted", @@ -57,6 +64,7 @@ const styles: Record = { "hover:!tw-text-contrast", "hover:tw-bg-danger-500", "focus-visible:before:tw-ring-primary-700", + "disabled:hover:tw-border-danger-500", "disabled:hover:tw-bg-transparent", "disabled:hover:!tw-text-danger", "disabled:hover:tw-border-danger-500", @@ -72,12 +80,13 @@ const sizes: Record = { @Component({ selector: "button[bitIconButton]", - template: ``, + templateUrl: "icon-button.component.html", + providers: [{ provide: ButtonLikeAbstraction, useExisting: BitIconButtonComponent }], }) -export class BitIconButtonComponent { +export class BitIconButtonComponent implements ButtonLikeAbstraction { @Input("bitIconButton") icon: string; - @Input() buttonType: IconButtonStyle = "main"; + @Input() buttonType: IconButtonType = "main"; @Input() size: IconButtonSize = "default"; @@ -90,7 +99,6 @@ export class BitIconButtonComponent { "tw-transition", "hover:tw-no-underline", "disabled:tw-opacity-60", - "disabled:hover:tw-border-transparent", "focus:tw-outline-none", // Workaround for box-shadow with transparent offset issue: @@ -117,4 +125,13 @@ export class BitIconButtonComponent { get iconClass() { return [this.icon, "!tw-m-0"]; } + + @HostBinding("attr.disabled") + get disabledAttr() { + const disabled = this.disabled != null && this.disabled !== false; + return disabled || this.loading ? true : null; + } + + @Input() loading = false; + @Input() disabled = false; } diff --git a/libs/components/src/icon-button/icon-button.stories.ts b/libs/components/src/icon-button/icon-button.stories.ts index 7be45d3f719..69350945d96 100644 --- a/libs/components/src/icon-button/icon-button.stories.ts +++ b/libs/components/src/icon-button/icon-button.stories.ts @@ -1,59 +1,91 @@ import { Meta, Story } from "@storybook/angular"; -import { BitIconButtonComponent } from "./icon-button.component"; +import { BitIconButtonComponent, IconButtonType } from "./icon-button.component"; + +const buttonTypes: IconButtonType[] = [ + "contrast", + "main", + "muted", + "primary", + "secondary", + "danger", +]; export default { title: "Component Library/Icon Button", component: BitIconButtonComponent, args: { bitIconButton: "bwi-plus", - buttonType: "primary", size: "default", disabled: false, }, + argTypes: { + buttonTypes: { table: { disable: true } }, + }, } as Meta; const Template: Story = (args: BitIconButtonComponent) => ({ - props: args, + props: { ...args, buttonTypes }, template: ` -
- -
+ + + + + + + + + + + + + + + + + + + + + + + + +
{{buttonType}}
Default + +
Disabled + +
Loading + +
`, }); -export const Contrast = Template.bind({}); -Contrast.args = { - buttonType: "contrast", +export const Default = Template.bind({}); +Default.args = { + size: "default", }; -export const Main = Template.bind({}); -Main.args = { - buttonType: "main", -}; - -export const Muted = Template.bind({}); -Muted.args = { - buttonType: "muted", -}; - -export const Primary = Template.bind({}); -Primary.args = { - buttonType: "primary", -}; - -export const Secondary = Template.bind({}); -Secondary.args = { - buttonType: "secondary", -}; - -export const Danger = Template.bind({}); -Danger.args = { - buttonType: "danger", +export const Small = Template.bind({}); +Small.args = { + size: "small", }; diff --git a/libs/components/src/index.ts b/libs/components/src/index.ts index 264c655d80f..24095107a30 100644 --- a/libs/components/src/index.ts +++ b/libs/components/src/index.ts @@ -1,3 +1,4 @@ +export * from "./async-actions"; export * from "./badge"; export * from "./banner"; export * from "./button"; diff --git a/libs/components/src/shared/button-like.abstraction.ts b/libs/components/src/shared/button-like.abstraction.ts new file mode 100644 index 00000000000..21c57461d23 --- /dev/null +++ b/libs/components/src/shared/button-like.abstraction.ts @@ -0,0 +1,4 @@ +export abstract class ButtonLikeAbstraction { + loading: boolean; + disabled: boolean; +} diff --git a/libs/components/src/utils/function-to-observable.spec.ts b/libs/components/src/utils/function-to-observable.spec.ts new file mode 100644 index 00000000000..17b05d817f0 --- /dev/null +++ b/libs/components/src/utils/function-to-observable.spec.ts @@ -0,0 +1,103 @@ +import { lastValueFrom, Observable, of, throwError } from "rxjs"; + +import { functionToObservable } from "./function-to-observable"; + +describe("functionToObservable", () => { + it("should execute function when calling", () => { + const func = jest.fn(); + + functionToObservable(func); + + expect(func).toHaveBeenCalled(); + }); + + it("should not subscribe when calling", () => { + let hasSubscribed = false; + const underlyingObservable = new Observable(() => { + hasSubscribed = true; + }); + const funcReturningObservable = () => underlyingObservable; + + functionToObservable(funcReturningObservable); + + expect(hasSubscribed).toBe(false); + }); + + it("should subscribe to underlying when subscribing to outer", () => { + let hasSubscribed = false; + const underlyingObservable = new Observable(() => { + hasSubscribed = true; + }); + const funcReturningObservable = () => underlyingObservable; + const outerObservable = functionToObservable(funcReturningObservable); + + outerObservable.subscribe(); + + expect(hasSubscribed).toBe(true); + }); + + it("should return value when using sync function", async () => { + const value = Symbol(); + const func = () => value; + const observable = functionToObservable(func); + + const result = await lastValueFrom(observable); + + expect(result).toBe(value); + }); + + it("should return value when using async function", async () => { + const value = Symbol(); + const func = () => Promise.resolve(value); + const observable = functionToObservable(func); + + const result = await lastValueFrom(observable); + + expect(result).toBe(value); + }); + + it("should return value when using observable", async () => { + const value = Symbol(); + const func = () => of(value); + const observable = functionToObservable(func); + + const result = await lastValueFrom(observable); + + expect(result).toBe(value); + }); + + it("should throw error when using sync function", async () => { + const error = new Error(); + const func = () => { + throw error; + }; + const observable = functionToObservable(func); + + let thrown: unknown; + observable.subscribe({ error: (err: unknown) => (thrown = err) }); + + expect(thrown).toBe(thrown); + }); + + it("should return value when using async function", async () => { + const error = new Error(); + const func = () => Promise.reject(error); + const observable = functionToObservable(func); + + let thrown: unknown; + observable.subscribe({ error: (err: unknown) => (thrown = err) }); + + expect(thrown).toBe(thrown); + }); + + it("should return value when using observable", async () => { + const error = new Error(); + const func = () => throwError(() => error); + const observable = functionToObservable(func); + + let thrown: unknown; + observable.subscribe({ error: (err: unknown) => (thrown = err) }); + + expect(thrown).toBe(thrown); + }); +}); diff --git a/libs/components/src/utils/function-to-observable.ts b/libs/components/src/utils/function-to-observable.ts new file mode 100644 index 00000000000..ab619ae75cf --- /dev/null +++ b/libs/components/src/utils/function-to-observable.ts @@ -0,0 +1,27 @@ +import { from, Observable, of, throwError } from "rxjs"; + +import { Utils } from "@bitwarden/common/misc/utils"; + +export type FunctionReturningAwaitable = + | (() => unknown) + | (() => Promise) + | (() => Observable); + +export function functionToObservable(func: FunctionReturningAwaitable): Observable { + let awaitable: unknown; + try { + awaitable = func(); + } catch (error) { + return throwError(() => error); + } + + if (Utils.isPromise(awaitable)) { + return from(awaitable); + } + + if (awaitable instanceof Observable) { + return awaitable; + } + + return of(awaitable); +} From f6b2b75ad8696a775c86c90742acf11ba47738aa Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Mon, 10 Oct 2022 17:19:01 +0200 Subject: [PATCH 11/82] Forbid substitute (#3734) --- .eslintrc.json | 5 ++++- .../src/services/localBackedSessionStorage.service.spec.ts | 1 + apps/browser/src/services/state.service.spec.ts | 1 + apps/desktop/src/app/vault/generator.component.spec.ts | 1 + apps/web/.eslintrc.json | 3 ++- .../trial-initiation/trial-initiation.component.spec.ts | 1 + libs/common/spec/importers/bitwardenJsonImporter.spec.ts | 1 + .../importers/bitwardenPasswordProtectedImporter.spec.ts | 1 + .../spec/misc/logInStrategies/apiLogIn.strategy.spec.ts | 1 + libs/common/spec/misc/logInStrategies/logIn.strategy.spec.ts | 1 + .../spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts | 1 + .../spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts | 1 + libs/common/spec/models/domain/cipher.spec.ts | 1 + libs/common/spec/models/domain/encString.spec.ts | 1 + libs/common/spec/models/domain/login.spec.ts | 1 + libs/common/spec/models/domain/send.spec.ts | 1 + libs/common/spec/models/domain/sendAccess.spec.ts | 1 + libs/common/spec/services/cipher.service.spec.ts | 1 + libs/common/spec/services/export.service.spec.ts | 1 + libs/common/spec/services/folder.service.spec.ts | 1 + libs/common/spec/services/import.service.spec.ts | 1 + libs/common/spec/services/settings.service.spec.ts | 1 + libs/common/spec/services/stateMigration.service.spec.ts | 1 + libs/common/spec/utils.ts | 1 + .../spec/web/services/webCryptoFunction.service.spec.ts | 1 + 25 files changed, 29 insertions(+), 2 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 583c8e3697b..14b9a888444 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -101,7 +101,10 @@ ] } ], - "no-restricted-imports": ["error", { "patterns": ["src/**/*"] }] + "no-restricted-imports": [ + "error", + { "patterns": ["src/**/*"], "paths": ["@fluffy-spoon/substitute"] } + ] }, "overrides": [ { diff --git a/apps/browser/src/services/localBackedSessionStorage.service.spec.ts b/apps/browser/src/services/localBackedSessionStorage.service.spec.ts index f7101ddae2e..1d105ce3e4c 100644 --- a/apps/browser/src/services/localBackedSessionStorage.service.spec.ts +++ b/apps/browser/src/services/localBackedSessionStorage.service.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { Utils } from "@bitwarden/common/misc/utils"; diff --git a/apps/browser/src/services/state.service.spec.ts b/apps/browser/src/services/state.service.spec.ts index f3b6c74a5e3..f9aa6fc6433 100644 --- a/apps/browser/src/services/state.service.spec.ts +++ b/apps/browser/src/services/state.service.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { LogService } from "@bitwarden/common/abstractions/log.service"; diff --git a/apps/desktop/src/app/vault/generator.component.spec.ts b/apps/desktop/src/app/vault/generator.component.spec.ts index 6c906e9b367..59638bb7584 100644 --- a/apps/desktop/src/app/vault/generator.component.spec.ts +++ b/apps/desktop/src/app/vault/generator.component.spec.ts @@ -1,6 +1,7 @@ import { NO_ERRORS_SCHEMA } from "@angular/core"; import { ComponentFixture, TestBed } from "@angular/core/testing"; import { ActivatedRoute } from "@angular/router"; +// eslint-disable-next-line no-restricted-imports import { Substitute } from "@fluffy-spoon/substitute"; import { mock, MockProxy } from "jest-mock-extended"; diff --git a/apps/web/.eslintrc.json b/apps/web/.eslintrc.json index 6f171a4bed1..6c519d70ae1 100644 --- a/apps/web/.eslintrc.json +++ b/apps/web/.eslintrc.json @@ -12,7 +12,8 @@ "**/app/shared/*", "@bitwarden/web-vault/*", "src/**/*" - ] + ], + "paths": ["@fluffy-spoon/substitute"] } ] } diff --git a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts index f20b407e6bf..fd3552ebafd 100644 --- a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts +++ b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts @@ -5,6 +5,7 @@ import { ComponentFixture, fakeAsync, TestBed, tick } from "@angular/core/testin import { FormBuilder, UntypedFormBuilder } from "@angular/forms"; import { ActivatedRoute, Router } from "@angular/router"; import { RouterTestingModule } from "@angular/router/testing"; +// eslint-disable-next-line no-restricted-imports import { Substitute } from "@fluffy-spoon/substitute"; import { BehaviorSubject } from "rxjs"; diff --git a/libs/common/spec/importers/bitwardenJsonImporter.spec.ts b/libs/common/spec/importers/bitwardenJsonImporter.spec.ts index 46cf44207a7..2184162ee13 100644 --- a/libs/common/spec/importers/bitwardenJsonImporter.spec.ts +++ b/libs/common/spec/importers/bitwardenJsonImporter.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; diff --git a/libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts b/libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts index 67e03d030c5..98c2edef420 100644 --- a/libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts +++ b/libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Substitute, Arg, SubstituteOf } from "@fluffy-spoon/substitute"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; diff --git a/libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts b/libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts index 81672fe39e3..496ecf9cdd5 100644 --- a/libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts +++ b/libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; diff --git a/libs/common/spec/misc/logInStrategies/logIn.strategy.spec.ts b/libs/common/spec/misc/logInStrategies/logIn.strategy.spec.ts index 92eb27de079..a2774960867 100644 --- a/libs/common/spec/misc/logInStrategies/logIn.strategy.spec.ts +++ b/libs/common/spec/misc/logInStrategies/logIn.strategy.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; diff --git a/libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts b/libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts index f244f5f5bdf..bdae82cd53e 100644 --- a/libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts +++ b/libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; diff --git a/libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts b/libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts index 1526fca548b..68e0eb2c547 100644 --- a/libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts +++ b/libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; diff --git a/libs/common/spec/models/domain/cipher.spec.ts b/libs/common/spec/models/domain/cipher.spec.ts index 47d0d4f547f..763e57bb4e7 100644 --- a/libs/common/spec/models/domain/cipher.spec.ts +++ b/libs/common/spec/models/domain/cipher.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Substitute, Arg } from "@fluffy-spoon/substitute"; import { Jsonify } from "type-fest"; diff --git a/libs/common/spec/models/domain/encString.spec.ts b/libs/common/spec/models/domain/encString.spec.ts index a35a02ecc2c..a2308080018 100644 --- a/libs/common/spec/models/domain/encString.spec.ts +++ b/libs/common/spec/models/domain/encString.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Substitute, Arg } from "@fluffy-spoon/substitute"; import { mock, MockProxy } from "jest-mock-extended"; diff --git a/libs/common/spec/models/domain/login.spec.ts b/libs/common/spec/models/domain/login.spec.ts index 9234051f417..d22373ec7fc 100644 --- a/libs/common/spec/models/domain/login.spec.ts +++ b/libs/common/spec/models/domain/login.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Substitute, Arg } from "@fluffy-spoon/substitute"; import { UriMatchType } from "@bitwarden/common/enums/uriMatchType"; diff --git a/libs/common/spec/models/domain/send.spec.ts b/libs/common/spec/models/domain/send.spec.ts index 903043f86c8..7c0795588c8 100644 --- a/libs/common/spec/models/domain/send.spec.ts +++ b/libs/common/spec/models/domain/send.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Substitute, Arg, SubstituteOf } from "@fluffy-spoon/substitute"; import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; diff --git a/libs/common/spec/models/domain/sendAccess.spec.ts b/libs/common/spec/models/domain/sendAccess.spec.ts index 32b01d13fd4..98f67a68c8a 100644 --- a/libs/common/spec/models/domain/sendAccess.spec.ts +++ b/libs/common/spec/models/domain/sendAccess.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Substitute, Arg } from "@fluffy-spoon/substitute"; import { SendType } from "@bitwarden/common/enums/sendType"; diff --git a/libs/common/spec/services/cipher.service.spec.ts b/libs/common/spec/services/cipher.service.spec.ts index 1a654bed6b2..ea7b082e149 100644 --- a/libs/common/spec/services/cipher.service.spec.ts +++ b/libs/common/spec/services/cipher.service.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; diff --git a/libs/common/spec/services/export.service.spec.ts b/libs/common/spec/services/export.service.spec.ts index bad26ab351e..4bc44d21e08 100644 --- a/libs/common/spec/services/export.service.spec.ts +++ b/libs/common/spec/services/export.service.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { BehaviorSubject } from "rxjs"; diff --git a/libs/common/spec/services/folder.service.spec.ts b/libs/common/spec/services/folder.service.spec.ts index 211c1f788e3..0f78a574837 100644 --- a/libs/common/spec/services/folder.service.spec.ts +++ b/libs/common/spec/services/folder.service.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { BehaviorSubject, firstValueFrom } from "rxjs"; diff --git a/libs/common/spec/services/import.service.spec.ts b/libs/common/spec/services/import.service.spec.ts index 2b47518bc5d..f2ae48a09ee 100644 --- a/libs/common/spec/services/import.service.spec.ts +++ b/libs/common/spec/services/import.service.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; diff --git a/libs/common/spec/services/settings.service.spec.ts b/libs/common/spec/services/settings.service.spec.ts index f81e4d341ca..a52ef59a60b 100644 --- a/libs/common/spec/services/settings.service.spec.ts +++ b/libs/common/spec/services/settings.service.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { BehaviorSubject, firstValueFrom } from "rxjs"; diff --git a/libs/common/spec/services/stateMigration.service.spec.ts b/libs/common/spec/services/stateMigration.service.spec.ts index b0188abacce..5512e49753a 100644 --- a/libs/common/spec/services/stateMigration.service.spec.ts +++ b/libs/common/spec/services/stateMigration.service.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.service"; diff --git a/libs/common/spec/utils.ts b/libs/common/spec/utils.ts index d3729d14e50..2c637f9adff 100644 --- a/libs/common/spec/utils.ts +++ b/libs/common/spec/utils.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Substitute, Arg } from "@fluffy-spoon/substitute"; import { EncString } from "@bitwarden/common/models/domain/encString"; diff --git a/libs/common/spec/web/services/webCryptoFunction.service.spec.ts b/libs/common/spec/web/services/webCryptoFunction.service.spec.ts index ce131472d4b..08deda8827a 100644 --- a/libs/common/spec/web/services/webCryptoFunction.service.spec.ts +++ b/libs/common/spec/web/services/webCryptoFunction.service.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Substitute } from "@fluffy-spoon/substitute"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; From fe1a895e6bd0d4847a039547deee0cf00497a286 Mon Sep 17 00:00:00 2001 From: Robyn MacCallum Date: Mon, 10 Oct 2022 13:07:12 -0400 Subject: [PATCH 12/82] [SG-720] Trim c null characters getting padded at end of messages (#3724) * Trim everything at the end of decrypted payload before parsing * Clarify comment * Use char code check for nulls * Extract trim code to function * make char codes constants --- .../services/nativeMessageHandler.service.ts | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/apps/desktop/src/services/nativeMessageHandler.service.ts b/apps/desktop/src/services/nativeMessageHandler.service.ts index 916bd86bc89..5787e407343 100644 --- a/apps/desktop/src/services/nativeMessageHandler.service.ts +++ b/apps/desktop/src/services/nativeMessageHandler.service.ts @@ -182,12 +182,25 @@ export class NativeMessageHandlerService { this.ddgSharedSecret = SymmetricCryptoKey.fromJSON({ keyB64: storedKey }); } - return JSON.parse( - await this.cryptoService.decryptToUtf8( + try { + let decryptedResult = await this.cryptoService.decryptToUtf8( message.encryptedCommand as EncString, this.ddgSharedSecret - ) - ); + ); + + decryptedResult = this.trimNullCharsFromMessage(decryptedResult); + + return JSON.parse(decryptedResult); + } catch { + this.sendResponse({ + messageId: message.messageId, + version: NativeMessagingVersion.Latest, + payload: { + error: "cannot-decrypt", + }, + }); + return; + } } private async sendEncryptedResponse( @@ -218,4 +231,23 @@ export class NativeMessageHandlerService { private sendResponse(response: EncryptedMessageResponse | UnencryptedMessageResponse) { ipcRenderer.send("nativeMessagingReply", response); } + + // Trim all null bytes padded at the end of messages. This happens with C encryption libraries. + private trimNullCharsFromMessage(message: string): string { + const charNull = 0; + const charRightCurlyBrace = 125; + const charRightBracket = 93; + + for (let i = message.length - 1; i >= 0; i--) { + if (message.charCodeAt(i) === charNull) { + message = message.substring(0, message.length - 1); + } else if ( + message.charCodeAt(i) === charRightCurlyBrace || + message.charCodeAt(i) === charRightBracket + ) { + break; + } + } + return message; + } } From 333bc279726ace4586c4bb6386275bd65f24347e Mon Sep 17 00:00:00 2001 From: Opeyemi <54288773+Eebru-gzy@users.noreply.github.com> Date: Mon, 10 Oct 2022 20:35:44 +0100 Subject: [PATCH 13/82] Update download artifact action (#3735) --- .github/workflows/release-browser.yml | 4 ++-- .github/workflows/release-cli.yml | 16 ++++++++-------- .github/workflows/release-desktop.yml | 12 ++++++------ .github/workflows/release-web.yml | 8 ++++---- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/release-browser.yml b/.github/workflows/release-browser.yml index 7279d3b08b4..514dafa65f8 100644 --- a/.github/workflows/release-browser.yml +++ b/.github/workflows/release-browser.yml @@ -102,7 +102,7 @@ jobs: - name: Download latest Release build artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-browser.yml workflow_conclusion: success @@ -115,7 +115,7 @@ jobs: - name: Download latest master build artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-browser.yml workflow_conclusion: success diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index c3ddbb98144..cad548f2b0d 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -76,7 +76,7 @@ jobs: - name: Download all Release artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-cli.yml path: apps/cli @@ -85,7 +85,7 @@ jobs: - name: Download all artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-cli.yml path: apps/cli @@ -167,7 +167,7 @@ jobs: - name: Download artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-cli.yml path: apps/cli @@ -177,7 +177,7 @@ jobs: - name: Download artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-cli.yml path: apps/cli @@ -232,7 +232,7 @@ jobs: - name: Download artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-cli.yml path: apps/cli/dist @@ -242,7 +242,7 @@ jobs: - name: Download artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-cli.yml path: apps/cli/dist @@ -289,7 +289,7 @@ jobs: - name: Download artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-cli.yml path: apps/cli/build @@ -299,7 +299,7 @@ jobs: - name: Download artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-cli.yml path: apps/cli/build diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml index f4e28c71460..85e9122b335 100644 --- a/.github/workflows/release-desktop.yml +++ b/.github/workflows/release-desktop.yml @@ -113,7 +113,7 @@ jobs: - name: Download all artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-desktop.yml workflow_conclusion: success @@ -122,7 +122,7 @@ jobs: - name: Download all artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-desktop.yml workflow_conclusion: success @@ -259,7 +259,7 @@ jobs: - name: Download Snap artifact if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-desktop.yml workflow_conclusion: success @@ -269,7 +269,7 @@ jobs: - name: Download Snap artifact if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-desktop.yml workflow_conclusion: success @@ -332,7 +332,7 @@ jobs: - name: Download choco artifact if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-desktop.yml workflow_conclusion: success @@ -342,7 +342,7 @@ jobs: - name: Download choco artifact if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@23433be15ed6fd046ce12b6889c5184a8d9c8783 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-desktop.yml workflow_conclusion: success diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml index 23f99c8f9b3..e52f6d5aa3a 100644 --- a/.github/workflows/release-web.yml +++ b/.github/workflows/release-web.yml @@ -154,7 +154,7 @@ jobs: - name: Download latest cloud asset if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-web.yml path: apps/web @@ -164,7 +164,7 @@ jobs: - name: Download latest cloud asset if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-web.yml path: apps/web @@ -240,7 +240,7 @@ jobs: - name: Download latest build artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-web.yml path: apps/web/artifacts @@ -251,7 +251,7 @@ jobs: - name: Download latest build artifacts if: ${{ github.event.inputs.release_type == 'Dry Run' }} - uses: bitwarden/gh-actions/download-artifacts@c1fa8e09871a860862d6bbe36184b06d2c7e35a8 + uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-web.yml path: apps/web/artifacts From be040080dbdd172b0b938015672619c2949408dc Mon Sep 17 00:00:00 2001 From: Thomas Rittson <31796059+eliykat@users.noreply.github.com> Date: Tue, 11 Oct 2022 06:57:45 +1000 Subject: [PATCH 14/82] Mark modalService.openViewRef as deprecated (#3697) --- libs/angular/src/services/modal.service.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libs/angular/src/services/modal.service.ts b/libs/angular/src/services/modal.service.ts index 348e3f88c3d..18afcbbea84 100644 --- a/libs/angular/src/services/modal.service.ts +++ b/libs/angular/src/services/modal.service.ts @@ -49,6 +49,11 @@ export class ModalService { return this.modalList[this.modalCount - 1]; } + /** + * @deprecated Use `dialogService.open` (in web) or `modalService.open` (in desktop/browser) instead. + * If replacing an existing call to this method, also remove any `@ViewChild` and `` associated with the + * existing usage. + */ async openViewRef( componentType: Type, viewContainerRef: ViewContainerRef, From ea12ee2b104b646fd3e39290a317792ca19702b5 Mon Sep 17 00:00:00 2001 From: Andreas Coroiu Date: Tue, 11 Oct 2022 10:50:46 +0200 Subject: [PATCH 15/82] [EC-558] chore: cleanup unused code (#3740) --- .../src/async-actions/bit-submit.directive.ts | 1 - .../src/async-actions/in-forms.stories.ts | 15 ++++----------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/libs/components/src/async-actions/bit-submit.directive.ts b/libs/components/src/async-actions/bit-submit.directive.ts index 334696576b5..1fee5283bda 100644 --- a/libs/components/src/async-actions/bit-submit.directive.ts +++ b/libs/components/src/async-actions/bit-submit.directive.ts @@ -18,7 +18,6 @@ export class BitSubmitDirective implements OnInit, OnDestroy { private _disabled$ = new BehaviorSubject(false); @Input("bitSubmit") protected handler: FunctionReturningAwaitable; - @Input("disableFormOnLoading") protected disableFormOnLoading = false; readonly loading$ = this._loading$.asObservable(); readonly disabled$ = this._disabled$.asObservable(); diff --git a/libs/components/src/async-actions/in-forms.stories.ts b/libs/components/src/async-actions/in-forms.stories.ts index ce0528cc04f..b492032df12 100644 --- a/libs/components/src/async-actions/in-forms.stories.ts +++ b/libs/components/src/async-actions/in-forms.stories.ts @@ -1,4 +1,4 @@ -import { Component, Input } from "@angular/core"; +import { Component } from "@angular/core"; import { FormsModule, ReactiveFormsModule, Validators, FormBuilder } from "@angular/forms"; import { action } from "@storybook/addon-actions"; import { Meta, moduleMetadata, Story } from "@storybook/angular"; @@ -18,7 +18,7 @@ import { BitSubmitDirective } from "./bit-submit.directive"; import { BitFormButtonDirective } from "./form-button.directive"; const template = ` -
+ Name @@ -45,8 +45,6 @@ class PromiseExampleComponent { email: ["", [Validators.required, Validators.email]], }); - @Input() disableFormOnLoading: boolean; - constructor(private formBuilder: FormBuilder) {} submit = async () => { @@ -78,8 +76,6 @@ class ObservableExampleComponent { email: ["", [Validators.required, Validators.email]], }); - @Input() disableFormOnLoading: boolean; - constructor(private formBuilder: FormBuilder) {} submit = () => { @@ -136,21 +132,18 @@ export default { ], }), ], - args: { - disableFormOnLoading: false, - }, } as Meta; const PromiseTemplate: Story = (args: PromiseExampleComponent) => ({ props: args, - template: ``, + template: ``, }); export const UsingPromise = PromiseTemplate.bind({}); const ObservableTemplate: Story = (args: PromiseExampleComponent) => ({ props: args, - template: ``, + template: ``, }); export const UsingObservable = ObservableTemplate.bind({}); From 3a298bd9899fd3d88cce8c46329f79ca13624478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rui=20Tom=C3=A9?= <108268980+r-tome@users.noreply.github.com> Date: Tue, 11 Oct 2022 13:08:48 +0100 Subject: [PATCH 16/82] [EC-377] Transition Policy service into providing observables (#3259) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added abstractions for PolicyApiService and PolicyService * Added implementations for PolicyApiService and PolicyService * Updated all references to new PolicyApiService and PolicyService * Deleted old PolicyService abstraction and implementation * Fixed CLI import path for policy.service * Fixed main.background.ts policyApiService dependency for policyService * Ran prettier * Updated policy-api.service with the correct imports * [EC-377] Removed methods from StateService that read policies * [EC-377] Updated policy service getAll method to use observable collection * [EC-377] Added first unit tests for policy service * [EC-377] Added more unit tests for Policy Service * [EC-376] Sorted methods order in PolicyApiService * [EC-376] Removed unused clearCache method from PolicyService * [EC-376] Added upsert method to PolicyService * [EC-376] PolicyApiService putPolicy method now upserts data to PolicyService * [EC-377] Removed tests for deleted clearCache method * [EC-377] Added unit test for PolicyService.upsert * [EC-377] Updated references to state service observables * [EC-377] Removed getAll method from PolicyService and refactored components to use observable collection * [EC-377] Updated components to use concatMap instead of async subscribe * [EC-377] Removed getPolicyForOrganization from policyApiService * [EC-377] Updated policyAppliesToUser to return observable collection * [EC-377] Changed policyService.policyAppliesToUser to return observable * [EC-377] Fixed browser settings.component.ts getting vault timeout * Updated people.component.ts to get ResetPassword policy through a subscription * [EC-377] Changed passwordGenerationService.getOptions to return observable * [EC-377] Fixed CLI generate.command.ts getting enforcePasswordGeneratorPoliciesOnOptions * [EC-377] Fixed eslint errors on rxjs * [EC-377] Reverted changes on passwordGeneration.service and vaultTimeout.service * [EC-377] Removed eslint disable on web/vault/add-edit-component * [EC-377] Changed AccountData.policies to TemporaryDataEncryption * [EC-377] Updated import.component to be reactive to policyAppliesToUser$ * [EC-377] Updated importBlockedByPolicy$ * [EC-377] Fixed missing rename * [EC-377] Updated policyService.masterPasswordPolicyOptions to return observable * [EC-377] Fixed vaultTimeout imports from merge * [EC-377] Reverted call to passwordGenerationService.getOptions * [EC-377] Reverted call to enforcePasswordGeneratorPoliciesOnOptions * [EC-377] Removed unneeded ngOnDestroy * Apply suggestions from code review Co-authored-by: Oscar Hinton * [EC-377] Fixed login.component.ts and register.component.ts * [EC-377] Updated PolicyService to update vaultTimeout * [EC-377] Updated PolicyService dependencies * [EC-377] Renamed policyAppliesToUser to policyAppliesToActiveUser * [EC-377] VaultTimeoutSettings service now gets the vault timeout directly instead of using observables * [EC-377] Fixed unit tests by removing unneeded vaultTimeoutSettingsService * [EC-377] Set getDecryptedPolicies and setDecryptedPolicies as deprecated * [EC-377] Set PolicyService.getAll as deprecated and updated to use prototype.hasOwnProperty * [EC-565] Reverted unintended change to vaultTimeoutSettings that was causing a bug to not display the correct vault timeout * [EC-377] Removed unneeded destroy$ from preferences.component.ts * [EC-377] Fixed policy.service.ts import of OrganizationService Co-authored-by: Oscar Hinton Co-authored-by: mimartin12 <77340197+mimartin12@users.noreply.github.com> --- .../src/background/commands.background.ts | 2 +- .../src/background/contextMenus.background.ts | 2 +- .../src/background/notification.background.ts | 4 +- apps/cli/src/commands/export.command.ts | 5 +- .../src/app/accounts/login/login.component.ts | 21 +- .../src/app/accounts/register.component.ts | 21 +- .../trial-initiation.component.spec.ts | 22 +- .../trial-initiation.component.ts | 23 +- apps/web/src/app/core/event.service.ts | 23 +- .../organizations/manage/people.component.ts | 106 +++--- .../manage/reset-password.component.ts | 31 +- .../import-export/org-import.component.ts | 1 - .../emergency-access-takeover.component.ts | 22 +- .../settings/organization-plans.component.ts | 33 +- .../settings/two-factor-setup.component.ts | 26 +- .../tools/import-export/import.component.html | 12 +- .../tools/import-export/import.component.ts | 20 +- apps/web/src/app/vault/add-edit.component.ts | 10 +- .../organization-options.component.ts | 25 +- .../src/components/add-edit.component.ts | 26 +- .../components/change-password.component.ts | 20 +- .../src/components/export.component.ts | 10 +- .../src/components/send/add-edit.component.ts | 31 +- .../src/components/send/send.component.ts | 18 +- .../settings/vault-timeout-input.component.ts | 52 ++- .../update-temp-password.component.ts | 1 - .../services/vault-filter.service.ts | 8 +- .../spec/services/policy.service.spec.ts | 356 ++++++++++++++++++ .../policy/policy-api.service.abstraction.ts | 2 - .../policy/policy.service.abstraction.ts | 16 +- libs/common/src/abstractions/state.service.ts | 12 + .../services/passwordGeneration.service.ts | 7 +- .../src/services/policy/policy-api.service.ts | 22 +- .../src/services/policy/policy.service.ts | 191 ++++++---- libs/node/src/cli/commands/login.command.ts | 5 +- 35 files changed, 915 insertions(+), 271 deletions(-) create mode 100644 libs/common/spec/services/policy.service.spec.ts diff --git a/apps/browser/src/background/commands.background.ts b/apps/browser/src/background/commands.background.ts index 7303d790ec9..2ad3eafe49c 100644 --- a/apps/browser/src/background/commands.background.ts +++ b/apps/browser/src/background/commands.background.ts @@ -64,7 +64,7 @@ export default class CommandsBackground { } private async generatePasswordToClipboard() { - const options = (await this.passwordGenerationService.getOptions())[0]; + const options = (await this.passwordGenerationService.getOptions())?.[0] ?? {}; const password = await this.passwordGenerationService.generatePassword(options); this.platformUtilsService.copyToClipboard(password, { window: window }); this.passwordGenerationService.addHistory(password); diff --git a/apps/browser/src/background/contextMenus.background.ts b/apps/browser/src/background/contextMenus.background.ts index 22d9d56bbff..8af66db1f0c 100644 --- a/apps/browser/src/background/contextMenus.background.ts +++ b/apps/browser/src/background/contextMenus.background.ts @@ -66,7 +66,7 @@ export default class ContextMenusBackground { } private async generatePasswordToClipboard() { - const options = (await this.passwordGenerationService.getOptions())[0]; + const options = (await this.passwordGenerationService.getOptions())?.[0] ?? {}; const password = await this.passwordGenerationService.generatePassword(options); this.platformUtilsService.copyToClipboard(password, { window: window }); this.passwordGenerationService.addHistory(password); diff --git a/apps/browser/src/background/notification.background.ts b/apps/browser/src/background/notification.background.ts index e011f3d6976..5eaec27325f 100644 --- a/apps/browser/src/background/notification.background.ts +++ b/apps/browser/src/background/notification.background.ts @@ -446,6 +446,8 @@ export default class NotificationBackground { } private async allowPersonalOwnership(): Promise { - return !(await this.policyService.policyAppliesToUser(PolicyType.PersonalOwnership)); + return !(await firstValueFrom( + this.policyService.policyAppliesToActiveUser$(PolicyType.PersonalOwnership) + )); } } diff --git a/apps/cli/src/commands/export.command.ts b/apps/cli/src/commands/export.command.ts index 50446d7e027..4b367463096 100644 --- a/apps/cli/src/commands/export.command.ts +++ b/apps/cli/src/commands/export.command.ts @@ -1,5 +1,6 @@ import * as program from "commander"; import * as inquirer from "inquirer"; +import { firstValueFrom } from "rxjs"; import { ExportFormat, ExportService } from "@bitwarden/common/abstractions/export.service"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; @@ -15,7 +16,9 @@ export class ExportCommand { async run(options: program.OptionValues): Promise { if ( options.organizationid == null && - (await this.policyService.policyAppliesToUser(PolicyType.DisablePersonalVaultExport)) + (await firstValueFrom( + this.policyService.policyAppliesToActiveUser$(PolicyType.DisablePersonalVaultExport) + )) ) { return Response.badRequest( "One or more organization policies prevents you from exporting your personal vault." diff --git a/apps/web/src/app/accounts/login/login.component.ts b/apps/web/src/app/accounts/login/login.component.ts index c27ba536360..02bc781ee17 100644 --- a/apps/web/src/app/accounts/login/login.component.ts +++ b/apps/web/src/app/accounts/login/login.component.ts @@ -1,6 +1,7 @@ -import { Component, NgZone } from "@angular/core"; +import { Component, NgZone, OnDestroy, OnInit } from "@angular/core"; import { FormBuilder } from "@angular/forms"; import { ActivatedRoute, Router } from "@angular/router"; +import { Subject, takeUntil } from "rxjs"; import { first } from "rxjs/operators"; import { LoginComponent as BaseLoginComponent } from "@bitwarden/angular/components/login.component"; @@ -29,13 +30,14 @@ import { RouterService, StateService } from "../../core"; selector: "app-login", templateUrl: "login.component.html", }) -// eslint-disable-next-line rxjs-angular/prefer-takeuntil -export class LoginComponent extends BaseLoginComponent { +export class LoginComponent extends BaseLoginComponent implements OnInit, OnDestroy { showResetPasswordAutoEnrollWarning = false; enforcedPasswordPolicyOptions: MasterPasswordPolicyOptions; policies: ListResponse; showPasswordless = false; + private destroy$ = new Subject(); + constructor( authService: AuthService, router: Router, @@ -128,12 +130,21 @@ export class LoginComponent extends BaseLoginComponent { this.showResetPasswordAutoEnrollWarning = resetPasswordPolicy[1] && resetPasswordPolicy[0].autoEnrollEnabled; - this.enforcedPasswordPolicyOptions = - await this.policyService.getMasterPasswordPolicyOptions(policyList); + this.policyService + .masterPasswordPolicyOptions$(policyList) + .pipe(takeUntil(this.destroy$)) + .subscribe((enforcedPasswordPolicyOptions) => { + this.enforcedPasswordPolicyOptions = enforcedPasswordPolicyOptions; + }); } } } + ngOnDestroy(): void { + this.destroy$.next(); + this.destroy$.complete(); + } + async goAfterLogIn() { const masterPassword = this.formGroup.value.masterPassword; diff --git a/apps/web/src/app/accounts/register.component.ts b/apps/web/src/app/accounts/register.component.ts index 4e700ca4d40..2d1eb6d5e53 100644 --- a/apps/web/src/app/accounts/register.component.ts +++ b/apps/web/src/app/accounts/register.component.ts @@ -1,6 +1,7 @@ -import { Component } from "@angular/core"; +import { Component, OnDestroy, OnInit } from "@angular/core"; import { UntypedFormBuilder } from "@angular/forms"; import { ActivatedRoute, Router } from "@angular/router"; +import { Subject, takeUntil } from "rxjs"; import { first } from "rxjs/operators"; import { RegisterComponent as BaseRegisterComponent } from "@bitwarden/angular/components/register.component"; @@ -27,14 +28,14 @@ import { RouterService } from "../core"; selector: "app-register", templateUrl: "register.component.html", }) -// eslint-disable-next-line rxjs-angular/prefer-takeuntil -export class RegisterComponent extends BaseRegisterComponent { +export class RegisterComponent extends BaseRegisterComponent implements OnInit, OnDestroy { email = ""; showCreateOrgMessage = false; layout = ""; enforcedPolicyOptions: MasterPasswordPolicyOptions; private policies: Policy[]; + private destroy$ = new Subject(); constructor( formValidationErrorService: FormValidationErrorsService, @@ -130,11 +131,19 @@ export class RegisterComponent extends BaseRegisterComponent { } if (this.policies != null) { - this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions( - this.policies - ); + this.policyService + .masterPasswordPolicyOptions$(this.policies) + .pipe(takeUntil(this.destroy$)) + .subscribe((enforcedPasswordPolicyOptions) => { + this.enforcedPolicyOptions = enforcedPasswordPolicyOptions; + }); } await super.ngOnInit(); } + + ngOnDestroy(): void { + this.destroy$.next(); + this.destroy$.complete(); + } } diff --git a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts index fd3552ebafd..c69a1bf1f0a 100644 --- a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts +++ b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts @@ -7,7 +7,7 @@ import { ActivatedRoute, Router } from "@angular/router"; import { RouterTestingModule } from "@angular/router/testing"; // eslint-disable-next-line no-restricted-imports import { Substitute } from "@fluffy-spoon/substitute"; -import { BehaviorSubject } from "rxjs"; +import { BehaviorSubject, of } from "rxjs"; import { I18nPipe } from "@bitwarden/angular/pipes/i18n.pipe"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; @@ -47,7 +47,7 @@ describe("TrialInitiationComponent", () => { }; policyServiceMock = { - getMasterPasswordPolicyOptions: jest.fn(), + masterPasswordPolicyOptions$: jest.fn(), }; TestBed.configureTestingModule({ @@ -145,14 +145,16 @@ describe("TrialInitiationComponent", () => { }, ], }); - policyServiceMock.getMasterPasswordPolicyOptions.mockReturnValueOnce({ - minComplexity: 4, - minLength: 10, - requireLower: null, - requireNumbers: null, - requireSpecial: null, - requireUpper: null, - } as MasterPasswordPolicyOptions); + policyServiceMock.masterPasswordPolicyOptions$.mockReturnValue( + of({ + minComplexity: 4, + minLength: 10, + requireLower: null, + requireNumbers: null, + requireSpecial: null, + requireUpper: null, + } as MasterPasswordPolicyOptions) + ); // Need to recreate component with new service mocks fixture = TestBed.createComponent(TrialInitiationComponent); diff --git a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts index 00bbc6e236f..d8b2fc0873d 100644 --- a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts +++ b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts @@ -1,9 +1,9 @@ import { StepperSelectionEvent } from "@angular/cdk/stepper"; import { TitleCasePipe } from "@angular/common"; -import { Component, OnInit, ViewChild } from "@angular/core"; +import { Component, OnDestroy, OnInit, ViewChild } from "@angular/core"; import { UntypedFormBuilder, Validators } from "@angular/forms"; import { ActivatedRoute, Router } from "@angular/router"; -import { first } from "rxjs"; +import { first, Subject, takeUntil } from "rxjs"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; @@ -24,8 +24,7 @@ import { VerticalStepperComponent } from "./vertical-stepper/vertical-stepper.co selector: "app-trial", templateUrl: "trial-initiation.component.html", }) -// eslint-disable-next-line rxjs-angular/prefer-takeuntil -export class TrialInitiationComponent implements OnInit { +export class TrialInitiationComponent implements OnInit, OnDestroy { email = ""; org = ""; orgInfoSubLabel = ""; @@ -63,6 +62,8 @@ export class TrialInitiationComponent implements OnInit { } } + private destroy$ = new Subject(); + constructor( private route: ActivatedRoute, protected router: Router, @@ -140,12 +141,20 @@ export class TrialInitiationComponent implements OnInit { } if (this.policies != null) { - this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions( - this.policies - ); + this.policyService + .masterPasswordPolicyOptions$(this.policies) + .pipe(takeUntil(this.destroy$)) + .subscribe((enforcedPasswordPolicyOptions) => { + this.enforcedPolicyOptions = enforcedPasswordPolicyOptions; + }); } } + ngOnDestroy(): void { + this.destroy$.next(); + this.destroy$.complete(); + } + stepSelectionChange(event: StepperSelectionEvent) { // Set org info sub label if (event.selectedIndex === 1 && this.orgInfoFormGroup.controls.name.value === "") { diff --git a/apps/web/src/app/core/event.service.ts b/apps/web/src/app/core/event.service.ts index 1a17998747e..6f77079cd99 100644 --- a/apps/web/src/app/core/event.service.ts +++ b/apps/web/src/app/core/event.service.ts @@ -1,16 +1,32 @@ -import { Injectable } from "@angular/core"; +import { Injectable, OnDestroy, OnInit } from "@angular/core"; +import { Subject, takeUntil } from "rxjs"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { DeviceType } from "@bitwarden/common/enums/deviceType"; import { EventType } from "@bitwarden/common/enums/eventType"; import { PolicyType } from "@bitwarden/common/enums/policyType"; +import { Policy } from "@bitwarden/common/models/domain/policy"; import { EventResponse } from "@bitwarden/common/models/response/eventResponse"; @Injectable() -export class EventService { +export class EventService implements OnInit, OnDestroy { + private destroy$ = new Subject(); + private policies: Policy[]; + constructor(private i18nService: I18nService, private policyService: PolicyService) {} + ngOnInit(): void { + this.policyService.policies$.pipe(takeUntil(this.destroy$)).subscribe((policies) => { + this.policies = policies; + }); + } + + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } + getDefaultDateFilters() { const d = new Date(); const end = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59); @@ -326,8 +342,7 @@ export class EventService { case EventType.Policy_Updated: { msg = this.i18nService.t("modifiedPolicyId", this.formatPolicyId(ev)); - const policies = await this.policyService.getAll(); - const policy = policies.filter((p) => p.id === ev.policyId)[0]; + const policy = this.policies.filter((p) => p.id === ev.policyId)[0]; let p1 = this.getShortId(ev.policyId); if (policy != null) { p1 = PolicyType[policy.type]; diff --git a/apps/web/src/app/organizations/manage/people.component.ts b/apps/web/src/app/organizations/manage/people.component.ts index 94e9493431a..cf426ef7aa5 100644 --- a/apps/web/src/app/organizations/manage/people.component.ts +++ b/apps/web/src/app/organizations/manage/people.component.ts @@ -1,6 +1,6 @@ -import { Component, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; -import { ActivatedRoute, Router } from "@angular/router"; -import { first } from "rxjs/operators"; +import { Component, OnDestroy, OnInit, ViewChild, ViewContainerRef } from "@angular/core"; +import { ActivatedRoute } from "@angular/router"; +import { combineLatest, concatMap, Subject, takeUntil } from "rxjs"; import { SearchPipe } from "@bitwarden/angular/pipes/search.pipe"; import { UserNamePipe } from "@bitwarden/angular/pipes/user-name.pipe"; @@ -12,7 +12,6 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { OrganizationApiServiceAbstraction } from "@bitwarden/common/abstractions/organization/organization-api.service.abstraction"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; -import { PolicyApiServiceAbstraction } from "@bitwarden/common/abstractions/policy/policy-api.service.abstraction"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; @@ -43,10 +42,9 @@ import { UserGroupsComponent } from "./user-groups.component"; selector: "app-org-people", templateUrl: "people.component.html", }) -// eslint-disable-next-line rxjs-angular/prefer-takeuntil export class PeopleComponent extends BasePeopleComponent - implements OnInit + implements OnInit, OnDestroy { @ViewChild("addEdit", { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef; @ViewChild("groupsTemplate", { read: ViewContainerRef, static: true }) @@ -77,6 +75,8 @@ export class PeopleComponent orgResetPasswordPolicyEnabled = false; callingUserType: OrganizationUserType = null; + private destroy$ = new Subject(); + constructor( apiService: ApiService, private route: ActivatedRoute, @@ -84,10 +84,8 @@ export class PeopleComponent modalService: ModalService, platformUtilsService: PlatformUtilsService, cryptoService: CryptoService, - private router: Router, searchService: SearchService, validationService: ValidationService, - private policyApiService: PolicyApiServiceAbstraction, private policyService: PolicyService, logService: LogService, searchPipe: SearchPipe, @@ -113,53 +111,63 @@ export class PeopleComponent } async ngOnInit() { - // eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe - this.route.parent.parent.params.subscribe(async (params) => { - this.organizationId = params.organizationId; - const organization = await this.organizationService.get(this.organizationId); - this.accessEvents = organization.useEvents; - this.accessGroups = organization.useGroups; - this.canResetPassword = organization.canManageUsersPassword; - this.orgUseResetPassword = organization.useResetPassword; - this.callingUserType = organization.type; - this.orgHasKeys = organization.hasPublicAndPrivateKeys; + combineLatest([this.route.params, this.route.queryParams, this.policyService.policies$]) + .pipe( + concatMap(async ([params, qParams, policies]) => { + this.organizationId = params.organizationId; + const organization = await this.organizationService.get(this.organizationId); + this.accessEvents = organization.useEvents; + this.accessGroups = organization.useGroups; + this.canResetPassword = organization.canManageUsersPassword; + this.orgUseResetPassword = organization.useResetPassword; + this.callingUserType = organization.type; + this.orgHasKeys = organization.hasPublicAndPrivateKeys; - // Backfill pub/priv key if necessary - if (this.canResetPassword && !this.orgHasKeys) { - const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId); - const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey); - const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString); - const response = await this.organizationApiService.updateKeys(this.organizationId, request); - if (response != null) { - this.orgHasKeys = response.publicKey != null && response.privateKey != null; - await this.syncService.fullSync(true); // Replace oganizations with new data - } else { - throw new Error(this.i18nService.t("resetPasswordOrgKeysError")); - } - } - - await this.load(); - - // eslint-disable-next-line rxjs-angular/prefer-takeuntil, rxjs/no-async-subscribe, rxjs/no-nested-subscribe - this.route.queryParams.pipe(first()).subscribe(async (qParams) => { - this.searchText = qParams.search; - if (qParams.viewEvents != null) { - const user = this.users.filter((u) => u.id === qParams.viewEvents); - if (user.length > 0 && user[0].status === OrganizationUserStatusType.Confirmed) { - this.events(user[0]); + // Backfill pub/priv key if necessary + if (this.canResetPassword && !this.orgHasKeys) { + const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId); + const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey); + const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString); + const response = await this.organizationApiService.updateKeys( + this.organizationId, + request + ); + if (response != null) { + this.orgHasKeys = response.publicKey != null && response.privateKey != null; + await this.syncService.fullSync(true); // Replace oganizations with new data + } else { + throw new Error(this.i18nService.t("resetPasswordOrgKeysError")); + } } - } - }); - }); + + const resetPasswordPolicy = policies + .filter((policy) => policy.type === PolicyType.ResetPassword) + .find((p) => p.organizationId === this.organizationId); + this.orgResetPasswordPolicyEnabled = resetPasswordPolicy?.enabled; + + await this.load(); + + this.searchText = qParams.search; + if (qParams.viewEvents != null) { + const user = this.users.filter((u) => u.id === qParams.viewEvents); + if (user.length > 0 && user[0].status === OrganizationUserStatusType.Confirmed) { + this.events(user[0]); + } + } + }), + takeUntil(this.destroy$) + ) + .subscribe(); + } + + ngOnDestroy(): void { + this.destroy$.next(); + this.destroy$.complete(); } async load() { - const resetPasswordPolicy = await this.policyApiService.getPolicyForOrganization( - PolicyType.ResetPassword, - this.organizationId - ); - this.orgResetPasswordPolicyEnabled = resetPasswordPolicy?.enabled; super.load(); + await super.load(); } getUsers(): Promise> { diff --git a/apps/web/src/app/organizations/manage/reset-password.component.ts b/apps/web/src/app/organizations/manage/reset-password.component.ts index d37148a25eb..97e9466e80e 100644 --- a/apps/web/src/app/organizations/manage/reset-password.component.ts +++ b/apps/web/src/app/organizations/manage/reset-password.component.ts @@ -1,4 +1,13 @@ -import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from "@angular/core"; +import { + Component, + EventEmitter, + Input, + OnDestroy, + OnInit, + Output, + ViewChild, +} from "@angular/core"; +import { Subject, takeUntil } from "rxjs"; import zxcvbn from "zxcvbn"; import { PasswordStrengthComponent } from "@bitwarden/angular/shared/components/password-strength/password-strength.component"; @@ -18,7 +27,7 @@ import { OrganizationUserResetPasswordRequest } from "@bitwarden/common/models/r selector: "app-reset-password", templateUrl: "reset-password.component.html", }) -export class ResetPasswordComponent implements OnInit { +export class ResetPasswordComponent implements OnInit, OnDestroy { @Input() name: string; @Input() email: string; @Input() id: string; @@ -32,6 +41,8 @@ export class ResetPasswordComponent implements OnInit { passwordStrengthResult: zxcvbn.ZXCVBNResult; formPromise: Promise; + private destroy$ = new Subject(); + constructor( private apiService: ApiService, private i18nService: I18nService, @@ -43,8 +54,18 @@ export class ResetPasswordComponent implements OnInit { ) {} async ngOnInit() { - // Get Enforced Policy Options - this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(); + this.policyService + .masterPasswordPolicyOptions$() + .pipe(takeUntil(this.destroy$)) + .subscribe( + (enforcedPasswordPolicyOptions) => + (this.enforcedPolicyOptions = enforcedPasswordPolicyOptions) + ); + } + + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); } get loggedOutWarningName() { @@ -52,7 +73,7 @@ export class ResetPasswordComponent implements OnInit { } async generatePassword() { - const options = (await this.passwordGenerationService.getOptions())[0]; + const options = (await this.passwordGenerationService.getOptions())?.[0] ?? {}; this.newPassword = await this.passwordGenerationService.generatePassword(options); this.passwordStrengthComponent.updatePasswordStrength(this.newPassword); } diff --git a/apps/web/src/app/organizations/tools/import-export/org-import.component.ts b/apps/web/src/app/organizations/tools/import-export/org-import.component.ts index 69506b226a3..81a16a29680 100644 --- a/apps/web/src/app/organizations/tools/import-export/org-import.component.ts +++ b/apps/web/src/app/organizations/tools/import-export/org-import.component.ts @@ -47,7 +47,6 @@ export class OrganizationImportComponent extends ImportComponent { this.organizationId = params.organizationId; this.successNavigate = ["organizations", this.organizationId, "vault"]; await super.ngOnInit(); - this.importBlockedByPolicy = false; }); const organization = await this.organizationService.get(this.organizationId); this.organizationName = organization.name; diff --git a/apps/web/src/app/settings/emergency-access-takeover.component.ts b/apps/web/src/app/settings/emergency-access-takeover.component.ts index 5731dc8b891..27a9484f4de 100644 --- a/apps/web/src/app/settings/emergency-access-takeover.component.ts +++ b/apps/web/src/app/settings/emergency-access-takeover.component.ts @@ -1,4 +1,5 @@ -import { Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; +import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from "@angular/core"; +import { takeUntil } from "rxjs"; import { ChangePasswordComponent } from "@bitwarden/angular/components/change-password.component"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; @@ -21,7 +22,11 @@ import { PolicyResponse } from "@bitwarden/common/models/response/policyResponse selector: "emergency-access-takeover", templateUrl: "emergency-access-takeover.component.html", }) -export class EmergencyAccessTakeoverComponent extends ChangePasswordComponent implements OnInit { +// eslint-disable-next-line rxjs-angular/prefer-takeuntil +export class EmergencyAccessTakeoverComponent + extends ChangePasswordComponent + implements OnInit, OnDestroy +{ @Output() onDone = new EventEmitter(); @Input() emergencyAccessId: string; @Input() name: string; @@ -59,12 +64,19 @@ export class EmergencyAccessTakeoverComponent extends ChangePasswordComponent im const policies = response.data.map( (policyResponse: PolicyResponse) => new Policy(new PolicyData(policyResponse)) ); - this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions( - policies - ); + + this.policyService + .masterPasswordPolicyOptions$(policies) + .pipe(takeUntil(this.destroy$)) + .subscribe((enforcedPolicyOptions) => (this.enforcedPolicyOptions = enforcedPolicyOptions)); } } + // eslint-disable-next-line rxjs-angular/prefer-takeuntil + ngOnDestroy(): void { + super.ngOnDestroy(); + } + async submit() { if (!(await this.strongPassword())) { return; diff --git a/apps/web/src/app/settings/organization-plans.component.ts b/apps/web/src/app/settings/organization-plans.component.ts index 485afd12b15..934803b3fb1 100644 --- a/apps/web/src/app/settings/organization-plans.component.ts +++ b/apps/web/src/app/settings/organization-plans.component.ts @@ -1,6 +1,15 @@ -import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from "@angular/core"; +import { + Component, + EventEmitter, + Input, + OnDestroy, + OnInit, + Output, + ViewChild, +} from "@angular/core"; import { UntypedFormBuilder, Validators } from "@angular/forms"; import { Router } from "@angular/router"; +import { Subject, takeUntil } from "rxjs"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; @@ -35,7 +44,7 @@ interface OnSuccessArgs { selector: "app-organization-plans", templateUrl: "organization-plans.component.html", }) -export class OrganizationPlansComponent implements OnInit { +export class OrganizationPlansComponent implements OnInit, OnDestroy { @ViewChild(PaymentComponent) paymentComponent: PaymentComponent; @ViewChild(TaxInfoComponent) taxComponent: TaxInfoComponent; @@ -73,6 +82,8 @@ export class OrganizationPlansComponent implements OnInit { plans: PlanResponse[]; + private destroy$ = new Subject(); + constructor( private apiService: ApiService, private i18nService: I18nService, @@ -114,9 +125,21 @@ export class OrganizationPlansComponent implements OnInit { this.formGroup.controls.billingEmail.addValidators(Validators.required); } + this.policyService + .policyAppliesToActiveUser$(PolicyType.SingleOrg) + .pipe(takeUntil(this.destroy$)) + .subscribe((policyAppliesToActiveUser) => { + this.singleOrgPolicyBlock = policyAppliesToActiveUser; + }); + this.loading = false; } + ngOnDestroy() { + this.destroy$.next(); + this.destroy$.complete(); + } + get createOrganization() { return this.organizationId == null; } @@ -288,8 +311,6 @@ export class OrganizationPlansComponent implements OnInit { } async submit() { - this.singleOrgPolicyBlock = await this.userHasBlockingSingleOrgPolicy(); - if (this.singleOrgPolicyBlock) { return; } @@ -353,10 +374,6 @@ export class OrganizationPlansComponent implements OnInit { } } - private async userHasBlockingSingleOrgPolicy() { - return this.policyService.policyAppliesToUser(PolicyType.SingleOrg); - } - private async updateOrganization(orgId: string) { const request = new OrganizationUpgradeRequest(); request.businessName = this.formGroup.controls.businessOwned.value diff --git a/apps/web/src/app/settings/two-factor-setup.component.ts b/apps/web/src/app/settings/two-factor-setup.component.ts index 13e3cbecea8..994262548bc 100644 --- a/apps/web/src/app/settings/two-factor-setup.component.ts +++ b/apps/web/src/app/settings/two-factor-setup.component.ts @@ -1,4 +1,5 @@ -import { Component, OnInit, Type, ViewChild, ViewContainerRef } from "@angular/core"; +import { Component, OnDestroy, OnInit, Type, ViewChild, ViewContainerRef } from "@angular/core"; +import { Subject, takeUntil } from "rxjs"; import { ModalRef } from "@bitwarden/angular/components/modal/modal.ref"; import { ModalService } from "@bitwarden/angular/services/modal.service"; @@ -25,8 +26,7 @@ import { TwoFactorYubiKeyComponent } from "./two-factor-yubikey.component"; selector: "app-two-factor-setup", templateUrl: "two-factor-setup.component.html", }) -// eslint-disable-next-line rxjs-angular/prefer-takeuntil -export class TwoFactorSetupComponent implements OnInit { +export class TwoFactorSetupComponent implements OnInit, OnDestroy { @ViewChild("recoveryTemplate", { read: ViewContainerRef, static: true }) recoveryModalRef: ViewContainerRef; @ViewChild("authenticatorTemplate", { read: ViewContainerRef, static: true }) @@ -49,6 +49,9 @@ export class TwoFactorSetupComponent implements OnInit { modal: ModalRef; formPromise: Promise; + private destroy$ = new Subject(); + private twoFactorAuthPolicyAppliesToActiveUser: boolean; + constructor( protected apiService: ApiService, protected modalService: ModalService, @@ -93,9 +96,22 @@ export class TwoFactorSetupComponent implements OnInit { } this.providers.sort((a: any, b: any) => a.sort - b.sort); + + this.policyService + .policyAppliesToActiveUser$(PolicyType.TwoFactorAuthentication) + .pipe(takeUntil(this.destroy$)) + .subscribe((policyAppliesToActiveUser) => { + this.twoFactorAuthPolicyAppliesToActiveUser = policyAppliesToActiveUser; + }); + await this.load(); } + ngOnDestroy(): void { + this.destroy$.next(); + this.destroy$.complete(); + } + async load() { this.loading = true; const providerList = await this.getTwoFactorProviders(); @@ -203,9 +219,7 @@ export class TwoFactorSetupComponent implements OnInit { private async evaluatePolicies() { if (this.organizationId == null && this.providers.filter((p) => p.enabled).length === 1) { - this.showPolicyWarning = await this.policyService.policyAppliesToUser( - PolicyType.TwoFactorAuthentication - ); + this.showPolicyWarning = this.twoFactorAuthPolicyAppliesToActiveUser; } else { this.showPolicyWarning = false; } diff --git a/apps/web/src/app/tools/import-export/import.component.html b/apps/web/src/app/tools/import-export/import.component.html index 26d820b5189..ba2eb69925c 100644 --- a/apps/web/src/app/tools/import-export/import.component.html +++ b/apps/web/src/app/tools/import-export/import.component.html @@ -1,7 +1,7 @@ - + {{ "personalOwnershipPolicyInEffectImports" | i18n }} @@ -14,7 +14,7 @@ name="Format" [(ngModel)]="format" class="form-control" - [disabled]="importBlockedByPolicy" + [disabled]="importBlockedByPolicy$ | async" required > @@ -296,7 +296,7 @@ id="file" class="form-control-file" name="file" - [disabled]="importBlockedByPolicy" + [disabled]="importBlockedByPolicy$ | async" /> @@ -308,14 +308,14 @@ class="form-control" name="FileContents" [(ngModel)]="fileContents" - [disabled]="importBlockedByPolicy" + [disabled]="importBlockedByPolicy$ | async" > + + `, +}); + +export const Loading = MultiSelectTemplate.bind({}); +Loading.args = { + baseItems: [], + name: "Loading", + hint: "This is what a loading multi-select looks like", + loading: "true", +}; + +export const Disabled = MultiSelectTemplate.bind({}); +Disabled.args = { + name: "Disabled", + disabled: "true", + hint: "This is what a disabled multi-select looks like", +}; + +export const Groups = MultiSelectTemplate.bind({}); +Groups.args = { + name: "Select groups", + hint: "Groups will be assigned to the associated member", + baseItems: [ + { id: "1", listName: "Group 1", labelName: "Group 1", icon: "bwi-family" }, + { id: "2", listName: "Group 2", labelName: "Group 2", icon: "bwi-family" }, + { id: "3", listName: "Group 3", labelName: "Group 3", icon: "bwi-family" }, + { id: "4", listName: "Group 4", labelName: "Group 4", icon: "bwi-family" }, + { id: "5", listName: "Group 5", labelName: "Group 5", icon: "bwi-family" }, + { id: "6", listName: "Group 6", labelName: "Group 6", icon: "bwi-family" }, + { id: "7", listName: "Group 7", labelName: "Group 7", icon: "bwi-family" }, + ], +}; + +export const Members = MultiSelectTemplate.bind({}); +Members.args = { + name: "Select members", + hint: "Members will be assigned to the associated group/collection", + baseItems: [ + { id: "1", listName: "Joe Smith (jsmith@mail.me)", labelName: "Joe Smith", icon: "bwi-user" }, + { + id: "2", + listName: "Tania Stone (tstone@mail.me)", + labelName: "Tania Stone", + icon: "bwi-user", + }, + { + id: "3", + listName: "Matt Matters (mmatters@mail.me)", + labelName: "Matt Matters", + icon: "bwi-user", + }, + { + id: "4", + listName: "Bob Robertson (brobertson@mail.me)", + labelName: "Bob Robertson", + icon: "bwi-user", + }, + { + id: "5", + listName: "Ashley Fletcher (aflectcher@mail.me)", + labelName: "Ashley Fletcher", + icon: "bwi-user", + }, + { id: "6", listName: "Rita Olson (rolson@mail.me)", labelName: "Rita Olson", icon: "bwi-user" }, + { + id: "7", + listName: "Final listName (fname@mail.me)", + labelName: "(fname@mail.me)", + icon: "bwi-user", + }, + ], +}; + +export const Collections = MultiSelectTemplate.bind({}); +Collections.args = { + name: "Select collections", + hint: "Collections will be assigned to the associated member", + baseItems: [ + { id: "1", listName: "Collection 1", labelName: "Collection 1", icon: "bwi-collection" }, + { id: "2", listName: "Collection 2", labelName: "Collection 2", icon: "bwi-collection" }, + { id: "3", listName: "Collection 3", labelName: "Collection 3", icon: "bwi-collection" }, + { + id: "3.5", + listName: "Child Collection 1 for Parent 1", + labelName: "Child Collection 1 for Parent 1", + icon: "bwi-collection", + parentGrouping: "Parent 1", + }, + { + id: "3.55", + listName: "Child Collection 2 for Parent 1", + labelName: "Child Collection 2 for Parent 1", + icon: "bwi-collection", + parentGrouping: "Parent 1", + }, + { + id: "3.59", + listName: "Child Collection 3 for Parent 1", + labelName: "Child Collection 3 for Parent 1", + icon: "bwi-collection", + parentGrouping: "Parent 1", + }, + { + id: "3.75", + listName: "Child Collection 1 for Parent 2", + labelName: "Child Collection 1 for Parent 2", + icon: "bwi-collection", + parentGrouping: "Parent 2", + }, + { id: "4", listName: "Collection 4", labelName: "Collection 4", icon: "bwi-collection" }, + { id: "5", listName: "Collection 5", labelName: "Collection 5", icon: "bwi-collection" }, + { id: "6", listName: "Collection 6", labelName: "Collection 6", icon: "bwi-collection" }, + { id: "7", listName: "Collection 7", labelName: "Collection 7", icon: "bwi-collection" }, + ], +}; + +export const MembersAndGroups = MultiSelectTemplate.bind({}); +MembersAndGroups.args = { + name: "Select groups and members", + hint: "Members/Groups will be assigned to the associated collection", + baseItems: [ + { id: "1", listName: "Group 1", labelName: "Group 1", icon: "bwi-family" }, + { id: "2", listName: "Group 2", labelName: "Group 2", icon: "bwi-family" }, + { id: "3", listName: "Group 3", labelName: "Group 3", icon: "bwi-family" }, + { id: "4", listName: "Group 4", labelName: "Group 4", icon: "bwi-family" }, + { id: "5", listName: "Group 5", labelName: "Group 5", icon: "bwi-family" }, + { id: "6", listName: "Joe Smith (jsmith@mail.me)", labelName: "Joe Smith", icon: "bwi-user" }, + { + id: "7", + listName: "Tania Stone (tstone@mail.me)", + labelName: "(tstone@mail.me)", + icon: "bwi-user", + }, + ], +}; + +export const RemoveSelected = MultiSelectTemplate.bind({}); +RemoveSelected.args = { + name: "Select groups", + hint: "Groups will be removed from the list once the dropdown is closed", + baseItems: [ + { id: "1", listName: "Group 1", labelName: "Group 1", icon: "bwi-family" }, + { id: "2", listName: "Group 2", labelName: "Group 2", icon: "bwi-family" }, + { id: "3", listName: "Group 3", labelName: "Group 3", icon: "bwi-family" }, + { id: "4", listName: "Group 4", labelName: "Group 4", icon: "bwi-family" }, + { id: "5", listName: "Group 5", labelName: "Group 5", icon: "bwi-family" }, + { id: "6", listName: "Group 6", labelName: "Group 6", icon: "bwi-family" }, + { id: "7", listName: "Group 7", labelName: "Group 7", icon: "bwi-family" }, + ], + removeSelectedItems: "true", +}; + +const StandaloneTemplate: Story = (args: MultiSelectComponent) => ({ + props: { + ...args, + onItemsConfirmed: actionsData.onItemsConfirmed, + }, + template: ` + + + `, +}); + +export const Standalone = StandaloneTemplate.bind({}); +Standalone.args = { + baseItems: [ + { id: "1", listName: "Group 1", labelName: "Group 1", icon: "bwi-family" }, + { id: "2", listName: "Group 2", labelName: "Group 2", icon: "bwi-family" }, + { id: "3", listName: "Group 3", labelName: "Group 3", icon: "bwi-family" }, + { id: "4", listName: "Group 4", labelName: "Group 4", icon: "bwi-family" }, + { id: "5", listName: "Group 5", labelName: "Group 5", icon: "bwi-family" }, + { id: "6", listName: "Group 6", labelName: "Group 6", icon: "bwi-family" }, + { id: "7", listName: "Group 7", labelName: "Group 7", icon: "bwi-family" }, + ], + removeSelectedItems: "true", +}; diff --git a/libs/components/src/input/input.directive.ts b/libs/components/src/input/input.directive.ts index c47bb837660..619b0229057 100644 --- a/libs/components/src/input/input.directive.ts +++ b/libs/components/src/input/input.directive.ts @@ -1,13 +1,16 @@ import { Directive, HostBinding, Input, Optional, Self } from "@angular/core"; import { NgControl, Validators } from "@angular/forms"; +import { BitFormFieldControl } from "../form-field/form-field-control"; + // Increments for each instance of this component let nextId = 0; @Directive({ selector: "input[bitInput], select[bitInput], textarea[bitInput]", + providers: [{ provide: BitFormFieldControl, useExisting: BitInputDirective }], }) -export class BitInputDirective { +export class BitInputDirective implements BitFormFieldControl { @HostBinding("class") @Input() get classList() { return [ "tw-block", @@ -38,6 +41,10 @@ export class BitInputDirective { @HostBinding("attr.aria-describedby") ariaDescribedBy: string; + get labelForId(): string { + return this.id; + } + @HostBinding("attr.aria-invalid") get ariaInvalid() { return this.hasError ? true : undefined; } diff --git a/libs/components/src/multi-select/models/select-item-view.ts b/libs/components/src/multi-select/models/select-item-view.ts new file mode 100644 index 00000000000..45cf47d73f4 --- /dev/null +++ b/libs/components/src/multi-select/models/select-item-view.ts @@ -0,0 +1,7 @@ +export type SelectItemView = { + id: string; // Unique ID used for comparisons + listName: string; // Default bindValue -> this is what will be displayed in list items + labelName: string; // This is what will be displayed in the selection option badge + icon: string; // Icon to display within the list + parentGrouping: string; // Used to group items by parent +}; diff --git a/libs/components/src/multi-select/multi-select.component.html b/libs/components/src/multi-select/multi-select.component.html new file mode 100644 index 00000000000..fc355eeb4f0 --- /dev/null +++ b/libs/components/src/multi-select/multi-select.component.html @@ -0,0 +1,55 @@ + + + + + + + + +
+
+ +
+
+ +
+
+ {{ item.listName }} +
+
+
+
diff --git a/libs/components/src/multi-select/multi-select.component.ts b/libs/components/src/multi-select/multi-select.component.ts new file mode 100644 index 00000000000..81b815ed0de --- /dev/null +++ b/libs/components/src/multi-select/multi-select.component.ts @@ -0,0 +1,179 @@ +import { + Component, + Input, + OnInit, + Output, + ViewChild, + EventEmitter, + HostBinding, + Optional, + Self, +} from "@angular/core"; +import { ControlValueAccessor, NgControl, Validators } from "@angular/forms"; +import { NgSelectComponent } from "@ng-select/ng-select"; + +import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; + +import { BitFormFieldControl } from "../form-field/form-field-control"; + +import { SelectItemView } from "./models/select-item-view"; + +// Increments for each instance of this component +let nextId = 0; + +@Component({ + selector: "bit-multi-select", + templateUrl: "./multi-select.component.html", + providers: [{ provide: BitFormFieldControl, useExisting: MultiSelectComponent }], +}) +/** + * This component has been implemented to only support Multi-select list events + */ +export class MultiSelectComponent implements OnInit, BitFormFieldControl, ControlValueAccessor { + @ViewChild(NgSelectComponent) select: NgSelectComponent; + + // Parent component should only pass selectable items (complete list - selected items = baseItems) + @Input() baseItems: SelectItemView[]; + // Defaults to native ng-select behavior - set to "true" to clear selected items on dropdown close + @Input() removeSelectedItems = false; + @Input() placeholder: string; + @Input() loading = false; + @Input() disabled = false; + + // Internal tracking of selected items + @Input() selectedItems: SelectItemView[]; + + // Default values for our implementation + loadingText: string; + + protected searchInputId = `search-input-${nextId++}`; + + /**Implemented as part of NG_VALUE_ACCESSOR */ + private notifyOnChange?: (value: SelectItemView[]) => void; + /**Implemented as part of NG_VALUE_ACCESSOR */ + private notifyOnTouched?: () => void; + + @Output() onItemsConfirmed = new EventEmitter(); + + constructor(private i18nService: I18nService, @Optional() @Self() private ngControl?: NgControl) { + if (ngControl != null) { + ngControl.valueAccessor = this; + } + } + + ngOnInit(): void { + // Default Text Values + this.placeholder = this.placeholder ?? this.i18nService.t("multiSelectPlaceholder"); + this.loadingText = this.i18nService.t("multiSelectLoading"); + } + + /** Helper method for showing selected state in custom template */ + isSelected(item: any): boolean { + return this.selectedItems?.find((selected) => selected.id === item.id) != undefined; + } + + /** + * The `close` callback will act as the only trigger for signifying the user's intent of completing the selection + * of items. Selected items will be emitted to the parent component in order to allow for separate data handling. + */ + onDropdownClosed(): void { + // Early exit + if (this.selectedItems == null || this.selectedItems.length == 0) { + return; + } + + // Emit results to parent component + this.onItemsConfirmed.emit(this.selectedItems); + + // Remove selected items from base list based on input property + if (this.removeSelectedItems) { + let updatedBaseItems = this.baseItems; + this.selectedItems.forEach((selectedItem) => { + updatedBaseItems = updatedBaseItems.filter((item) => selectedItem.id !== item.id); + }); + + // Reset Lists + this.selectedItems = null; + this.baseItems = updatedBaseItems; + } + } + + /**Implemented as part of NG_VALUE_ACCESSOR */ + writeValue(obj: SelectItemView[]): void { + this.selectedItems = obj; + } + + /**Implemented as part of NG_VALUE_ACCESSOR */ + registerOnChange(fn: (value: SelectItemView[]) => void): void { + this.notifyOnChange = fn; + } + + /**Implemented as part of NG_VALUE_ACCESSOR */ + registerOnTouched(fn: any): void { + this.notifyOnTouched = fn; + } + + /**Implemented as part of NG_VALUE_ACCESSOR */ + setDisabledState(isDisabled: boolean): void { + this.disabled = isDisabled; + } + + /**Implemented as part of NG_VALUE_ACCESSOR */ + protected onChange(items: SelectItemView[]) { + if (!this.notifyOnChange) { + return; + } + + this.notifyOnChange(items); + } + + /**Implemented as part of NG_VALUE_ACCESSOR */ + protected onBlur() { + if (!this.notifyOnTouched) { + return; + } + + this.notifyOnTouched(); + } + + /**Implemented as part of BitFormFieldControl */ + @HostBinding("attr.aria-describedby") + get ariaDescribedBy() { + return this._ariaDescribedBy; + } + set ariaDescribedBy(value: string) { + this._ariaDescribedBy = value; + this.select?.searchInput.nativeElement.setAttribute("aria-describedby", value); + } + private _ariaDescribedBy: string; + + /**Implemented as part of BitFormFieldControl */ + get labelForId() { + return this.searchInputId; + } + + /**Implemented as part of BitFormFieldControl */ + @HostBinding() @Input() id = `bit-multi-select-${nextId++}`; + + /**Implemented as part of BitFormFieldControl */ + @HostBinding("attr.required") + @Input() + get required() { + return this._required ?? this.ngControl?.control?.hasValidator(Validators.required) ?? false; + } + set required(value: any) { + this._required = value != null && value !== false; + } + private _required: boolean; + + /**Implemented as part of BitFormFieldControl */ + get hasError() { + return this.ngControl?.status === "INVALID" && this.ngControl?.touched; + } + + /**Implemented as part of BitFormFieldControl */ + get error(): [string, any] { + const key = Object.keys(this.ngControl?.errors)[0]; + return [key, this.ngControl?.errors[key]]; + } +} diff --git a/libs/components/src/multi-select/multi-select.module.ts b/libs/components/src/multi-select/multi-select.module.ts new file mode 100644 index 00000000000..88de53b5481 --- /dev/null +++ b/libs/components/src/multi-select/multi-select.module.ts @@ -0,0 +1,16 @@ +import { CommonModule } from "@angular/common"; +import { NgModule } from "@angular/core"; +import { FormsModule } from "@angular/forms"; +import { NgSelectModule } from "@ng-select/ng-select"; + +import { BadgeModule } from "../badge"; +import { SharedModule } from "../shared"; + +import { MultiSelectComponent } from "./multi-select.component"; + +@NgModule({ + imports: [CommonModule, FormsModule, NgSelectModule, BadgeModule, SharedModule], + exports: [MultiSelectComponent], + declarations: [MultiSelectComponent], +}) +export class MultiSelectModule {} diff --git a/libs/components/src/multi-select/scss/bw.theme.scss b/libs/components/src/multi-select/scss/bw.theme.scss new file mode 100644 index 00000000000..85e55fc0e58 --- /dev/null +++ b/libs/components/src/multi-select/scss/bw.theme.scss @@ -0,0 +1,394 @@ +// Default theme copied from https://github.com/ng-select/ng-select/blob/master/src/ng-select/themes/default.theme.scss +@mixin rtl { + @at-root [dir="rtl"] #{&} { + @content; + } +} + +$ng-select-highlight: rgb(var(--color-primary-700)) !default; +$ng-select-primary-text: rgb(var(--color-text-main)) !default; +$ng-select-disabled-text: rgb(var(--color-secondary-100)) !default; +$ng-select-border: rgb(var(--color-secondary-500)) !default; +$ng-select-border-radius: 4px !default; +$ng-select-bg: rgb(var(--color-background-alt)) !default; +$ng-select-selected: transparent !default; +$ng-select-selected-text: $ng-select-primary-text !default; + +$ng-select-marked: rgb(var(--color-text-main) / 0.12) !default; +$ng-select-marked-text: $ng-select-primary-text !default; + +$ng-select-box-shadow: none !default; +$ng-select-placeholder: rgb(var(--color-text-muted)) !default; +$ng-select-height: 36px !default; +$ng-select-value-padding-left: 10px !default; +$ng-select-value-font-size: 0.9em !default; +$ng-select-value-text: $ng-select-primary-text !default; + +$ng-select-dropdown-bg: $ng-select-bg !default; +$ng-select-dropdown-border: $ng-select-border !default; +$ng-select-dropdown-optgroup-text: rgb(var(--color-text-muted)) !default; +$ng-select-dropdown-optgroup-marked: $ng-select-dropdown-optgroup-text !default; +$ng-select-dropdown-option-bg: $ng-select-dropdown-bg !default; +$ng-select-dropdown-option-text: $ng-select-primary-text !default; +$ng-select-dropdown-option-disabled: rgb(var(--color-text-muted) / 0.6) !default; + +$ng-select-input-text: $ng-select-primary-text !default; + +// Custom color variables +$ng-select-arrow-hover: rgb(var(--color-secondary-700)) !default; +$ng-clear-icon-hover: rgb(var(--color-text-main)) !default; +$ng-dropdown-shadow: rgb(var(--color-secondary-100)) !default; + +.ng-select { + &.ng-select-opened { + > .ng-select-container { + background: $ng-select-bg; + border-color: $ng-select-border; + &:hover { + box-shadow: none; + } + .ng-arrow { + top: -2px; + border-color: transparent transparent $ng-select-arrow-hover; + border-width: 0 5px 5px; + &:hover { + border-color: transparent transparent $ng-select-arrow-hover; + } + } + } + &.ng-select-top { + > .ng-select-container { + border-top-right-radius: 0; + border-top-left-radius: 0; + } + } + &.ng-select-right { + > .ng-select-container { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + } + &.ng-select-bottom { + > .ng-select-container { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + } + &.ng-select-left { + > .ng-select-container { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + } + } + &.ng-select-focused { + &:not(.ng-select-opened) > .ng-select-container { + border-color: $ng-select-highlight; + box-shadow: $ng-select-box-shadow; + } + } + &.ng-select-disabled { + > .ng-select-container { + background-color: $ng-select-disabled-text; + } + } + .ng-has-value .ng-placeholder { + display: none; + } + .ng-select-container { + color: $ng-select-primary-text; + background-color: $ng-select-bg; + border-radius: $ng-select-border-radius; + border: 1px solid $ng-select-border; + min-height: $ng-select-height; + align-items: center; + &:hover { + box-shadow: 0 1px 0 $ng-dropdown-shadow; + } + .ng-value-container { + align-items: center; + padding-left: $ng-select-value-padding-left; + @include rtl { + padding-right: $ng-select-value-padding-left; + padding-left: 0; + } + .ng-placeholder { + color: $ng-select-placeholder; + } + } + } + &.ng-select-single { + .ng-select-container { + height: $ng-select-height; + .ng-value-container { + .ng-input { + top: 5px; + left: 0; + padding-left: $ng-select-value-padding-left; + padding-right: 50px; + @include rtl { + padding-right: $ng-select-value-padding-left; + padding-left: 50px; + } + } + } + } + } + &.ng-select-multiple { + &.ng-select-disabled { + > .ng-select-container .ng-value-container .ng-value { + background-color: $ng-select-disabled-text; + border: 0px solid $ng-select-border; // Removing border on slected value when disabled + .ng-value-label { + padding: 0 5px; + } + } + } + .ng-select-container { + .ng-value-container { + padding-top: 5px; + padding-left: 7px; + @include rtl { + padding-right: 7px; + padding-left: 0; + } + .ng-value { + font-size: $ng-select-value-font-size; + margin-bottom: 5px; + color: $ng-select-value-text; + background-color: $ng-select-selected; + border-radius: 2px; + margin-right: 5px; + @include rtl { + margin-right: 0; + margin-left: 5px; + } + &.ng-value-disabled { + background-color: $ng-select-disabled-text; + .ng-value-label { + padding-left: 5px; + @include rtl { + padding-left: 0; + padding-right: 5px; + } + } + } + .ng-value-label { + display: inline-block; + padding: 1px 5px; + } + .ng-value-icon { + display: inline-block; + padding: 1px 5px; + &:hover { + background-color: $ng-select-arrow-hover; + } + &.left { + border-right: 1px solid $ng-select-selected; + @include rtl { + border-left: 1px solid $ng-select-selected; + border-right: none; + } + } + &.right { + border-left: 1px solid $ng-select-selected; + @include rtl { + border-left: 0; + border-right: 1px solid $ng-select-selected; + } + } + } + } + .ng-input { + padding: 0 0 3px 3px; + @include rtl { + padding: 0 3px 3px 0; + } + > input { + color: $ng-select-input-text; + } + } + .ng-placeholder { + top: 5px; + padding-bottom: 5px; + padding-left: 3px; + @include rtl { + padding-right: 3px; + padding-left: 0; + } + } + } + } + } + .ng-clear-wrapper { + color: $ng-select-placeholder; + padding-top: 2.5px; + &:hover .ng-clear { + color: $ng-clear-icon-hover; + } + } + .ng-spinner-zone { + padding: 5px 5px 0 0; + + @include rtl { + padding: 5px 0 0 5px; + } + } + .ng-arrow-wrapper { + width: 25px; + padding-right: 5px; + @include rtl { + padding-left: 5px; + padding-right: 0; + } + &:hover { + .ng-arrow { + border-top-color: $ng-select-arrow-hover; + } + } + .ng-arrow { + border-color: $ng-select-placeholder transparent transparent; + border-style: solid; + border-width: 5px 5px 2.5px; + } + } +} + +.ng-dropdown-panel { + background-color: $ng-select-dropdown-bg; + border: 1px solid $ng-select-dropdown-border; + box-shadow: 0 1px 0 $ng-dropdown-shadow; + left: 0; + &.ng-select-top { + bottom: 100%; + border-top-right-radius: $ng-select-border-radius; + border-top-left-radius: $ng-select-border-radius; + border-bottom-color: $ng-select-border; + margin-bottom: -1px; + .ng-dropdown-panel-items { + .ng-option { + &:first-child { + border-top-right-radius: $ng-select-border-radius; + border-top-left-radius: $ng-select-border-radius; + } + } + } + } + &.ng-select-right { + left: 100%; + top: 0; + border-top-right-radius: $ng-select-border-radius; + border-bottom-right-radius: $ng-select-border-radius; + border-bottom-left-radius: $ng-select-border-radius; + border-bottom-color: $ng-select-border; + margin-bottom: -1px; + .ng-dropdown-panel-items { + .ng-option { + &:first-child { + border-top-right-radius: $ng-select-border-radius; + } + } + } + } + &.ng-select-bottom { + top: 100%; + border-bottom-right-radius: $ng-select-border-radius; + border-bottom-left-radius: $ng-select-border-radius; + border-top-color: $ng-select-border; + margin-top: -1px; + .ng-dropdown-panel-items { + .ng-option { + &:last-child { + border-bottom-right-radius: $ng-select-border-radius; + border-bottom-left-radius: $ng-select-border-radius; + } + } + } + } + &.ng-select-left { + left: -100%; + top: 0; + border-top-left-radius: $ng-select-border-radius; + border-bottom-right-radius: $ng-select-border-radius; + border-bottom-left-radius: $ng-select-border-radius; + border-bottom-color: $ng-select-border; + margin-bottom: -1px; + .ng-dropdown-panel-items { + .ng-option { + &:first-child { + border-top-left-radius: $ng-select-border-radius; + } + } + } + } + .ng-dropdown-header { + border-bottom: 1px solid $ng-select-border; + padding: 5px 7px; + } + .ng-dropdown-footer { + border-top: 1px solid $ng-select-border; + padding: 5px 7px; + } + .ng-dropdown-panel-items { + .ng-optgroup { + user-select: none; + padding: 8px 10px; + font-weight: 500; + color: $ng-select-dropdown-optgroup-text; + cursor: pointer; + &.ng-option-disabled { + cursor: default; + } + &.ng-option-marked { + background-color: $ng-select-marked; + } + &.ng-option-selected, + &.ng-option-selected.ng-option-marked { + color: $ng-select-dropdown-optgroup-marked; + background-color: $ng-select-selected; + font-weight: 600; + } + } + .ng-option { + background-color: $ng-select-dropdown-option-bg; + color: $ng-select-dropdown-option-text; + padding: 8px 10px; + &.ng-option-selected, + &.ng-option-selected.ng-option-marked { + color: $ng-select-selected-text; + background-color: $ng-select-selected; + .ng-option-label { + font-weight: 600; + } + } + &.ng-option-marked { + background-color: $ng-select-marked; + color: $ng-select-marked-text; + } + &.ng-option-disabled { + color: $ng-select-dropdown-option-disabled; + } + &.ng-option-child { + padding-left: 22px; + @include rtl { + padding-right: 22px; + padding-left: 0; + } + } + .ng-tag-label { + font-size: 80%; + font-weight: 400; + padding-right: 5px; + @include rtl { + padding-left: 5px; + padding-right: 0; + } + } + } + } + + @include rtl { + direction: rtl; + text-align: right; + } +} diff --git a/libs/components/src/styles.scss b/libs/components/src/styles.scss index 18ee0ada983..510b7ac88ae 100644 --- a/libs/components/src/styles.scss +++ b/libs/components/src/styles.scss @@ -8,40 +8,42 @@ $card-icons-base: "../images/cards/"; @import "@angular/cdk/overlay-prebuilt.css"; -@import "~bootstrap/scss/_functions"; -@import "~bootstrap/scss/_variables"; -@import "~bootstrap/scss/_mixins"; -@import "~bootstrap/scss/_root"; -@import "~bootstrap/scss/_reboot"; -@import "~bootstrap/scss/_type"; -@import "~bootstrap/scss/_images"; -@import "~bootstrap/scss/_code"; -@import "~bootstrap/scss/_grid"; -@import "~bootstrap/scss/_tables"; -@import "~bootstrap/scss/_forms"; -@import "~bootstrap/scss/_buttons"; -@import "~bootstrap/scss/_transitions"; -@import "~bootstrap/scss/_dropdown"; -@import "~bootstrap/scss/_button-group"; -@import "~bootstrap/scss/_input-group"; -@import "~bootstrap/scss/_custom-forms"; -@import "~bootstrap/scss/_nav"; -@import "~bootstrap/scss/_navbar"; -@import "~bootstrap/scss/_card"; -@import "~bootstrap/scss/_breadcrumb"; -@import "~bootstrap/scss/_pagination"; -@import "~bootstrap/scss/_badge"; -@import "~bootstrap/scss/_jumbotron"; -@import "~bootstrap/scss/_alert"; -@import "~bootstrap/scss/_progress"; -@import "~bootstrap/scss/_media"; -@import "~bootstrap/scss/_list-group"; -@import "~bootstrap/scss/_close"; -//@import "~bootstrap/scss/_toasts"; -@import "~bootstrap/scss/_modal"; -@import "~bootstrap/scss/_tooltip"; -@import "~bootstrap/scss/_popover"; -@import "~bootstrap/scss/_carousel"; -@import "~bootstrap/scss/_spinners"; -@import "~bootstrap/scss/_utilities"; -@import "~bootstrap/scss/_print"; +@import "bootstrap/scss/_functions"; +@import "bootstrap/scss/_variables"; +@import "bootstrap/scss/_mixins"; +@import "bootstrap/scss/_root"; +@import "bootstrap/scss/_reboot"; +@import "bootstrap/scss/_type"; +@import "bootstrap/scss/_images"; +@import "bootstrap/scss/_code"; +@import "bootstrap/scss/_grid"; +@import "bootstrap/scss/_tables"; +@import "bootstrap/scss/_forms"; +@import "bootstrap/scss/_buttons"; +@import "bootstrap/scss/_transitions"; +@import "bootstrap/scss/_dropdown"; +@import "bootstrap/scss/_button-group"; +@import "bootstrap/scss/_input-group"; +@import "bootstrap/scss/_custom-forms"; +@import "bootstrap/scss/_nav"; +@import "bootstrap/scss/_navbar"; +@import "bootstrap/scss/_card"; +@import "bootstrap/scss/_breadcrumb"; +@import "bootstrap/scss/_pagination"; +@import "bootstrap/scss/_badge"; +@import "bootstrap/scss/_jumbotron"; +@import "bootstrap/scss/_alert"; +@import "bootstrap/scss/_progress"; +@import "bootstrap/scss/_media"; +@import "bootstrap/scss/_list-group"; +@import "bootstrap/scss/_close"; +//@import "bootstrap/scss/_toasts"; +@import "bootstrap/scss/_modal"; +@import "bootstrap/scss/_tooltip"; +@import "bootstrap/scss/_popover"; +@import "bootstrap/scss/_carousel"; +@import "bootstrap/scss/_spinners"; +@import "bootstrap/scss/_utilities"; +@import "bootstrap/scss/_print"; + +@import "multi-select/scss/bw.theme.scss"; diff --git a/package-lock.json b/package-lock.json index 059f49ffcc3..129ac3a1195 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "@koa/router": "^10.1.1", "@microsoft/signalr": "^6.0.7", "@microsoft/signalr-protocol-msgpack": "^6.0.7", + "@ng-select/ng-select": "^9.0.2", "big-integer": "^1.6.51", "bootstrap": "4.6.0", "braintree-web-drop-in": "^1.33.1", @@ -5216,6 +5217,23 @@ "url": "https://github.com/sponsors/Brooooooklyn" } }, + "node_modules/@ng-select/ng-select": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-9.0.2.tgz", + "integrity": "sha512-xdNiz/kgkMWYW1qFtk/337xDk/cmfEbSVtTFxWIM2OnIX1XsQOnTlGiBYces1TsMfqS68HjAvljEkj8QIGN2Lg==", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 12.20.0", + "npm": ">= 6.0.0" + }, + "peerDependencies": { + "@angular/common": "<15.0.0", + "@angular/core": "<15.0.0", + "@angular/forms": "<15.0.0" + } + }, "node_modules/@ngtools/webpack": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.0.tgz", @@ -46775,6 +46793,14 @@ "integrity": "sha512-Rscrg0BO4AKqFX2mKd8C68Wh3TkSHXqF2PZp+utVoLV+PTQnGVMwHedtIHBcFoq1Ij3I4yETMgSFSdAR+lp++Q==", "dev": true }, + "@ng-select/ng-select": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@ng-select/ng-select/-/ng-select-9.0.2.tgz", + "integrity": "sha512-xdNiz/kgkMWYW1qFtk/337xDk/cmfEbSVtTFxWIM2OnIX1XsQOnTlGiBYces1TsMfqS68HjAvljEkj8QIGN2Lg==", + "requires": { + "tslib": "^2.3.1" + } + }, "@ngtools/webpack": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.0.tgz", @@ -47213,7 +47239,7 @@ "postcss": "^7.0.36", "postcss-loader": "^4.2.0", "raw-loader": "^4.0.2", - "react": "^18.0.0", + "react": "^16.14.0", "react-dom": "^16.14.0", "read-pkg-up": "^7.0.1", "regenerator-runtime": "^0.13.7", diff --git a/package.json b/package.json index 0260152ce47..2325d25e1ef 100644 --- a/package.json +++ b/package.json @@ -152,6 +152,7 @@ "@koa/router": "^10.1.1", "@microsoft/signalr": "^6.0.7", "@microsoft/signalr-protocol-msgpack": "^6.0.7", + "@ng-select/ng-select": "^9.0.2", "big-integer": "^1.6.51", "bootstrap": "4.6.0", "braintree-web-drop-in": "^1.33.1", From c8e4f88379b074c125555a849a09c2d8f709d476 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ch=C4=99ci=C5=84ski?= Date: Tue, 11 Oct 2022 16:35:25 +0200 Subject: [PATCH 18/82] [DEVOPS-1014] Fix desktop autobump workflow (#3736) * Fix desktop autobump workflow * Fix desktop autobump workflow accoring to vince suggestions in mobile * Update ubuntu version --- .github/workflows/version-auto-bump.yml | 30 ++++++++++++------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/.github/workflows/version-auto-bump.yml b/.github/workflows/version-auto-bump.yml index 4c1b0f6e8f1..29118a0a9fc 100644 --- a/.github/workflows/version-auto-bump.yml +++ b/.github/workflows/version-auto-bump.yml @@ -12,7 +12,7 @@ defaults: jobs: setup: name: "Setup" - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 outputs: version_number: ${{ steps.version.outputs.new-version }} if: contains(github.event.release.tag, 'desktop') @@ -20,22 +20,23 @@ jobs: - name: Checkout Branch uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 - - name: Get version to bump + - name: Calculate bumped version id: version env: - RELEASE_TAG: ${{ github.event.release.tag }} + RELEASE_TAG: ${{ github.event.release.tag_name }} run: | + CURR_MAJOR=$(echo $RELEASE_TAG | sed -r 's/v([0-9]{4}\.[0-9]{1,2})\.([0-9]{1,2})/\1/') + CURR_PATCH=$(echo $RELEASE_TAG | sed -r 's/v([0-9]{4}\.[0-9]{1,2})\.([0-9]{1,2})/\2/') + echo "Current Patch: $CURR_PATCH" - CURR_MAJOR=$(echo $RELEASE_TAG | sed -r 's/desktop-v([0-9]{4}\.[0-9]\.)([0-9])/\1/') - CURR_VER=$(echo $RELEASE_TAG | sed -r 's/desktop-v([0-9]{4}\.[0-9]\.)([0-9])/\2/') - echo $CURR_VER - ((CURR_VER++)) - NEW_VER=$CURR_MAJOR$CURR_VER + NEW_PATCH=$((CURR_PATCH++)) + NEW_VER=$CURR_MAJOR.$NEW_PATCH + echo "New Version: $NEW_VER" echo "::set-output name=new-version::$NEW_VER" trigger_version_bump: name: "Trigger desktop version bump workflow" - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 needs: - setup steps: @@ -46,13 +47,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRET: "github-pat-bitwarden-devops-bot-repo-scope" - run: | - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $SECRET --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$SECRET::$VALUE" + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "github-pat-bitwarden-devops-bot-repo-scope" - name: Call GitHub API to trigger workflow bump env: From a027ee5a08476b1ce5cf2dd76fc4ac043dde9ff9 Mon Sep 17 00:00:00 2001 From: Vince Grassia <593223+vgrassia@users.noreply.github.com> Date: Tue, 11 Oct 2022 10:46:36 -0400 Subject: [PATCH 19/82] DEVOPS-915 - Automate Staged Rollouts for Desktop (#3704) --- .github/workflows/build-web.yml | 6 +- .github/workflows/release-desktop.yml | 71 ++++++------ .github/workflows/staged-rollout-desktop.yml | 114 ++++++++++++++++++- 3 files changed, 145 insertions(+), 46 deletions(-) diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml index 675f5bbc55a..85b6bdf158c 100644 --- a/.github/workflows/build-web.yml +++ b/.github/workflows/build-web.yml @@ -370,8 +370,8 @@ jobs: - cloc - setup - build-artifacts - - build-containers - build-commercial-selfhost-image + - build-containers - crowdin-push steps: - name: Check if any job failed @@ -381,7 +381,7 @@ jobs: SETUP_STATUS: ${{ needs.setup.result }} ARTIFACT_STATUS: ${{ needs.build-artifacts.result }} BUILD_SELFHOST_STATUS: ${{ needs.build-commercial-selfhost-image.result }} - BUILD_QA_STATUS: ${{ needs.build-qa.result }} + BUILD_CONTAINERS_STATUS: ${{ needs.build-containers.result }} CROWDIN_PUSH_STATUS: ${{ needs.crowdin-push.result }} run: | if [ "$CLOC_STATUS" = "failure" ]; then @@ -392,7 +392,7 @@ jobs: exit 1 elif [ "$BUILD_SELFHOST_STATUS" = "failure" ]; then exit 1 - elif [ "$BUILD_QA_STATUS" = "failure" ]; then + elif [ "$BUILD_CONTAINERS_STATUS" = "failure" ]; then exit 1 elif [ "$CROWDIN_PUSH_STATUS" = "failure" ]; then exit 1 diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml index 85e9122b335..247b59ea43d 100644 --- a/.github/workflows/release-desktop.yml +++ b/.github/workflows/release-desktop.yml @@ -13,13 +13,18 @@ on: - Initial Release - Redeploy - Dry Run + rollout_percentage: + description: 'Staged Rollout Percentage' + required: true + default: '10' + type: string snap_publish: - description: 'Publish to snap store' + description: 'Publish to Snap store' required: true default: true type: boolean choco_publish: - description: 'Publish to chocolatey store' + description: 'Publish to Chocolatey store' required: true default: true type: boolean @@ -93,23 +98,16 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - aws-electron-access-id, + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "aws-electron-access-id, aws-electron-access-key, aws-electron-bucket-name, r2-electron-access-id, r2-electron-access-key, r2-electron-bucket-name, - cf-prod-account - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + cf-prod-account" - name: Download all artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} @@ -135,6 +133,15 @@ jobs: working-directory: apps/desktop/artifacts run: mv Bitwarden-${{ env.PKG_VERSION }}-universal.pkg Bitwarden-${{ env.PKG_VERSION }}-universal.pkg.archive + - name: Set staged rollout percentage + env: + RELEASE_CHANNEL: ${{ steps.release-channel.outputs.channel }} + ROLLOUT_PCT: ${{ github.event.inputs.rollout_percentage }} + run: | + echo "stagingPercentage: ${ROLLOUT_PCT}" >> apps/desktop/artifacts/${RELEASE_CHANNEL}.yml + echo "stagingPercentage: ${ROLLOUT_PCT}" >> apps/desktop/artifacts/${RELEASE_CHANNEL}-linux.yml + echo "stagingPercentage: ${ROLLOUT_PCT}" >> apps/desktop/artifacts/${RELEASE_CHANNEL}-mac.yml + - name: Publish artifacts to S3 if: ${{ github.event.inputs.release_type != 'Dry Run' }} env: @@ -164,8 +171,8 @@ jobs: --quiet \ --endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com - - name: Create release - uses: ncipollo/release-action@95215a3cb6e6a1908b3c44e00b4fdb15548b1e09 # v2.8.5 + - name: Create Release + uses: ncipollo/release-action@95215a3cb6e6a1908b3c44e00b4fdb15548b1e09 if: ${{ steps.release-channel.outputs.channel == 'latest' && github.event.inputs.release_type != 'Dry Run' }} env: PKG_VERSION: ${{ steps.version.outputs.version }} @@ -236,17 +243,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - snapcraft-store-token - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "snapcraft-store-token" - name: Install Snap uses: samuelmeuli/action-snapcraft@10d7d0a84d9d86098b19f872257df314b0bd8e2d # v1.2.0 @@ -293,7 +293,7 @@ jobs: _PKG_VERSION: ${{ needs.setup.outputs.release-version }} steps: - name: Checkout Repo - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f # v2.3.4 + uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f - name: Print Environment run: | @@ -307,17 +307,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - cli-choco-api-key - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "cli-choco-api-key" - name: Setup Chocolatey shell: pwsh diff --git a/.github/workflows/staged-rollout-desktop.yml b/.github/workflows/staged-rollout-desktop.yml index 14f2b8e972b..bf6a21f286f 100644 --- a/.github/workflows/staged-rollout-desktop.yml +++ b/.github/workflows/staged-rollout-desktop.yml @@ -3,15 +3,121 @@ name: Staged Rollout Desktop on: workflow_dispatch: + inputs: + rollout_percentage: + description: 'Staged Rollout Percentage' + required: true + default: '10' + type: string defaults: run: shell: bash jobs: - setup: - name: Stub + rollout: + name: Update Rollout Percentage runs-on: ubuntu-22.04 + outputs: + release-version: ${{ steps.version.outputs.version }} + release-channel: ${{ steps.release-channel.outputs.channel }} steps: - - name: TEST - run: exit 0 + - name: Login to Azure + uses: Azure/login@ec3c14589bd3e9312b3cc8c41e6860e258df9010 + with: + creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "aws-electron-access-id, + aws-electron-access-key, + aws-electron-bucket-name, + r2-electron-access-id, + r2-electron-access-key, + r2-electron-bucket-name, + cf-prod-account" + + - name: Download channel update info files from S3 + env: + AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.aws-electron-access-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.aws-electron-access-key }} + AWS_DEFAULT_REGION: 'us-west-2' + AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.aws-electron-bucket-name }} + run: | + aws s3 cp $AWS_S3_BUCKET_NAME/desktop/latest.yml . \ + --quiet + aws s3 cp $AWS_S3_BUCKET_NAME/desktop/latest-linux.yml . \ + --quiet + aws s3 cp $AWS_S3_BUCKET_NAME/desktop/latest-mac.yml . \ + --quiet + + - name: Download channel update info files from R2 + env: + AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.r2-electron-access-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.r2-electron-access-key }} + AWS_DEFAULT_REGION: 'us-east-1' + AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.r2-electron-bucket-name }} + CF_ACCOUNT: ${{ steps.retrieve-secrets.outputs.cf-prod-account }} + run: | + aws s3 cp $AWS_S3_BUCKET_NAME/desktop/latest.yml . \ + --quiet \ + --endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com + aws s3 cp $AWS_S3_BUCKET_NAME/desktop/latest-linux.yml . \ + --quiet \ + --endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com + aws s3 cp $AWS_S3_BUCKET_NAME/desktop/latest-mac.yml . \ + --quiet \ + --endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com + + - name: Check new rollout percentage + env: + NEW_PCT: ${{ github.event.inputs.rollout_percentage }} + run: | + CURRENT_PCT=$(sed -r -n "s/stagingPercentage:\s([0-9]+)/\1/p" latest.yml) + echo "Current percentage: ${CURRENT_PCT}" + echo "New percentage: ${NEW_PCT}" + echo + if [ "$NEW_PCT" -le "$CURRENT_PCT" ]; then + echo "New percentage (${NEW_PCT}) must be higher than current percentage (${CURRENT_PCT})!" + echo + echo "If you want to pull a staged release because it hasn’t gone well, you must increment the version \ + number higher than your broken release. Because some of your users will be on the broken 1.0.1, \ + releasing a new 1.0.1 would result in them staying on a broken version.” + exit 1 + fi + + - name: Set staged rollout percentage + env: + ROLLOUT_PCT: ${{ github.event.inputs.rollout_percentage }} + run: | + sed -i -r "/stagingPercentage/s/[0-9]+/${ROLLOUT_PCT}/" latest.yml + sed -i -r "/stagingPercentage/s/[0-9]+/${ROLLOUT_PCT}/" latest-linux.yml + sed -i -r "/stagingPercentage/s/[0-9]+/${ROLLOUT_PCT}/" latest-mac.yml + + - name: Publish channel update info files to S3 + env: + AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.aws-electron-access-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.aws-electron-access-key }} + AWS_DEFAULT_REGION: 'us-west-2' + AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.aws-electron-bucket-name }} + run: | + aws s3 cp ./ $AWS_S3_BUCKET_NAME/desktop/ \ + --include "latest*.yml" \ + --acl "public-read" \ + --quiet + + - name: Publish channel update info files to R2 + env: + AWS_ACCESS_KEY_ID: ${{ steps.retrieve-secrets.outputs.r2-electron-access-id }} + AWS_SECRET_ACCESS_KEY: ${{ steps.retrieve-secrets.outputs.r2-electron-access-key }} + AWS_DEFAULT_REGION: 'us-east-1' + AWS_S3_BUCKET_NAME: ${{ steps.retrieve-secrets.outputs.r2-electron-bucket-name }} + CF_ACCOUNT: ${{ steps.retrieve-secrets.outputs.cf-prod-account }} + run: | + aws s3 cp ./ $AWS_S3_BUCKET_NAME/desktop/ \ + --include "latest*.yml" \ + --quiet \ + --endpoint-url https://${CF_ACCOUNT}.r2.cloudflarestorage.com From 4bfe44d30300867e5b527d4b7cfc4eec6cd1812b Mon Sep 17 00:00:00 2001 From: Matt Gibson Date: Tue, 11 Oct 2022 12:24:33 -0400 Subject: [PATCH 20/82] PS 1569 update on command listener (#3647) * Add windows to platform utils service Note, this will result in conflicts with several in-flight PRs, but is necessary for following commits. * Add necessary background service factories * Simplify autofill command * Remove noop event service --- .../browser/src/background/main.background.ts | 3 +- .../autofill-service.factory.ts | 37 +++++ .../cipher-service.factory.ts | 2 +- .../event-service.factory.ts | 40 +++++ .../platform-utils-service.factory.ts | 3 +- .../service_factories/totp-service.factory.ts | 31 ++++ .../src/listeners/onCommandListener.ts | 156 +++++------------- apps/browser/src/services/autofill.service.ts | 8 +- .../browserPlatformUtils.service.spec.ts | 2 +- .../services/browserPlatformUtils.service.ts | 19 ++- libs/common/src/services/noopEvent.service.ts | 24 --- 11 files changed, 170 insertions(+), 155 deletions(-) create mode 100644 apps/browser/src/background/service_factories/autofill-service.factory.ts create mode 100644 apps/browser/src/background/service_factories/event-service.factory.ts create mode 100644 apps/browser/src/background/service_factories/totp-service.factory.ts delete mode 100644 libs/common/src/services/noopEvent.service.ts diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index cf83b6e78d1..56c81ec5add 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -247,7 +247,8 @@ export default class MainBackground { return promise.then((result) => result.response === "unlocked"); } - } + }, + window ); this.i18nService = new I18nService(BrowserApi.getUILanguage(window)); this.encryptService = new EncryptService(this.cryptoFunctionService, this.logService, true); diff --git a/apps/browser/src/background/service_factories/autofill-service.factory.ts b/apps/browser/src/background/service_factories/autofill-service.factory.ts new file mode 100644 index 00000000000..1d67a2735be --- /dev/null +++ b/apps/browser/src/background/service_factories/autofill-service.factory.ts @@ -0,0 +1,37 @@ +import { AutofillService as AbstractAutoFillService } from "../../services/abstractions/autofill.service"; +import AutofillService from "../../services/autofill.service"; + +import { cipherServiceFactory, CipherServiceInitOptions } from "./cipher-service.factory"; +import { EventServiceInitOptions, eventServiceFactory } from "./event-service.factory"; +import { CachedServices, factory, FactoryOptions } from "./factory-options"; +import { logServiceFactory, LogServiceInitOptions } from "./log-service.factory"; +import { stateServiceFactory, StateServiceInitOptions } from "./state-service.factory"; +import { totpServiceFacotry, TotpServiceInitOptions } from "./totp-service.factory"; + +type AutoFillServiceOptions = FactoryOptions; + +export type AutoFillServiceInitOptions = AutoFillServiceOptions & + CipherServiceInitOptions & + StateServiceInitOptions & + TotpServiceInitOptions & + EventServiceInitOptions & + LogServiceInitOptions; + +export function autofillServiceFactory( + cache: { autofillService?: AbstractAutoFillService } & CachedServices, + opts: AutoFillServiceInitOptions +): Promise { + return factory( + cache, + "autofillService", + opts, + async () => + new AutofillService( + await cipherServiceFactory(cache, opts), + await stateServiceFactory(cache, opts), + await totpServiceFacotry(cache, opts), + await eventServiceFactory(cache, opts), + await logServiceFactory(cache, opts) + ) + ); +} diff --git a/apps/browser/src/background/service_factories/cipher-service.factory.ts b/apps/browser/src/background/service_factories/cipher-service.factory.ts index 149ac54fc82..03141f2c84f 100644 --- a/apps/browser/src/background/service_factories/cipher-service.factory.ts +++ b/apps/browser/src/background/service_factories/cipher-service.factory.ts @@ -44,7 +44,7 @@ export function cipherServiceFactory( await apiServiceFactory(cache, opts), await fileUploadServiceFactory(cache, opts), await i18nServiceFactory(cache, opts), - opts.cipherServiceOptions.searchServiceFactory === undefined + opts.cipherServiceOptions?.searchServiceFactory === undefined ? () => cache.searchService : opts.cipherServiceOptions.searchServiceFactory, await logServiceFactory(cache, opts), diff --git a/apps/browser/src/background/service_factories/event-service.factory.ts b/apps/browser/src/background/service_factories/event-service.factory.ts new file mode 100644 index 00000000000..61a82ebeb19 --- /dev/null +++ b/apps/browser/src/background/service_factories/event-service.factory.ts @@ -0,0 +1,40 @@ +import { EventService as AbstractEventService } from "@bitwarden/common/abstractions/event.service"; +import { EventService } from "@bitwarden/common/services/event.service"; + +import { apiServiceFactory, ApiServiceInitOptions } from "./api-service.factory"; +import { cipherServiceFactory, CipherServiceInitOptions } from "./cipher-service.factory"; +import { FactoryOptions, CachedServices, factory } from "./factory-options"; +import { logServiceFactory, LogServiceInitOptions } from "./log-service.factory"; +import { + organizationServiceFactory, + OrganizationServiceInitOptions, +} from "./organization-service.factory"; +import { stateServiceFactory, StateServiceInitOptions } from "./state-service.factory"; + +type EventServiceOptions = FactoryOptions; + +export type EventServiceInitOptions = EventServiceOptions & + ApiServiceInitOptions & + CipherServiceInitOptions & + StateServiceInitOptions & + LogServiceInitOptions & + OrganizationServiceInitOptions; + +export function eventServiceFactory( + cache: { eventService?: AbstractEventService } & CachedServices, + opts: EventServiceInitOptions +): Promise { + return factory( + cache, + "eventService", + opts, + async () => + new EventService( + await apiServiceFactory(cache, opts), + await cipherServiceFactory(cache, opts), + await stateServiceFactory(cache, opts), + await logServiceFactory(cache, opts), + await organizationServiceFactory(cache, opts) + ) + ); +} diff --git a/apps/browser/src/background/service_factories/platform-utils-service.factory.ts b/apps/browser/src/background/service_factories/platform-utils-service.factory.ts index 6d85f126361..da25e51ce0c 100644 --- a/apps/browser/src/background/service_factories/platform-utils-service.factory.ts +++ b/apps/browser/src/background/service_factories/platform-utils-service.factory.ts @@ -28,7 +28,8 @@ export function platformUtilsServiceFactory( new BrowserPlatformUtilsService( await messagingServiceFactory(cache, opts), opts.platformUtilsServiceOptions.clipboardWriteCallback, - opts.platformUtilsServiceOptions.biometricCallback + opts.platformUtilsServiceOptions.biometricCallback, + opts.platformUtilsServiceOptions.win ) ); } diff --git a/apps/browser/src/background/service_factories/totp-service.factory.ts b/apps/browser/src/background/service_factories/totp-service.factory.ts new file mode 100644 index 00000000000..fe2f5c74905 --- /dev/null +++ b/apps/browser/src/background/service_factories/totp-service.factory.ts @@ -0,0 +1,31 @@ +import { TotpService as AbstractTotpService } from "@bitwarden/common/abstractions/totp.service"; +import { TotpService } from "@bitwarden/common/services/totp.service"; + +import { + cryptoFunctionServiceFactory, + CryptoFunctionServiceInitOptions, +} from "./crypto-function-service.factory"; +import { CachedServices, factory, FactoryOptions } from "./factory-options"; +import { logServiceFactory, LogServiceInitOptions } from "./log-service.factory"; + +type TotpServiceOptions = FactoryOptions; + +export type TotpServiceInitOptions = TotpServiceOptions & + CryptoFunctionServiceInitOptions & + LogServiceInitOptions; + +export function totpServiceFacotry( + cache: { totpService?: AbstractTotpService } & CachedServices, + opts: TotpServiceInitOptions +): Promise { + return factory( + cache, + "totpService", + opts, + async () => + new TotpService( + await cryptoFunctionServiceFactory(cache, opts), + await logServiceFactory(cache, opts) + ) + ); +} diff --git a/apps/browser/src/listeners/onCommandListener.ts b/apps/browser/src/listeners/onCommandListener.ts index 2a33e91e578..294ea51a963 100644 --- a/apps/browser/src/listeners/onCommandListener.ts +++ b/apps/browser/src/listeners/onCommandListener.ts @@ -1,27 +1,15 @@ +import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStatus"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; import { GlobalState } from "@bitwarden/common/models/domain/globalState"; -import { AuthService } from "@bitwarden/common/services/auth.service"; -import { CipherService } from "@bitwarden/common/services/cipher.service"; -import { ConsoleLogService } from "@bitwarden/common/services/consoleLog.service"; -import { EncryptService } from "@bitwarden/common/services/encrypt.service"; -import { NoopEventService } from "@bitwarden/common/services/noopEvent.service"; -import { SearchService } from "@bitwarden/common/services/search.service"; -import { SettingsService } from "@bitwarden/common/services/settings.service"; -import { StateMigrationService } from "@bitwarden/common/services/stateMigration.service"; -import { WebCryptoFunctionService } from "@bitwarden/common/services/webCryptoFunction.service"; +import { authServiceFactory } from "../background/service_factories/auth-service.factory"; +import { autofillServiceFactory } from "../background/service_factories/autofill-service.factory"; +import { CachedServices } from "../background/service_factories/factory-options"; +import { logServiceFactory } from "../background/service_factories/log-service.factory"; +import { BrowserApi } from "../browser/browserApi"; import { AutoFillActiveTabCommand } from "../commands/autoFillActiveTabCommand"; import { Account } from "../models/account"; -import { StateService as AbstractStateService } from "../services/abstractions/state.service"; -import AutofillService from "../services/autofill.service"; -import { BrowserCryptoService } from "../services/browserCrypto.service"; -import BrowserLocalStorageService from "../services/browserLocalStorage.service"; -import BrowserPlatformUtilsService from "../services/browserPlatformUtils.service"; -import I18nService from "../services/i18n.service"; -import { KeyGenerationService } from "../services/keyGeneration.service"; -import { LocalBackedSessionStorageService } from "../services/localBackedSessionStorage.service"; -import { StateService } from "../services/state.service"; export const onCommandListener = async (command: string, tab: chrome.tabs.Tab) => { switch (command) { @@ -32,100 +20,44 @@ export const onCommandListener = async (command: string, tab: chrome.tabs.Tab) = }; const doAutoFillLogin = async (tab: chrome.tabs.Tab): Promise => { - const logService = new ConsoleLogService(false); - - const cryptoFunctionService = new WebCryptoFunctionService(self); - - const storageService = new BrowserLocalStorageService(); - - const secureStorageService = new BrowserLocalStorageService(); - - const memoryStorageService = new LocalBackedSessionStorageService( - new EncryptService(cryptoFunctionService, logService, false), - new KeyGenerationService(cryptoFunctionService) - ); - - const stateFactory = new StateFactory(GlobalState, Account); - - const stateMigrationService = new StateMigrationService( - storageService, - secureStorageService, - stateFactory - ); - - const stateService: AbstractStateService = new StateService( - storageService, - secureStorageService, - memoryStorageService, // AbstractStorageService - logService, - stateMigrationService, - stateFactory - ); - - await stateService.init(); - - const platformUtils = new BrowserPlatformUtilsService( - null, // MessagingService - null, // clipboardWriteCallback - null // biometricCallback - ); - - const cryptoService = new BrowserCryptoService( - cryptoFunctionService, - null, // AbstractEncryptService - platformUtils, - logService, - stateService - ); - - const settingsService = new SettingsService(stateService); - - const i18nService = new I18nService(chrome.i18n.getUILanguage()); - - await i18nService.init(); - - // Don't love this pt.1 - let searchService: SearchService = null; - - const cipherService = new CipherService( - cryptoService, - settingsService, - null, // ApiService - null, // FileUploadService, - i18nService, - () => searchService, // Don't love this pt.2 - logService, - stateService - ); - - // Don't love this pt.3 - searchService = new SearchService(cipherService, logService, i18nService); - - // TODO: Remove this before we encourage anyone to start using this - const eventService = new NoopEventService(); - - const autofillService = new AutofillService( - cipherService, - stateService, - null, // TotpService - eventService, - logService - ); - - const authService = new AuthService( - cryptoService, // CryptoService - null, // ApiService - null, // TokenService - null, // AppIdService - platformUtils, - null, // MessagingService - logService, - null, // KeyConnectorService - null, // EnvironmentService - stateService, - null, // TwoFactorService - i18nService - ); + const cachedServices: CachedServices = {}; + const opts = { + cryptoFunctionServiceOptions: { + win: self, + }, + encryptServiceOptions: { + logMacFailures: true, + }, + logServiceOptions: { + isDev: false, + }, + platformUtilsServiceOptions: { + clipboardWriteCallback: () => Promise.resolve(), + biometricCallback: () => Promise.resolve(false), + win: self, + }, + stateServiceOptions: { + stateFactory: new StateFactory(GlobalState, Account), + }, + stateMigrationServiceOptions: { + stateFactory: new StateFactory(GlobalState, Account), + }, + apiServiceOptions: { + logoutCallback: () => Promise.resolve(), + }, + keyConnectorServiceOptions: { + logoutCallback: () => Promise.resolve(), + }, + i18nServiceOptions: { + systemLanguage: BrowserApi.getUILanguage(self), + }, + cipherServiceOptions: { + searchServiceFactory: null as () => SearchService, // No dependence on search service + }, + }; + const logService = await logServiceFactory(cachedServices, opts); + const authService = await authServiceFactory(cachedServices, opts); + const autofillService = await autofillServiceFactory(cachedServices, opts); const authStatus = await authService.getAuthStatus(); if (authStatus < AuthenticationStatus.Unlocked) { diff --git a/apps/browser/src/services/autofill.service.ts b/apps/browser/src/services/autofill.service.ts index ff8eca93475..b403a2a679c 100644 --- a/apps/browser/src/services/autofill.service.ts +++ b/apps/browser/src/services/autofill.service.ts @@ -172,14 +172,10 @@ export default class AutofillService implements AutofillServiceInterface { } else { cipher = await this.cipherService.getLastUsedForUrl(tab.url, true); } - - if (cipher == null) { - return null; - } } - if (cipher.reprompt !== CipherRepromptType.None) { - return; + if (cipher == null || cipher.reprompt !== CipherRepromptType.None) { + return null; } const totpCode = await this.doAutoFill({ diff --git a/apps/browser/src/services/browserPlatformUtils.service.spec.ts b/apps/browser/src/services/browserPlatformUtils.service.spec.ts index 21034bcfa47..1f557dc7426 100644 --- a/apps/browser/src/services/browserPlatformUtils.service.spec.ts +++ b/apps/browser/src/services/browserPlatformUtils.service.spec.ts @@ -16,7 +16,7 @@ describe("Browser Utils Service", () => { let browserPlatformUtilsService: BrowserPlatformUtilsService; beforeEach(() => { (window as any).matchMedia = jest.fn().mockReturnValueOnce({}); - browserPlatformUtilsService = new BrowserPlatformUtilsService(null, null, null); + browserPlatformUtilsService = new BrowserPlatformUtilsService(null, null, null, self); }); afterEach(() => { diff --git a/apps/browser/src/services/browserPlatformUtils.service.ts b/apps/browser/src/services/browserPlatformUtils.service.ts index a9f1c35567d..48c305a91e7 100644 --- a/apps/browser/src/services/browserPlatformUtils.service.ts +++ b/apps/browser/src/services/browserPlatformUtils.service.ts @@ -19,7 +19,8 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService constructor( private messagingService: MessagingService, private clipboardWriteCallback: (clipboardValue: string, clearMs: number) => void, - private biometricCallback: () => Promise + private biometricCallback: () => Promise, + private win: Window & typeof globalThis ) {} getDevice(): DeviceType { @@ -33,8 +34,8 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService ) { this.deviceCache = DeviceType.FirefoxExtension; } else if ( - (self.opr && self.opr.addons) || - self.opera || + (!!this.win.opr && !!opr.addons) || + !!this.win.opera || navigator.userAgent.indexOf(" OPR/") >= 0 ) { this.deviceCache = DeviceType.OperaExtension; @@ -42,7 +43,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService this.deviceCache = DeviceType.EdgeExtension; } else if (navigator.userAgent.indexOf(" Vivaldi/") !== -1) { this.deviceCache = DeviceType.VivaldiExtension; - } else if (window.chrome && navigator.userAgent.indexOf(" Chrome/") !== -1) { + } else if (this.win.chrome && navigator.userAgent.indexOf(" Chrome/") !== -1) { this.deviceCache = DeviceType.ChromeExtension; } else if (navigator.userAgent.indexOf(" Safari/") !== -1) { this.deviceCache = DeviceType.SafariExtension; @@ -178,8 +179,8 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService } copyToClipboard(text: string, options?: any): void { - let win = window; - let doc = window.document; + let win = this.win; + let doc = this.win.document; if (options && (options.window || options.win)) { win = options.window || options.win; doc = win.document; @@ -238,8 +239,8 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService } async readFromClipboard(options?: any): Promise { - let win = window; - let doc = window.document; + let win = this.win; + let doc = this.win.document; if (options && (options.window || options.win)) { win = options.window || options.win; doc = win.document; @@ -335,7 +336,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService } sidebarViewName(): string { - if (window.chrome.sidebarAction && this.isFirefox()) { + if (this.win.chrome.sidebarAction && this.isFirefox()) { return "sidebar"; } else if (this.isOpera() && typeof opr !== "undefined" && opr.sidebarAction) { return "sidebar_panel"; diff --git a/libs/common/src/services/noopEvent.service.ts b/libs/common/src/services/noopEvent.service.ts deleted file mode 100644 index 9a49d5a8061..00000000000 --- a/libs/common/src/services/noopEvent.service.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { EventService } from "../abstractions/event.service"; -import { EventType } from "../enums/eventType"; - -/** - * If you want to use this, don't. - * If you think you should use that after the warning, don't. - */ -export class NoopEventService implements EventService { - constructor() { - if (chrome.runtime.getManifest().manifest_version !== 3) { - throw new Error("You are not allowed to use this when not in manifest_version 3"); - } - } - - collect(eventType: EventType, cipherId?: string, uploadImmediately?: boolean) { - return Promise.resolve(); - } - uploadEvents(userId?: string) { - return Promise.resolve(); - } - clearEvents(userId?: string) { - return Promise.resolve(); - } -} From ae5110aaeea99e8714be1236df00593e34974b28 Mon Sep 17 00:00:00 2001 From: Daniel James Smith Date: Tue, 11 Oct 2022 19:45:59 +0200 Subject: [PATCH 21/82] Fix linting issue caused by #3259 (#3743) --- libs/common/spec/services/policy.service.spec.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/common/spec/services/policy.service.spec.ts b/libs/common/spec/services/policy.service.spec.ts index 8329d38fe26..0423448180a 100644 --- a/libs/common/spec/services/policy.service.spec.ts +++ b/libs/common/spec/services/policy.service.spec.ts @@ -1,3 +1,4 @@ +// eslint-disable-next-line no-restricted-imports import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { BehaviorSubject, firstValueFrom } from "rxjs"; From fd5bd3744dd480569c2924a6ba80487237f5df69 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 11 Oct 2022 13:35:16 -0600 Subject: [PATCH 22/82] Bump Web version to 2022.10.0 (#3747) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- apps/web/package.json | 2 +- package-lock.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/web/package.json b/apps/web/package.json index cbf65094dd7..4ddd9cb05b5 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "@bitwarden/web-vault", - "version": "2022.9.2", + "version": "2022.10.0", "scripts": { "build:oss": "webpack", "build:bit": "webpack -c ../../bitwarden_license/bit-web/webpack.config.js", diff --git a/package-lock.json b/package-lock.json index 129ac3a1195..66c638abce4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -234,7 +234,7 @@ }, "apps/web": { "name": "@bitwarden/web-vault", - "version": "2022.9.2" + "version": "2022.10.0" }, "libs/angular": { "name": "@bitwarden/angular", @@ -47239,7 +47239,7 @@ "postcss": "^7.0.36", "postcss-loader": "^4.2.0", "raw-loader": "^4.0.2", - "react": "^16.14.0", + "react": "^18.0.0", "react-dom": "^16.14.0", "read-pkg-up": "^7.0.1", "regenerator-runtime": "^0.13.7", From e290492d14f858197647c22226a26d591cebb173 Mon Sep 17 00:00:00 2001 From: Justin Baur <19896123+justindbaur@users.noreply.github.com> Date: Tue, 11 Oct 2022 15:39:20 -0400 Subject: [PATCH 23/82] [PS-1569] Fix spelling of totpServiceFactory (#3746) --- .../background/service_factories/autofill-service.factory.ts | 4 ++-- .../src/background/service_factories/totp-service.factory.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/browser/src/background/service_factories/autofill-service.factory.ts b/apps/browser/src/background/service_factories/autofill-service.factory.ts index 1d67a2735be..a14cd1dd8c3 100644 --- a/apps/browser/src/background/service_factories/autofill-service.factory.ts +++ b/apps/browser/src/background/service_factories/autofill-service.factory.ts @@ -6,7 +6,7 @@ import { EventServiceInitOptions, eventServiceFactory } from "./event-service.fa import { CachedServices, factory, FactoryOptions } from "./factory-options"; import { logServiceFactory, LogServiceInitOptions } from "./log-service.factory"; import { stateServiceFactory, StateServiceInitOptions } from "./state-service.factory"; -import { totpServiceFacotry, TotpServiceInitOptions } from "./totp-service.factory"; +import { totpServiceFactory, TotpServiceInitOptions } from "./totp-service.factory"; type AutoFillServiceOptions = FactoryOptions; @@ -29,7 +29,7 @@ export function autofillServiceFactory( new AutofillService( await cipherServiceFactory(cache, opts), await stateServiceFactory(cache, opts), - await totpServiceFacotry(cache, opts), + await totpServiceFactory(cache, opts), await eventServiceFactory(cache, opts), await logServiceFactory(cache, opts) ) diff --git a/apps/browser/src/background/service_factories/totp-service.factory.ts b/apps/browser/src/background/service_factories/totp-service.factory.ts index fe2f5c74905..07556489de5 100644 --- a/apps/browser/src/background/service_factories/totp-service.factory.ts +++ b/apps/browser/src/background/service_factories/totp-service.factory.ts @@ -14,7 +14,7 @@ export type TotpServiceInitOptions = TotpServiceOptions & CryptoFunctionServiceInitOptions & LogServiceInitOptions; -export function totpServiceFacotry( +export function totpServiceFactory( cache: { totpService?: AbstractTotpService } & CachedServices, opts: TotpServiceInitOptions ): Promise { From e7b2dbf486af7e26b0b741455aaa985be2a07c26 Mon Sep 17 00:00:00 2001 From: mimartin12 <77340197+mimartin12@users.noreply.github.com> Date: Tue, 11 Oct 2022 14:27:11 -0600 Subject: [PATCH 24/82] Remove unzip step (#3749) --- .github/workflows/release-web.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml index e52f6d5aa3a..baf6d031303 100644 --- a/.github/workflows/release-web.yml +++ b/.github/workflows/release-web.yml @@ -172,11 +172,6 @@ jobs: branch: master artifacts: web-*-cloud-COMMERCIAL.zip - # This should result in a build directory in the current working directory - - name: Unzip build asset - working-directory: apps/web - run: unzip web-*-cloud-COMMERCIAL.zip - - name: Checkout Repo uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 with: From 7f62c5c54fc37379b71da7f2d97145ab1b8ad235 Mon Sep 17 00:00:00 2001 From: mimartin12 <77340197+mimartin12@users.noreply.github.com> Date: Tue, 11 Oct 2022 14:38:18 -0600 Subject: [PATCH 25/82] Remove unzip step (#3750) --- .github/workflows/release-web.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml index baf6d031303..2fa57d9db7c 100644 --- a/.github/workflows/release-web.yml +++ b/.github/workflows/release-web.yml @@ -167,7 +167,7 @@ jobs: uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-web.yml - path: apps/web + path: apps/web/build workflow_conclusion: success branch: master artifacts: web-*-cloud-COMMERCIAL.zip From 96aba0f994d640b94084d45a5f7cf38939bc28b8 Mon Sep 17 00:00:00 2001 From: mimartin12 <77340197+mimartin12@users.noreply.github.com> Date: Tue, 11 Oct 2022 14:45:58 -0600 Subject: [PATCH 26/82] Update Dry Run step and artifact path (#3751) --- .github/workflows/release-web.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml index 2fa57d9db7c..9976f46de92 100644 --- a/.github/workflows/release-web.yml +++ b/.github/workflows/release-web.yml @@ -157,12 +157,12 @@ jobs: uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-web.yml - path: apps/web + path: apps/web/build workflow_conclusion: success branch: ${{ github.ref_name }} artifacts: web-*-cloud-COMMERCIAL.zip - - name: Download latest cloud asset + - name: Download latest cloud asset (Dry Run) if: ${{ github.event.inputs.release_type == 'Dry Run' }} uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: From 94cfa2d0d3bc27d29b4953f16905b4de300d568c Mon Sep 17 00:00:00 2001 From: mimartin12 <77340197+mimartin12@users.noreply.github.com> Date: Tue, 11 Oct 2022 17:57:19 -0600 Subject: [PATCH 27/82] Update artifact steps in Web build worklfow (#3756) --- .github/workflows/build-web.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml index 85b6bdf158c..5122b24fe8a 100644 --- a/.github/workflows/build-web.yml +++ b/.github/workflows/build-web.yml @@ -119,11 +119,15 @@ jobs: working-directory: apps/web run: npm run ${{ matrix.npm_command }} + - name: Package artifact + working-directory: apps/web + run: zip -r web-${{ env._VERSION }}-${{ matrix.name }}.zip build + - name: Upload ${{ matrix.name }} artifact uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 with: name: web-${{ env._VERSION }}-${{ matrix.name }}.zip - path: apps/web/build + path: apps/web/web-${{ env._VERSION }}-${{ matrix.name }}.zip if-no-files-found: error build-commercial-selfhost-image: @@ -153,7 +157,11 @@ jobs: uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: name: web-${{ env._VERSION }}-selfhosted-COMMERCIAL.zip - path: apps/web/build + path: apps/web + + - name: Extract artifact + working-directory: apps/web + run: unzip web-${{ env._VERSION }}-selfhosted-COMMERCIAL.zip - name: Build Docker image working-directory: apps/web @@ -268,7 +276,11 @@ jobs: uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: name: web-${{ env._VERSION }}-${{ matrix.artifact_name }}.zip - path: apps/web/build + path: apps/web + + - name: Extract artifact + working-directory: apps/web + run: unzip web-${{ env._VERSION }}-${{ matrix.artifact_name }}.zip - name: Build Docker image working-directory: apps/web From ddfa49cf3020a76833150013d75fa5c866b0a043 Mon Sep 17 00:00:00 2001 From: Danielle Flinn <43477473+danielleflinn@users.noreply.github.com> Date: Tue, 11 Oct 2022 17:38:52 -0700 Subject: [PATCH 28/82] [PS-1531]Sentence case browser (#3578) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Copy updated. Transition browser strings to use sentence case for all UI elements, except the following terms: • Branded Names: Provider(s) + Provider Portal, Send(s) + Send, Directory Connector • Plan Names: Premium, Families, Teams, Enterprise --- apps/browser/src/_locales/en/messages.json | 348 ++++++++++----------- 1 file changed, 174 insertions(+), 174 deletions(-) diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index 3749bb4ae00..e6d8a6b7482 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -14,13 +14,13 @@ "message": "Log in or create a new account to access your secure vault." }, "createAccount": { - "message": "Create Account" + "message": "Create account" }, "login": { - "message": "Log In" + "message": "Log in" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "Enterprise single sign-on" }, "cancel": { "message": "Cancel" @@ -32,10 +32,10 @@ "message": "Submit" }, "emailAddress": { - "message": "Email Address" + "message": "Email address" }, "masterPass": { - "message": "Master Password" + "message": "Master password" }, "masterPassDesc": { "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." @@ -44,10 +44,10 @@ "message": "A master password hint can help you remember your password if you forget it." }, "reTypeMasterPass": { - "message": "Re-type Master Password" + "message": "Re-type master password" }, "masterPassHint": { - "message": "Master Password Hint (optional)" + "message": "Master password hint (optional)" }, "tab": { "message": "Tab" @@ -56,10 +56,10 @@ "message": "Vault" }, "myVault": { - "message": "My Vault" + "message": "My vault" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "Tools" @@ -68,37 +68,37 @@ "message": "Settings" }, "currentTab": { - "message": "Current Tab" + "message": "Current tab" }, "copyPassword": { - "message": "Copy Password" + "message": "Copy password" }, "copyNote": { - "message": "Copy Note" + "message": "Copy note" }, "copyUri": { "message": "Copy URI" }, "copyUsername": { - "message": "Copy Username" + "message": "Copy username" }, "copyNumber": { - "message": "Copy Number" + "message": "Copy number" }, "copySecurityCode": { - "message": "Copy Security Code" + "message": "Copy security code" }, "autoFill": { "message": "Auto-fill" }, "generatePasswordCopied": { - "message": "Generate Password (copied)" + "message": "Generate password (copied)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { - "message": "No matching logins." + "message": "No matching logins" }, "unlockVaultMenu": { "message": "Unlock your vault" @@ -110,13 +110,13 @@ "message": "There are no logins available to auto-fill for the current browser tab." }, "addLogin": { - "message": "Add a Login" + "message": "Add a login" }, "addItem": { - "message": "Add Item" + "message": "Add item" }, "passwordHint": { - "message": "Password Hint" + "message": "Password hint" }, "enterEmailToGetHint": { "message": "Enter your account email address to receive your master password hint." @@ -131,13 +131,13 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { - "message": "Code Sent" + "message": "Code sent" }, "verificationCode": { - "message": "Verification Code" + "message": "Verification code" }, "confirmIdentity": { "message": "Confirm your identity to continue." @@ -175,16 +175,16 @@ "message": "Move" }, "addFolder": { - "message": "Add Folder" + "message": "Add folder" }, "name": { "message": "Name" }, "editFolder": { - "message": "Edit Folder" + "message": "Edit folder" }, "deleteFolder": { - "message": "Delete Folder" + "message": "Delete folder" }, "folders": { "message": "Folders" @@ -199,13 +199,13 @@ "message": "Sync" }, "syncVaultNow": { - "message": "Sync Vault Now" + "message": "Sync vault now" }, "lastSync": { - "message": "Last Sync:" + "message": "Last sync:" }, "passGen": { - "message": "Password Generator" + "message": "Password generator" }, "generator": { "message": "Generator", @@ -224,10 +224,10 @@ "message": "Select" }, "generatePassword": { - "message": "Generate Password" + "message": "Generate password" }, "regeneratePassword": { - "message": "Regenerate Password" + "message": "Regenerate password" }, "options": { "message": "Options" @@ -245,29 +245,29 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { - "message": "Number of Words" + "message": "Number of words" }, "wordSeparator": { - "message": "Word Separator" + "message": "Word separator" }, "capitalize": { "message": "Capitalize", "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Include Number" + "message": "Include number" }, "minNumbers": { - "message": "Minimum Numbers" + "message": "Minimum numbers" }, "minSpecial": { - "message": "Minimum Special" + "message": "Minimum special" }, "avoidAmbChar": { - "message": "Avoid Ambiguous Characters" + "message": "Avoid ambiguous characters" }, "searchVault": { "message": "Search vault" @@ -282,7 +282,7 @@ "message": "There are no items to list." }, "itemInformation": { - "message": "Item Information" + "message": "Item information" }, "username": { "message": "Username" @@ -303,16 +303,16 @@ "message": "Note" }, "editItem": { - "message": "Edit Item" + "message": "Edit item" }, "folder": { "message": "Folder" }, "deleteItem": { - "message": "Delete Item" + "message": "Delete item" }, "viewItem": { - "message": "View Item" + "message": "View item" }, "launch": { "message": "Launch" @@ -321,7 +321,7 @@ "message": "Website" }, "toggleVisibility": { - "message": "Toggle Visibility" + "message": "Toggle visibility" }, "manage": { "message": "Manage" @@ -339,7 +339,7 @@ "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "Your vault is locked. Verify your identity to continue." @@ -482,28 +482,28 @@ "message": "Name is required." }, "addedFolder": { - "message": "Added folder" + "message": "Folder added" }, "changeMasterPass": { - "message": "Change Master Password" + "message": "Change master password" }, "changeMasterPasswordConfirmation": { "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" }, "twoStepLoginConfirmation": { - "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be set up on the bitwarden.com web vault. Do you want to visit the website now?" }, "editedFolder": { - "message": "Edited folder" + "message": "Folder saved" }, "deleteFolderConfirmation": { "message": "Are you sure you want to delete this folder?" }, "deletedFolder": { - "message": "Deleted folder" + "message": "Folder deleted" }, "gettingStartedTutorial": { - "message": "Getting Started Tutorial" + "message": "Getting started tutorial" }, "gettingStartedTutorialVideo": { "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." @@ -534,25 +534,25 @@ "message": "New URI" }, "addedItem": { - "message": "Added item" + "message": "Item added" }, "editedItem": { - "message": "Edited item" + "message": "Item saved" }, "deleteItemConfirmation": { "message": "Do you really want to send to the trash?" }, "deletedItem": { - "message": "Sent item to trash" + "message": "Item sent to trash" }, "overwritePassword": { - "message": "Overwrite Password" + "message": "Overwrite password" }, "overwritePasswordConfirmation": { "message": "Are you sure you want to overwrite the current password?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -567,7 +567,7 @@ "message": "Search type" }, "noneFolder": { - "message": "No Folder", + "message": "No folder", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -649,14 +649,14 @@ "message": "Export vault" }, "fileFormat": { - "message": "File Format" + "message": "File format" }, "warning": { "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirm vault export" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "Share" @@ -705,13 +705,13 @@ "message": "Learn more" }, "authenticatorKeyTotp": { - "message": "Authenticator Key (TOTP)" + "message": "Authenticator key (TOTP)" }, "verificationCodeTotp": { - "message": "Verification Code (TOTP)" + "message": "Verification code (TOTP)" }, "copyVerificationCode": { - "message": "Copy Verification Code" + "message": "Copy verification code" }, "attachments": { "message": "Attachments" @@ -723,28 +723,28 @@ "message": "Are you sure you want to delete this attachment?" }, "deletedAttachment": { - "message": "Deleted attachment" + "message": "Attachment deleted" }, "newAttachment": { - "message": "Add New Attachment" + "message": "Add new attachment" }, "noAttachments": { "message": "No attachments." }, "attachmentSaved": { - "message": "The attachment has been saved." + "message": "Attachment saved" }, "file": { "message": "File" }, "selectFile": { - "message": "Select a file." + "message": "Select a file" }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, "featureUnavailable": { - "message": "Feature Unavailable" + "message": "Feature unavailable" }, "updateKey": { "message": "You cannot use this feature until you update your encryption key." @@ -753,19 +753,19 @@ "message": "Premium membership" }, "premiumManage": { - "message": "Manage Membership" + "message": "Manage membership" }, "premiumManageAlert": { "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumRefresh": { - "message": "Refresh Membership" + "message": "Refresh membership" }, "premiumNotCurrentMember": { - "message": "You are not currently a premium member." + "message": "You are not currently a Premium member." }, "premiumSignUpAndGet": { - "message": "Sign up for a premium membership and get:" + "message": "Sign up for a Premium membership and get:" }, "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." @@ -783,16 +783,16 @@ "message": "Priority customer support." }, "ppremiumSignUpFuture": { - "message": "All future premium features. More coming soon!" + "message": "All future Premium features. More coming soon!" }, "premiumPurchase": { "message": "Purchase Premium" }, "premiumPurchaseAlert": { - "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "You can purchase Premium membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumCurrentMember": { - "message": "You are a premium member!" + "message": "You are a Premium member!" }, "premiumCurrentMemberThanks": { "message": "Thank you for supporting Bitwarden." @@ -819,10 +819,10 @@ "message": "Ask for biometrics on launch" }, "premiumRequired": { - "message": "Premium Required" + "message": "Premium required" }, "premiumRequiredDesc": { - "message": "A premium membership is required to use this feature." + "message": "A Premium membership is required to use this feature." }, "enterVerificationCodeApp": { "message": "Enter the 6 digit verification code from your authenticator app." @@ -870,25 +870,25 @@ "message": "Authenticate WebAuthn" }, "loginUnavailable": { - "message": "Login Unavailable" + "message": "Login unavailable" }, "noTwoStepProviders": { - "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + "message": "This account has two-step login set up, however, none of the configured two-step providers are supported by this web browser." }, "noTwoStepProviders2": { "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." }, "twoStepOptions": { - "message": "Two-step Login Options" + "message": "Two-step login options" }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." }, "recoveryCodeTitle": { - "message": "Recovery Code" + "message": "Recovery code" }, "authenticatorAppTitle": { - "message": "Authenticator App" + "message": "Authenticator app" }, "authenticatorAppDesc": { "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "Email" @@ -921,13 +921,13 @@ "message": "Verification codes will be emailed to you." }, "selfHostedEnvironment": { - "message": "Self-hosted Environment" + "message": "Self-hosted environment" }, "selfHostedEnvironmentFooter": { "message": "Specify the base URL of your on-premises hosted Bitwarden installation." }, "customEnvironment": { - "message": "Custom Environment" + "message": "Custom environment" }, "customEnvironmentFooter": { "message": "For advanced users. You can specify the base URL of each service independently." @@ -939,19 +939,19 @@ "message": "API Server URL" }, "webVaultUrl": { - "message": "Web Vault Server URL" + "message": "Web vault server URL" }, "identityUrl": { - "message": "Identity Server URL" + "message": "Identity server URL" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "Notifications server URL" }, "iconsUrl": { - "message": "Icons Server URL" + "message": "Icons server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -999,16 +999,16 @@ "message": "Private mode support is experimental and some features are limited." }, "customFields": { - "message": "Custom Fields" + "message": "Custom fields" }, "copyValue": { - "message": "Copy Value" + "message": "Copy value" }, "value": { "message": "Value" }, "newCustomField": { - "message": "New Custom Field" + "message": "New custom field" }, "dragToSort": { "message": "Drag to sort" @@ -1049,7 +1049,7 @@ "message": "Indicate how many logins you have for the current web page." }, "cardholderName": { - "message": "Cardholder Name" + "message": "Cardholder name" }, "number": { "message": "Number" @@ -1058,10 +1058,10 @@ "message": "Brand" }, "expirationMonth": { - "message": "Expiration Month" + "message": "Expiration month" }, "expirationYear": { - "message": "Expiration Year" + "message": "Expiration year" }, "expiration": { "message": "Expiration" @@ -1103,7 +1103,7 @@ "message": "December" }, "securityCode": { - "message": "Security Code" + "message": "Security code" }, "ex": { "message": "ex." @@ -1124,31 +1124,31 @@ "message": "Dr" }, "firstName": { - "message": "First Name" + "message": "First name" }, "middleName": { - "message": "Middle Name" + "message": "Middle name" }, "lastName": { - "message": "Last Name" + "message": "Last name" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { - "message": "Identity Name" + "message": "Identity name" }, "company": { "message": "Company" }, "ssn": { - "message": "Social Security Number" + "message": "Social Security number" }, "passportNumber": { - "message": "Passport Number" + "message": "Passport number" }, "licenseNumber": { - "message": "License Number" + "message": "License number" }, "email": { "message": "Email" @@ -1175,7 +1175,7 @@ "message": "State / Province" }, "zipPostalCode": { - "message": "Zip / Postal Code" + "message": "Zip / Postal code" }, "country": { "message": "Country" @@ -1190,7 +1190,7 @@ "message": "Logins" }, "typeSecureNote": { - "message": "Secure Note" + "message": "Secure note" }, "typeCard": { "message": "Card" @@ -1199,7 +1199,7 @@ "message": "Identity" }, "passwordHistory": { - "message": "Password History" + "message": "Password history" }, "back": { "message": "Back" @@ -1226,7 +1226,7 @@ "message": "Logins" }, "secureNotes": { - "message": "Secure Notes" + "message": "Secure notes" }, "clear": { "message": "Clear", @@ -1270,7 +1270,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match Detection", + "message": "Match detection", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1278,10 +1278,10 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Toggle Options" + "message": "Toggle options" }, "toggleCurrentUris": { - "message": "Toggle Current URIs", + "message": "Toggle current URIs", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1296,7 +1296,7 @@ "message": "Types" }, "allItems": { - "message": "All Items" + "message": "All items" }, "noPasswordsInList": { "message": "There are no passwords to list." @@ -1312,7 +1312,7 @@ "description": "ex. Date this item was updated" }, "datePasswordUpdated": { - "message": "Password Updated", + "message": "Password updated", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1343,7 +1343,7 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Weak Master Password" + "message": "Weak master password" }, "weakMasterPasswordDesc": { "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" @@ -1371,7 +1371,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" @@ -1380,7 +1380,7 @@ "message": "You must select at least one collection." }, "cloneItem": { - "message": "Clone Item" + "message": "Clone item" }, "clone": { "message": "Clone" @@ -1403,40 +1403,40 @@ "message": "Search trash" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Permanently delete item" }, "permanentlyDeleteItemConfirmation": { "message": "Are you sure you want to permanently delete this item?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Item permanently deleted" }, "restoreItem": { - "message": "Restore Item" + "message": "Restore item" }, "restoreItemConfirmation": { "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored Item" + "message": "Item restored" }, "vaultTimeoutLogOutConfirmation": { "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Timeout action confirmation" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Auto-fill and save" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Item auto-filled and URI saved" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Item auto-filled " }, "setMasterPassword": { - "message": "Set Master Password" + "message": "Set master password" }, "masterPasswordPolicyInEffect": { "message": "One or more organization policies require your master password to meet the following requirements:" @@ -1505,19 +1505,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1535,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1559,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1625,10 +1625,10 @@ "message": "Delete" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,14 +1665,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1709,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1724,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1742,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1804,22 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1853,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1874,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1895,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1910,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1935,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1966,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message" : "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message" : "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +1999,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", From d442632fc2f68429728c6911b5afa4fe26f320e4 Mon Sep 17 00:00:00 2001 From: Joseph Flinn <58369717+joseph-flinn@users.noreply.github.com> Date: Tue, 11 Oct 2022 17:57:34 -0700 Subject: [PATCH 29/82] Add the cloudflare unzip back (#3758) --- .github/workflows/release-web.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml index 9976f46de92..41cb974f2ae 100644 --- a/.github/workflows/release-web.yml +++ b/.github/workflows/release-web.yml @@ -172,6 +172,10 @@ jobs: branch: master artifacts: web-*-cloud-COMMERCIAL.zip + - name: Unzip build asset + working-directory: apps/web + run: unzip web-*-cloud-COMMERCIAL.zip + - name: Checkout Repo uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 with: From a1b13f9b189aaddd2ab1e3f4df461fd75af30f4f Mon Sep 17 00:00:00 2001 From: Joseph Flinn <58369717+joseph-flinn@users.noreply.github.com> Date: Tue, 11 Oct 2022 18:05:12 -0700 Subject: [PATCH 30/82] Change the download target for cloudflare deploy (#3759) --- .github/workflows/release-web.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-web.yml b/.github/workflows/release-web.yml index 41cb974f2ae..2ba8ebbf882 100644 --- a/.github/workflows/release-web.yml +++ b/.github/workflows/release-web.yml @@ -157,7 +157,7 @@ jobs: uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-web.yml - path: apps/web/build + path: apps/web workflow_conclusion: success branch: ${{ github.ref_name }} artifacts: web-*-cloud-COMMERCIAL.zip @@ -167,7 +167,7 @@ jobs: uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-web.yml - path: apps/web/build + path: apps/web workflow_conclusion: success branch: master artifacts: web-*-cloud-COMMERCIAL.zip From 18bc209b7308c936c408f13072d85d3e27df8a97 Mon Sep 17 00:00:00 2001 From: David Frankel <42774874+frankeld@users.noreply.github.com> Date: Tue, 11 Oct 2022 21:25:27 -0400 Subject: [PATCH 31/82] [PS-1194] Display Creation Date in Clients (#3181) * Add CreationDate to common libs * Add CreationDate to Browser * Add CreationDate to CLI * Add CreationDate to Desktop * Add CreationDate to Web * Update tests Co-authored-by: Matt Gibson --- apps/browser/src/_locales/en/messages.json | 4 ++++ .../browser/src/popup/vault/view.component.html | 4 ++++ apps/cli/src/models/response/cipherResponse.ts | 4 ++++ apps/desktop/src/app/vault/view.component.html | 4 ++++ apps/desktop/src/locales/en/messages.json | 4 ++++ apps/web/src/app/vault/add-edit.component.html | 4 ++++ apps/web/src/locales/en/messages.json | 4 ++++ libs/common/spec/models/domain/cipher.spec.ts | 17 +++++++++++++++++ libs/common/src/models/data/cipherData.ts | 2 ++ libs/common/src/models/domain/cipher.ts | 3 +++ .../src/models/response/cipherResponse.ts | 2 ++ libs/common/src/models/view/cipherView.ts | 2 ++ 12 files changed, 54 insertions(+) diff --git a/apps/browser/src/_locales/en/messages.json b/apps/browser/src/_locales/en/messages.json index e6d8a6b7482..7a320e409e4 100644 --- a/apps/browser/src/_locales/en/messages.json +++ b/apps/browser/src/_locales/en/messages.json @@ -1311,6 +1311,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password updated", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/popup/vault/view.component.html b/apps/browser/src/popup/vault/view.component.html index 5fa5d2aba6c..ac117afd39d 100644 --- a/apps/browser/src/popup/vault/view.component.html +++ b/apps/browser/src/popup/vault/view.component.html @@ -622,6 +622,10 @@ {{ "dateUpdated" | i18n }}: {{ cipher.revisionDate | date: "medium" }} +
+ {{ "dateCreated" | i18n }}: + {{ cipher.creationDate | date: "medium" }} +
{{ "datePasswordUpdated" | i18n }}: {{ cipher.passwordRevisionDisplayDate | date: "medium" }} diff --git a/apps/cli/src/models/response/cipherResponse.ts b/apps/cli/src/models/response/cipherResponse.ts index a52084de772..9f44fbb38a8 100644 --- a/apps/cli/src/models/response/cipherResponse.ts +++ b/apps/cli/src/models/response/cipherResponse.ts @@ -11,6 +11,7 @@ export class CipherResponse extends CipherWithIdExport implements BaseResponse { object: string; attachments: AttachmentResponse[]; revisionDate: Date; + creationDate: Date; deletedDate: Date; passwordHistory: PasswordHistoryResponse[]; @@ -22,6 +23,9 @@ export class CipherResponse extends CipherWithIdExport implements BaseResponse { this.attachments = o.attachments.map((a) => new AttachmentResponse(a)); } this.revisionDate = o.revisionDate; + if (o.creationDate != null) { + this.creationDate = o.creationDate; + } this.deletedDate = o.deletedDate; if (o.passwordHistory != null) { this.passwordHistory = o.passwordHistory.map((h) => new PasswordHistoryResponse(h)); diff --git a/apps/desktop/src/app/vault/view.component.html b/apps/desktop/src/app/vault/view.component.html index 69201a18d67..b25c947a932 100644 --- a/apps/desktop/src/app/vault/view.component.html +++ b/apps/desktop/src/app/vault/view.component.html @@ -475,6 +475,10 @@ {{ "dateUpdated" | i18n }}: {{ cipher.revisionDate | date: "medium" }}
+
+ {{ "dateCreated" | i18n }}: + {{ cipher.creationDate | date: "medium" }} +
{{ "datePasswordUpdated" | i18n }}: {{ cipher.passwordRevisionDisplayDate | date: "medium" }} diff --git a/apps/desktop/src/locales/en/messages.json b/apps/desktop/src/locales/en/messages.json index 2c0967fa27d..b656c5b1964 100644 --- a/apps/desktop/src/locales/en/messages.json +++ b/apps/desktop/src/locales/en/messages.json @@ -1266,6 +1266,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/apps/web/src/app/vault/add-edit.component.html b/apps/web/src/app/vault/add-edit.component.html index bec9064b817..e936ef7ba62 100644 --- a/apps/web/src/app/vault/add-edit.component.html +++ b/apps/web/src/app/vault/add-edit.component.html @@ -787,6 +787,10 @@ {{ "dateUpdated" | i18n }}: {{ cipher.revisionDate | date: "medium" }}
+
+ {{ "dateCreated" | i18n }}: + {{ cipher.creationDate | date: "medium" }} +
{{ "datePasswordUpdated" | i18n }}: {{ cipher.passwordRevisionDisplayDate | date: "medium" }} diff --git a/apps/web/src/locales/en/messages.json b/apps/web/src/locales/en/messages.json index 755eb80b7ae..58215711d5e 100644 --- a/apps/web/src/locales/en/messages.json +++ b/apps/web/src/locales/en/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/libs/common/spec/models/domain/cipher.spec.ts b/libs/common/spec/models/domain/cipher.spec.ts index 763e57bb4e7..316a20e98f7 100644 --- a/libs/common/spec/models/domain/cipher.spec.ts +++ b/libs/common/spec/models/domain/cipher.spec.ts @@ -42,6 +42,7 @@ describe("Cipher DTO", () => { revisionDate: null, collectionIds: undefined, localData: null, + creationDate: null, deletedDate: null, reprompt: undefined, attachments: null, @@ -66,6 +67,7 @@ describe("Cipher DTO", () => { type: CipherType.Login, name: "EncryptedString", notes: "EncryptedString", + creationDate: "2022-01-01T12:00:00.000Z", deletedDate: null, reprompt: CipherRepromptType.None, login: { @@ -131,6 +133,7 @@ describe("Cipher DTO", () => { revisionDate: new Date("2022-01-31T12:00:00.000Z"), collectionIds: undefined, localData: null, + creationDate: new Date("2022-01-01T12:00:00.000Z"), deletedDate: null, reprompt: 0, login: { @@ -200,6 +203,7 @@ describe("Cipher DTO", () => { cipher.type = CipherType.Login; cipher.name = mockEnc("EncryptedString"); cipher.notes = mockEnc("EncryptedString"); + cipher.creationDate = new Date("2022-01-01T12:00:00.000Z"); cipher.deletedDate = null; cipher.reprompt = CipherRepromptType.None; @@ -230,6 +234,7 @@ describe("Cipher DTO", () => { passwordHistory: null, collectionIds: undefined, revisionDate: new Date("2022-01-31T12:00:00.000Z"), + creationDate: new Date("2022-01-01T12:00:00.000Z"), deletedDate: null, reprompt: 0, localData: undefined, @@ -253,6 +258,7 @@ describe("Cipher DTO", () => { type: CipherType.SecureNote, name: "EncryptedString", notes: "EncryptedString", + creationDate: "2022-01-01T12:00:00.000Z", deletedDate: null, reprompt: CipherRepromptType.None, secureNote: { @@ -278,6 +284,7 @@ describe("Cipher DTO", () => { revisionDate: new Date("2022-01-31T12:00:00.000Z"), collectionIds: undefined, localData: null, + creationDate: new Date("2022-01-01T12:00:00.000Z"), deletedDate: null, reprompt: 0, secureNote: { type: SecureNoteType.Generic }, @@ -305,6 +312,7 @@ describe("Cipher DTO", () => { cipher.type = CipherType.SecureNote; cipher.name = mockEnc("EncryptedString"); cipher.notes = mockEnc("EncryptedString"); + cipher.creationDate = new Date("2022-01-01T12:00:00.000Z"); cipher.deletedDate = null; cipher.reprompt = CipherRepromptType.None; cipher.secureNote = new SecureNote(); @@ -329,6 +337,7 @@ describe("Cipher DTO", () => { passwordHistory: null, collectionIds: undefined, revisionDate: new Date("2022-01-31T12:00:00.000Z"), + creationDate: new Date("2022-01-01T12:00:00.000Z"), deletedDate: null, reprompt: 0, localData: undefined, @@ -352,6 +361,7 @@ describe("Cipher DTO", () => { type: CipherType.Card, name: "EncryptedString", notes: "EncryptedString", + creationDate: "2022-01-01T12:00:00.000Z", deletedDate: null, reprompt: CipherRepromptType.None, card: { @@ -382,6 +392,7 @@ describe("Cipher DTO", () => { revisionDate: new Date("2022-01-31T12:00:00.000Z"), collectionIds: undefined, localData: null, + creationDate: new Date("2022-01-01T12:00:00.000Z"), deletedDate: null, reprompt: 0, card: { @@ -416,6 +427,7 @@ describe("Cipher DTO", () => { cipher.type = CipherType.Card; cipher.name = mockEnc("EncryptedString"); cipher.notes = mockEnc("EncryptedString"); + cipher.creationDate = new Date("2022-01-01T12:00:00.000Z"); cipher.deletedDate = null; cipher.reprompt = CipherRepromptType.None; @@ -446,6 +458,7 @@ describe("Cipher DTO", () => { passwordHistory: null, collectionIds: undefined, revisionDate: new Date("2022-01-31T12:00:00.000Z"), + creationDate: new Date("2022-01-01T12:00:00.000Z"), deletedDate: null, reprompt: 0, localData: undefined, @@ -469,6 +482,7 @@ describe("Cipher DTO", () => { type: CipherType.Identity, name: "EncryptedString", notes: "EncryptedString", + creationDate: "2022-01-01T12:00:00.000Z", deletedDate: null, reprompt: CipherRepromptType.None, identity: { @@ -511,6 +525,7 @@ describe("Cipher DTO", () => { revisionDate: new Date("2022-01-31T12:00:00.000Z"), collectionIds: undefined, localData: null, + creationDate: new Date("2022-01-01T12:00:00.000Z"), deletedDate: null, reprompt: 0, identity: { @@ -557,6 +572,7 @@ describe("Cipher DTO", () => { cipher.type = CipherType.Identity; cipher.name = mockEnc("EncryptedString"); cipher.notes = mockEnc("EncryptedString"); + cipher.creationDate = new Date("2022-01-01T12:00:00.000Z"); cipher.deletedDate = null; cipher.reprompt = CipherRepromptType.None; @@ -587,6 +603,7 @@ describe("Cipher DTO", () => { passwordHistory: null, collectionIds: undefined, revisionDate: new Date("2022-01-31T12:00:00.000Z"), + creationDate: new Date("2022-01-01T12:00:00.000Z"), deletedDate: null, reprompt: 0, localData: undefined, diff --git a/libs/common/src/models/data/cipherData.ts b/libs/common/src/models/data/cipherData.ts index aa82a5fd0be..34815a65968 100644 --- a/libs/common/src/models/data/cipherData.ts +++ b/libs/common/src/models/data/cipherData.ts @@ -30,6 +30,7 @@ export class CipherData { attachments?: AttachmentData[]; passwordHistory?: PasswordHistoryData[]; collectionIds?: string[]; + creationDate: string; deletedDate: string; reprompt: CipherRepromptType; @@ -50,6 +51,7 @@ export class CipherData { this.name = response.name; this.notes = response.notes; this.collectionIds = collectionIds != null ? collectionIds : response.collectionIds; + this.creationDate = response.creationDate; this.deletedDate = response.deletedDate; this.reprompt = response.reprompt; diff --git a/libs/common/src/models/domain/cipher.ts b/libs/common/src/models/domain/cipher.ts index ca792926c01..e2c15a12081 100644 --- a/libs/common/src/models/domain/cipher.ts +++ b/libs/common/src/models/domain/cipher.ts @@ -38,6 +38,7 @@ export class Cipher extends Domain { fields: Field[]; passwordHistory: Password[]; collectionIds: string[]; + creationDate: Date; deletedDate: Date; reprompt: CipherRepromptType; @@ -72,6 +73,7 @@ export class Cipher extends Domain { this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null; this.collectionIds = obj.collectionIds; this.localData = localData; + this.creationDate = obj.creationDate != null ? new Date(obj.creationDate) : null; this.deletedDate = obj.deletedDate != null ? new Date(obj.deletedDate) : null; this.reprompt = obj.reprompt; @@ -200,6 +202,7 @@ export class Cipher extends Domain { c.revisionDate = this.revisionDate != null ? this.revisionDate.toISOString() : null; c.type = this.type; c.collectionIds = this.collectionIds; + c.creationDate = this.creationDate != null ? this.creationDate.toISOString() : null; c.deletedDate = this.deletedDate != null ? this.deletedDate.toISOString() : null; c.reprompt = this.reprompt; diff --git a/libs/common/src/models/response/cipherResponse.ts b/libs/common/src/models/response/cipherResponse.ts index 5b461438e97..8eba6f62731 100644 --- a/libs/common/src/models/response/cipherResponse.ts +++ b/libs/common/src/models/response/cipherResponse.ts @@ -29,6 +29,7 @@ export class CipherResponse extends BaseResponse { attachments: AttachmentResponse[]; passwordHistory: PasswordHistoryResponse[]; collectionIds: string[]; + creationDate: string; deletedDate: string; reprompt: CipherRepromptType; @@ -50,6 +51,7 @@ export class CipherResponse extends BaseResponse { this.organizationUseTotp = this.getResponseProperty("OrganizationUseTotp"); this.revisionDate = this.getResponseProperty("RevisionDate"); this.collectionIds = this.getResponseProperty("CollectionIds"); + this.creationDate = this.getResponseProperty("CreationDate"); this.deletedDate = this.getResponseProperty("DeletedDate"); const login = this.getResponseProperty("Login"); diff --git a/libs/common/src/models/view/cipherView.ts b/libs/common/src/models/view/cipherView.ts index 4181c11d358..a835fa16aeb 100644 --- a/libs/common/src/models/view/cipherView.ts +++ b/libs/common/src/models/view/cipherView.ts @@ -36,6 +36,7 @@ export class CipherView implements View { passwordHistory: PasswordHistoryView[] = null; collectionIds: string[] = null; revisionDate: Date = null; + creationDate: Date = null; deletedDate: Date = null; reprompt: CipherRepromptType = CipherRepromptType.None; @@ -55,6 +56,7 @@ export class CipherView implements View { this.localData = c.localData; this.collectionIds = c.collectionIds; this.revisionDate = c.revisionDate; + this.creationDate = c.creationDate; this.deletedDate = c.deletedDate; // Old locally stored ciphers might have reprompt == null. If so set it to None. this.reprompt = c.reprompt ?? CipherRepromptType.None; From 95a35cd90e1cdb2403d376f559334282d3783a10 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 13:48:31 +0100 Subject: [PATCH 32/82] Bumped browser version to 2022.10.0 (#3764) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- apps/browser/package.json | 2 +- apps/browser/src/manifest.json | 2 +- apps/browser/src/manifest.v3.json | 2 +- package-lock.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/browser/package.json b/apps/browser/package.json index 57414631013..bbabc2c9115 100644 --- a/apps/browser/package.json +++ b/apps/browser/package.json @@ -1,6 +1,6 @@ { "name": "@bitwarden/browser", - "version": "2022.9.1", + "version": "2022.10.0", "scripts": { "build": "webpack", "build:mv3": "cross-env MANIFEST_VERSION=3 webpack", diff --git a/apps/browser/src/manifest.json b/apps/browser/src/manifest.json index d29223559e0..b7c47322d97 100644 --- a/apps/browser/src/manifest.json +++ b/apps/browser/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "__MSG_extName__", "short_name": "__MSG_appName__", - "version": "2022.9.1", + "version": "2022.10.0", "description": "__MSG_extDesc__", "default_locale": "en", "author": "Bitwarden Inc.", diff --git a/apps/browser/src/manifest.v3.json b/apps/browser/src/manifest.v3.json index 68a9ff30c88..1af19e255f2 100644 --- a/apps/browser/src/manifest.v3.json +++ b/apps/browser/src/manifest.v3.json @@ -3,7 +3,7 @@ "minimum_chrome_version": "102.0", "name": "__MSG_extName__", "short_name": "__MSG_appName__", - "version": "2022.9.1", + "version": "2022.10.0", "description": "__MSG_extDesc__", "default_locale": "en", "author": "Bitwarden Inc.", diff --git a/package-lock.json b/package-lock.json index 66c638abce4..fc51d166b0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -181,7 +181,7 @@ }, "apps/browser": { "name": "@bitwarden/browser", - "version": "2022.9.1" + "version": "2022.10.0" }, "apps/cli": { "name": "@bitwarden/cli", From 984cda243790b2e6a1032e5c45e61cda1fe65f10 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 15:00:36 +0200 Subject: [PATCH 33/82] Autosync the updated translations (#3713) Co-authored-by: github-actions <> --- apps/browser/src/_locales/be/messages.json | 2 +- apps/browser/src/_locales/da/messages.json | 2 +- apps/browser/src/_locales/fi/messages.json | 2 +- apps/browser/src/_locales/lt/messages.json | 16 +++++------ apps/browser/src/_locales/nb/messages.json | 24 ++++++++--------- apps/browser/store/locales/fa/copy.resx | 31 +++++++++++----------- 6 files changed, 38 insertions(+), 39 deletions(-) diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json index 5805387d8ae..5fd933b3784 100644 --- a/apps/browser/src/_locales/be/messages.json +++ b/apps/browser/src/_locales/be/messages.json @@ -196,7 +196,7 @@ "message": "Даведка і зваротная сувязь" }, "sync": { - "message": "Сінхранізацыя" + "message": "Сінхранізавана" }, "syncVaultNow": { "message": "Сінхранізаваць сховішча зараз" diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index 3a4879980f2..fa91c2e4640 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -2017,7 +2017,7 @@ } }, "lastSeenOn": { - "message": "sidst set den $DATE$", + "message": "sidst set: $DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json index 9235a490046..49675664113 100644 --- a/apps/browser/src/_locales/fi/messages.json +++ b/apps/browser/src/_locales/fi/messages.json @@ -2017,7 +2017,7 @@ } }, "lastSeenOn": { - "message": "nähty viimeksi $DATE$", + "message": "nähty viimeksi: $DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json index fd26e3345e7..25278ce6da0 100644 --- a/apps/browser/src/_locales/lt/messages.json +++ b/apps/browser/src/_locales/lt/messages.json @@ -552,10 +552,10 @@ "message": "Ar tikrai norite perrašyti dabartinį slaptažodį?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Perrašyti Vartotojo Vardą" }, "overwriteUsernameConfirmation": { - "message": "Are you sure you want to overwrite the current username?" + "message": "Ar tikrai norite perrašyti dabartinį vartotojo vardą?" }, "searchFolder": { "message": "Ieškoti aplanke" @@ -577,7 +577,7 @@ "message": "Prisijungimo pridėjimo pranešimas automatiškai Jūs paragina išsaugoti naujus prisijungimus Jūsų saugykloje, kuomet prisijungiate pirmą kartą." }, "showCardsCurrentTab": { - "message": "Show cards on Tab page" + "message": "Rodyti korteles skirtuko puslapyje" }, "showCardsCurrentTabDesc": { "message": "List card items on the Tab page for easy auto-fill." @@ -603,10 +603,10 @@ "message": "Taip, išsaugoti dabar" }, "enableChangedPasswordNotification": { - "message": "Ask to update existing login" + "message": "Paprašyti atnaujinti esamą prisijungimą" }, "changedPasswordNotificationDesc": { - "message": "Ask to update a login's password when a change is detected on a website." + "message": "Paprašyti atnaujinti prisijungimo slaptažodį, kai pakeitimas aptiktas svetainėje." }, "notificationChangeDesc": { "message": "Ar norite atnaujinti šį slaptažodį „Bitwarden“?" @@ -683,7 +683,7 @@ "message": "Move to Organization" }, "share": { - "message": "Share" + "message": "Bendrinti" }, "movedItemToOrg": { "message": "$ITEMNAME$ moved to $ORGNAME$", @@ -852,7 +852,7 @@ "message": "Send verification code email again" }, "useAnotherTwoStepMethod": { - "message": "Use another two-step login method" + "message": "Naudoti dar vieną dviejų žingsnių prisijungimo metodą" }, "insertYubiKey": { "message": "Insert your YubiKey into your computer's USB port, then touch its button." @@ -870,7 +870,7 @@ "message": "Authenticate WebAuthn" }, "loginUnavailable": { - "message": "Login Unavailable" + "message": "Prisijungimas nepasiekiamas" }, "noTwoStepProviders": { "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json index 360dfddc7c3..64253459cdf 100644 --- a/apps/browser/src/_locales/nb/messages.json +++ b/apps/browser/src/_locales/nb/messages.json @@ -1969,19 +1969,19 @@ "message": "Key Connector feil: Sjekk at Key Connector er tilgjengelig og fungerer." }, "premiumSubcriptionRequired": { - "message": "Premium subscription required" + "message": "Premium abonnement kreves" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organisasjonen er deaktivert." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Elementer i deaktiverte organisasjoner kan ikke aksesseres. Kontakt organisasjonseier for hjelp." }, "cardBrandMir": { "message": "Mir" }, "loggingInTo": { - "message": "Logging in to $DOMAIN$", + "message": "Logger inn på $DOMAIN$", "placeholders": { "domain": { "content": "$1", @@ -1990,25 +1990,25 @@ } }, "settingsEdited": { - "message": "Settings have been edited" + "message": "Innstillingene har blitt endret" }, "environmentEditedClick": { - "message": "Click here" + "message": "Klikk her" }, "environmentEditedReset": { - "message": "to reset to pre-configured settings" + "message": "for å tilbakestille til forhåndskonfigurerte innstillinger" }, "serverVersion": { - "message": "Server Version" + "message": "Server Versjon" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Selvbetjent" }, "thirdParty": { - "message": "Third-Party" + "message": "Tredjepart" }, "thirdPartyServerMessage": { - "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", + "message": "Koblet til tredjeparts server-implementeringen $SERVERNAME$. Kontroller feil ved hjelp av den offisielle serveren, eller rapporter dem til tredjepartsserveren.", "placeholders": { "servername": { "content": "$1", @@ -2017,7 +2017,7 @@ } }, "lastSeenOn": { - "message": "last seen on: $DATE$", + "message": "sist sett den: $DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/store/locales/fa/copy.resx b/apps/browser/store/locales/fa/copy.resx index 60386bf1841..bcb2ff69b30 100644 --- a/apps/browser/store/locales/fa/copy.resx +++ b/apps/browser/store/locales/fa/copy.resx @@ -124,32 +124,31 @@ یک مدیریت کننده کلمه عبور رایگان برای تمامی دستگاههایتان - Bitwarden, Inc. is the parent company of 8bit Solutions LLC. + Bitwarden, Inc. شرکت مادر 8bit Solutions LLC است. -NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE. +به عنوان بهترین مدیر رمز عبور توسط VERGE، US News & WORLD REPORT، CNET و دیگران انتخاب شد. -Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go. +گذرواژه‌هایی به تعداد نامحدود را در دستگاه‌های نامحدود از هر جایی مدیریت کنید، ذخیره کنید، ایمن کنید و به اشتراک بگذارید. Bitwarden راه حل های مدیریت رمز عبور منبع باز را به همه ارائه می دهد، چه در خانه، چه در محل کار یا در حال حرکت. -Generate strong, unique, and random passwords based on security requirements for every website you frequent. +بر اساس الزامات امنیتی برای هر وب سایتی که بازدید می کنید، رمزهای عبور قوی، منحصر به فرد و تصادفی ایجاد کنید. -Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone. +Bitwarden Send به سرعت اطلاعات رمزگذاری شده --- فایل ها و متن ساده - را مستقیماً به هر کسی منتقل می کند. -Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues. +Bitwarden برنامه‌های Teams و Enterprise را برای شرکت‌ها ارائه می‌دهد تا بتوانید به‌طور ایمن گذرواژه‌ها را با همکاران خود به اشتراک بگذارید. -Why Choose Bitwarden: +چرا Bitwarden را انتخاب کنید: -World-Class Encryption -Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashing, and PBKDF2 SHA-256) so your data stays secure and private. +رمزگذاری در کلاس جهانی +گذرواژه‌ها با رمزگذاری پیشرفته (AES-256 بیت، هش سالت، و PBKDF2 SHA-256) محافظت می‌شوند تا داده‌های شما امن و خصوصی بمانند. -Built-in Password Generator -Generate strong, unique, and random passwords based on security requirements for every website you frequent. +تولید کننده رمز عبور داخلی +بر اساس الزامات امنیتی برای هر وب سایتی که بازدید می‌کنید، رمزهای عبور قوی، منحصر به فرد و تصادفی ایجاد کنید. -Global Translations -Bitwarden translations exist in 40 languages and are growing, thanks to our global community. +ترجمه های جهانی +ترجمه Bitwarden به 40 زبان وجود دارد و به لطف جامعه جهانی ما در حال رشد است. -Cross-Platform Applications -Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more. - +برنامه های کاربردی چند پلتفرمی +داده های حساس را در Bitwarden Vault خود از هر مرورگر، دستگاه تلفن همراه یا سیستم عامل دسکتاپ و غیره ایمن کنید و به اشتراک بگذارید. یک مدیریت کننده کلمه عبور رایگان برای تمامی دستگاههایتان From a499f1b683d3529491ae5ad53fbacd879a652eb7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 15:03:51 +0200 Subject: [PATCH 34/82] Autosync the updated translations (#3714) Co-authored-by: github-actions <> --- apps/desktop/src/locales/af/messages.json | 12 ++++++------ apps/desktop/src/locales/da/messages.json | 10 +++++----- apps/desktop/src/locales/eu/messages.json | 10 +++++----- apps/desktop/src/locales/fa/messages.json | 12 ++++++------ apps/desktop/src/locales/fi/messages.json | 14 ++++++------- apps/desktop/src/locales/it/messages.json | 10 +++++----- apps/desktop/src/locales/nb/messages.json | 24 +++++++++++------------ apps/desktop/src/locales/sr/messages.json | 10 +++++----- 8 files changed, 51 insertions(+), 51 deletions(-) diff --git a/apps/desktop/src/locales/af/messages.json b/apps/desktop/src/locales/af/messages.json index d9d58ee0732..daf4ccaaa41 100644 --- a/apps/desktop/src/locales/af/messages.json +++ b/apps/desktop/src/locales/af/messages.json @@ -1571,10 +1571,10 @@ "message": "Blaaierintegrasie word gebruik vir biometrie in blaaier." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Allow DuckDuckGo browser integration" + "message": "Staan DuckDuckGo-blaaierintegrasie toe" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Use your Bitwarden vault when browsing with DuckDuckGo." + "message": "Gebruik u Bitwarden-kluis wanneer u met DuckDuckGo blaai." }, "browserIntegrationUnsupportedTitle": { "message": "Blaaierintegrasie word nie ondersteun nie" @@ -1604,7 +1604,7 @@ "message": "Maak seker dat die getoonde vingerafdruk identies is aan dié wat in die blaaieruitbreiding vertoon word." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ wants to connect to Bitwarden", + "message": "$APPID$ wil aan Bitwarden koppel", "placeholders": { "appid": { "content": "$1", @@ -1613,10 +1613,10 @@ } }, "verifyNativeMessagingConnectionDesc": { - "message": "Would you like to approve this request?" + "message": "Wil u hierdie versoek goedkeur?" }, "verifyNativeMessagingConnectionWarning": { - "message": "If you did not initiate this request, do not approve it." + "message": "Indien u nie hierdie versoek geïnisieer het nie, moet dit dan nie goedkeur nie." }, "biometricsNotEnabledTitle": { "message": "Biometrie is geaktiveer" @@ -2016,6 +2016,6 @@ "message": "Mir" }, "vault": { - "message": "Vault" + "message": "Kluis" } } diff --git a/apps/desktop/src/locales/da/messages.json b/apps/desktop/src/locales/da/messages.json index bf909c8fad0..c7945155819 100644 --- a/apps/desktop/src/locales/da/messages.json +++ b/apps/desktop/src/locales/da/messages.json @@ -1571,10 +1571,10 @@ "message": "Bruges til biometri i browser." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Allow DuckDuckGo browser integration" + "message": "Tillad DuckDuckGo browserintegration" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Use your Bitwarden vault when browsing with DuckDuckGo." + "message": "Brug din Bitwarden-boks, når du browser med DuckDuckGo." }, "browserIntegrationUnsupportedTitle": { "message": "Browserintegration understøttes ikke" @@ -1604,7 +1604,7 @@ "message": "Sørg for, at det viste fingeraftryk er identisk med det fingeraftryk, der vises i browserudvidelsen." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ wants to connect to Bitwarden", + "message": "$APPID$ ønsker at oprette forbindelse til Bitwarden", "placeholders": { "appid": { "content": "$1", @@ -1613,10 +1613,10 @@ } }, "verifyNativeMessagingConnectionDesc": { - "message": "Would you like to approve this request?" + "message": "Vil du godkende denne anmodning?" }, "verifyNativeMessagingConnectionWarning": { - "message": "If you did not initiate this request, do not approve it." + "message": "Hvis du ikke indledte denne anmodning, skal du ikke godkende den." }, "biometricsNotEnabledTitle": { "message": "Biometri ikke aktiveret" diff --git a/apps/desktop/src/locales/eu/messages.json b/apps/desktop/src/locales/eu/messages.json index d196a5bdda2..184ca3787b8 100644 --- a/apps/desktop/src/locales/eu/messages.json +++ b/apps/desktop/src/locales/eu/messages.json @@ -1571,10 +1571,10 @@ "message": "Nabigatzailean biometria erabiltzen da." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Allow DuckDuckGo browser integration" + "message": "Baimendu DuckDuckGo nabigatzailearekin integratzea" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Use your Bitwarden vault when browsing with DuckDuckGo." + "message": "Erabili zure Bitwarden kutxa gotorra, DuckDuckGo-rekin nabigatzean." }, "browserIntegrationUnsupportedTitle": { "message": "Ez da nabigatzailearen integrazioa onartzen" @@ -1604,7 +1604,7 @@ "message": "Ziurtatu bistaratutako hatz-marka digitala nabigatzailearen gehigarrian agertzen den hatz-marka digitalaren berdina dela." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ wants to connect to Bitwarden", + "message": "$APPID$-ek Bitwardenekin konektatu nahi du", "placeholders": { "appid": { "content": "$1", @@ -1613,10 +1613,10 @@ } }, "verifyNativeMessagingConnectionDesc": { - "message": "Would you like to approve this request?" + "message": "Eskaera hau onartu nahi duzu?" }, "verifyNativeMessagingConnectionWarning": { - "message": "If you did not initiate this request, do not approve it." + "message": "Eskaera hasi ez baduzu, ez onartu." }, "biometricsNotEnabledTitle": { "message": "Biometria desgaitua" diff --git a/apps/desktop/src/locales/fa/messages.json b/apps/desktop/src/locales/fa/messages.json index 0febe54c5d9..30596769cf1 100644 --- a/apps/desktop/src/locales/fa/messages.json +++ b/apps/desktop/src/locales/fa/messages.json @@ -1571,10 +1571,10 @@ "message": "یکپارچه سازی مرورگر برای بیومتریک در مرورگر استفاده می شود." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Allow DuckDuckGo browser integration" + "message": "اجازه ادغام مرورگر DuckDuckGo را بدهید" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Use your Bitwarden vault when browsing with DuckDuckGo." + "message": "هنگام مرور با DuckDuckGo از گاوصندوق Bitwarden خود استفاده کنید." }, "browserIntegrationUnsupportedTitle": { "message": "ادغام مرورگر پشتیبانی نمی شود" @@ -1604,7 +1604,7 @@ "message": "لطفاً اطمینان حاصل کنید که اثر انگشت نشان داده شده با اثر انگشت نشان داده شده در افزونه مرورگر یکسان است." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ wants to connect to Bitwarden", + "message": "$APPID$ می‌خواهد به Bitwarden متصل شود", "placeholders": { "appid": { "content": "$1", @@ -1613,10 +1613,10 @@ } }, "verifyNativeMessagingConnectionDesc": { - "message": "Would you like to approve this request?" + "message": "آیا می‌خواهید این درخواست را تأیید کنید؟" }, "verifyNativeMessagingConnectionWarning": { - "message": "If you did not initiate this request, do not approve it." + "message": "اگر شما این درخواست را آغاز نکرده اید، آن را تأیید نکنید." }, "biometricsNotEnabledTitle": { "message": "بیومتریک فعال نیست" @@ -2016,6 +2016,6 @@ "message": "میر" }, "vault": { - "message": "Vault" + "message": "گاوصندوق" } } diff --git a/apps/desktop/src/locales/fi/messages.json b/apps/desktop/src/locales/fi/messages.json index 1483f362306..2e006edac97 100644 --- a/apps/desktop/src/locales/fi/messages.json +++ b/apps/desktop/src/locales/fi/messages.json @@ -764,7 +764,7 @@ "message": "Hanki apua" }, "fileBugReport": { - "message": "Jätä virheilmoitus" + "message": "Lähetä virheilmoitus" }, "blog": { "message": "Blogi" @@ -1568,22 +1568,22 @@ "message": "Salli selainintegraatio" }, "enableBrowserIntegrationDesc": { - "message": "Käytetään selainten biometriatukeen." + "message": "Käytetään verkkoselainten biometriatukeen." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Salli integrointi DuckDuckGo-selaimeen" + "message": "Salli integraatio DuckDuckGo-selaimeen" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Käytä Bitwardenin holvia DuckDuckGo-selaimessa." + "message": "Käytä Bitwarden-holvia DuckDuckGo-selaimessa." }, "browserIntegrationUnsupportedTitle": { "message": "Selainintegraatiota ei tueta" }, "browserIntegrationMasOnlyDesc": { - "message": "Valitettavasti selainintegraatiota tukee toistaiseksi vain Mac App Store -versio." + "message": "Valitettavasti selainintegraatiota tuetaan toistaiseksi vain Mac App Store -versiossa." }, "browserIntegrationWindowsStoreDesc": { - "message": "Valitettavasti selainintegraatiota ei toistaiseksi tueta sovelluksen Microsoft Store -versiossa." + "message": "Valitettavasti selainintegraatiota ei toistaiseksi tueta Microsoft Store -versiossa." }, "browserIntegrationLinuxDesc": { "message": "Valitettavasti selainintegraatiota ei toistaiseksi tueta Linux-versiossa." @@ -1616,7 +1616,7 @@ "message": "Haluatko hyväksyä pyynnön?" }, "verifyNativeMessagingConnectionWarning": { - "message": "Älä hyväksy pyyntöä, jollet itse aiheuttanut sitä." + "message": "Älä hyväksy pyyntöä, jos et tunnista sitä." }, "biometricsNotEnabledTitle": { "message": "Biometria ei ole käytössä" diff --git a/apps/desktop/src/locales/it/messages.json b/apps/desktop/src/locales/it/messages.json index c8b708dea27..89a96eac050 100644 --- a/apps/desktop/src/locales/it/messages.json +++ b/apps/desktop/src/locales/it/messages.json @@ -1571,10 +1571,10 @@ "message": "L'integrazione del browser è utilizzata per l'autenticazione biometrica." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Allow DuckDuckGo browser integration" + "message": "Consenti l'integrazione del browser DuckDuckGo" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Use your Bitwarden vault when browsing with DuckDuckGo." + "message": "Usa la tua cassaforte Bitwarden quando navighi con DuckDuckGo." }, "browserIntegrationUnsupportedTitle": { "message": "L'integrazione del browser non è supportata" @@ -1604,7 +1604,7 @@ "message": "Assicurati che l'impronta digitale mostrata sia identica all'impronta digitale mostrata nell'estensione del browser." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ wants to connect to Bitwarden", + "message": "$APPID$ vuole connettersi a Bitwarden", "placeholders": { "appid": { "content": "$1", @@ -1613,10 +1613,10 @@ } }, "verifyNativeMessagingConnectionDesc": { - "message": "Would you like to approve this request?" + "message": "Vuoi approvare questa richiesta?" }, "verifyNativeMessagingConnectionWarning": { - "message": "If you did not initiate this request, do not approve it." + "message": "Se la richiesta non è stata fatta da te, non approvarla." }, "biometricsNotEnabledTitle": { "message": "Autenticazione biometrica non abilitata" diff --git a/apps/desktop/src/locales/nb/messages.json b/apps/desktop/src/locales/nb/messages.json index 4b7c78764cc..06aa41b63cb 100644 --- a/apps/desktop/src/locales/nb/messages.json +++ b/apps/desktop/src/locales/nb/messages.json @@ -36,7 +36,7 @@ "message": "Søk i hvelvet" }, "addItem": { - "message": "Legg til objekt" + "message": "Legg til element" }, "shared": { "message": "Delt" @@ -1397,16 +1397,16 @@ "message": "Slett konto" }, "deleteAccountDesc": { - "message": "Proceed below to delete your account and all vault data." + "message": "Fortsett nedenfor for å slette kontoen din og alle hvelvdataene." }, "deleteAccountWarning": { - "message": "Deleting your account is permanent. It cannot be undone." + "message": "Å slette kontoen din er permanent. Det kan ikke reverseres." }, "accountDeleted": { "message": "Konto slettet" }, "accountDeletedDesc": { - "message": "Your account has been closed and all associated data has been deleted." + "message": "Kontoen din har blitt avsluttet og all relatert data har blitt slettet." }, "preferences": { "message": "Innstillinger" @@ -1571,10 +1571,10 @@ "message": "Nettleserintegrasjon brukes til biometri i nettleseren." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Allow DuckDuckGo browser integration" + "message": "Tillat integrering av DuckDuckGo" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Use your Bitwarden vault when browsing with DuckDuckGo." + "message": "Bruk Bitwarden-hvelvet ditt når du surfer med DuckDuckGo." }, "browserIntegrationUnsupportedTitle": { "message": "Nettleserintegrasjon støttes ikke" @@ -1604,7 +1604,7 @@ "message": "Kontroller at vist fingeravtrykk er identisk med fingeravtrykket som vises i nettleserutvidelsen." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ wants to connect to Bitwarden", + "message": "$APPID$ ønsker å koble til Bitwarden", "placeholders": { "appid": { "content": "$1", @@ -1613,10 +1613,10 @@ } }, "verifyNativeMessagingConnectionDesc": { - "message": "Would you like to approve this request?" + "message": "Ønsker du å godkjenne denne forespørselen?" }, "verifyNativeMessagingConnectionWarning": { - "message": "If you did not initiate this request, do not approve it." + "message": "Ikke godkjenn denne forespørselen dersom du ikke initierte den." }, "biometricsNotEnabledTitle": { "message": "Biometri er ikke aktivert" @@ -2001,13 +2001,13 @@ "message": "API-nøkkel" }, "premiumSubcriptionRequired": { - "message": "Premium subscription required" + "message": "Premium abonnement kreves" }, "organizationIsDisabled": { "message": "Organisasjonen er deaktivert." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Elementer i deaktiverte organisasjoner kan ikke aksesseres. Kontakt organisasjonseier for hjelp." }, "neverLockWarning": { "message": "Er du sikker på at du vil bruke alternativet «Aldri»? Ved å angi låsemulighetene til «Aldri» lagres hvelvets krypteringsnøkkel på enheten. Hvis du bruker dette alternativet, bør du sørge for at du holder enheten forsvarlig beskyttet." @@ -2016,6 +2016,6 @@ "message": "Mir" }, "vault": { - "message": "Vault" + "message": "Hvelv" } } diff --git a/apps/desktop/src/locales/sr/messages.json b/apps/desktop/src/locales/sr/messages.json index 1d01f438130..48baf44ce55 100644 --- a/apps/desktop/src/locales/sr/messages.json +++ b/apps/desktop/src/locales/sr/messages.json @@ -1571,10 +1571,10 @@ "message": "Интеграција прегледача се користи за биометрију у прегледачу." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Allow DuckDuckGo browser integration" + "message": "Дозволи DuckDuckGo интерграцију претраживача" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Use your Bitwarden vault when browsing with DuckDuckGo." + "message": "Употребити Bitwarden сеф када користите DuckDuckGo." }, "browserIntegrationUnsupportedTitle": { "message": "Интеграција са претраживачем није подржана" @@ -1604,7 +1604,7 @@ "message": "Уверите се да је приказани отисак идентичан отиску приказаном у додатку прегледача." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ wants to connect to Bitwarden", + "message": "$APPID$ жели да се повеже са Bitwarden", "placeholders": { "appid": { "content": "$1", @@ -1613,10 +1613,10 @@ } }, "verifyNativeMessagingConnectionDesc": { - "message": "Would you like to approve this request?" + "message": "Да ли желите да одобрите овај захтев?" }, "verifyNativeMessagingConnectionWarning": { - "message": "If you did not initiate this request, do not approve it." + "message": "Ако нисте ви покренули овај захтев, немојте га одобрити." }, "biometricsNotEnabledTitle": { "message": "Биометрија није омогућена" From c69c2a0ecced0f1d5386004e5477190c72d71d36 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 15:06:27 +0200 Subject: [PATCH 35/82] Autosync the updated translations (#3715) Co-authored-by: github-actions <> --- apps/web/src/locales/af/messages.json | 58 ++++++++++++------------ apps/web/src/locales/da/messages.json | 10 ++-- apps/web/src/locales/eu/messages.json | 10 ++-- apps/web/src/locales/it/messages.json | 24 +++++----- apps/web/src/locales/lv/messages.json | 18 ++++---- apps/web/src/locales/sr/messages.json | 54 +++++++++++----------- apps/web/src/locales/zh_CN/messages.json | 2 +- 7 files changed, 88 insertions(+), 88 deletions(-) diff --git a/apps/web/src/locales/af/messages.json b/apps/web/src/locales/af/messages.json index 7980942bf48..eec950874e8 100644 --- a/apps/web/src/locales/af/messages.json +++ b/apps/web/src/locales/af/messages.json @@ -570,16 +570,16 @@ "message": "Teken aan of skep ’n nuwe rekening vir toegang tot u beveiligde kluis." }, "loginWithDevice": { - "message": "Log in with device" + "message": "Teken aan met toestel" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be enabled in the settings of the Bitwarden mobile app. Need another option?" + "message": "Teken aan met toestel moet in die instellings van die Bitwarden-toep geaktiveer word. Kort u nog ’n opsie?" }, "createAccount": { "message": "Skep rekening" }, "newAroundHere": { - "message": "New around here?" + "message": "Nuut hier rond?" }, "startTrial": { "message": "Start Trial" @@ -609,7 +609,7 @@ "message": "Die hoofwagwoord is die wagwoord wat u gaan gebruik vir toegang tot u kluis. Dit is baie belangrik dat u u hoofwagwoord onthou. Daar is geen manier om dit terug te kry ingeval u dit vergeet het nie." }, "masterPassImportant": { - "message": "Master passwords cannot be recovered if you forget it!" + "message": "Hoofwagwoorde kan nie herstel word indien u dit vergeet nie!" }, "masterPassHintDesc": { "message": "’n Hoofwagwoordwenk kan u help om u wagwoord te onthou, sou u dit vergeet." @@ -642,13 +642,13 @@ "message": "Ongeldige e-posadres." }, "masterPasswordRequired": { - "message": "Master password is required." + "message": "Hoofwagwoord word vereis." }, "confirmMasterPasswordRequired": { - "message": "Master password retype is required." + "message": "Hoofwagwoord moet weer ingevoer word." }, "masterPasswordMinlength": { - "message": "Master password must be at least 8 characters long." + "message": "Hoofwagwoord moet ten minste 8 karakters lank wees." }, "masterPassDoesntMatch": { "message": "Hoofwagwoordbevestiging stem nie ooreen nie." @@ -657,7 +657,7 @@ "message": "U nuwe rekening is geskep! U kan nou aanteken." }, "trialAccountCreated": { - "message": "Account created successfully." + "message": "Rekening suksesvol geskep." }, "masterPassSent": { "message": "Ons het ’n e-pos gestuur met u hoofwagwoordwenk." @@ -718,7 +718,7 @@ "message": "U behoort aan geen organisasies nie. Organisasies laat u toe om items op beveiligde wyse met ander gebruikers te deel." }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "’n Kennisgewing is na u toestel gestuur." }, "versionNumber": { "message": "Weergawe $VERSION_NUMBER$", @@ -915,16 +915,16 @@ "message": "This password will be used to export and import this file" }, "confirmMasterPassword": { - "message": "Confirm Master Password" + "message": "Bevestig hoofwagwoord" }, "confirmFormat": { - "message": "Confirm Format" + "message": "Bevestig formaat" }, "filePassword": { - "message": "File Password" + "message": "Lêerwagwoord" }, "confirmFilePassword": { - "message": "Confirm File Password" + "message": "Bevestig lêerwagwoord" }, "accountBackupOptionDescription": { "message": "Use your account encryption key to encrypt the export and restrict import to only the current Bitwarden account." @@ -933,19 +933,19 @@ "message": "Set a password to encrypt the export and import it to any Bitwarden account using the password for decryption." }, "fileTypeHeading": { - "message": "File Type" + "message": "Lêertipe" }, "accountBackup": { - "message": "Account Backup" + "message": "Rekeningrugsteun" }, "passwordProtected": { "message": "Password Protected" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "“File password” and “Confirm File Password“ do not match." + "message": "“Lêerwagwoord” en “Bevestig lêerwagwoord” stem nie ooreen nie." }, "confirmVaultImport": { - "message": "Confirm Vault Import" + "message": "Bevestig kluisinvoer" }, "confirmVaultImportDesc": { "message": "This file is password-protected. Please enter the file password to import data." @@ -1169,7 +1169,7 @@ "message": "Data is suksesvol na u kluis ingevoer." }, "importWarning": { - "message": "You are importing data to $ORGANIZATION$. Your data may be shared with members of this organization. Do you want to proceed?", + "message": "U voer data in na $ORGANIZATION$. U data kan met ander lede van hierdie organisasie gedeel word. Wil u voortgaan?", "placeholders": { "organization": { "content": "$1", @@ -2272,7 +2272,7 @@ "message": "Jaarliks" }, "annual": { - "message": "Annual" + "message": "Jaarliks" }, "basePrice": { "message": "Basisprys" @@ -2695,7 +2695,7 @@ } }, "removeUserIdAccess": { - "message": "Remove $ID$ access", + "message": "Verwyder $ID$ toegang", "placeholders": { "id": { "content": "$1", @@ -2704,7 +2704,7 @@ } }, "revokedUserId": { - "message": "Revoked organization access for $ID$.", + "message": "Toegang tot die organisasie vir $ID$ is teruggetrek.", "placeholders": { "id": { "content": "$1", @@ -2713,7 +2713,7 @@ } }, "restoredUserId": { - "message": "Restored organization access for $ID$.", + "message": "Toegang tot die organisasie vir $ID$ is teruggestel.", "placeholders": { "id": { "content": "$1", @@ -2722,7 +2722,7 @@ } }, "revokeUserId": { - "message": "Revoke $ID$ access", + "message": "Trek $ID$ toegang terug", "placeholders": { "id": { "content": "$1", @@ -5261,7 +5261,7 @@ } }, "billingContactProviderForAssistance": { - "message": "Please reach out to them for further assistance", + "message": "Kontak hulle asseblief vir verdere hulp", "description": "This text is displayed if an organization's billing is managed by a Provider. It tells the user to contact the Provider for assistance." }, "forwardedEmail": { @@ -5318,18 +5318,18 @@ "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimApiKeyHelperText": { - "message": "This API key has access to manage users within your organization. It should be kept secret." + "message": "Hierdie API-sleutel het toegang tot die beheer van gebruikers in u organisasie. Dit moet ’n geheim gehou word." }, "copyScimKey": { - "message": "Copy the SCIM API Key to your clipboard", + "message": "Kopieer die SCIM-API-sleutel na u knipbord", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKey": { - "message": "Rotate the SCIM API Key", + "message": "Roteer die SCIM-API-sleutel", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKeyWarning": { - "message": "Are you sure you want to rotate the SCIM API Key? The current key will no longer work for any existing integrations.", + "message": "Is u seker u wil die SCIM-API-sleutel roteer? Die huidige sleutel sal nie meer werk vir enige bestaande integrasies nie.", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateKey": { @@ -5383,7 +5383,7 @@ "message": "Turn on" }, "on": { - "message": "On" + "message": "Aan" }, "cardBrandMir": { "message": "Mir" diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json index 19a2e9955fa..6c7cffd9ac7 100644 --- a/apps/web/src/locales/da/messages.json +++ b/apps/web/src/locales/da/messages.json @@ -573,7 +573,7 @@ "message": "Log ind med enhed" }, "loginWithDeviceEnabledInfo": { - "message": "Log ind med enhed skal være aktiveret i Bitwarden mobil-appindstillingerne. Brug for en anden mulighed?" + "message": "Log ind med enhed skal være aktiveret i indstillingerne for Bitwarden-mobilappen. Har du brug for en anden mulighed?" }, "createAccount": { "message": "Opret konto" @@ -588,7 +588,7 @@ "message": "Log ind" }, "logInInitiated": { - "message": "Indlogning initieret" + "message": "Indlogning påbegyndt" }, "submit": { "message": "Indsend" @@ -648,7 +648,7 @@ "message": "Hovedadgangskode kræves angivet igen." }, "masterPasswordMinlength": { - "message": "Hovedadgangskode skal udgøre minimum 8 tegn." + "message": "Hovedadgangskoden skal være på mindst 8 tegn." }, "masterPassDoesntMatch": { "message": "De to hovedadgangskoder matcher ikke." @@ -3391,7 +3391,7 @@ "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "fingerprintMatchInfo": { - "message": "Sørg for, at din Boks er oplåst, og at Fingeraftrykssætningen matcher den anden enhed." + "message": "Sørg for, at din boks er låst op, og at fingeraftrykssætningen matcher den anden enhed." }, "fingerprintPhraseHeader": { "message": "Fingeraftrykssætning" @@ -4082,7 +4082,7 @@ "message": "Tilladelser" }, "managerPermissions": { - "message": "Håndtér rettigheder" + "message": "Bestyrer-tilladelser" }, "adminPermissions": { "message": "Admin-tilladelser" diff --git a/apps/web/src/locales/eu/messages.json b/apps/web/src/locales/eu/messages.json index e171c277a63..bc32cfa10b3 100644 --- a/apps/web/src/locales/eu/messages.json +++ b/apps/web/src/locales/eu/messages.json @@ -3391,10 +3391,10 @@ "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "fingerprintMatchInfo": { - "message": "Please make sure your vault is unlocked and Fingerprint phrase matches the other device." + "message": "Mesedez, ziurtatu kutxa gotorra desblokeatuta dagoela eta hatz-marka digitalaren esaldia bat datorrela beste gailuarekin." }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Hatz-marka digitalaren esaldia" }, "dontAskFingerprintAgain": { "message": "Inoiz ez da beharrezkoa gonbidatutako erabiltzaileentzat hatz-marka esaldiak egiaztatzea (ez da gomendatzen)", @@ -4082,10 +4082,10 @@ "message": "Baimenak" }, "managerPermissions": { - "message": "Manager Permissions" + "message": "Kudeatu baimenak" }, "adminPermissions": { - "message": "Admin Permissions" + "message": "Kudeatzailearen baimenak" }, "accessEventLogs": { "message": "Sarreren erregistroak" @@ -4397,7 +4397,7 @@ "message": "Birbidali gonbidapenak" }, "resendNotification": { - "message": "Resend notification" + "message": "Berbidali jakinarazpena" }, "noSelectedUsersApplicable": { "message": "Ekintza hau ezin zaie hautatutako erabiltzaileei aplikatu." diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json index f1f633d75bd..32685105ec2 100644 --- a/apps/web/src/locales/it/messages.json +++ b/apps/web/src/locales/it/messages.json @@ -570,16 +570,16 @@ "message": "Accedi o crea un nuovo account per accedere alla tua cassaforte." }, "loginWithDevice": { - "message": "Log in with device" + "message": "Accedi con il dispositivo" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be enabled in the settings of the Bitwarden mobile app. Need another option?" + "message": "Il login con il dispositivo deve essere abilitato nelle impostazioni dell'app mobile Bitwarden. Hai bisogno di un'altra opzione?" }, "createAccount": { "message": "Crea account" }, "newAroundHere": { - "message": "New around here?" + "message": "Nuovo da queste parti?" }, "startTrial": { "message": "Inizia il periodo di prova" @@ -588,7 +588,7 @@ "message": "Accedi" }, "logInInitiated": { - "message": "Log in initiated" + "message": "Login avviato" }, "submit": { "message": "Invia" @@ -648,7 +648,7 @@ "message": "È necessario reinserire la password principale." }, "masterPasswordMinlength": { - "message": "Master password must be at least 8 characters long." + "message": "La password principale deve essere lunga almeno 8 caratteri." }, "masterPassDoesntMatch": { "message": "La conferma della password principale non corrisponde." @@ -718,7 +718,7 @@ "message": "Non appartieni ad alcuna organizzazione. Le organizzazioni ti consentono di condividere oggetti in modo sicuro con altri utenti." }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "Una notifica è stata inviata al tuo dispositivo." }, "versionNumber": { "message": "Versione $VERSION_NUMBER$", @@ -2548,7 +2548,7 @@ } }, "viewAllLoginOptions": { - "message": "View all log in options" + "message": "Visualizza tutte le opzioni di accesso" }, "viewedItemId": { "message": "Elemento visualizzato $ID$.", @@ -3391,10 +3391,10 @@ "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "fingerprintMatchInfo": { - "message": "Please make sure your vault is unlocked and Fingerprint phrase matches the other device." + "message": "Assicurati che la tua cassaforte sia sbloccata e che la \"frase impronta\" corrisponda sull'altro dispositivo." }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Frase impronta" }, "dontAskFingerprintAgain": { "message": "Non chiedere di verificare di nuovo la frase impronta", @@ -4082,10 +4082,10 @@ "message": "Permessi" }, "managerPermissions": { - "message": "Manager Permissions" + "message": "Permessi del Manager" }, "adminPermissions": { - "message": "Admin Permissions" + "message": "Permessi dell'Amministratore" }, "accessEventLogs": { "message": "Accedi ai log degli eventi" @@ -4397,7 +4397,7 @@ "message": "Invia nuovamente l'invito" }, "resendNotification": { - "message": "Resend notification" + "message": "Invia nuova notifica" }, "noSelectedUsersApplicable": { "message": "Questa azione non è applicabile a nessuno degli utenti selezionati." diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json index 68c5c27eac6..bc09efcf090 100644 --- a/apps/web/src/locales/lv/messages.json +++ b/apps/web/src/locales/lv/messages.json @@ -573,7 +573,7 @@ "message": "Pierakstīties ar ierīci" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be enabled in the settings of the Bitwarden mobile app. Need another option?" + "message": "Pierakstīšanās ar ierīci ir jābūt iespējotai Bitwarden lietotnes iestatījumos. Nepieciešama cita iespēja?" }, "createAccount": { "message": "Izveidot kontu" @@ -1311,7 +1311,7 @@ "message": "Iespējots" }, "restoreAccess": { - "message": "Restore Access" + "message": "Atjaunot piekļuvi" }, "premium": { "message": "Premium", @@ -1339,7 +1339,7 @@ "message": "Atspējot" }, "revokeAccess": { - "message": "Revoke Access" + "message": "Atsaukt piekļuvi" }, "twoStepLoginProviderEnabled": { "message": "Šis divpakāpju pierakstīšanās nodrošinātājs ir iespējots kontā." @@ -2695,7 +2695,7 @@ } }, "removeUserIdAccess": { - "message": "Remove $ID$ access", + "message": "Noņemt piekļuvi $ID$", "placeholders": { "id": { "content": "$1", @@ -3793,7 +3793,7 @@ "message": "Atspējots" }, "revoked": { - "message": "Revoked" + "message": "Atsaukts" }, "sendLink": { "message": "\"Send\" saite", @@ -4457,10 +4457,10 @@ "message": "Noņemt lietotājus" }, "revokeUsers": { - "message": "Revoke Users" + "message": "Atsaukt lietotāju piekļuvi" }, "restoreUsers": { - "message": "Restore Users" + "message": "Atjaunot lietotāju piekļuvi" }, "error": { "message": "Kļūda" @@ -5310,7 +5310,7 @@ "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDesc": { - "message": "Enable SCIM", + "message": "Iespējot SCIM", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDescHelpText": { @@ -5336,7 +5336,7 @@ "message": "Rotate Key" }, "scimApiKey": { - "message": "SCIM API Key", + "message": "SCIM API atslēga", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "copyScimUrl": { diff --git a/apps/web/src/locales/sr/messages.json b/apps/web/src/locales/sr/messages.json index e50c2c78bad..6346a4e4155 100644 --- a/apps/web/src/locales/sr/messages.json +++ b/apps/web/src/locales/sr/messages.json @@ -570,16 +570,16 @@ "message": "Пријавите се или креирајте нови налог за приступ Сефу." }, "loginWithDevice": { - "message": "Log in with device" + "message": "Пријавите се са уређајем" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be enabled in the settings of the Bitwarden mobile app. Need another option?" + "message": "Пријава помоћу уређаја мора бити омогућена у подешавањима Bitwarden апликације. Потребна је друга опција?" }, "createAccount": { "message": "Креирај налог" }, "newAroundHere": { - "message": "New around here?" + "message": "Нов овде?" }, "startTrial": { "message": "Почетак пробе" @@ -588,7 +588,7 @@ "message": "Пријавите се" }, "logInInitiated": { - "message": "Log in initiated" + "message": "Пријава је покренута" }, "submit": { "message": "Пошаљи" @@ -648,7 +648,7 @@ "message": "Поновно уписивање главне лозинке је неопходно." }, "masterPasswordMinlength": { - "message": "Master password must be at least 8 characters long." + "message": "Главна лозинка треба имати барем 8 карактера." }, "masterPassDoesntMatch": { "message": "Потврђена Главна Лозинка се не подудара." @@ -691,7 +691,7 @@ "message": "Погрешна главна лозинка" }, "invalidFilePassword": { - "message": "Invalid file password, please use the password you entered when you created the export file." + "message": "Неважећа лозинка за датотеку, користите лозинку коју сте унели када сте креирали датотеку за извоз." }, "lockNow": { "message": "Закључај одмах" @@ -718,7 +718,7 @@ "message": "Не припадате ниједној организацији. Организације вам омогућавају да безбедно делите ставке са другим корисницима." }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "Обавештење је послато на ваш уређај." }, "versionNumber": { "message": "Верзија $VERSION_NUMBER$", @@ -909,46 +909,46 @@ "message": "Формат датотеке" }, "fileEncryptedExportWarningDesc": { - "message": "This file export will be password protected and require the file password to decrypt." + "message": "Овај извоз ће бити заштићен лозинком и захтеваће лозинку датотеке за дешифровање." }, "exportPasswordDescription": { - "message": "This password will be used to export and import this file" + "message": "Ова лозинка ће се користити за извоз и увоз ове датотеке" }, "confirmMasterPassword": { - "message": "Confirm Master Password" + "message": "Потрдити Главну Лозинку" }, "confirmFormat": { - "message": "Confirm Format" + "message": "Потврдити формат" }, "filePassword": { - "message": "File Password" + "message": "Лозинка датотеке" }, "confirmFilePassword": { - "message": "Confirm File Password" + "message": "Потврдити лозинку датотеке" }, "accountBackupOptionDescription": { - "message": "Use your account encryption key to encrypt the export and restrict import to only the current Bitwarden account." + "message": "Користите кључ за шифровање налога да шифрујете извоз и ограничите увоз само на тренутни Bitwarden налогу." }, "passwordProtectedOptionDescription": { - "message": "Set a password to encrypt the export and import it to any Bitwarden account using the password for decryption." + "message": "Подесите лозинку за шифровање извоза и увоз у било који Bitwarden налог користећи лозинку за дешифровање." }, "fileTypeHeading": { - "message": "File Type" + "message": "Тип датотеке" }, "accountBackup": { - "message": "Account Backup" + "message": "Резервна копија налога" }, "passwordProtected": { - "message": "Password Protected" + "message": "Заштићено лозинком" }, "filePasswordAndConfirmFilePasswordDoNotMatch": { - "message": "“File password” and “Confirm File Password“ do not match." + "message": "Унете лозинке се не подударају." }, "confirmVaultImport": { - "message": "Confirm Vault Import" + "message": "Потврдите увоз сефа" }, "confirmVaultImportDesc": { - "message": "This file is password-protected. Please enter the file password to import data." + "message": "Ова датотека је заштићена лозинком. Унесите лозинку датотеке да бисте увезли податке." }, "exportSuccess": { "message": "Податци сефа су извежени." @@ -2548,7 +2548,7 @@ } }, "viewAllLoginOptions": { - "message": "View all log in options" + "message": "Погледајте сав извештај у опције" }, "viewedItemId": { "message": "Прогледана ставка $ID$.", @@ -3394,7 +3394,7 @@ "message": "Please make sure your vault is unlocked and Fingerprint phrase matches the other device." }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Сигурносна фраза сефа" }, "dontAskFingerprintAgain": { "message": "Не питај више за проверу Сигурносне Фразе Сефа", @@ -4082,10 +4082,10 @@ "message": "Дозволе" }, "managerPermissions": { - "message": "Manager Permissions" + "message": "Менаџер созвола" }, "adminPermissions": { - "message": "Admin Permissions" + "message": "Админ дозволе" }, "accessEventLogs": { "message": "Приступе извештаја догађаја" @@ -4397,7 +4397,7 @@ "message": "Поновно послати позивнице" }, "resendNotification": { - "message": "Resend notification" + "message": "Поново ослати обавештење" }, "noSelectedUsersApplicable": { "message": "Ова акција није применљива на било који од одабраних корисника." @@ -5333,7 +5333,7 @@ "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateKey": { - "message": "Rotate Key" + "message": "Променити кључ" }, "scimApiKey": { "message": "SCIM API Key", diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json index 411965fcc35..a548cd4915a 100644 --- a/apps/web/src/locales/zh_CN/messages.json +++ b/apps/web/src/locales/zh_CN/messages.json @@ -573,7 +573,7 @@ "message": "使用设备登录" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be enabled in the settings of the Bitwarden mobile app. Need another option?" + "message": "设备登录必须在 Bitwarden 移动应用程序的设置中启用。需要其他选项吗?" }, "createAccount": { "message": "创建账户" From cac0866a391aef9f0dc1c79f996a9610ec81d136 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 14:06:51 +0100 Subject: [PATCH 36/82] Bumped cli version to 2022.10.0 (#3765) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- apps/cli/package-lock.json | 4 ++-- apps/cli/package.json | 2 +- package-lock.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/cli/package-lock.json b/apps/cli/package-lock.json index 8a66d813d65..b9ef73baba3 100644 --- a/apps/cli/package-lock.json +++ b/apps/cli/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bitwarden/cli", - "version": "2022.9.0", + "version": "2022.10.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@bitwarden/cli", - "version": "2022.9.0", + "version": "2022.10.0", "license": "GPL-3.0-only", "dependencies": { "@koa/multer": "^3.0.0", diff --git a/apps/cli/package.json b/apps/cli/package.json index a360c1bef58..b41baeec419 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,7 +1,7 @@ { "name": "@bitwarden/cli", "description": "A secure and free password manager for all of your devices.", - "version": "2022.9.0", + "version": "2022.10.0", "keywords": [ "bitwarden", "password", diff --git a/package-lock.json b/package-lock.json index fc51d166b0d..53231218eef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -185,7 +185,7 @@ }, "apps/cli": { "name": "@bitwarden/cli", - "version": "2022.9.0", + "version": "2022.10.0", "license": "GPL-3.0-only", "dependencies": { "@koa/multer": "^3.0.0", From 6542dfd50fd9c487b827dfa621c0074bbbe9ebf8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 14:10:47 +0100 Subject: [PATCH 37/82] Bumped desktop version to 2022.10.0 (#3766) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- apps/desktop/package.json | 2 +- apps/desktop/src/package-lock.json | 4 ++-- apps/desktop/src/package.json | 2 +- package-lock.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 1e67787343c..b9314fbad71 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@bitwarden/desktop", "description": "A secure and free password manager for all of your devices.", - "version": "2022.9.2", + "version": "2022.10.0", "keywords": [ "bitwarden", "password", diff --git a/apps/desktop/src/package-lock.json b/apps/desktop/src/package-lock.json index 2e0090096bb..c3509d577f5 100644 --- a/apps/desktop/src/package-lock.json +++ b/apps/desktop/src/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bitwarden/desktop", - "version": "2022.9.2", + "version": "2022.10.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@bitwarden/desktop", - "version": "2022.9.2", + "version": "2022.10.0", "license": "GPL-3.0", "dependencies": { "@bitwarden/desktop-native": "file:../desktop_native" diff --git a/apps/desktop/src/package.json b/apps/desktop/src/package.json index 0bf1bfd925c..f1f07dfbf0e 100644 --- a/apps/desktop/src/package.json +++ b/apps/desktop/src/package.json @@ -2,7 +2,7 @@ "name": "@bitwarden/desktop", "productName": "Bitwarden", "description": "A secure and free password manager for all of your devices.", - "version": "2022.9.2", + "version": "2022.10.0", "author": "Bitwarden Inc. (https://bitwarden.com)", "homepage": "https://bitwarden.com", "license": "GPL-3.0", diff --git a/package-lock.json b/package-lock.json index 53231218eef..85719bd42b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -220,7 +220,7 @@ }, "apps/desktop": { "name": "@bitwarden/desktop", - "version": "2022.9.2", + "version": "2022.10.0", "hasInstallScript": true, "license": "GPL-3.0" }, From 9f87fd7f57d0217200c6cece3f5069d5336be723 Mon Sep 17 00:00:00 2001 From: Opeyemi <54288773+Eebru-gzy@users.noreply.github.com> Date: Wed, 12 Oct 2022 16:31:20 +0100 Subject: [PATCH 38/82] edit CLI choco retrieve secret (#3767) --- .github/workflows/release-cli.yml | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index cad548f2b0d..881fedc35e4 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -209,17 +209,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - cli-choco-api-key - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "cli-choco-api-key" - name: Setup Chocolatey run: choco apikey --key $env:CHOCO_API_KEY --source https://push.chocolatey.org/ From f489d1b277b4425f9231a9e57021c26e9730f0b2 Mon Sep 17 00:00:00 2001 From: mimartin12 <77340197+mimartin12@users.noreply.github.com> Date: Thu, 13 Oct 2022 11:54:26 -0600 Subject: [PATCH 39/82] Add artifact extract step (#3773) --- .github/workflows/release-qa-web.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-qa-web.yml b/.github/workflows/release-qa-web.yml index f02286be2f7..2d46506b1ee 100644 --- a/.github/workflows/release-qa-web.yml +++ b/.github/workflows/release-qa-web.yml @@ -34,11 +34,14 @@ jobs: uses: bitwarden/gh-actions/download-artifacts@850faad0cf6c02a8c0dc46eddde2363fbd6c373a with: workflow: build-web.yml - path: apps/web/build + path: apps/web workflow_conclusion: success branch: ${{ github.ref_name }} artifacts: web-*-cloud-QA.zip - + + - name: Unzip cloud asset + working-directory: apps/web + run: unzip web-*-cloud-QA.zip - name: Checkout Repo uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # v3.0.2 From 3742732ae879562b0dd3b56b83c5a4e283424e08 Mon Sep 17 00:00:00 2001 From: Vince Grassia <593223+vgrassia@users.noreply.github.com> Date: Thu, 13 Oct 2022 15:38:47 -0400 Subject: [PATCH 40/82] Update retrieve secrets steps in workflows (#3705) --- .github/workflows/brew-bump-cli.yml | 15 +--- .github/workflows/brew-bump-desktop.yml | 15 +--- .github/workflows/build-browser.yml | 45 +++-------- .github/workflows/build-cli.yml | 15 +--- .github/workflows/build-desktop.yml | 90 ++++++++-------------- .github/workflows/build-web.yml | 30 ++------ .github/workflows/crowdin-pull.yml | 15 +--- .github/workflows/release-cli.yml | 31 ++------ .github/workflows/release-desktop-beta.yml | 37 +++------ 9 files changed, 89 insertions(+), 204 deletions(-) diff --git a/.github/workflows/brew-bump-cli.yml b/.github/workflows/brew-bump-cli.yml index 5487095bf75..88a8cdefe50 100644 --- a/.github/workflows/brew-bump-cli.yml +++ b/.github/workflows/brew-bump-cli.yml @@ -23,17 +23,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - brew-bump-workflow-pat - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "brew-bump-workflow-pat" - name: Update Homebrew formula uses: dawidd6/action-homebrew-bump-formula@dd221ff435f42fa8102b5871bb1929af9d76476c diff --git a/.github/workflows/brew-bump-desktop.yml b/.github/workflows/brew-bump-desktop.yml index fba2685f234..249c5a57d48 100644 --- a/.github/workflows/brew-bump-desktop.yml +++ b/.github/workflows/brew-bump-desktop.yml @@ -23,17 +23,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - brew-bump-workflow-pat - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "brew-bump-workflow-pat" - name: Update Homebrew cask uses: macauley/action-homebrew-bump-cask@445c42390d790569d938f9068d01af39ca030feb diff --git a/.github/workflows/build-browser.yml b/.github/workflows/build-browser.yml index 91134cbab65..9a5e4ebd33b 100644 --- a/.github/workflows/build-browser.yml +++ b/.github/workflows/build-browser.yml @@ -338,17 +338,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - crowdin-api-token - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "crowdin-api-token" - name: Upload Sources uses: crowdin/github-action@ecd7eb0ef6f3cfa16293c79e9cbc4bc5b5fd9c49 # v1.4.9 @@ -378,17 +371,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - github-pat-bitwarden-devops-bot-repo-scope - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "github-pat-bitwarden-devops-bot-repo-scope" - name: Extract branch name id: extract_branch @@ -459,17 +445,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets if: failure() - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - devops-alerts-slack-webhook-url - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "devops-alerts-slack-webhook-url" - name: Notify Slack on failure uses: act10ns/slack@da3191ebe2e67f49b46880b4633f5591a96d1d33 # v1.5.0 diff --git a/.github/workflows/build-cli.yml b/.github/workflows/build-cli.yml index 9147ed1b7eb..e32dbedb24c 100644 --- a/.github/workflows/build-cli.yml +++ b/.github/workflows/build-cli.yml @@ -361,17 +361,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets if: failure() - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - devops-alerts-slack-webhook-url - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "devops-alerts-slack-webhook-url" - name: Notify Slack on failure uses: act10ns/slack@da3191ebe2e67f49b46880b4633f5591a96d1d33 diff --git a/.github/workflows/build-desktop.yml b/.github/workflows/build-desktop.yml index fe8df982c26..8f8529320c2 100644 --- a/.github/workflows/build-desktop.yml +++ b/.github/workflows/build-desktop.yml @@ -142,7 +142,7 @@ jobs: uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -176,7 +176,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 id: cache with: path: | @@ -257,7 +257,7 @@ jobs: uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -297,29 +297,21 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - shell: bash - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - code-signing-vault-url, + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "code-signing-vault-url, code-signing-client-id, code-signing-tenant-id, code-signing-client-secret, - code-signing-cert-name - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + code-signing-cert-name" - name: Install Node dependencies run: npm ci working-directory: ./ - name: Cache Native Module - uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 id: cache with: path: apps/desktop/desktop_native/*.node @@ -478,7 +470,7 @@ jobs: uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -591,7 +583,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 id: cache with: path: apps/desktop/desktop_native/*.node @@ -623,7 +615,7 @@ jobs: uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -736,7 +728,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 id: cache with: path: apps/desktop/desktop_native/*.node @@ -754,7 +746,7 @@ jobs: - name: Download artifact from hotfix-rc-desktop if: github.ref == 'refs/heads/hotfix-rc-desktop' - uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 with: workflow: build-browser.yml workflow_conclusion: success @@ -763,7 +755,7 @@ jobs: - name: Download artifact from rc if: github.ref == 'refs/heads/rc' - uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 with: workflow: build-browser.yml workflow_conclusion: success @@ -772,7 +764,7 @@ jobs: - name: Download artifact from master if: ${{ github.ref != 'refs/heads/rc' && github.ref != 'refs/heads/hotfix-rc-desktop' }} - uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 with: workflow: build-browser.yml workflow_conclusion: success @@ -841,7 +833,7 @@ jobs: uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -954,7 +946,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 id: cache with: path: apps/desktop/desktop_native/*.node @@ -972,7 +964,7 @@ jobs: - name: Download artifact from hotfix-rc-desktop if: github.ref == 'refs/heads/hotfix-rc-desktop' - uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 with: workflow: build-browser.yml workflow_conclusion: success @@ -981,7 +973,7 @@ jobs: - name: Download artifact from rc if: github.ref == 'refs/heads/rc' - uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 with: workflow: build-browser.yml workflow_conclusion: success @@ -990,7 +982,7 @@ jobs: - name: Download artifact from master if: ${{ github.ref != 'refs/heads/rc' && github.ref != 'refs/heads/hotfix-rc-desktop' }} - uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 with: workflow: build-browser.yml workflow_conclusion: success @@ -1051,7 +1043,7 @@ jobs: uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 - name: Set up Node - uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 + uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a with: cache: 'npm' cache-dependency-path: '**/package-lock.json' @@ -1159,7 +1151,7 @@ jobs: working-directory: ./ - name: Cache Native Module - uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 # v3.0.2 + uses: actions/cache@48af2dc4a9e8278b89d7fa154b955c30c6aaab09 id: cache with: path: apps/desktop/desktop_native/*.node @@ -1177,7 +1169,7 @@ jobs: - name: Download artifact from rc if: github.ref == 'refs/heads/rc' - uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 with: workflow: build-browser.yml workflow_conclusion: success @@ -1186,7 +1178,7 @@ jobs: - name: Download artifact from master if: github.ref != 'refs/heads/rc' - uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 # v2.19.0 + uses: dawidd6/action-download-artifact@b2abf1705491048a2d7074f7d90513044fd25d39 with: workflow: build-browser.yml workflow_conclusion: success @@ -1242,20 +1234,13 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - crowdin-api-token - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "crowdin-api-token" - name: Upload Sources - uses: crowdin/github-action@ecd7eb0ef6f3cfa16293c79e9cbc4bc5b5fd9c49 # v1.4.9 + uses: crowdin/github-action@ecd7eb0ef6f3cfa16293c79e9cbc4bc5b5fd9c49 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} @@ -1324,17 +1309,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets if: failure() - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - devops-alerts-slack-webhook-url - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "devops-alerts-slack-webhook-url" - name: Notify Slack on failure uses: act10ns/slack@da3191ebe2e67f49b46880b4633f5591a96d1d33 diff --git a/.github/workflows/build-web.yml b/.github/workflows/build-web.yml index 5122b24fe8a..f7073ec3c62 100644 --- a/.github/workflows/build-web.yml +++ b/.github/workflows/build-web.yml @@ -349,17 +349,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - crowdin-api-token - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "crowdin-api-token" - name: Upload Sources uses: crowdin/github-action@ecd7eb0ef6f3cfa16293c79e9cbc4bc5b5fd9c49 # v1.4.9 @@ -419,17 +412,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets if: failure() - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - devops-alerts-slack-webhook-url - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "devops-alerts-slack-webhook-url" - name: Notify Slack on failure uses: act10ns/slack@da3191ebe2e67f49b46880b4633f5591a96d1d33 # v1.5.1 diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml index 9aca46ebd69..abb3fca703d 100644 --- a/.github/workflows/crowdin-pull.yml +++ b/.github/workflows/crowdin-pull.yml @@ -32,17 +32,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - crowdin-api-token - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "crowdin-api-token" - name: Download translations uses: bitwarden/gh-actions/crowdin@05052c5c575ceb09ceea397fe241879e199ed44b diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 881fedc35e4..208cbb2d4a6 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -148,17 +148,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - snapcraft-store-token - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "snapcraft-store-token" - name: Install Snap uses: samuelmeuli/action-snapcraft@10d7d0a84d9d86098b19f872257df314b0bd8e2d # v1.2.0 @@ -268,17 +261,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - cli-npm-api-key - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "cli-npm-api-key" - name: Download artifacts if: ${{ github.event.inputs.release_type != 'Dry Run' }} @@ -313,4 +299,3 @@ jobs: - name: Publish NPM if: ${{ github.event.inputs.release_type != 'Dry Run' }} run: npm publish --access public --regsitry=https://registry.npmjs.org/ --userconfig=./.npmrc - diff --git a/.github/workflows/release-desktop-beta.yml b/.github/workflows/release-desktop-beta.yml index 79a4eaa24cb..7dbc110a04d 100644 --- a/.github/workflows/release-desktop-beta.yml +++ b/.github/workflows/release-desktop-beta.yml @@ -249,21 +249,14 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - code-signing-vault-url, + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "code-signing-vault-url, code-signing-client-id, code-signing-tenant-id, code-signing-client-secret, - code-signing-cert-name - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + code-signing-cert-name" - name: Install Node dependencies run: npm ci @@ -939,26 +932,19 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - env: - KEYVAULT: bitwarden-prod-kv - SECRETS: | - aws-electron-access-id, + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "aws-electron-access-id, aws-electron-access-key, aws-electron-bucket-name, r2-electron-access-id, r2-electron-access-key, r2-electron-bucket-name, - cf-prod-account - run: | - for i in ${SECRETS//,/ } - do - VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv) - echo "::add-mask::$VALUE" - echo "::set-output name=$i::$VALUE" - done + cf-prod-account" - name: Download all artifacts - uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 # v3.0.0 + uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741 with: path: apps/desktop/artifacts @@ -1037,4 +1023,3 @@ jobs: env: BRANCH: ${{ needs.setup.outputs.branch-name }} run: git push origin --delete $BRANCH - From ff380e7646aeb4dd9f3d3048da6337491a707272 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Oct 2022 14:27:48 -0700 Subject: [PATCH 41/82] Bumped desktop version to 2022.10.1 (#3778) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- apps/desktop/package.json | 2 +- apps/desktop/src/package-lock.json | 4 ++-- apps/desktop/src/package.json | 2 +- package-lock.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index b9314fbad71..a76bcf0fb63 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@bitwarden/desktop", "description": "A secure and free password manager for all of your devices.", - "version": "2022.10.0", + "version": "2022.10.1", "keywords": [ "bitwarden", "password", diff --git a/apps/desktop/src/package-lock.json b/apps/desktop/src/package-lock.json index c3509d577f5..023bca1e320 100644 --- a/apps/desktop/src/package-lock.json +++ b/apps/desktop/src/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bitwarden/desktop", - "version": "2022.10.0", + "version": "2022.10.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@bitwarden/desktop", - "version": "2022.10.0", + "version": "2022.10.1", "license": "GPL-3.0", "dependencies": { "@bitwarden/desktop-native": "file:../desktop_native" diff --git a/apps/desktop/src/package.json b/apps/desktop/src/package.json index f1f07dfbf0e..3ad0e2f285f 100644 --- a/apps/desktop/src/package.json +++ b/apps/desktop/src/package.json @@ -2,7 +2,7 @@ "name": "@bitwarden/desktop", "productName": "Bitwarden", "description": "A secure and free password manager for all of your devices.", - "version": "2022.10.0", + "version": "2022.10.1", "author": "Bitwarden Inc. (https://bitwarden.com)", "homepage": "https://bitwarden.com", "license": "GPL-3.0", diff --git a/package-lock.json b/package-lock.json index 85719bd42b1..0d56bb81ac4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -220,7 +220,7 @@ }, "apps/desktop": { "name": "@bitwarden/desktop", - "version": "2022.10.0", + "version": "2022.10.1", "hasInstallScript": true, "license": "GPL-3.0" }, From dff15b6e8e901e357c0d49d5a8488c0f7155a4ab Mon Sep 17 00:00:00 2001 From: sneakernuts <671942+sneakernuts@users.noreply.github.com> Date: Thu, 13 Oct 2022 15:47:13 -0600 Subject: [PATCH 42/82] Update-workflows-git-signing (#3725) * crowdin workflow update * version bump workflow update * pinned gha for importing gpg key * added steps for kv + updated import gpg key action * Updated crowdin workflow to utilize kv --- .github/workflows/crowdin-pull.yml | 13 ++++++++----- .github/workflows/version-bump.yml | 24 ++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/.github/workflows/crowdin-pull.yml b/.github/workflows/crowdin-pull.yml index abb3fca703d..acb660177f7 100644 --- a/.github/workflows/crowdin-pull.yml +++ b/.github/workflows/crowdin-pull.yml @@ -32,10 +32,10 @@ jobs: - name: Retrieve secrets id: retrieve-secrets - uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af with: - keyvault: "bitwarden-prod-kv" - secrets: "crowdin-api-token" + keyvault: "bitwarden-prod-kv" + secrets: "crowdin-api-token, github-gpg-private-key, github-gpg-private-key-passphrase" - name: Download translations uses: bitwarden/gh-actions/crowdin@05052c5c575ceb09ceea397fe241879e199ed44b @@ -49,11 +49,14 @@ jobs: upload_sources: false upload_translations: false download_translations: true - github_user_name: "github-actions" - github_user_email: "<>" + github_user_name: "bitwarden-devops-bot" + github_user_email: "106330231+bitwarden-devops-bot@users.noreply.github.com" commit_message: "Autosync the updated translations" localization_branch_name: crowdin-auto-sync-${{ matrix.app_name }} create_pull_request: true pull_request_title: "Autosync Crowdin Translations for ${{ matrix.app_name }}" pull_request_body: "Autosync the updated translations" working_directory: apps/${{ matrix.app_name }} + gpg_private_key: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key }} + gpg_passphrase: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key-passphrase }} + diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml index 1fc0fde1bb3..8a3101bd2e8 100644 --- a/.github/workflows/version-bump.yml +++ b/.github/workflows/version-bump.yml @@ -29,6 +29,26 @@ jobs: - name: Checkout Branch uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 + - name: Login to Azure - Prod Subscription + uses: Azure/login@1f63701bf3e6892515f1b7ce2d2bf1708b46beaf + with: + creds: ${{ secrets.AZURE_PROD_KV_CREDENTIALS }} + + - name: Retrieve secrets + id: retrieve-secrets + uses: bitwarden/gh-actions/get-keyvault-secrets@c3b3285993151c5af47cefcb3b9134c28ab479af + with: + keyvault: "bitwarden-prod-kv" + secrets: "github-gpg-private-key, github-gpg-private-key-passphrase" + + - name: Import GPG key + uses: crazy-max/ghaction-import-gpg@c8bb57c57e8df1be8c73ff3d59deab1dbc00e0d1 + with: + gpg_private_key: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key }} + passphrase: ${{ steps.retrieve-secrets.outputs.github-gpg-private-key-passphrase }} + git_user_signingkey: true + git_commit_gpgsign: true + - name: Create Version Branch id: branch env: @@ -104,8 +124,8 @@ jobs: - name: Setup git run: | - git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" - git config --local user.name "github-actions[bot]" + git config --local user.email "106330231+bitwarden-devops-bot@users.noreply.github.com" + git config --local user.name "bitwarden-devops-bot" - name: Check if version changed id: version-changed From 8d80698e3626adb2b9a3ef8bbe9c57a309ee5dd7 Mon Sep 17 00:00:00 2001 From: dgoodman-bw <109169446+dgoodman-bw@users.noreply.github.com> Date: Thu, 13 Oct 2022 16:12:55 -0700 Subject: [PATCH 43/82] [PS-1335] problem with dropped letters keypresses when searching vault from browser extension debounce (#3680) * PS-1335 - replace custom debounce with built-in debounce, extend time to 500ms * PS-1335 - replace custom autofocus with directive * PS-1335 - update access modifiers of observable variables --- .../popup/vault/current-tab.component.html | 3 ++- .../src/popup/vault/current-tab.component.ts | 21 +++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/apps/browser/src/popup/vault/current-tab.component.html b/apps/browser/src/popup/vault/current-tab.component.html index c1029abffb3..f88fd2feca3 100644 --- a/apps/browser/src/popup/vault/current-tab.component.html +++ b/apps/browser/src/popup/vault/current-tab.component.html @@ -17,9 +17,10 @@ placeholder="{{ 'searchVault' | i18n }}" id="search" [(ngModel)]="searchText" - (input)="searchVault()" + (input)="search$.next()" autocomplete="off" (keydown)="closeOnEsc($event)" + appAutofocus />
diff --git a/apps/browser/src/popup/vault/current-tab.component.ts b/apps/browser/src/popup/vault/current-tab.component.ts index f3e97dd233d..82a2c73587a 100644 --- a/apps/browser/src/popup/vault/current-tab.component.ts +++ b/apps/browser/src/popup/vault/current-tab.component.ts @@ -1,5 +1,7 @@ import { ChangeDetectorRef, Component, NgZone, OnDestroy, OnInit } from "@angular/core"; import { Router } from "@angular/router"; +import { Subject } from "rxjs"; +import { debounceTime, takeUntil } from "rxjs/operators"; import { BroadcasterService } from "@bitwarden/common/abstractions/broadcaster.service"; import { CipherService } from "@bitwarden/common/abstractions/cipher.service"; @@ -40,6 +42,8 @@ export class CurrentTabComponent implements OnInit, OnDestroy { loaded = false; isLoading = false; showOrganizations = false; + protected search$ = new Subject(); + private destroy$ = new Subject(); private totpCode: string; private totpTimeout: number; @@ -105,14 +109,17 @@ export class CurrentTabComponent implements OnInit, OnDestroy { }, 5000); } - window.setTimeout(() => { - document.getElementById("search").focus(); - }, 100); + this.search$ + .pipe(debounceTime(500), takeUntil(this.destroy$)) + .subscribe(() => this.searchVault()); } ngOnDestroy() { window.clearTimeout(this.loadedTimeout); this.broadcasterService.unsubscribe(BroadcasterSubscriptionId); + + this.destroy$.next(); + this.destroy$.complete(); } async refresh() { @@ -179,15 +186,11 @@ export class CurrentTabComponent implements OnInit, OnDestroy { } searchVault() { - if (this.searchTimeout != null) { - clearTimeout(this.searchTimeout); - } if (!this.searchService.isSearchable(this.searchText)) { return; } - this.searchTimeout = window.setTimeout(async () => { - this.router.navigate(["/tabs/vault"], { queryParams: { searchText: this.searchText } }); - }, 200); + + this.router.navigate(["/tabs/vault"], { queryParams: { searchText: this.searchText } }); } closeOnEsc(e: KeyboardEvent) { From d77713e3ba7e7260f3c86e55f14500352e9cbb98 Mon Sep 17 00:00:00 2001 From: Shane Melton Date: Thu, 13 Oct 2022 16:43:09 -0700 Subject: [PATCH 44/82] Update bwi-font files and icon stylesheet (#3780) --- .../src/scss/bwicons/fonts/bwi-font.svg | 5 +++-- .../src/scss/bwicons/fonts/bwi-font.ttf | Bin 72280 -> 72668 bytes .../src/scss/bwicons/fonts/bwi-font.woff | Bin 72356 -> 72744 bytes .../src/scss/bwicons/fonts/bwi-font.woff2 | Bin 31292 -> 31492 bytes .../src/scss/bwicons/styles/style.scss | 6 +++++- libs/components/src/stories/icons.stories.mdx | 1 + 6 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libs/angular/src/scss/bwicons/fonts/bwi-font.svg b/libs/angular/src/scss/bwicons/fonts/bwi-font.svg index f92a4df342d..1ba86ce95d8 100644 --- a/libs/angular/src/scss/bwicons/fonts/bwi-font.svg +++ b/libs/angular/src/scss/bwicons/fonts/bwi-font.svg @@ -172,7 +172,8 @@ + - - + + \ No newline at end of file diff --git a/libs/angular/src/scss/bwicons/fonts/bwi-font.ttf b/libs/angular/src/scss/bwicons/fonts/bwi-font.ttf index 7c7afd4cdb9d110404b67ba3e8cd89d95151c138..51281cb413f61e636e654e6e89b5539be398e927 100644 GIT binary patch delta 898 zcmZWnO-vI}5T1E&+1&u`?#gx-ElRg5aIBV(C~65T5KQ*_H?g)8T(pQ40u8c-MV zqnTW5|F>;`zU!2C@)QtW)FJt<-tK&Ha_a0IeVzPu0G2O|XZtgkpC;!4n-7tQQ_M`2 z;4xPLw@(uxa3ND1wdWEw^6wL&r8GVU$i+mbPu;Bm2(`HH*4yE)frB)9GxJ_DGgxLtfUSJJQ+ZXet#YtF20+sEDUBqF1bwFxAo9+fm)` zo(1&ah^&aMX6>c3zs^&4Fj+7HnwR~M6-o6}uQn=5xzRr(t5U!y%sgj)vsLw0*Vy@V zHk;m=^gWbKNtPdZl(XrHR5X%GMWU&y;+IrGK<+pk1wobk17Y?&JTMTh9tsaQ4&%Hz z;N*gg1#?cI`DneyxmB+z4UNhJ&e$%~sy<=IEwjezH2|^lO2vyz>cc(!Eq+*Xny{l> zwBvExj>T%F4G@nLh{bHz!9A35v;P?_891)|dd-G-KYdeoo6xqkL3(d`)y-}GgK^~_ zxx;_8n>O0SVmSAwAA!w5+>fw%K!?n>|q5;i#P!J zDjB&Y74fVh&w%_C1_q{-ocv_R#5dZeEewoeCxEIKXBV#E4c1t0~ zA|`enMr-D0jMt}c5@FPH4{C~&f#jFSn zCUFL3kZ;(OmDEg4%#4l11aYvLywqi+H8iAU)SM)1!5gwpdZ=pA;GB6 hD0;1vuhRu=(oAMP1|hHkOw$iaGYW5CEXioe1OP?&X!`&F diff --git a/libs/angular/src/scss/bwicons/fonts/bwi-font.woff b/libs/angular/src/scss/bwicons/fonts/bwi-font.woff index b5e524cd5760efdcdda89a58cd025655aab0f41b..b1d2605f77d71947ca77c9f4f81f311d9ee40a1d 100644 GIT binary patch delta 950 zcmZWoO-vI}5PtJ^+1)_PcI|ezQhwU5fQAOz(k=%C0>vs9!~=#HqA3MwOe-ivYoe)< zi|B>Fgoq~-6CuQCB2o?-W8x7KFY3iaqbJZ9FCN=EuYdF0 zj_2nsaKCD9`*$H%C?JE;ZLY6GF-XP#vJ9Yi0-N)zH!oZQwy#3Dp@M zOj1;>6>7sswV;aOsdv=Zd1VM24wPwQ@}A6otf<)v^aU2#SNxHPACX@d1wj_h$AogBM1)9VdwXN9n|+gDg+WOcYV`bTv%ADv zax$FM+)6q9A<3f6n!9O{<&4EOCD}x`mYmw4F1^N9p4+0AqVagND(rY7>7pbpTjinX zM8w||i8T2mIoT!Jcpf;@o#)`4LBHweHD1qh~yNo|YhDB%Ir zr~t-mm<93@b5nt0KnF6(fUxoelYa&I#U(%wwZPRe16j;0tdn^dyJaW7{P6$p|NlS{ zpeZjIUcLkK82>*OXAxV`yoGW57DmQU{_U+oj73cBI*iuL&ls;y|0lwzS3g5hS65L% zPw!tKIzxfc8Z4s#l|Z6F)-W?3`Tvf|i&+sE!r~0dK<|jKDJ!X&nwS|Ii3#FhGkK}Y zNNZ?F%cw(XPZ&d;=^jWBi2wCMRs8FNiU7?9S_s4jF$+`U`E9;3aI=7%z;JJkEf0*I z{za70oN?xM9WllTCLW+XFA(dn0HbvK6bVLsM$v1Xe4Q>}lV&pWF$jSTU;-ry;qC7w H87-Lr1I&8Q diff --git a/libs/angular/src/scss/bwicons/fonts/bwi-font.woff2 b/libs/angular/src/scss/bwicons/fonts/bwi-font.woff2 index fee96f92cca886fdba49d579a6682a8b2ca8bade..9e4cc70d2403680e0920006e2ed0ca2f0c81c883 100644 GIT binary patch literal 31492 zcmV(~K+nH-Pew8T0RR910DA-g3jhEB0UOW&0D7_j0RR9100000000000000000000 z00006U;tbZ2nvL!c!QiD0X7081B7S`f;IpIAO(aR2Ot{&)UzVkH~uuK;g=6;Y9D#2Ag{YBiuGYE!2xylCj8RzPZ#q%xJ7ew-Nm z8Uf)ef40Bbxt|as3?rHp0$~Voo?2jMVB5%_0DD z$E0xlO>#{!>Gc^=$N`a^5)%fMoYn8QeLFW-p^Akq#3t@8K3?@nimY-9y|1=5wGrGNl(a9P{7hrU9iZVG@ zF?4Bnos@vpo`ZCb5-FZdj$OzlRqCLkgpv+ZQBu>Cwkx3HSHJ9j(fzLc-TyyTtrnn3 zKWSs=F6rL8rn4@_ZmSCTe?Eqo8BpQ?q9uToX-cwX%HC(w+N4b!(EA=h(q74z=C`gR>cmMmXL$<}89W&|{gmY#C z`WegEd~{(BdI%UlWbWVMmsk0_wp;1br#LnkAnTI53?d5vuybZrp#ZdbHv-&~uLs{$ z-b7BCJvErn!va^*k00%FjqRQVMkJm%Dhc4hkx|hYwy_0@&Z#A!K?#BY5nio%HKl)& z#j%Zf^}g$+C!b5(>SPjAe87tILd|{_R`8@Ng(l5S}F~Dg7W7sdBH3 zwUpJ)&rr9i@xJKHCupz>1njexDhOecN%|VLe>s(FMwXRd;8(Qecs)fqyE}Mu^WX23 z{-c~XTPB19u3lL+qAGd5FeD~8<1=e3$kehm6VZnLo)7VOjZ;7bOSEwdBE&_XE%ZdV zPRrKfSHag0y8iVYrHrGGeaF&lpAHR7Q=OY)B~}RIxQEbqo}F%YXAnFyw4JRqB*06A z)u>}VVTHLHk>*xz{`bR5cst>7j!9*8WeFll=)0o6^qI&()wqXcGft`J5r7+D zZ|@6&E!@*nlAGhwiIz#++?suC9l2C)<6%l*W`Y6haB}UQso|dNAM~0W)#^&AY-rIwFm5Cq!<<75_8?KFgvbta z*_SgD&Q2#RWMI|94Y0SOU%%(@u;K1o$ggO}Vpfj@RuB2qen;t5Tim6q6lQ95|CvZb^3$$B;gCru3(r$yy(4aSO<0Qt2d7W#I^x(=H^+GWHAB%2nfO zMZjGgtsB;~lc zEh_9cPy0CwZ$!=-JwITRe8B(!N(C3@=_CKR|qedor$n)INq>+Y#-DifzTniY35eZhb^irdo}iYxj&TP zcB1KOayrj6?$TV4+2MvA*7`jbdNG_x-2(Il=e^a9=V#1Jd<5rRxHh)X0S9;$nEiVX z3_=+xaxjd=DRnFy(oeDq(Lp3?f2@<@Xi)5cLdWRV31QAM(|vW3{}ad*I>Oyc*NlR?KIv!W5Ec~zvh>y(!$#B_^z za-sIP#)b+7BGZ0|Y&nf>1uK98=fLtxRmzY3oDtv7f|_}Ij#@#D;vpQXErsRV8D%6o zWhuolBGit!bkGkQB>h)B12(C?OtUCnAe>*eMIK6%d4 z!HixJ-$h$*GE5NrNPu5apXmD+YW=mAPUs=FyK&hiyk&_~rXe(gwRK4}AZAciAwU8E zO7%X!?evMlj{Lzt#%97`cXl(6y$Q(S3^bxWkY4MpTeGo{HV z+5XiU{wA!cZ|X54T=W+LgTZ!{VBTtL-J3Kt+-o?irJ&RLzYGOHLuQQiw=~dc=2dQ7 za=i#YuDqN%3&z}%RU6)rMY;=4UBHV< z1;0}VT;C~$3Mves>f3 zm3eblAi}huyk45Atu2Da)NZMjp)aIXTUzZ?3CKn9y_P`Qg!=Y#K4S4S%B~JApkL+5 z6_`lCb;h-~)OX4U?LVT~(0m46fEQ#K!njyd!=oy12R*M&-<;e@IfP|RnHTgT7ilAA zlhRQPoMMoIacD3xm4cyc(m_}y1rZh^f!tN52CC$AOASm(;HFZyG6Id`yLm=4Zk2VZ z4a4zJ7g*p2fpN_-aC!_|ck&tq?HkU9nKDc4duRz0FK2f!C&x>#SlulbM*t=za4kv& zHtj1R&5*JqP19k^K-Y|p^X?FQwo&<>L&{rD@?NtLX1EeAn^#(a7MAN&;pUC2-@)%| z-nBuCLD8cy6lG6}>{J;s`ecYQ&d8r{Smc`GSIWhRWr7V91&Fj75Gaml61%e2;=MaA z<&@)Q`6TnNdHfJHyFiA9UAuUS`jP$2D<50-f{0P96LyrRJcT7y*<2b4@8OnVU#LnX zTLaic-RRxjah9QXvtlYqyb6KZ)sDhRq?jhY{XE-MKDIj?<3oGJ;V5&x{wYQs-M@=& z_k*zSw3)ILFy88VR{_<04!=6KJ7DI%GBpP_jlYpDQrCioMTon041`zWH%1QJdq>Bj zW<@8u;PyWA8i?b_5_?=@2d0OeLERhggmUr-^Ao1 z53@%PTyi#dLY5V)(Qh@UdxLI*m!8jhU8^=UJhk>EDcw^UZnsU*a<+`*5ZJz?Y;-iR zZzNOXTN2j9cw$k@8)0DICWa%%t8t`jKTG;=AZ+8j*PG>3$Lb+YTK)`!bdspINM{maGWQ0RI;vKA z(}_;$pg^>gcr}L>3k71<>a$9$z37kJylbxBaKosFR;hR3gX_Yl@uG=f~x|yn{zZm}z!pBjy(0UvXErMG_%bdD;*Au{rdQs`IiS=j^ zoCu}NDiwWb+c8(D-m*t({bkjchs^td6nVC}d3_mLQo&8f{|um}NY036)vW{k;kL*C zlZ3J+oEjaV*|S$Nj?0PBUrH>nRiUm$n)`v*9A>N~ihz+Miop z>V(b6n7xJFY_IFPlTO2Qf-&nwN-^g}X z!mDkyS55$^x}@JDn)J|a!axccUvq3LI#`ZbSxxz>7T`fS)clGOnvn7Q^HVSZTB*q5p@AbL59pb zQJk+5*|bu$Y#0e8vpuYZLR(6Wa0g-a;*@PaQ`qtEOoS14h(o!trQiI(`{q^QruX)l ztOR^$^v%RxCM5!efsWOl9o7`YgT2*WP8k0t~q_cX&Pgngm>9ID9t(Q*MkUA zgUiM)sZ?_mEKC3H>G7;_4L#2z)ClA~i{@Lv=xVKw&h1&aXx8gKu@xyp2hiN&+BN$o z-CIYtUId2d`?s*&FT#2-5q(z0P%&1tf$Jzlc7Ru}5Iy|P7-qeHE0W;#x!wb5*D95$ z^o7!tut^k}^{VMmX=Zb!-O@kUTsnO!IN04*p)6~7p`5}zg*iQn0-;3A`b`4XhrLzM zZkQ43lZ=b=Cdzb!O*KIlAQXm)a2tbRN{t9HOHPNSlplNh!h91s-S`aI4fvit7Q6nl z>xZ&7SPN@zO>?tM{fJ^CqMiLb>HH6@veX!I%p+A6nc+m+QAVa7(YX2bysMa@u+~e} z=C57#cp~U>jY9V$jbN;uu48?J>Z+w?j_`HCLs~B+ng$(5g;TPCci+NBWbdX+8R2yG zaT&I~kNRF$zS#Fwy?L0e@_nQZz(+)Oh`JdMgQQK~0G;7mtdzpc@j(&!Uc9qZAw2=t zuAr!{<;mw7F1kx>YF3^1bQ7Zd2knX&u|aGl1Kug6E^>_G^G+Gy`l@g&kRZHHRSp;o zRbXnBKV>%e9uYEI;s*R*IzSBxuYnbWOj0{Rpm&*3V`mAo`_Nv|A4pPFyv`Zn*XJE_ zqp^hWkM(x8?@DGk^pUD0m zyH$um+imArff;(0LXf0CpLEgpnKV>_)AVbhQVqXYFz^OJJDXRd*?y;5@?TNlP|PN| zWA@QPeNs>0`Gx3Od@vUAVwLJUuOj|+YJFkR-T`q4vF~J15^v`vBk;{CVLYT8K@L#V zj|JRdW^6ARQO-qHfdEF$#hWPLA5i)PdrP z{B)_l#+Js~!WC^losDwy8c+iH`D1o2t^DX&U2OZX;qGnJuO2@42X?&7o_%VFIJctq zv5PMB<(1Ehtz zOX}Z-Th-WA&{En*^#?z(ng1UO8cKF+Ty#fZ{ef6?)H5~D}};-h*YGmZuM%_ItEft`4N-M z@H~+#CT9hX-BqZxePgg0Pp-@(oQG-#hYGL@gt+hAWH;)4qD2y5M)+~>ma?m*#~<*s z?kJo`p}0}V<}`5|&SK5E-V%QG^s&3QQEugjlnvR2SVQmN>M|uF_X}(li)UQFVUk2#K+Xfy!P4mYN~b@ zCq>4HnKe>&PwcB8a?SCKe1NFCq0H2q@ScbJ>WmvD;4=U@2NShGt}|Ur=c`dER)MX* z@I6CzpDTNO6A`HSZ#0F|nd(ZSw9uKKqS{ee7tjnfsPhHGIPW2NO7gP5$BGA;t~P^J zyqr&gM}4Kl_7}rNJ&#m^xapvK(ajv&)?gh2KpusD=VowWqxV3EpI$J%xA-7@(?>#2p)B-p(LXoH}9F8P_5lDyvS zhYYMA(wP3oq#kQ-7y9`}I$8K8VM%yL!y_g4Z{pKd%|RY`^Z>W}5(=j9G3*gxix@2n z`SP^egGG1U%d0bIww}=$PEy~sKoq`coYunTk}y0;XA4dk6aEPI3!gF4 zrP_XVZgz`Vt9KztmO3QbhtDAGXBL5M56FHqedT=J*C8nif(I5UrW@B4vVahTx&(jG zWglt3a2s0oQ^20O=WH2LuCvuLIE5jqEsXX2X<{TgybCE>G(E`jMV?S2;w?@zVxhT5 z*sInX(k%y3R)(+Ypy}2MdTRKFX(P;NzKTtiy~hkp`yuS0>=+1y z*3ag|h4L9Rl{ppg&dyScI*>;PcD{9$$*jXQl#rz@j1g)xZ(Tt}kVrtIG8$8&38mNI z8fOHsi^}6$BL}3!)Q>}99tsUOH1vc9=J!f9^X&?a$OKUUc;Q7&z&n7Ut=Ox&===gs zWK`D39Lpz%+ovHE!frIm3npOcYz5*7TE83GS1sb4cujRB?ez@~&=L_WjnVREBSaR~ z>mwHY(ipDR51h@_KXJOLG+JWB<5Jep9gvmS*_AfrYK?|0GW8vKc%BS*Zj4{Qp5xr` z^hFGX(h*Cr_SuO`J|Ts!@N)K+1(6EEpx}M;vvv<`N>E+oak(*s(KlG#V9lb1OPB1E zT#8?9WmkIC%T%*BEBzpTcN^UweykZ_OG$D(@#Z?jsYQjgL>X#cy z9M}cFQz~(JABe<-);FIC)RS{?`I%U13?!aJXLqN1!B+Ob>W9rOF_EY8Kzss$^3E_8 zy^jw4%#qMbxk#9>hfKK!vMq;v(~ZMwZQQ)z84d9%Z#NFN6M%b6ho_s{G|{`vkRKgw z8kluiMVu>U%jqPGklw_SqT22b7t$H-$q&270m&`4qxuey&g}yNApKrfD43fWMw%oy zg>#C@lT3x5Va}Un(u|nau^SUENJNzdmLhP+XaVr@zbOk5Uf}7!R5Cjp)hG@jrFdtD z;yIjm#)C)r`ZKd4Q+nDgvo1adAL95^RXCe0-_d5Pol(5j@bF#BG(J8P?bPi6wa*!9 z9xE{jdOIMfB`RN?aVhhud5gJ9c}336)15FOw3qi|TH-kwnY3CNoOvFIO3p-}?Mg#W zi)sl$050{xy0q#ZYJW#6P{%m->?BYKLC(V+)hD@ZZa3`r>)HHc#AsuL!EgbR@1Hit zap-b_B#L-Z5H!O|(mBe*utHg_GB9d!+M0`<555lO;nM4a<3~z!w-|fp({#x#ORR`> z!f1nDSB4P#X;gD@JyIFE-MO`d#nlc#YrvckL<)ITh9Q9g#bR?gkIO}m&H5kV)k;_Jc z;!I-Dfa^f!XRQVr8?wJLd|0I~Z2q8d7zGjIfLP{@LJWlH7BD~9D0)V}pP=+n$sVm< zymDgfoy0*u%dYQ-SrTi_GP>X^XzvvmCY`f&EDa0xX$;20Ac%*RM-Gus4H^0Z|I^0( zjz%d|Y&JhD)F?G2;_plCHjU^c;lRj7@xwuP3+epXZ7(kPK~FS_wZy{9*6u}C;e)q$ z^zajhnUi0SpZzkH=@pZ*?bhU4Bvn`|4T>TC@eWSWI7t2z>Uac=3;muaPlX-jw>xB* zYBVQ#Q?kl@R|axDj}jLddSb~1*@_Wvg2F-#*W#q;W{=4}A2o?9tcK%IM==zDaRUv( zD)uVV;s1N#!R|t%mTUJO` zEOjOto&eo%VUP%oWPQ&hWNKCLIB}_Vof@Ly^sRSD0<8n``x`}6l)g;DSd@leot{Ai zCFKsw9umhZH=j7nx+4Z$tD{(obedI5`xMIX;{ttYrYTA`sKr8SgI`91X+;Z`lxQ4p zkoeXT+eZVQ#a2w9L6KnO^b{Tu1MWWPj|M5I5IHDMLZ=(xvE!2i67(CFN_Y5~6!IL7 zhp(aQh1FwgE1xI6GBr4t)48PowMT%c;T;;Nw#7zKg8OQ%_Rj5tNFTr zy=AMi+M7ZB%K7#BmAyRN>$aBnml8Iwu2j-wXuKI}KJckksHAbUK7V$++ZF5U<5cY- zo)n!+jOq}q)|@sn0Q)p#^+f~Gxb1GVu#k|xm4B>SBOb*iivLPmjx?nyo2sXixiGP- z{T=6?hi#o+6a=!|uT3+H%_+#_qmfP3o&y(Heb((^1!Y}PvO7Bot?|DdDE6=fL~-B8FU=RQ@2g$9c>oWPZ<9( z2_7G26!vnzEz4Et?kTpkZQpqw8izT=mK=>1oYENdDDj_#sEk0j{F`}btyJ` zA>>R>r0->3XYix>Z!zV7*h7d%!oNcXR%Zv&O=XUjlVBQ_m~QbI5o?OE%NJI}95b@X zvRm;NtBbG#^33=GKGa1K_HM}#OYdB>D;KWnXIKAobOrx2%uX*{b!9>*_9-;@g87A1 zV{+meKfU^IqbvAtVRrSxRfDN}?yXRURd06sF}3B+u9F_l05p(_hJZj@%J-@g5iIWD z58`18;%sh*Df)vA)a*XKB%^%ls1VnOmy8aZN4uh^@7d0H`(NrG=PC#!7$-nUuTHS` zDPb>nP%H@w1p21by^GPJ|D!GA$hUgECF1G*8wG{0Sn!Pi)2Kr1@Ozrt{6f4Xkv-3z zcm$pE!ChV9m2MK-de4)su%Wv5MwHY3Fb!!d z*S_qk_NxINZSyIxaVM%{XuMk};>L%A zT`iX*ufj^ypBNzJLpok^uP&P`SK3geTh9B^K6g@#*MID-(Q#T-{ic(e8z`dL}k0(5Bxc`e((p~V) znZ^hn$M*HT0;m%DXL|5BV7hqM03naHMz-(S&boFdDVFp`&%iN*)(CN(kH&o8D4;6m zQLqzCP49UpA~GbHs=Wcti0*?aLHKWpi9zOa93PGONF6L2|IP+=dk=uj-T5#+z1o>D z@4?gDF9l$lu8tedNCXK`*jQMY%Y>&rEG-rG)6g@74~trt(-)eo%(sLQT!eRZ^@{lV zecTt*XFRwNzd~|X2La0x1|yP_mAvh321o%(?a&5I2gW@t^j+Bt4lM@719RZHf1=Wqv+g zSFpg=tU5jDRI4#=TLjft37!+rx;4bdvD4WZBU>SOrR?1l7~gm8q4FmLC5J;k5Eb%) z!k1xUCb25?+9xw)q(2NE9k!&}hFwk@X{CpO8)Q;`AyAxc42teivm&%-9k7prl?t%! z14mczlBi|lFd@iNLKvkYC1^jou`5H|z5KO|&sTHUBpFS46V<;-oPuuFObfGUE;NkIm-*a z*L%fnP^3BIW!+qZ^yEnMw)QMyQultwL83K`64rhdK&5^MFTrn@C3J_S`W3Q>KWLM& zdV1OvJjwB9>$ak{WBu+K;J#{5$2t60M~PaqEQ4O`eC*s}+!THcr=b}E8TbA!3tEn{ z2xa|%45Q?UrtaAP=+VA=6@sl~V5SyK&86;eh+!e;r`s4|<-b8R`V8Sh%W-2gxYYr@ zyax0Ccq_e;_jU#gWl_lmhU2BYmaLJ9zH&)1hh?ll#uDl{4gQDhq3=2uq_j3oIDpK-KEFj7g8^AYdxyR#0>ED~EVoz0#>PWMRDj17CBjdW3bT%Xk9}z6nDS zagaF4FH`B=Tpeb3NFul7Oqv|)4Zxn$mdNv_#{6njM;}v$SewF0@^h!fDK>5ku~fJp zH-~#*WgSLJl(kl+=P1AYwYq>Acx50DU@OEh^pHYlsNmaOzXjjpW#+ug6XAIw=$%R6 znnU_iN&GGVj5DULjGobLb}@n{kqcM zFK%e73p(+P#wTju*@ucsIyxtbSAea0W$?$W&drVvr|CRx1aN$5d@7|xnx@{U*G^}G zGN!~GWekG@Ybd9+3iOnQkh=SE{IL7eB$rLR{TJQ+ zIw2tQARF_+G=mSdpE&ILg%S9k^{z)0y9rmuNRL@W+`N@d zGAd|QwQRsHr`I#A{6^yJ9C2Hd;8z&%@((#$0@QS1GAR*gW@*@CefCGX31?=PC-=Ux zQ=SlE`R`C%Mf?0l5R`BS(J5!;*c zr@})9lT4I@BC5w)Xvz(d!HJJM!szL`k#UQxlM}w{|;ZVI*)aLN1w^i&F&fd z74zz}_)E!qfo0?4t+bWsF&h8ou&O4ObitxEAJ1AweA%&ukjoIO&Gp82J6mcZx6Iuknw zn~Hs$PV#Qinf0zSmd~9v%lF&Oa&+ceX3ysi;faaI))a*t9jqdMqv=077*e!y$j2u< z3OqaCH6}7L;**D;{`*H?f#%)HtgLUZuJ7-^DJGWAyzzlunglxU;pST`>+vthdV!!- zmU9VK;J)}CEQF9z>R2L+B(M*fK|D?sr51}>Y5s)g+6}`6l#irIQm@O6 zJ}QzGKy_Hha^>h~_MoV!i{`-sCD=DGT`yj~EX?`Lf546S4}JzNA*XTqEn1Fi9J95! z=x@6SRZZts8rRrhwHX`a@n218c~rDp<#N??N){!&UKK{5kHNA6$W5h7wq8m{ACtj_ zbRCZ6#0uQaBaDCm0S6F5iV{*_ThE4fwj;l{;<84Jfj)>l#Qy|q|@ke=hbqF8Rm3PA{n-Y!B? zSSW~BAqB!ld1zK_#^y58cSHxr=}990H#C9Dq9MA-hmJuDNl||iF8I(WNKxoR&k=r! zo2HW-_Ggt?1QkbQa2*w|3OC)xC)*vzvoRRbCt+DWn*I|gCSqhR@}gtV2aptX3(zln z(P+Y>n@@J002VH=CbTUPxQA~il5&ZS#WvloM+;f3ZLF*t3xDW`S$`}%W>fusHrAWD ziVHq88XAG-hqiXKtq?=V0U$DfpvL#y_}RiI{dYJcCk9A@gW1+Q`!E#U>GcS3us6A6 zn8P&@$|Ol6I4;#INof>GlcgSN%j@kpafHM%!=UGo>4c<9Lnzb0G%9iFi-;Zx0&_B@ zcuP|k1<~%goJujJn{1iz;lRMCtMkwgIAHxB9R&q;J6a_M!+&#Yq$KTl&*okV7)dtw=Qb@`^tNrp+puU`!a{dqP53-XG7(~u zq!#KRPTL-@mwfyF8-BC=ehB%#MeZ>VPXz&RvP(2qc?1Ur@&pl^xz0tHup1HdJ5LZo z&0P$+yiXwG@Y70a$eC|PFaSRF?MW+Yg)n_-T(raNsvsPLMHy5EaZ0ug_;hLm%yE*7 zrrmaoAojT86&*0@+@&RlY#WJ;z+9)5=(d&U{%%~J#K#h1;-nVyUcQ#&q{vvA>m>kW z2(@qWcdJW0>P-#Xwq&fnuC5=q35f@$b-nu+q-$oTIPm?8{*ZyNiMtjaSSGzb>Cdm_ z)_>B>Pix9c8`WT%yR&Hr39|~eoO?I1%GgJ=nMvs~5Y(mfb(?J|cV}buoX)9>%~mS1 zO{w=J9{N+qUk^GGRIh!9Hac29x$FoxOosAY!`v?#8jG%9XJ$?MRey6WS7lvj*fH`O zs?ocTNWj$tw+ zAH#AG9kfKi@(H#2P#8B?26B!33+h$ZeuhgDwoAa3e|Mv5{|l zf#r8Dif%-ZkHwfq5Q*Xi6NUy9?lp9h%l}W91y$DRsg zA)1b3am*$cnFx7z>Z^VK%RMXKa(jM(MRr39Kb z^RRk?^$6Qp$s=qIR8Fdt-Mr;PbQUHQLJp4g3YI294GVwa*xeFsM^Q$Za<-I&CMKFaq zgUETzo8a1wB6q&PwC9GW=G}|^`CG0kH#vg5pV72?sK~E>)YU?0ihksvBsvo?03ZMX z1OQGM+FcTo$6bii1<96nUAr5xaCiC&R)#e|L=e_N#Ivl2VagD8F*|TvnCQysZp>i( zfvbrv&9+oLj%7kt7FajJ6rS;$WK=@+urQ(~ftGgNfJ`?e%I|c&i}k5Yf%C!M0w~Mj(ty_oj_YbX-F`tyS5b z=}#3D+K;r$EIQP-v385Xf&QRiyE=%9lnsM!EwS%eX*+>%SXxmf-q9kdL(O*x67%xx zRl11y^+|>A>l3J+4xTQOSm+3yuESGrrNBUmbtMpG}d#hPheb-LEx3pvhrxl z#NdX-W#U&2?08O!MOcAJEN7`seLY8@AVQPa`|5eCFP^{HZ$EaSW&QefRw@#TQ4T9r zScK)Ioiv&)6%w1u;ZPD3QY(~qq20df)yeB$T)1G!`(<@ix<{636iX0|QLM~W3L7r^ z%hJ>H)GQajqRrcBZAN1pYLn-3eo?G2o0TDVu$y>@Nz%+nIOlu{{8 z0jV+td^hR1eA!a32M>fsMz(O^zXyl%xAeBXzV(NLG0HpMD_ws+03&N+d_=3{1FIdf z=g+r$usbv&vX8_0aj+wP&6d_z-#vFQM0)mZmO?pT+AC`DdH45%en)?_KX{L2WN?0t zF(JVykNANp36(0{zhHNtPfIjB+R96N;RFod`*j*GLS+M!(oOEIE$V_@&13@^(YUkv zZY)$Ta~o(XKKD_9Iv^)@oyTw6T6S4){l|av(#pgW`~5)G5qyO-x(&z(VuUe7GO+fN zynTN!hJ}y`1ndv4X$Zq%7z+~2NU#7_f{;g;KqSMg`)M43v0w<=#)qAUFCATk$ME`l#H{{ts=7}8UCwZ_h_ z6t^0~aB5;AJk5m2?bU|VWL~YIbED5??}Up!N&7_K+aWb`m(Pj*5Z62d0&cI{$y#+| z;gfzB>yvBQ#Hv>spe=>93z=ANSixD@1*Pj6bSIqYg+OQyIXJ085E}_;6om?jb08Fo zg}r;1%>sQ(@ZDBRmBgDcrR3AM1|2Kx=vY|B(l0oNTj!R(wXG@rcuT86kX>Ynygr)NYTfx_M;QIxi=u~;FkN`J{?6f zxbFvka}A|wP|jq9x`H3+?LBB!4ndYDt%wW>1g+9mF)j@AIg-?BF?W+8aoc7DnUlUL9kTu1Zas zD=@J(-&m<3r-pY-S!wnbzh8f!7AXE)kQf)?H-W6LZNjNxfuN1wl6W~!Yo^+6&g|`- z4`a%0R`)QTrI;}Pt2YKMC%^O2&-L_drub{edwM3xIG&w_n*^bPQ9=y^GoQ0bC9jK}xbq;zTt5Z*$DjCBO?LNUHdU7Bp|IS|Q~Mh{O1KpBudO2at( zFo)|zG7H8Q%ou<<@R;eL(0d;rKMmarMb>4}W(ra8NUVWF6vh4ulU*+gmYAYruVHC~?Ch~!J!3vT5t*4+yL*aHzj6`EMb?Yj zFGkY#3{_KrW>e>0Oe&xRtd|wbg!7_^QN4PXQY7|tXoX{qgWuEgn z$BJZ8MWI)8^1yT--w^H3lX5}uvN}3~Viau{9)+9f7G%AGP>wUFF2PSYm3zIJe5OqN zk2{A?y6_l)FE+Biy;iuNE)&>B0hb9vfMx9*1!%#@c081rZLVsnDjlZrI7FfTvYlOI z1A?J|%LUQPEqdtMx2$@ki`i##BxPr!;8Bjm375%Gm9J}%ZOlNb?l1)h+th?5uKiY5 z{&Da~AZLA|Y`Nf&X=%Wgsh|qI@B}0`F0T}0grz9>ji(XbVB92Cn zk?N}p!$|;SOKUyH5JiJqa3f#=zz7Neu;@LDb@mSrgzb+VP9~i{KQ&dS4HLa{y+Gp> zn3sm1`|y-U?BV0m;MRdn&%bc`+VUUiI*4ct^$^(@?_q_a!_BZF>`M`UKNF4R4sG1X z@$K%wMf($NbIozywHZ;2V*Wm6XzWudg*GlgAY=g$AR~a5G|y8?q{|Jf!;r$zfLN>e zOo8+m;_6{Und^KK%S64eWF5=e7$A6uiZeXwWAAM8N{ySh&@2!*qfh|SHP6#Kw{G=F zmlqcO2@mwnbQka%#TzG2_=z5|r2AvDT3h4d8{+i5kYDy5#sfx9tXtqWzXH$kL##ziq<48Fp>0`>Xxw;{^^Q?Jx-- zRf$w^Y2lMze`^6aq3L4U!D-*v>8YNi)8EaT{yNI%#)5CrL(`yc)pKjgswDZ;bSgN# zKg##t1)su)12A{aOBI5p5tBxXP$4}zLK7iKW2{5S#$F$up$kQ(9OE)Z@UTyfpczC( zgAahOGlxmZD|ANEL2`YKE}8T&Ief6GlKcp%YI99E`AEp_{@u){BmOuMqYKxd5B*dinDM+4^RV>s zdsZb5w*MiC|J~D(sNZDfeQRd)NxuDHle_0&fcC&w)J@|%)H!O^TDK_#td`50EOUffxO$v}6SxO@$(!2eG!4%u?YFSdYD0JdOkXy9e9gLZubxXH&qr_jK zRcJp>39@1mg#f-In9~MFuvYrFD^R!2jDpP6cb885GmFG>T&2i}E`rOLBRQtpKU!O- z!*~TKlqi8>_BTCj5yyp+cuYagAfEb<5tiMRyT0P(OP8zcMj|wdU*;v6satB-*S+G) z#V;;Rp7?7{JT`EwS7^2zL~>sK^6j0<4dTW1&M9y7>SzXtC=?7S1num=Q}z-^(<5aS zcWys>IY5Q5P|hBr3c-wRB{j>A4rb6#Zud!>uZm)4_q>9_j#}krgZ9f|nJvWJ90@?i%6Z5L8K@t|UiiOWs*5is7uDo^oiJf?Vfo_f? zaq&O?Sem_3WD&r{`CmBRM$^ys^$pPNk^npx@lgoEurVlYVAFs-RtKS#S;PnknVIe{ zS1AUi!YyuX7#yP2blm+Ksth5IqY#FWV+N1dTjbQdPX4dG&AN@sN7%v?y4|3nIJHKz zbF^g^s$&QGkJ(ux9^JKxrI=7zHB)AqOh&uuhC9oKbVT z-GH=JPzhqpAev!-syrugPMeEWf|0evE6pY9NwKIQ6vv8O6CUDc3+8}?2%<9VhCz?7 z_d<5|^_(16S`ciUny86)D~~l>5v+(Z>bra>O@}ZAKjLhHpuiI?<2!S^QSrRcP;6(J zatwyJRf3g;98wfH91p3Y)Mufxca^S|AHuJtnU5~s4{Dh2pEB$E@YKxnn_s=UV`$#CjcSsDRsU^&NX2aJoAC%@!^7`M z)cjSer`2h{Pm)W_wYzH?i^*Mo@D^8_@ZdS9_cTt(Ntb#7vgK8lF&ut}aLIX&wT;(> z6Dm%Y+bmO>{aEHkQ3!CN!_qQByg_0sgxwOV6;;5UKEjxrPDd3Z3&Sufh3@{&5dJ}B z8DK_`fQxYzpu1;I&Ub?!96GT&!9CEi3)T0IUO&{n-B@f z?P}nz*i91(Oc`@M-E}!8O%}0|<6@Ee_a34m{9G#lFUvsTwwgB3xN$#=t}aZvMROI` zvQfM*TWJ~iD8aRn6bJB06W{EPIzF5tcX%bsD6$y!C;;LqeKp;V^yekBbGBz7!b|pC z4>%eI-Xs)y(LE61q)1kX2k+7Y0*#uGUyKfBLncmhAQ-yag0TH-YQjlDIfH911qmge zKKfN>0L47WelG^aJfC_jJE(C&jiy1u>L;S0yZPv0tSiX+IX1OP5r)rv1R#SwT)jy) zPJm9L@H_>b>GOnv{GO{A+-M-pfyQ*9Pc#AD1eA#a5S(``&Sx7q6ly48GhJk@MX}Ks zTKcv9Is=K+y8-~w#ix9FIB0iI!bLr7d#x@IsH;RO%^d%lLihN1iTxZhe z{nwKqt!xk7?yon!+yDHvd;^tPy5z5q=QdPVGdk-y$2$eOj(gED<~<`5zuvTrP|gek zzh8rG-eC`qzmAzM=yfMd{eOp&+M;8^UUbj`LfcrYbpG@^ADXF@Z+N3y%T#`QAIvUGhXfOU4P@u z=(!2y+R`RW&t zR4N-)5RQr9Oo}e_GUa_a>y}K0Jz?3N*)ZVkt#`&xRv7~<(w37T#~zuD&(I4xhZ{O_ ztPa?KGmkZ-hLM7D2Rd>A+a@PmWuqkkJYa}fn!lcZYc!bb)bnB50IBVx=#7CGv}0s;LW zYq2U7>Wvua1EKvtPac01nn_=Ym~$iUA|~Ke)Qd`lonLDy$qm5w3dDyKFyr~*9V3u+ zXN6!#mfy<4v{{4Uu3NAkkMFjWzi+62l3BRbFKdTT)n!dTwPSeF2~c4?%8@{`m=mlW zm`_rJ$joy<5Eqjvol5pu5ix1@`vvA5J!Z=3+Y@$Om^G(5D_=3Dx3ql{gd~PtvQnqV6353N`sn45%sEuY$}6&9CB1h1QGmHONgJ>HTU6-fGo(p()M zL0+`bwikK^?J>(XivfvsAfCpAMoWPN%+`0?odqyD;zb*u5b$I;h&=Mk+7)a&;`FCL zVj4n7C?{C!F}WNM*loJ*`{gvY3FDSwH*$zxC2uJBvrB#n%_oQgK2#yHdV`41nNRFr zqYDnwq-_G=oqpXW1v+~eEx;=>?VcP^*Zqzr0-2cNl0QHXD*zHKd?ooRj)t(LfKJLb zROvcMq}D;OS$qRcz$h~I9(=Y5=#6Qn!liUozXB+g_Kz_G@vis*kmd@hVnY8AM)`g@ zv&0v^e}X55L4UTDZlm|ogUHCDqB-juEa-2o*J34oW9N;G@I^%0Lp|H2<1W*#jEj!z zY1Bt%3^FT+-5MDG8LwV1=AmaH$av~0XEkeb-kw!0o}HB$5gbSsKXeX+^l5KKWvr6w zD`X6>uC2^5D5PYZDUreaXBKxkWrO?!`gqysC>hnbzj_fCDv>PDU^e=@{bDn2yTft1 ztPG=>3VMVe2tG`_n(tM2E7h?2#20cb{IVdi4_;iI`{KqLPH?F3ErOT0( zAna~q=lSINTIVSldieNyF^5dCCbd#^Qa;jp2F{HV>n<5qHP!-F>I^<|dKnle7(UqVabJjc1QWjEy1E z^5aKY8@ohg!pRbTTq#G7(bSC4h-q8V+gSj_k|!)Zag@{!jg8UCW)~QOZz8(eKG5T1 zY?&aG?b^r)73^OpWaq$~@*e0oj~CZuNznFT(vfAu_= zlbu%c>tlZ~`(St2&g%*B>GvuWSRP;k@$*icI?@ zYHnum%m+0Gj^6&}<t; zpT4&RjPAeqb8md-HGgTAm3XEQeA@P*r%qeLQbgxJIvwuPs9Qw4^CDx!qS9r|Sx&y_ zIV%4Wgrwz3=)8YIBX)Q#^;FtQm!B>5IdYdr57~#)LX;|kegh1P4m2lAQIRaie`op^ z0H_Yfxyzz#F+{+3=rzwlwF>gwcl`ilAO4NC3u3u|X+bC#ucaPcZwyJC_2$mzs*A_| z`Sw#~f1t?Vif$hdHJ=l1(;&AU#9lptxI*=DD{^~b-a zdu`ixng z+!E^1@hVF2vlEr?!>GgvP8Hsm3l37SVL%P`t+4IRO?p^q(QcEevtilR%ZD3wZrFch z7bmUA{l|v?UYpNQEk$k? z@~DA%bNb*id$$njgv1Rs)RISp()-=tiGt`;QG#OIFMR20-j(=rMw?ViPMhlZTejL9qWHb`d6ALc$i0a>P=ktM84m5yW8mRA z_N@_-m623LATpvk;yoPIMYKjzW+DR-4=(j6;nOK(fu=IW3RpX3fEGlh^QMx6^85&p z?+i?DR}e3%R2P-1tlyiG>fLGvGM;Qbw`Sw=Kz($!>qASHJcp_MM^&-OK^v{W zyn28~*6X*bYNdi|OjJCS8P>ueGiJ=pcDdAqD2yWE$(0=pP(0sCH!#GsCsdy7als}E zr%MjGXO|F}1tc*S;iC#fk)zJ%A`W;0BHXhr}>i!*S9Ja0H##Klc`P13`M)Pj{pWv&2!t>sMj-+q2WZI{Xl7nAe)ZLX zzm#)}qkR^G*t<~HlRrMt(%SWciFkA}97Iy|o<0adl@Po#_SNnacEq_2F^+ct>mqsr z{_npJzhQj!T7LeA7`{3C+P}ADpOhg|y+_bWJ@G40+rXuG(rD z#sl?r{qh_C|I1@}x2|^rW_d$j$%d|YH5ySCtyo<7`G46cctl~v{}6X3s|D{W40Lm_ z@ByQ3GeBk`Mvx%ue;9JBWr)vj<0U0A z*3Cj$v6+CAkK=MhYb+)TnQJxwM@S{@O=hIdpPLWo`Bv8qjKOGdC%!^r0tB$mV!*N6 zw{o-;>9w{5Z=A$}G`4WY09;;!!3?rMCOC)1$k=)o%V2@TGG-*0F9wsZ5rilRtGJn1 zl$r=A&cpRcQYyh=oLpf(3uDa;HnWTbSPY4R=i6K}LX3a_n3g#*vOey%F_ht(=M!G;@MsnDo|Zc|dPZ zg7x_TlT}z*0H+>SGn;!*cru9-Mt;dfx+Ol4JTN~BYi1Y=ymu6zPRWA zZobOwYUR-EUved{tFl^pC;*&+FTC~3{{8q#|C5E?>3p)Vnl#ofvq(^T$J$BN9mj%$ z?drAF1D8Fn4`bK}3Jhc+KUeJfZ{PUVZkLhw+jjlu4 zCRvj4XDq0?YKEyc4V+IR0opy|dpV_bMHFpk*N%xa_OnA>kLaGEZ`f(%Eh&bCg>|Kz zpp(K!UzjX+DX@6fOkepuWMJ4nSH~W_It;c3TjBj|~X_X`69}u_CX$D8<{24{cHLUts5rGkT5N z@CCHRdjufkt5{Zycdt@)n($NjKLw?p=4dxHxg5b_ArJvW5HQ0>N2yrIX9)w!erWJc zS`S)rXF$ox7!q_lgj8PQFJn{m>DhyN#=4c&a(eGLU8!?#fWbpi{IaK&ZNL5bGV@T( z;*G)dT<+lE_x6wJo@H9QUgThnne^i1)HRL=P7pCK1~Bm9aGtH&AM?%10Js~x)NV=l zk*uk+NiBhwCY)@tLew!!%Y=|Qw0-62tjfO)H9aA74gwCtxzD%?v)Du;4g~bMtjxU} z-=;X8t-O^T{oH`X-V!P~E)0XSck6Km^>^%HTrI9bvI&`yaO--9B#msQm8>k-!q#zz zB@{~$w>+&`Kfm*kj{*Yj4GrhkNLRdFkzeKOHzAAujS82)v{=w(?WzD#OM$5!1iC?F zJzZ-O9~%66rzCJrNxpZKZ(9&4&j&mx-~0hW6h)WvgM7XR0bfvF`ZfnNp`c`$CvE%A z!S74CcUe4>3&UM0)AehQFISd?q6@+4FD9UR^<%M9mpfz42lv#8D^_fD$+b1{S6;-4 zAY(6`lf^gLYbBfwbtfb zZ_nQeZJMih_R|C%JYy9E7gj0SYFc01D>V6>F+MqeMOzBGo}kEboc=u4&ahcbg)(r_7`j|St|Cfh$2tVro z^hc+d@vUrKZ9E%H-GKx^5YGV_VTdb4J3dHhh5*8}nu?`XGE|<4<_N-=6Kxn+5fYnI z5kQ!*lowzEki$o;yRyhimCvvNkFWH(&rv8a#%i@9I5%g~ocLO3zMxh2Y-LN>@hcc2 zs=i%UbHj`P1|hs$=&zxNkM;E}KSKw2B6nkUCSAL5yq&fYK?J5x9w$c zb2uykkn{;#NvWf9d>we`gvdQpp?RPUSTR-M_H$@Myg7w`SSY?}4T~gdy!luUZv8J) z$Ikeana5ej*O1wsp z1*hF-Ux3q|Vn*|+q>Ug=^UEvYiMZEo*{ClhW?;30w6p3Yp zo-zy}%3$QF&LWZ-;o-rQx}r8U3m>7m0v5-!8;wTGCM*?6?d-nJy;fvTZc_Jh-t)6+ zs;)KkJRU*_^YeBcb`GdWyiE>~v`lVJ*ggn9CZ&UrP`xW=b41v#FnOlj%dB1Wd}&m7 z#0C8(TF5|Wh{BT}*w{xPO1Rw4d!p$e>cpTW_$fe8gv0+_#$jEhc#q7LB%1V{E$H4{$psXRz^e* z2J%SW7hkzlR?IX;(R7qS-{}P){i~;rVWVH93j5SXHLcMsmHtK<-jw5Vddfu}i(^?a zfS<;xSkXv~F}_E3pzI1fG;>D0SWjRBLWS2=fK$YX^`dPe&s5Ty>3{fOsB6Gn&av>~ zTuh8CS1y1waJ&PH0g@oFAVAPbd)UyEi7Y}DYcG1l6k$O9GHaFNY^?Sl-qjk$ZM4<4If zIeKi8F&bRIzHefJm0s_YocvmE@3tG4N6ueRu3NX(lD|BE#g7Nz$U4fVp>H@P^NJ~{ z+Rk|;oM(p`D3m>WCw7d}OX~#a66;Fo&rIz2=CZ_K62D$3XxGW%R4Ns2;M?7t^>}=@ z_4yrw0^Sf#WyHde6;k^ADUL$A_E`i#`elKx;3TDVdYv->F{@8=h}@0>nirYe&FrVs znl}7w%Ig;BYMw(|RB-2JR&u0h=xwn^q0^zCva^RXOKpV~6t^Bpw@ckzL}@a^NB@9R zQ^wNLFn_H!ElvCXyje$19;G7R&*8z_1g4*52AGSm+Qxu6m-m;ikPQ$BM`2MuO=Z|! zE=*mI1px#M1LHlbX~*G!uw>00TnR%_Q6WVa*lb53#SxjdvPst;vk7D!jw@dwJAS~L zg8jLNAa)XKf}Q~O(9~S5&9D;)hqur+b(1ZF45$_p*w3e@|6}!wB|iDhhc6gi{8wqN z%3@tg#DLi4!=1CAZpPwZ?&r(X*VqK{EVK)?uU$;LoW`$qW`c5QRl+Ot;EI?ElRZvU ztk9{xy$4nh6O5SUH5R)PYiG6mIIZATVHfF3%kp5CqJTLFWr}!);>^Jkh=~KN@dnqY zV8KGd&9x=T1S#Vn*c)(5vZ4{9P~6qI?{X+WXh)~lTUAv&wc5C`YR2m$mSPwS%W{cA zD#x-Gsw4Jm{Mkxlg+uoDUGwT37Nb;Uz^tdMqz`y@5_{UHO zn*#$M_^)_bHqIzFPP9^WHm$~g6;fRA|NkG|9|;KH?`AewYdeYvk|2WMnOO3`p1m&$ zB5k9RCTg0}Mn-DK1{ald7Lt`htm%F<;eKpd)mGC-gwhpEy_zBgHt#M(IU|eJv=k~dq&u{h(Z>*!KSbtFHpTF6G{>UBQSiw3W)+0WE`fMAN zh)E);;>u2nQss|W(-dJ#tA35;qnX`5*19BtK^cU8tn{F{dD)&aQ8p4}c5(=j7~7^uLK`9=p^R ziZL0&9r;U%gtu!trOTU%J0Wf`iFjfJpl!N(jLT4Hbo2B7nf2^xWk5x92 zLQf&r5J4#yv?Y8pH^yJYbz8)0M3g0);@u~&Tg2Z{Y;uTN{e=zo8&4>dvnraGHN zCwbR2Uzr8wg-3ov<7P!@orRfKH#fzOjnz{q8^*?Bn>L>-T#~Pen8~q!*nzep%*i81 zFN9J7o`;v-q)HaY^2YUl|G1bReZjG_BEdJ8h_g8M8~Y=5R;p&P+}ACuV=B-&3W5|X zhi0F<5s-6nN@_WF3)3X@;r2aG61QHqYLUPI5rSu5hb#ll@RW@}3Bdj#5bFeO=?Rp6 z^{X8cMg8VgAYyUWL!^r}4qxnPJ7|rg@i)IS&dp7MvYXFk*dt41W+52r9u7X}?E?~u zPVP7;KLUF1Cbw36&j+L))Z?t)fBA0hj>L7GJ~w}qpIiiTtL4t$X+&qfov|WS?cYhq~8NKFZ&c7rQF4H94WTcpLjEpUHEa>dIjt zU{`~JQ!cMq!7Z1{8Zsi>-~lBmiMTs^cHrW~1D2%oa0 z>EO++J$_Rx18|<74bUyP_V`bIg8ol;L>AND1-@&E!$_F+L$QDmhQFx^|XP@Sy97+Ww(Bp5Ds&Ek^lm)uGY&OyYh^TJQmv zBP{1FYbZZO`J#q^0eVf^O&}|f#%-bJ#0SHi+edfmrz+^^yxA{`PRwrrh zGp2-w`KM{SsmC(C7kpN42BG3oOju(szMU!n06emR9Rs}>>;|NQ6AOO<;GCX1^R-Jn zYh@TW!W1J|SXPECIU*48tXi}$22vLJIhCx8AcYYHp^arN0t3Br3yclQmG{ojfS!5$ zpi4ZoGJ*voN?_a`95y5n6NF?4ctC(2$op_J0)?=f*^ZSeA31WV0o#|GMgOFf&JmCCaTEDMMYLkA;*tmeiO*;(1MxjFe* zGXq6NLImz8b(XBs8 z5}UaD>DD6FN-P}=s_%xQ{}B?_EF~Qb_F6)@rkfSYpq7yxVNiW;Kl=A0VJ$nOgTWRp zq}fnus9LuvVW>7YKgtI5-Rw}!RMWm*D)ZG9H55zr^)YSWf%=Y5J(UbvhszcXVIo7r zN=X?i)4%&WM_$?KZJ$45|4$BkY0QazeuN-bgIT$;+_2&fPPub7WV=;7FzePQxK+x{ zDEYzeSSN@5`j#vwdqU?*x!d3Gz5?CYcJQcY(#sc?*Cpqy%NBxQdNC)BUhtt#N)?JH>{SP#*X1jvQ4yr3SSqtxb^@r3;uPC-#*rEm&opcfi6tZt0p0)rk4W9~B04b_L{eCGUZj zZp#5g0ECbVA`n1CA&e*5v%RnB-H&gbv|{=C|2H3|Pc?2x6FKMeyg} z{B$YD3&hxr6`Tz2tDPBF{T6AwAL^7$Mj8Hl+Nnlbge(-4!Tb6P7#> zF_17~AGabiK?XK^ujJmFxp;HEXZ$ZkMS=6le@(%2mL#t(j=Mnp>y#H-m&Pco^2=G} zR2h>Mle#7qq~4J_69Q;lH=E#tBTte3SzsI(tJJxp%;f2+iiMs_Vf{eS~-pOGCu7 zqfONVcHSf*{(N;qkm*8{;1*aLs(B*(NvAQC6y)D%{Fs+=48s)}xA3aNXn1wQsMlhB zWc=akubOCF1ZgCmv(r1BlSX5h$t3F-O{11!>=K?zGcYVb=5Kl_?+(AbKs7fP!UgS1 zsBiX-56gSsK1Hr=ZdT`O^EdK5Nzd<(bIr|NSTJbWr7O4i%ALZJkbi6QLK7-1wrwd8 zZ)p_gKfljnb!&WhlGXGmA*1A;#hSLocg29e_m^u5cq(;Rbz7+@o}%+?wlM;JmoUT& z5D40B0T3J=2uon>f6P1@9&)b-ugTi*gk4c@nu?Ano*K*cVgnUB{5+9@Af50Ip(VFwo(ne6R#M7VJA&FZJum6g3hCW z+J#NgvhBk6V{-GreX=(+=39;aqvHYrXJ>xxTSOIQ3R=SvsOF|3<&oQ1Yw@~ zl4sm`^|9vNJ;ghjJBP2<9bwN#C!c$W>Sl5sbj|Sav9aj-bp)?9+w)1K?p#=FbHBW*X$WZ z6xCd)Lx@6W(ZLb%aD}>0HXQmyo{iPsAc5!Th&qJx?@*Y zj$hv>s<&G+@%z1Zujy*7jrE#$l5DlZGW`0V|A2a+$B|KO1(7-SSQ5=qz)QvRhHC4E zVzUZn0})AVZqc1toDmusxuK}o=}1T3F;ilf@#ot71TxRF(8iqTl?k4^-%f9h{pCaY zicOS~PVq3E(M`*{=u{}8>{o!2=HwuDNgVb#` z#a6pI^GUp!1?`HQ0XTKYD!JP`SG_mZp^}+w7^4Y+SSfDlbfgb$+Ftzjodsa^w?2&> z-t|Nfqy;YDi(qp;fUlh|X1N&&Fau&4CWQjejfPrPJv)jXhX@lg)ZftkOq!SKdv1&^ zLMRjyJp#z_kR4CsV>j4woE(tAyE0pZ4{ zP>k+boekV_seI*{xmj*#P$tk3&U(BWs8&$)aQu^6=1){v0o$X}%w zp6Ze;VXar5W7+4c3=bujKc}VI3L&@v;T*XU(M6yX;+I_u3Ei6|^c++vB)>WTg3i+Q z_LEfumY4K!ST3wTc|>e!FKHBARyS{Owp1B{eebG|sr`&jhsKtd3yVv&<>tYB;t%Rs z*>jm+>~nW!q|7Wmi(1)B?dMhPc_adPg4`1Ehx^2qzAVSPd3~qY!nsE1`!Ze=t@bk( zNc_3T*BEuK9qkR_V1)1e8n#bcA0lgEuV1FB1^!$x3>hrATkMp{W5r3#vk@o1)_RhG%r z;e#`PjGj}m)Q~eLM=+n@Q|qZ%QM)W=mmP&g88k=5+oWCiL~0iYj;FY%7VdOZ5i2gC z1%;MTaW;7jNmLlPa2&PF>J5fDvZ&5uDtA3RjHx?Bl_A!|nE;6i`ZuV|-1zulPOiUV zB^-3Mdh^8*>`@F3T|fjrfgSml==g)ZfEI{zIQBuLeLE)+=mNcCgq?&T(pd=M!5DD$ zal|{P0fOKL!D*BFTo?!rf++p1|9Z#!MUix}I~yjK4FlU~{xf-0kw|MVY?A*HU+LoT zR?9L%{VPUil@Akxr@8)1e5RUhDnKo{ck2;P)Vaz0QJ#X_bB`kxy{MUv{?zKmTvQCw*v+n3lp6i?4ZpspM2A!}u}pPH z4`ErRyStvcT2!8bez2Qr%qdQRA?KFNM?~Btu||T8thg&@@UP0&1EHZwfN>M*$+0`o zPgu>6@lSuDe^Fchm1nDxXW$1bWEWPi#;TQHHsy@V zWICQMo>tDb8z0i-?uBKYOhW{%NQyPy8z29sqJpCi;(LZKR-$Wox;RWsqP2%YZibPd z^8kvzGN+z&yozpe2CZuF#lN&b6fqM>HHo605Q8MHhoJA|1)3>M(3EC@1_YIz3pCR) z+zLX1Awdz90YRGXnjiqCiwwq1Mx8kR>xYhEZ~E~^l1sSkNVw)D9`wm-$6mdD$K~v^ zyq3=J7&x;bAoc7v$lY;5$iBsVt#)SAxNPb7d9`Ux`KN2E(4qQ>1H0Q8PB}9mFbz`A z^|vBBcRKEBX4lrWxw!1Ct7SLua?C!Kkk+APjm=f}?!KWi-`~Ag)!evjNU6_1x22?n z`fbc1+R_b|L$#|kr6J#Nv5(XXnNE`&>YtM$fAv!zW6#mu7em85k_wk!)+_Xq#&?PUS4UYvSLfBDelgt%<&DOdcut%AKx zuL@HmC@)_8Q<2Wt+%xz0I!g?*!Md{uaAnV2I8BYhtny5nD|6Ob@5- zKhzs8>eAwkEh)YMOWCrO3fJYe(TXN?;!4+3!#>*{edyzbSFki*wsw}5^6oO7lzm`X zc^kEMMS!dMWkCIZx5oYXw_*OdU0$K%pO1IuIOXJs9TDE6yZ3$`w^leA)=XJQH})EL zbS^PS#+%a88pkKnc86r)FKHt>Omt0zNyu*dsxQ0v>_F&yclhSGASxTdyyw~9!1+5e zC#lqUi&vV&0<%<x>Rnxnx(UTzciz8?mt}=6kOM zmT&K^o%?us4HK(BBS{UQ#Prq-lidZ zn@Xn(aSc{)QD@k2u?rVHY@51Thq!1OT{}n( zA7S&rA9>@TwkcC*W_|YaXCHm2`OA#hmH0crSpVw}{PP*UN$;Jx;44;2RadP>DcZS3 zgC!CB_I9kT8p)_0De2g|FQTN>RAaPku{zhrsT5!FJ%7hBY03F#0!7b=`&NM$yAJej zH3SeyoANq~_p}#x=5^6A0KnBCuT!3zD^F!~GLRE{bv6To)`Ji3Tl&9!-aSXYzk=`a z@Mi%qGybJS{Oq7uR-t~X$`Cg?0`I70E1@WFN|rn6d0!lva;CX*7i%1;^~x^;X5qiu zc&qYdY`4~(!)|q?E)JazFHwWw>&ma1+3G3n2J%8sSXxcgu!;CY4<9`y5v(4y$5%v6y|)svzDcZGXG?&wbtA5jTH1e0YRL3?>i(@F7_! z7gp8g(}uG+ve)I@rhB&FhD64Z7MM_V%{m%I^sONET_2g1k%4qHhd~3M2Uh4e=@%X8xmUhaB22q&Eom|Hwll6*wVhOloZ$g8jWO0P7?{jp-A#06rWf zRT|jtQkexJo52B|#jI!;kAhc<2aHV2`cd{73=y8wVh{Z%cs;;hfGUjs7r}$}=Ne7E z{5>@LS76sO7Ol?sDve^=?yk-xYO5{21-W|em_jtwZKqYEwaz-Kl6i2h*{e2nb;)66 zsjA=hC1G6BePwJJ%1UnUOBUMx+o|qpo+5SzXJW;VCzZu=O?vxO>ex5?58xK29EYqk ziq&G@tpWlnhRD|@~F>8oUCQt{%Y3opRqQs1Ob%shuR4OiVFBPX>O(s z*6(*6V8i8Ok{e416+;yec`OYB7X*z^0wvK_D@}j8Q-vev!GiMv381cE8}>9m^yf!g^6sb>G{w-08qzM!g-hsZ@)I4k(<2y~b|=w#5m*_H*S+HhAY zGvqA2VkyU_zm38CvD@o`*1O<5*j;wduJLw)ooMIU`9W#hcH2(-Qa_8HKsPIb51Acn zr}T3{PT#$R*M&(|b_;ILtY}L%4ldcFxQFBZs@Vu(tUUoy0wxd&ljviu^yLIWX$nnH z1TksR=kxc3iV(sNR})D?@MYXZHe%R<6A*@o2}H2T@UbbqnjkQy)C5H+*KN9FCRD^w zc&!>cz57ibTJqC7oe9kh(n&IdSjJNN>J6RnIhmq?qdtXHm3jrgul%M>^w3J%fg}oO zy2UM|eEe_Y6Vt^_e>M7F6%oRVIl*+Qi4Mwffk@fZP1FN^Gz zTsp=ZWC;El0pTzGZ}*v58xW2Na7486L=eEB6vh!6`y}^xvdy1YcCWy}mOHw-yLU%v zUKI{RuFDfKOWR$1jfz6&C--;eH<=-1U)O?HR$RK2=l}oS-1pr-qcdPBfYH)8LIG_Z zs8h^?5r}35w4CAjx%D=-{Ut1kTreWH{f$!KZ~LQSBTA`I6c{i}2Cbq;q^CF#3``IY z1W&P1G5X9p6)(N8hUv<0OR5k#G2lWJa(P!B#){e6Y3Q)%G`0u+2?X|l06=o+>(}i4 zsi{#R3nWZ*jEf>TWChr3Z|xENs288CFYCc6oa#{cjJ6-1xoS|S-^VvT*zP{!5ySL> zS0ZVZRv9>HZ4MM{PU1pJELgu){{Hvf=}eK0tbngvsUo8YVsah_`L5X$|LN3={u2ww zyL94Qwm}wHLt5g}8`}RpnMM?xwhnxqAn&n%g)+Mv8o)Z3vJ=j*SWu@x%oF$UH?I_eNY8lL6?+D zrLa^19R{EH!ZO)W28J#KelreLbQPSjObEb@2hArEeEz4S#3B;NnP64kO zNg)FI+yDNq|7Fhj0bB#BJP%M}3@clAH(IIQ*oVyhTYUH{?Y3iSzdl9QFo6Uz?lOoT z29SwCqZokS$J_w!9DEA;nY}b-@4C=(t_V0OX{jCGd&eih_a@38ZM& z9YG*9j6$UEwzpIL70VVUf*-E0hI};$c`%D1N)0OL7!=0KXyX9h1XvKFMV~8dz=xC} zlzooE?s!7|QHnu48W;w=jCri_&`YZ)8ez3S@MwB6fi$Lt5E{f3j1#6243WfV$V{_z zmRd7K0p3#^3;9%-W*|faUy5a+s!DvMZmJ-nWZR-RMnwCPxsR3dw5XYey&tcl@=7|b8lvXO4(;h_ zm4c)cvO!B+=&X2|_!9j3LD#>&V~h*@vHM(<;j{kU38qU+ywC~}lJqbh$+mCW9k(c% z>^hDYYg6#e&_l|xp76X>#%#ErmGgbC5#C67LQr0Db#aQyGX9=dU;Zyxc2-%L;n+@& z^TW^fJTI5?1oSwDc2pQ>sH^J*B^K%IEX>Mu*=XY!X=utgu=ZV+aJT~`Nm`utuMi?rf+>Ls8364) zcI|8(xp|9J#ZXAZEfv*vUrSY$i!nq*0g46NcTiz&<%^;+mQNNqtM=ySZB)KEnk6)+ z;x-b45wwArswi2ircs*IUszq8I7=(*_h+#r%3lNiw1qkUo(3uU`RmgUp&-pREViSQetOAs#Q;J}Ee4+1K zSsVfG=w9$w(ijU<0J9Pdn8EdH_e>4(LZ=z>{3% zTX~c$II=&B{M03^9mU%TrJfX50Nxj<0P2XJ0xYfk!KG z9(77&wT6vfWN`T^u82Hx#uz{C$!kIPl{lZ=CD_gEwF@q~=TIeRt;Y}2S$2)`IB&%S zrk)bIGgVo+#et7oM9XU%H~Sj#ADEpJq1mv#X6)!btPce!A)`n0P04f^~X9XwgzGcVwzyKE>ReqTN*_dHQ&n<6{X%V zrO9K6YD10;a?I4bc~%T0B1YU!X(Hicx@uL|zMwo%3IHxNoefIlCq!aWcSnoE&mQN( zl7uj4pEINhGN4F*m)#U24=%GFuCw9@o7SMx(-KFLYCyG?7)9~z8X%FsF`ZskBAiUE zFybJ6*}%bC=2S|?pYwSZK%4t476E7gxe|pq-#a9H9E{QWI)hPU=>7v4Z1SDNHG0J{ zmGF-WMUG4ol&~EFz@69z3(4EpqG_r2A=E^k*ACkebGoF=&Vj%Px}CkSRtOPu_9iyy zS)f&9aHUn(%0n46-DD|`NX7t($*D=say9FQxm}$a=5u{*l+339CwrG3m3F8@ssl$D z&7$D+%3H*AjWX;^_FWR1y;CT#?R%rb z80i|MCN7mszitJE#OcY<+0Cz~8jvfm;Cze{0OWq8JFmDy6rI@Z@o>PgOyXC`$!NwP zUC;>AOcd$OI`#Px(dstw_wPN{KJBsAj>Q zlU7iocm%_0ir(_<3Te4c8KYtlkz+fbIBG1_C7fl#ESA9U6TJY>8%p{m7L<`=GL@ZT zbw0T#0?u`xzd7li(~MfP8rh(qv0z*ncuoO53N|HXIDCloxVJ^yuZngPm@{%a(ISy{ zoBRD?soGU{>sc>%N8mG;S=yA*1@YaKjV6}~(SA&UH}QEQ?_aEq*QRDdjI^Dk%S7+( z7dS=gLo?d8AqfRy2GucyIzbIc#FNq_4>g)>#iB+|pP)Bf=kdtbvW5rjlxa^I6U~PZ z2bjE+DXcVQa%*gO2a3oIHD!U%vi*Ur{4uPnZ|X54OgNpupwV3=n77(e_tq5+X9#C? z6|`&rm!SaEkXhUI&o&9tl&f5_=6WOiy7K(iSurj)iTJ@*Y7U=1`uIV*UIc_G)0uNu z=us`3Rdjqh@=EIJ{@y&d$9HyA%a!693{pxXPS`3QDtb^F<1*(LX>fzAj6wk_pxpOw zRZiK!+s_wpi?-(&m_kUP$PfQDCDH6axW_AChf2@L;15T8;bf zPg1yaGK6CliZ)V_#by^md;q;rYVo^uzvIga6qcZxBP8QE&4jGfp?u7-eGLJKmxJ6PM%(|Jv+7fIq{#a^imjd}3z%1V(f|_(xX_65hWu6~*Z#wTjX2I=A>sKMf-q`p3V0&T z7eLL+@n;famXu-nSmp)1$VF(x98*z<0aFZ;AdUcZNTpzqi8?6bj3B@wP#|Z~se-B* z-ckpBA#h@?YZ<=A@SQZHDYs54)HDzdDyHh&%^{$n;m}T=p?+i^3(ChBhZGaUw=dIO zz`q@$Nf9$em@BLPMew60>oR}?kcc0AHfgGhXbzelP);$IQ~kw zKwTT=<{|9bH4#CH-zYiI^{#qI00Tw_Tn!em901_UJ)4Uc$S9Q8(w|7iR8 zv&YNZ-FDf#Z<&x4?3;T0O-OFxVfyI)+qTV}kfp_Hj9bm=-lVJG|Db%<>+0HI<<#1j zq;yYpxZO8J&)G7PL!kRwv@y`6{ZTSSxg}vqOxHE)U?&vppNsJ-)YE{YPDoFiXn65g`6`Mp}j>g)zsln3H&rRuvT=1_ua~JYfab@63|&n zOoT=t{+=TFaN!a_f&b~)Wjyr`32w@ioqPqvtkgc$Ta#7c=f{Ni8o@pGXR}$(^_U)D zq?J#|Pa_GvfjSE=rkh_NRhMg(*X^iGn-s#O)XRIISV$1ErcY9FdI>&o_K73CW`>~$ zF40@^gJZ)dvDN~Cr8gO_P0b=cy(QM}DH+p%>Y!o)iz8a%8dT(b!`o+B05U;C!6Yw3 z7c!y^Ai?zQkvp+M7BtiK>22fq(rF}1k-SL9p!8yi6y61-AvFR;H9 zg|4vg*$bG)eoZ}cu#l;)cck^Y+?Ad$5y$~k@m=u+p^jn6Hd=B4mtOm%!beeM$R5SK zRnSJ%%*9ksJOSL%^Q#`;v4@M0NT`Tdx9CHghPguZ**&qYzpv)J01Xj67IwAoit^NZdjXYnn> zS-DsO3C^8H8hFEmDUDptAY~OckwSA=1AE5O%<)QV(?8i*h|%9uU+wUJrk5m7`hj!1ZC~z2G%z$U6s`2VZJSRjO&F& z)u8K$@Jbf3?#tQ8?A>&^MA%Jze1h%lrJ*-mUaa?3qj`vJ@+?}Hz(+)Okop;qgM=n8 zhR*OUrb;2^_<%@kFK#6@NRPm@tH`VCdGcKyFQQ9qa&|rMX(q(wAA~DGh%I942=H1d zO_6o-&ugWh=~JO7SU}{EQcf}$szB6~FEg9_8UZp(;0^p=x`Y}MHUKLKnY8o-h1O+` zjqMO-_n|$)nMguayv`V5*UL6(X)Gc9y>muXcEW$0^`Hxs0braM9idgh+gsEe-cDwW zW~xYk1okD~&{?y^fpow^OwO5hM%7VYP^VSFvHuMIC>9P;VAYBFIz=0N zR|L+eEW4VTra~|OYGpIEdalf`T_y#MsVy+qb@$KCMq+`33J<>={N}U!~^qRl>e*U0+zZw@(a0 z{3oGM3f3;q497QCLVrjnz%n4bei-nE8SzXy!kmk=3MCkt_BSD5A0i=>psB>DIR4Yo z)?UD?w<))D@Os3}ED>jBw?{KQ#vqbZcN#mm}%dKl&URiJXluOHK@0%e6~^}lT& zHs8HK!|LI)KcL6!?AfP=fO9)(AG=^e-@ox$b^Kaki_JskI~;s>pZ7-9m0^ynEj6iX zy2!SzlZf6pKArjECRfpnlP*Us)M5I2D1#U?gf@E)uxy416`3OR4mz3$pQQk7Nc-Yo&#KPisJq4j>cv&L(eJCv%! zQk^298;Iid9E8wwgQ)eMQ$LXXnbWu~u8I}s+}ttDJEw)j@^^1G;L#W8%rm>fTK{&U{?WNL-6~~ zjZLH8B`uKv-NR2>x5!MF?tdUF-Bmb>oS0I`k7DOk>|o>B?gC-;^wGN)DA)g?#l~bK zNF!L{>t%{Z?iM@5>KRA=I{0$g4JsF`7mb8{K1;dx7xX9e-zoCf%(kl)3*eucByX(u z_u3=GW#s+a=u7>GC5WrrO zLQNAP#{iI;<_&x0LH*+S(1fytRPrKyoiEk^Kx@Uix|6Su6y_8aLE3jGug+77u+05` z+WRs6e~lgmAZ}0}wc2OjuT%BAI4V*mW;QOeXT`o=My}hQk`FTKW)MlS3A;SpR~2rS zfXx7wIoQq2;W`b6An$smumX2)eNU0y0<^Ldrl6 zs;pxe=Pg1$70YG+@D=wnQ*8z-e>vI$F7}n;+g}V9)x1Ip;)#vA5;SvYI{>2ykn*@U zH+Q=3GAzq#4kL!N=tB(xs;1m8~`80V@s~W6`SPEwh$D9Nbg6W?NfOe6vix z;Cj>|jzQI8ANW3SRiC zFc_CA+s?^pz~Ga&m-{K5Hp zu0v21I1emQ%r}}9vIr4`p#*!;NgpUbNgY}{Az;rua<&X9*V*bBoI)4XHpY6coESm3 zcOgcLs)x{gktNiLSc@A9F~Hml*vrOi!aermoHSe2*}79Jh^gUgx{ffT`6V8cnPCPd z>=0H^aS%|?s=x9_FMqix_gHJ@zIb{3B^`bOl~wflV#R?Q!I!T+2h7dFB9JH@#YWGG z|E||#?5QJH&O{2~y-SyI^LJTN{-twbr)&nMGA#q%*;!~&Px;Y-<+rXdoAvC-A|z>s zF+v^ZU)@JVkVrs5#&~QfT$wd^#qL4c#nt1-BLlRE$sfAHJW@(xP|;JGG`~lvnXe~Q zA{&TYf>)l`1bhW@XghXS=bc;Fky)~O<}hCv+-`?ZaJvam{*QB5QCWf5nLxkU+E**$ zntEmJYP8qa7(iQiumnct%|^%!Tn~Ut$Umw=`TOsR2;2g#G{L>Avz!_@ybct za zsgbjlHDTkhxkV=ObU9EzjzD>D8%wa4ZvD&=*GoN*nDAZ}`vAzjQs$d(92VZiPVZXXZ;VfQ*kLBA!#h?C^TVNNwx%2fCn=3-nXO{xhIyEW>7KvZ2oDGE=F zHUKOCoiYI7MV9_+EzGvWbriRd3V&yt;~AV!#LsCDsKgffmdRh5&; z{yW-iv(u~BMjn0&MCu=(i5^NCK&|JDr5=+g1icLqf)dFuXB^CYs;n{BCyCa6!(? z9MvazYTh^O_t*LH24dr8gthGgVtK#a7{jj14J1*(OE^Jus3e`CJPIpRVtem$B9&F)fL!sK)tU^-x$ z3nGTRDnpS#|H@}tr!#(m;>#E$1FVet>54`xH(3Nc>ELg?pU!@{gZsh5dylo~)|(jH z?DWNEIt+~w?$M^xq?kl9=Q@nQm&jxzL188}pulw@^Rrfy8e6j8-#$#~n#~^&9-$y$ z>=VtrRfq-7hLGsVzfW{7*ag+Zv`&HOYKO7+Tbnh`%qj+ccuHgabtz)ekq_ zE#~uQ7hYWO%bsWyYlW4UtzEOO+y^iB=%FVLF)zRFKl>dl(kmuq>DFXgVo~8#>K9%5 z<0VePI0*hz>iY;<7y3O z2SHR_zBItss-@0E!x9jTn;Rs`M!KG{kv3~-u$Z{GL!*Xj z7=4=^l9JW|@%=3#In@4=guW;(zdAjG2uiCvoVq}qOug{LAvWyM;hK(QInrs?AnjEs z!p{rV;h7>y*`N{&Z3=!K38p0_SdyZCynbR^YuH}u@T|6c0u77=J*TJe8!@2s{=eQJ z1rrwRT5}Y!hKI(9(ee zlz#nTf?AC;^iwTkHa?&Z_fp#Uf+ zu1w{F97U`NHN*42Uxz?K1s3*xyz=*Akcyz@gAKfi1Hc%fWf7E*c_}1T!TE=G&^ydw4Od1aPZQU`ybVF zyL;{+`2rpvVx(q4(Zz4YbE0BJ5~T^ln5xQRZ1D4x zwJ}3gSAzD$kS<7v0=tY8tOLrthYH^x45Y~K`w`Mh@0{k~8N+n$QU@hWMCb+>0{&_n zv6>vKbHp1`{C`~g@lNh>F**q&&yi>rafJ!RF=RpTjS;gI%SH-KLiq;DFe61d4}8Gg zh#7;`%xB~l!RI8$#M15(Ua09?ewbQRz6A0ZtV|zV_&B3Lm7kMBYlEG+E~PS9gqApt zCkcse13)~jR&IS=ViaH$x8Sd$s>89~3od6eqTp_3bp|_{{}xjQh%-d6Ncd;Sz~yXz zxT!9|a>1E~C8}F|LPVS5^-XtgEy+PRxp`-faD))Xu8CI5d z`aU(4Ug2AijbH}AfhgGm0<@Ixr4>l9x`REahcSqq+z#W`4>nVC`1p#9@~I<2T;5*t zigEL3S5);qi;TDb1*jY;5F~g{07N|tdq486UUz|X zdjA$d;VTwAV}LYj5F7lKwr+04dlK3G?D0P6o=xuRil8);1S19ya{5Btn)~N&&mFw? z`^Nmz)6^A-VAFcu*oqshdrw3;?GMuswsP*9UA2C-!J}h71^V8J+L|=3ZcWPqtz#+l(=w6~(+^WWKH4w&#NM2V1o)MQk?C)y57#12Yf{0d@V=O^S#NGxv-YE&S0iQ}FMHwD z`0c<&@I21N#@^O}x8vzL&l?{8B9wGD{7k0t29Ndq@HGL{i1lZBusC42cw&Q)OIjn_ z_bjrZ-K)T|(c3fdok44axXdSO{5UGGR?ed|4lp&X=iP`%kzlCyCQLlK&rWf|zt1=y z;6Nb5rd)lMY zLgBwS^bBF!qBfNDg(fS@En$={!n?X+MST4pW{c@F-CT%2KyX(V0mI-1Aqpd_u(o$7 zpaoEBn>T6NG44?rTjoE#R!iakRiItm(o*9Gzb@EbeAoy!vUBeeA30J2c|L9&PRf{a z{YI+;(SsRh34^AoCMm86u-t}NjmMjqLf{`Yaa8_?$5+-wGMs}jhym|pIbZwO0paDY z^~9kQ(ilMp7S*EjuzFZgSbVgnu&se(t%oFtdYnRiiInMiV2?%0E z#}doa98cs15>(V(L=~iwH^xRMO<}92Tv*3S}p-`jkqS; z<+`Hs>*`oWAgO6f>pg5|0wQ_2q$;h15L`$Ig0a}ei1$DMg;e40`_6BT9R!0z_%;7LDagDPYB|yK`6x{HK3oMvAcvg zTjNWvJl}xBEzNMsOR4^aBU`mEJ-yZXyUv3TEilYEnE%xT^&OWd+rj_>fPuHL7(aU{ zPn_N|_TX$t$i9DTdkwD$yFi=+y~LXubDl5yULPe_LXl>Smvwaw!jmJ->)Nx3$;oU+ zF40Dc2?u`VKt;bwFa9s}Qo6yCewJC(Z@5Xho~|$jPjbB3I<+Y5uwPvT+*1)nob&%| zD^Y8f;j$O6j#sTV$HI%zG&BPM_i??N=j3}L60xH9VBih%CE4&}eyi|(8E#)5^iDCGj%@lsw(*2+ZR zc}X(2WvoEP;OcuCy!XW;-?mYd-g3C=UX)v{)AAk%STMu^*P6JTNH5TV!<6s}P;>JO zo48*+saP74Fn0gI*9@x~;2MfD?goP&K~Y3(BzEx2RQfSThXdv*&@DX~CdX$3kmt0) z)4VP)e;DO8{gffvrgDP(oN;N2YllLZ4Bc^3=mI|v!ib4-Y9)1#%a^xFS8xEU4D5Zl z3n7ePP{K1P_~oA8g72|1^O&$ixK;@9m5Jb*Tl!N``~;Sn#xV_%Ot4z%yN&l7FAO!T z&o{`dV$#i|<|!ruicEjCg&BHhR7og6Byne3SrcPeKf(Yprk^G-#+5*@(73+v&blD1 zub!kXyb|zH=O}Lb@CWd^ZA-eGK?~?CALUFdKI|#pM9cm^^DJu-T;QObwaguKWu+6w zJoniN^&8;CzM)|XX=qS|{LS?S>27cION754-_Zt3I`It0=h(iz4Hc<^=o}?p0k*2u z%^$NWGaI^`rn0ml!11N==^~}lF!ffwc03bSV-dJR+BP`QhH@HJprtf~6x|QuhsU2K zxoT3+y&k)NVa3*$A|=@~s`B?HV03mhc@okJce~;*tGLLGjRBN00FbW&J62qUF2p5> zkHd@tLwJsqTznnKfbbgScX~@gYEj4pZl#UGJnV5c`TgV%!~U4+nmMlj@^9G%a?T;* z+SN_s2z5kJ-MqSL3kk1Cth^9kgnqbX-^DOnmqo+)LIjrPmrr+`N%Z5-JE)^=v>d7q4en`Gv&kIpDS?!LBgi z@_5!U+?Em3oARgJ0|vNmxkADz({O^^Fik~wd{o1b zLWu>VfnWxj4Pc)ZZ6^P|1`s=1l9$=t2MjV0nC;?o8=P9`(t$?@6(39oZvlTe@zfFF zlRrPOr@r=pX!gi^AB84BPCVV((8P}%ZGn$I)d;VDf>?gILfs1J_0P#}Tk zfXDIV)BHjk(gHPyOB>{hwNhH;sNto_I?a@Vg@Ir+m5k4gt}ZA$v%eTU`Fo|OB<4iB z61oPP3te3<4sO-qQP&kM=FFb$|Mhw?dhAMi*=JVf2?@tm6a*d}s-S*N9XL7^Sg?B7 z)io>Z>R;_OI49RWuT)j4Yg>g2~5}IQK$Y@es@hyFP{}S|MxaklOC__$NIIz-yGN z?C0n1bGe_)U4-MWIE6g8Gp-j4VQf}9mny>u{DVf2Nan~&tJR{md?G~lz;Hg}rzwik z=eB2$N|pIgJ<;<*89tgZBrWJ>c!|VFj!kUt`HL4NL03F0J&5Pv6>tGLfy-;v^4;T@ z4TS~&S%hn9yEZTc=0=;{+-MyC!!ae7iSlUN?s|UF;`mo3!36dgtjvczOsZnVXi&@m@o}Bz+-^l)_UtYg? zE30L7iwXOi504hJ;h^TPoSeOm-k=IwUlsqlqy|&gdm+fnt!5+i`YyYDvs^KX2at`H zu*XrjK-HpNP^EfBO4fXX@&pvri-$uB=`(KyKXGW@*@ji@j-2!cjo_3jFA4 z!p~0MSvRNSL@X8~)e$9J&%|lMVs7Hy9nSkRFa)v3VP(3W{R^ljGE^?~q2tg8kQjLb zurDjo2*R_6UwMWAix!$P@}~%%;hPD#GKG&OcKwZq^XZ)Job>DSe;bB5f6qS>=NUhQ z?YAuGB@~T-MtIYpZOGV$2topY%mKxf-*?lM`A>##ab`g-r}0j1yL0VfC<4uR1UUKM z1az1$h@ni3qKx1KOrN5pFf_%e^fFtMpTUo%G*%b}y=P9PG*wx_#4Jr=vX{Mp=n)^7 z@@a)zo4aXB8{4Z^^u% z`QdJOOghtTNj&fE_xV*P6%AnYc_#Zxk9?3oVh_vZm9QyK&jiq{n0K!E`ateoWLf{_ zE2%#E@bH~^c@{g{ zMQ?@<`!Ryd>yC@*gi$M(9C?iPk@yHKa2bUKI}rmtxNJp?rZh%SS}prTT0xNsMjM4b z3Xmq%y(#L_6gf7;G;UwNXbE+9|Hv^!9jT}r_b*8Iv15ha@1OI;a0oRES3|r@mDeXd zMRmf)Pt?UJ&AF*#xtNxo48}pi48)fS?R~7IWGi8CZj$cj==u z)vC;xId>-P{f8}H^V#lGuYHR)SsOp;zh4k+M8+CZ&F76x1y`@K{U_ZMzP^&BHZ3si z9Q_lUWbho3gUh>b96pF0$QeThkw4i}zg?~g!{w$tijG_fV9bKDSxqnFILRiB={rJf z`nv4>Kix~XS-vUc+6n+hwB2H9V=)rA!&NaR0@hwhwqc;m%&5S?>e?W7Fk*s3B+XTR zBhy8zRnO4KDcKLH)k7js<^g|SGc}!^m-li5Fv99Tl2h(wmLb3Y-W##-Z(3lFxv9OUgS&o&!#C=6mFwo8|o^r0AsnQ4kh z%wp5?9QU)~OfyDeG$AZTSe9QhU>Kl!2RazrR%4ns{%=}noi`}hJ#i_;+rHqvTYdx` z3#nuX?3zyf@IMmHs$+YUoS9o2X_@n}&jM$*SLOf5^L)Y>E8xus*IB2&GJbf1unEuI z+wwEO%&+_nwX*w7$8k}Bo2D{m{f+xUtXH?U@aAs zb8I`#y8cj9bVx`e4r~95&pY7bWYZ)liyvGH)h#_Sb7=$1i(k%Na_3g6UQ(eEP!6UD zi5#+WoEz8Ek%N+bdfKya1_I~dZ_IL8Dy86UI*qC-J*x?+$8(B=EncQqG2SO@C@T=B z4B)r|&2^f`HR>Bs(>aZ%Pbf=Lu^CRsxH{pC6Cd$7H^y#GvH>q5Oh|S4ZkfYe6^QjS zu*6}WLp(+p>!`6kHl@*CeQw8**(6Pc-N~sVwj8JmisWw|z4$hh#7|zF{>s?J_&R-Y zl0ni)DKWRl=iV*TV%4C;haDL1dX;SVOnC+9&qbV;t~bkJL`)Fk5y*&>@Kz%Pa~>Wk z0wP53+JW~rD#N07tVrUxN+OCiQhJe(^jgH=uM$i_^D`r^+wv#v;ceh&SydAl)usd>caT*P6Z`)*U&c&ph)`GLY zV4uQNz>2u=TpbvBOeA03^VpXoD?r-2A(-p*pDtBXehE z(aM|G39$xB44620#Vc*`j-6D;_6P%pm>fbGjGY4SldR2@85T=AL>B-84j}}HgNLdz zva(hQJb^1Fg9#%(%a(<&q-VW=FmOn6If2YXdBvqy+$a%Oi+P9xhO^S=!9=}U;0_#` z$tG;-ez%6LWMmN)AqHOX^HRB`^sGixX!;3KaOZW2=jEStW<^Enq;8C?G)rwwn65q!pBLPh`g1qj752t(`o3T0p5X%bfl)45YL0qjk33>A z-~ccnKmcgUzQZl2cs=b zo~A{tKX6IWC7ITW$FXe08ztU@2}5T5DsPq3y*x^3NRhQeztSxyTe}mV9>g0d;RhX= zINrudZi3y?C>KWQ?(C+XMXW#mN_NOBu~s~ePqcY=B1nV1Ae?#MFLO8dr`wxnJnTY9 z!iK6$JICUF<(-n*ldmnqRE$>y=v)uRU8I#W^&kb0Poo!vcdX0H**v^186#j;nl*;`DFSVBTfevObN%M})j+Gn-MV`pD^f>{#{mUXu)tVxRr zg|Z@XDl&}GLpn*1WT})DClT2W+;#wIZiDrSir$lukbm<%N?=3IROvov#^QZfuMC}h zTFz9GE0rmrR3^i>lhy&tmpMPUTNM`8%7_0R8qQhY*Z%6pA6Di_-*}&5dHldGawx`y zTT|X$YL&TQfyIM8s?e~0KL3ZI&bSrp+g^VA%*sB(yMLVmrUTQ}g{`h{|65pLofVZ8 zwAVN+C@;GqKE5F+^asXNm7DK@h1>dFTO;7nHeu@XM_~BwA5(?l8aqrXsvX)|HF;ZG zsC85%(38=BeZJh^gAnI^_HLfWD?56F*M0j+UTI(b$A5FZOXUZ4xr3@B_%da5<6Opp z2qpw!BiN2{Y3_g)@d$CA!nSi`hJep;RxDYtWCea5ArTXbun}e4n=mELN)WVj86UA7 zIe)OV(C^|Yh4SQ$LcdYNkt23fM?UNMUOJ^zoRWR_tn>SQ3+o(Q?Kdq-Du6GrkHLwZ zb!o}MI&)WdvVE;-I3*zgp5}s$9o2OyNy0i)*Jjs?E-vR?-6q*?Ujl1u0_FuR(A}?q zfSc9roRaJFpA5S>pKNn}Ppp+Xz15 z>pb5!k4}2j$u3eb(BBkZJ7u8710znxZa!V9E@ov-py(=xkR;V&Rk9&^Z5BF_m30l$ z4Q~BK=+)5z2lw9>o2qD4%Q7eDsXOSAzP>#s#RxLIDTQ=MEN)Y_$#9`W%vO{(tEGn) z(T$=^h0`ai(uw!s%(0lGD6P-eT0sY99qzrI99V^uVdh`?KM&I&U$udHe@$?b+C()p@rRsLR2QGMANN4%zP7gND~5k@nf zJ{{{;QI#76R}drG{TrnOpB&jdWs;kj-Mjvf=Bxfnca06tih+!;%*>f#vAA8_ns6~& zYoyshV)ymU1+$IqHqS7gqnc3vYc~!B(BD~6&-V7Nqj~DadwVCTIFX-CnkA`%7aUk% z31tNABN5wbB+QP(*_ zLnV5e2>VYPi8x8&#Jnm?nN-C%jK}xdl~iV_Bz&q7akf_Q$zmi;U5e4x`)U+>3O^h# zK}JAdR2jzMhxr08HuA8sWFY|a&@n@=@Vonu#L>H*M7zsgycV*xPfnF%_PWFwuMM@W!ymn8DFk zt<4JZpLh3E&CJvfU+UsE6VfbQDC~@*09P@D%amom&~ZNGYD1&9;iZIYkrgK6h0+!Bn}wYyCBVP?QWtLpp}jJng)vKGu3B>9Tu)aH_cLS| zvjjU8xrKbgHF!5RT+Pk9$V6qinF7p1j}QnGFxq8=jd8-zkO5pYGd}Mxz%vCt!H5VM zl5@R+9cmkf_eydTnG1VZLMBu#4JIB~^$g9J7Gx6^hF=x1U^#?j9YsVV0)_*R3K~#f zrb8}GKkIr;lqyrI0-yBwj`2P+61it+nI!pm9TlLPWjln&;c@yX@;*r_Bk5Ch&@gBA+`l;l6GdEC#cmN4;611jxpNd7g?Xh}- z7=lcgx5>}sDGnlBFDDy?t|zf}kfjJCGu=%66~i~v_?0{-W_80K-U z6XOZn%q>u?i>|)*e`e>0ca}?DnW$ndu1|`)b<;vu7~#HRVR|mw_GcsZbuG88_TRj* zLwQys9WX^gsu3mc!u%(L;l@00p_ucjd#2r@rl&gHPF=>>N3dImfot7$coX4HQk;gD{P`bmPPt%2HEy2>HZz@CX z)0-N|E%!&)4A>x_=ATxq5w=xoa#}2?&3oHld-a3X|7H({Uw$@6qY4tP^SZf9`m~;u zl#+68Kz-y2EtTYQVX{_d$UC@HqcVcW_t}i8^ljYw#bnfgma5(n2|v}FVziB5GXfJ<*0jg>{01stb3s-w z4zYN9?DAVizB@}2hC2S{%YSa~Owd;w`QAD<_BhXSu-Uz0!UP z0c(wAEph21yIIwDZh|XDf$DG}#3J2;aP=Cg0$KBtv5xP)QHj&v$d+-tC)%b-=8G)o zi|aR^_wU|qzNj(Hm;nYl`Ngrw)sg|)YgAGwjqvUGU~-HeaJMd4x>z;wA;2SB@9@Pe z$he_fwpQ+`(y4?WuY!0vkHJ802@-VP6QooA?F#BQ7%_;Ox^Vu;|DH5j5GrL(c2iQy z9mzD*{GF3C9W2bpAyf^jxnKA4q=FDa;|PNUlYH_EU0Qy7*6OksFYIpeGN{xff03PF zq;0KRUHejul|Mf}dF0=KIARibpVVSKh-AL_{hM3mYh+6rY?I&U(=kj4GdKt_7&-Wr zPg%;H&5tZCyLI#Fi$OX>q%!^xT>>+<7ghNm9nw};p0`%ILE7k*0|zZku?V~jk4hQR5wni%wxJ(}z~S1Bc_>3bh~OZM5fY&C z7Sn|Af*G|pJL-`3GCIYa1)?|(G-cTdv)U}I8b;O=FJ%>JCS}sb5E3m5&16WFAz8{5 zOfi$@Fb#U$d@p5WT+PhnvXW#Mv{Xxd+k~9CsvuRQ+0gAr8G1|@^br%5Bo&!xJ-j8W z2bIka2_X)iDp4{6wK z{l^@A_^_}$6LSBp(KBkb_Y#BTB;B5>rb6n}U%sB}k{-Mc^B&a*+4p1ykZD|F9mC;w zN*0{sOWH+!7-eFO#&+wJV84;2NtVh5*{Nxj!=g#yE2KSgx(!solRnN_noorU!B&o7 z5)8iMf+G9}mFK{M5ry;7WuT{bHb~@w@2x>OG4LxM&@{i)VO*DBWztX$4&(@1!4Bh6X^ad$;)G-g_lln@g1B=hI za|rflAi|5%U@tft3f?3X_|WYT;kZ;;fQNVS0SQOV$}2*LG9b(_oEU{Xc6<1NbyXph zfb78)=Y6=vpFaFUZ<30Ml>PmfRP+6s@eH4)2@RSGNtX{qN&nl!2T@$e_-b))@##Z@ z*Dfy&YHDQsa#*2H38F;qsX`}W)z=`cW0PKyx{=Y?lyf%HCT?!w`|H4-DKF<$C~Qb6 z&%ki3-ZxZJ@{?Oe-9eY8rTmQ2L3aP*(6cge#ZWe`i*FhyIPJTv1@5JwQ+Hl zt*z}=)Z0wK>7bsUcCsTHEN3LX*4MlG`pL2JGo?#buB3_Y&ONZD!w(+D`zCg9!V6s! zXS~|ixBA-2vC|W=E0?S=7B0@s*|2^nKU67nNlJQkU0=(Ii-V_MlHY=WqCYVSLA|BX zqBB&ro@gk^Rr;5r+9rpzH@%D+=0TlKeR+S7DG5Dh0__fz$f(g#hf--41L15V{zl4i;KY(H(Al(MNU~k1DsoY zCeF{0F*)4WnQ3ys44i(fqA-{ekh8Kg3-C0#7C7*dAK5j`tV7-2Mv;vHOdqcZa@4CBanqE z3)qJZ3IiW&u^J8T3t!m}LI!@CEPf4|&NhT)wnQ!z5=_N?phV2|l@^mc7Jje5Vi<)P z&y8#zg-p9D#5>d7R~Mwt)YaYgh&ST#J=U`K>*^n;hi`LF-ziado3c-B9+|WOOsI&n z6=;#OgLEqwP_z({eilglqMx(N$vnd&`bK}dz_PPfO}TP=Lz{(3^E^k>SB>e7&7TCp z385Fv$-#QlJ2f{XG_^0E!BK!OS%no(uyKM}A*h z#dBc6PzK`D5Ta5Ug<9WS$o7IgF;{KBK22;Um@?dE0rSh~4TnFvS|<#~7FT0b^kWpr9mFoTp-M z2wO4Gapjr{T_=UoHVC%Jub~MT1;)M)zkLFF?P#ZRtKHQv0Z3*1t8HbRJ8mVUxPz-W zzc`rFzYCzBkR@wnJ)`!Un~@$KRGuV%XsZtH z*ZpRdwnk~FP_lgb_EPJB;No$%+z1Pv@$0t9fV>0xIOW(F6%F)!`8-%9mj|SAn?3D+ zHtRFrY(2enDJF1=vPa|%A0}MRajw6SV!!r*zr#~Qje{2JzdX*fP;|)fi3*FjkCT_L zEoH#6707ZBdPhUonWVHj+bJb@{FvZ-Qf(a{^<-^FpDAw9a9u0)VXi~xjU=Z$HxI__3;CwjZGpd;rJQuuYv;y85&M%BDgK{O%{Og!V^=TIDl$L$H$pyvtJs5 z9}Io$Wza+8Jf$R+KEH{RD)@h#utR`(Wxde-LScXt08UfP4*v8z9@N&oE-7)R6>EZUhB#3`{4> z&4y1b&z%ADGE-`QdE^P^9_$I;ay8yL_3oIM!`?yJ-)O?p#HgssvvYJtg)B7_AWfX? z6@2pvs&vN%dT@HstOs*r}zVNo7rM+}&%cfu2TecnzJc4X^ zdZUHr#^0X}ciJ~@!JP`nl|Q!ja;Rh&j~|mrYV;(4=xb~*EW8w@EW$GhPDq{nQ2rn> zvD7?F3|BYR6w!|!uAl{-m?(cA%u@^(G+|9S;2;B=R%&7YD)XM4#0TZ%4!e;#6P#g! zVi<}w!T*t+n>3*g92@p5$|)g+iQ!-_SD$KN<#IKrIykOTfOJB zIV{aG?BS7!8@V^9_q^ljq?cEssm>Zs-{WCTx56`n~3y-LbV8Y8I!dt@M!*N}BTLfbzqCEV;g^tByDub;krc|{G)r}R96*H+~ zO!2{>oKTQw%NX9QBAzE{&J#7!qDui>djaq`B2f z6IEFrQB@Tl{_Kx;KyA{jnO%-&^yR!n&xzh1iq>ww_v+b-N*~{cZxU+DvVDF3diFlw>zPytKiWZpYR}Qf) zDU)mTy5Sgxq$(DfXJ?5m5>~kL@K6jgriii|wX$8{8AM__;YNNP4)I~MM`D%d;ZVv( z=y&yUjEftAVbiihhKDpVAa7DFK{}N<&k9>u)DTi_UGG+`Gvx%DAH11Bn9m(rmNHrZ zFqUKb*(0zr4?jQatyp!u3X@$d?+B7q6H%=f+bwR5bv#Oa6)Js6^QOWzGqXSO2Ta9F zkm{lu+*M33!?cW-9D=B!q}qCCD7TUq%&Ao<2@$@Rr80GP-w{H2Y1nPr2M;^^^yk!_ zJEQ|y*-$IL=a964&GhSkd&TszX+r<|{o}AH2!1RMKl%9y!@!x}5f)q+vLi7CBmmEj zLl*AEh97>|{Vy@GD8h9KMBk2bp8WN`*0%2FoX4Y=6A)ISGKLWN8ew#)Z819mfBEv^PhxcWQBKZ>NRcJ;>gStFpOVH?gGbOpJ=rTz)1|nStcYcoNcMTd zN>z=hueMo-@j!cxQ*!;=zbuxRb%PVI7*};R1G=Ql&6Q@bswI_Qzb%cDMHCja2e^vt z=DjVeW0GLeeMXs_><|b;u$kYn!B>X3ng?U-LIpOgI<+(vbJ$qsz{n$l5yiIuu!3yX zA(5zERMZsh8>x7?g~IX2aapo0noyNdXtVrBLZ|ema?0edE{2I>oBJ4yA$V{XzD(g9 z1hB|bM&NgB;A3g7A#q6gVEPG z#tec-xsgm(nkf|J;(8Tj4ke+2vBGi&##%UH;W-6(f~ZOq+ug?`7zqPRf44+LG{oMs zMJhctWxr^+&B!NYSu1;gtejTvY32w6&2ziv=Vjj$n}B+9%)16|}ZL zh@?N_mYZ+_jA>QiBy3;4{L?b9T*49$;C3OxGJvz}y?xn`E3S;V9i~PxvkDiLKvSPV z2~m#YJ-0(KMa4A87-%)NxhRgS!un9CG2boE>fMMFRL9N2 z7eRBlxgkaUrB^K20G(C0Qxg|yDBxR3sn{OW&mG%i2M1jWS~{Qn9UA)2lf@mX$?U9W z;KdmXhBd|&O5<2nIVGTfFtZb&mh&^WZ)lS_2)ok^g#Ea&VRJ)Sc5y+ni-#OquNFPe z%N}R-HEhHmpgX=#fV3~8I5U0wV$~-IKf3>OIGb#y?$&0z{a7pl890i;f*u{CV-cIB z9O!pJLmf#TG!e{@CHqk%_$C=rf01<^n&M9%cIs)bO-W2T>GOr1(>^*%pgW0n!Dow=-3g1AGQmY+y3|F5p9H*nU9OWbfCGNHmEH`DL~ zUj25!&3FtNc49vUrm&_uXq-`oO)v4-I|1ZtTS=F&(ub*`BRbO-Bpex2|yR zPBR91uFnq*QMc8$H*rL-i#YphY7JDt{S~Nbs>=IBUZ!EI+ha(XuY-)KA3pwaMJ-2G zeI1F8-t*{XBSL?gpMR`Gf-2r*GHq zyEjWd>QD7YBpZose0^OU52jXQC7@Uoz=#PV6|#dIq_sc*6IRPaGpji!H-;4`CPa|! z1Z)_~EpsqnLV3mqgaUT@scm;URju)xHsSG=eusG~6(K~cRR!f_Pm+kQnTAR_ZSOXo zoFBhL5M~-WbXC`kC~z2)71BU0Gik+g~#2g3-)E_|4oLz&It}92Kw@_ zUefj_ThGt0SBJY6StoBP`{(lKq-gdkHUg zcLm2<`dV?i{g!zoRUHc2R`fALQ*`g1AH=`4-=55do;*}+e|t#iCaLhQ+?+e51Gi0Z z8bhObskanEsX7RItJ8^eMp#%7qphe*Nymo=UII(v_{|Ls#?4qdRyz3oT{}#u-kijq z0O4~pTBg2Dbq0?RLV3Ac_t|0-JnyD{0#&0G4$&LM1~3l{8G|3axT-MppUWb(Zh!Lw2XR$qqlT-jPCDmHdj2p^x2@a&2e;;&z@*{aX8h^7}iEi3oES{t>A z<*Jc`OsY^JDz-c)w0*@A=lc@zcb&V+XShr7UZYT)5M$_SMR#P$&!T83UQ^&lyG!NH z-~Lo{gwp4p-N)9pI7ZgyykLQO@9tk#fD|D=H(&sUjU2o?BliTR2$AaLxC=~Z9-dR` zgv(wkkKd?(2$1*7FJGoCWSb*dHqvD1@&QQw@`<(C==bj$vro-P)89w)Z0c`f!(zOX@vP93~%cTk*Hv`AGnHXf#LZ3-xG%M@j zJt}UwrA*-AOLGY|^Fo;fDR6%$mH<`|STRt1+!8kRrelJT2%uojf}6CV9UY})$LEp) zWWk(_KtPD%#7!uidl5@GEc2jXgmEVmrq}1#jQt+*PP|yxi7`e3ha`?8_(fmXG3FMq z=0P&o)ShQu2DTs%C*aW%dX0|o2@Ht%FpvmNKn+usa3WBGuNKt6NR05 z49B>=%xzcFma_fq+^^lP%h^`#kwINsI7tz*sjt-(hfIfjjLjcjyu@5;#jzWaG>bV~ z3TRbU#HjCaTE<*b66~qdrKIToAL6-J6*3z7T>uN-CU65hx00)c-F6Pw(5ds7phvF=&MLXmH>BOD`Tna`}X#vCL+wDi8m?KJUd9$d$VKc}$ z99_Ijc_>Fm{wkgonD3)a@CPJ&h>pw7G&g~8_*89k57joLA*~$Ge>Oe+g<)8th)Hig zc+M&kzYKHLm*|r{23U~|cX)U9j3q(BPZy`J@Gf#Cya=>+F5yK+g?pCMc4dtm|Yx=m;G!}{cs0P}; z>#|{bs=-kq3V&A^*HV#;UvKJBi1H?WJZ&~zu?b1v2hgDdW-e4Wd#j@UM_+pm{LjA*h82kGob5pg2I2%d?i zuH3uhd48CAWa30sbL!}5&G?W6>=B7#72BX?XujRI8;Kp2 z%Ny;b@vLfrKmHaGAhRj=^S{!9@AmVC+Rb;9JQ9lv&7PgyZPKPDt`Wa`Z5_4r9x?1` zt#*VLHez-+%4+nTu#2SD1mCr4L*~uX*PmVQA6Z+=Q1kYn=s*AQ9Q~0wzPW-oLL5c> z0QcKB#Uci|yh31fF^nc}#FU{5T~_rgJwY>E%c>1B#IA&!|NW*GnnO5Cm>3)TL@x82 zxL2h$zm-~KtF7)`5@iirucb84R@(yHXb(l1>N;5YAd3B*QOUOn{8UP{WZp3-DuqX% zUi4>%20uG7AxvA#(06(j?F2;~ea~d?O>*sJAd1iYC0QV)PIeP z;Ow=J++(gypZ{soPtNVdr_O4#qFPwAAaVB2UHT0WQz$4qQtG*VqsF^-PO#I~()FD- z+hM#}fY^~Cl^`*m10D-PBNH|k7I+@*DyKec1ici;%p!t{LcPP#z5sw5|L5q;Z}{{0 zQ?JFG7or78_G4W>!7uDLAlS*P#XdJaEr+XX82M!}j-y}0Fu4nK;l}O1mHT&>p%{(F z8^zgG*C~uGjWN4_*sZ-WplATo7dK;V#inEvF^sb5Ces#0$h$v| zRJ7M-jG+bIe1R#PQ7>$d|3nhToyYZ95EDD2 zX83r)L@E4I(Mt1qeb%y z$r6)tM{fKZZ5dWmB;1^vek`12KE8OA%7oAvOsq{A!ACH@3Cb(`Ya@~L4N6})@G@}7 zAGux~>=-fQAJ8@ZYUKZ;(;eWGgwQtv@0l?*O1OJf)n|e9PgRwLTM2!*ef!k}j~7gZW_*Uo)7q!*#BL^vmm-qsGVUX|zq_<5A7)P8Tf53k;tn@PAl9 zdm-ld{sU)2@a3Y2E?lDXtVt(Vgp z=o$r1it~r(p1tN3bbd-aV#g~6L5LFUip93-!XFpguUuE_A_VzudIF@|AK~8m$?YFto(?1_G zp;Y81eW~kI4752_W(5w$?QG`^4u&-~9ddOJiH|#yw@24*X=!rheb!JPME?B3)J0LX z&?aXfH?jh!7D={kRo%BdmCCJu;H0(Nqh{T=YgVf6m1&JMYN5CHZhY=WZzoBuv82S@ zn_HFKbTe&1XuxM?YeJxVQR3?ov5WwFyX+pRY(`+E!jn*6*k5~b~QU2eK1WYwL*(^JDBTMB_$M~77)@=9PiLT97-B@-)7UQ>g znx9ZP0wm&YjNz9VSFIA1DW#2z0$kw^B}_|c#0|?_nkh3^y-YM;QlNj3o4Tf{K zM+z2`w>Iy&zOC1NDyRTl=VrXv3$H%<#}IG$%bu0acErH9?a`uHyX&V$2@bYKYH>WW zP#m_yNGS?o3==MhUa}plupk_S8T;^4G2ywYvqZ?w-sR&!{fg@K%a#>(T+^COnrYt! zg&n||wZvnieoh^hoE)aUps(?;-~K^56)>HyUwU(Qey_#)6$8Dy^4|&H?OxJ5 zuwtEM&uT(z)I$&iT&J7>Z@@2<6Dw^XuW_!c9jfz&jV|gAYu${bC>S*=$rsFSh1^wJ z37aevi>Tl%P7JOJejLIgmjxXvtQ|iN5fK{!2>uFS=1?uOgUa>gZ{IblM`L3eg$x71 z48bM=`J|)ilPet7#E^-co}BKtY`#x=gaFv%QaGOtDrz*X(?)a-j-T=%Dd7#x+lP|* zpU%C_+Ld~8n3#CMF3DxovQf-y7q`4X27CuB5%U?Cdjtj5y3>-d5d*LedNmh+`WONP*eR?JBlYMW2=gHwN$jv-j-$a|z?=M+5^Wfk@H zC;$N0#=P^bt%bhlPAMF-0~4kr7KeVGs4)(GeLx*MpBM3U%4P(F1zdBb4IJIDAvyml zRejQx>U(Bgb7&%M+WZaUljlbb1-_SVC>?VH6WwmB+sp#%YmGxc9F2)VY}$)xsY56a zqaz#po%ikQCH1Z|^c_3)teunERbyXk8c8k4Pq^$b$Alg3)cgAHJaM4UV%>+SrmdWr zxt7IASp+r4TI0r~guDcxz@+s&NCio!=q7{U7VhXc=cJ2$dY#U%w(4)<_m0IaCf;St z2s&W5pJTgq1?@*GG;#<8Fl*M`3Np%5gssfXuro-)ex^;oFwX1;w>dFyu;A*NT>$|g zY-7S(;|b~_ef3{7X3)pRg06kmX>N*6(M1P(P*$^#WLjx%#OJ1y9Iz8&#K`rKmSt&m z^6CW>6W_St1fz?7aIwq6EA>VYE-Jx%L_FQ&2#dTrVSgl~F3jRr@G(V|a##f`@-B zFy1X`jm;USva&LRwluy6r52@7B$bP)}h1+zKyT&MB6`!+0Czu?N1DYT(KmIHaro!)w{>i-<8_8RhT zqcH+6DdFBWR~OpT#adhML2KG!u8pqS+>q>0Ywn28K4R;7%GLV-mpjn(bksEku0#5G zyZl*s%a@08sH*Bmo<-D-N~yx-jMH&`>IhPMl;3`!PTc>6dcuyDK;Uwg#nN2P9YoTm zpSbawg?pK%GHNZhMhJx74I%mwNvPFY93jwV4H25}z?491TBc1P^z1I8_mYHKGt(jj zOj>D+snS%np*p?`wX{5C6H$9pQVT9_*`SoV(5fodm4*fv?r5Qu23$V04KMW=!i0tR z`y_d2ss8QX*@D$wE{+8=?t15xmdt!$r#m6Q-Dp&1E;FsVg{yRoN_=J^=#r zdyH2?1_e}z37`njU@##J(Hy)LHA6*N?S2II#I%d~vvU`h`@4gk*IyNG^(D2s)!7&C z<4WW=?uR)(JmOwDun03{Ta+C9-F0R!3A(LeNr@4fap$J~=C?n*v7yOj8^1Ljn6mKj zX*c;k@Q$e0AX(nk`aILipFa4vj;u}THXb-Us?*lnHZIxhzd+Mh1WN%ZJE?bUSyV&WL3rMeGGe#n`zYVFsEfi!6DYttEtqV>X z3>}OgwTxc1I9>_1_%3DLId<;1jZSet7Zi9epnp0B&0CtZwkY~6{omuxXniWHw8}ku zjZNjujG1%R&4D?$%$bD%nb&#Ba@*-#^kU`ds>4wagMwuBzhh;LKk|+RN8v^HCApV$ zYI@T3(Yy8QP(@}kL&Fe?R4p;<6HYcwV9FMtdxdUo~# z7c^f+{d2E>2++QLoLbY;qRG+btQC3_pW7A9&B>Xcuha5MR#@Er4AN>$1aifM=aUWve=`rG-*QK?2~#xrEtP-y9#R(`h}0x?;UQ%7f46QbklQ(;EV zy9>c@68N`d+^%HoU|hQz9v1pu|AUdj>Rx7@wxUc)_wlzePNqet1Y5(z#gPBc~9 zHWeCGaGQuoLQAXeq@Q0%M8u|oLYpI<*#`{?-3`AbhsIMykwZs)<4Jb+$1S;+Bl3UDjsQbLDYd3H=?QgvbsJp>UZlxVe~{7gJ9-T&-3 zPl|B}p#}`tS!buQ=`$VX&mE34@jrhU9ft@nN!t}tBLUtPTFPHaYQ!Z$;lpt^wH)77V~b6FA}{`JT`h~`kdXK; zy>zQfx>O`DJ;U<%tBegL72ne`(S{Jb0r6RSJ)k#%N^n)S6H&Hx4Ap6sWrnK^^)(8ZXNicfBbkAzO zc)pEi&zrQyzPclp_OgkvmOeIfVc|UsVL%na&4fW3Vt+sWId?L>3r&gC{T91EK6n8Rep&zs{Eo*m{gu<4JC2LfIzd0gjzGolT7AI>Huqx za#f`iWzh`PIE2*y!c;1<9x-cpQQjLuX-0X5979~rzyNz3iIEdyGpG5Y!c89HUyYB0 zkUBOkHXS4R$$`n%5HoDvzrgcF~Y5dyBv*) zk`=Rrtu1F_?Zz=AA*N0M$1=;UnP9jh9<`2BS*zh;OzmE}67w-a4A7YY|57~R`cDq} zq1Bg6q=Q_OH-8?*9>C!6OIV7Yz>fZm>3rW2#!A#xj(Z5{c!rBgY`)ns!WP0X4 zF3!&Bt5z;jc~*?hs2?W!#+K<{;!};;5`bHCuGXX8VDcOLj}LVf7rqGN(R3VB-Fyf7 z6mf*;pgKv63iy}m5cn@8N_`S?NE@wjsdLn6$^&Ccy$B7m#KW&zoD%U0jl6mkLCA?DyvUI_oY~iS?DAfa;;zdkVu*p-b{&^mv?6l{Tr9FTct__oQEFVRDR$zx{P*m7dnCc8ag_on5r7^s*aNV-o%x2FHl{Z26?PyXm|&=Q$<3`qDGZ zsK)k7>_bySYr$;L=kQ7kL+c^zGA7<&UhUVMD=QNR=*q`pyOn4m+Z@4a-8qRrYLxD; z&)TSXhrmBUJf(?CA+mWsc!Egiv79qg9b&z{LRsS6gqA7t^|xQ(CULMrdA76^t5tuI znR!^L)Cu)*ta`4){7`Pz4p`a6HifgQ#Ax%~adEH9%J|vONbxEEy1Pzyy&vn(4ZH7W8&2>Mo#9ymp%Oi|MVA;9x4 z44kI=77!c>4hSzSp-_7U1^`Su4aQCelUVVq2i9h9y0eZ%w{bhL^qv(U%q=Fq%7x!$m(Finn+~MmL(|p++d>SNomEb- z40Fy7v>{uzSZ{6N)zr4z+3l*W;k9hFPJSXGZNvUeEfsfezoyf_yM3pkrOAJoYQaCV zdnAWs*||fEg_|yh(AET&1b@wRc%)v!cEuP&vgRclzkJuv+J0c$xezn2Vnm-_qDvH0 zPt%(J{`V8Ze`oN?;Tz6SR0EBp&NvO#memA*u2l>W2!|B4pMw))$(fHt+*6Ges`BGG ze7eouz}GI#L+G*pg?`#cODYI|(X>;%-rsA(AELK6E%kc!+|(2Hi`|nGvZd>fbMYIt ziFY)=EJz8Zy>RX?l@Dk4%(|=3R&JUL8_poWojGgcv@}VkYMcy4lQwKX^oT4!UpBcB zL(*itTHy9Pp*;N7QhjOT5;1ScY+M62e3lnMSN;q&TJjj-qHkF7{6ouu_q(V4qViU5f}x*2=f9n_+moyG`e1 z9`G-2r`N6WaIx+W+W*U`p3i;`_RQ&a4jKQtqbt)UJ6q-);3KtX$Jahn#g~UAOJv37 zzJ|?R3+m*Dn^RMp4o{?R3ru3)O-EQ*=$;6cQ$3C~Uv!Ij`B$_1IY8zwT{Je@Nba%L{nDY{*Tw2N<#UD@g0C3khm4G>I2 z1^vo0MiZgUl6R29vt*$FyYcW*;#%fFm%JyEnSXIJ1^D4Mrbtz1uIv=WrdD3Q78Rvt zzxPrs{^r&S_u#dgX;Cch5g@y@p6J$xMX_fo>-sE9s_Ts+X5^}&zHH&Dw3a6f8Iv+S-jzCI8PQ=n z@SGZchE0Gx^Ty}e&K-AkHe}vE`|Lw4-&aTP#E${yhF|WBPA+mweDCC0H(sSub=hQ; zrmZO$Dhl1XqjP1&=%UKeqRt&VLyMLesv3-2O-|?XE9F<*PTsP1TYB!P80zIbv+CjL)fJTL$Rw_OU%q_yIUVRa&|>g*bUw9odJ)?2l0Uh<;_qn~RVG z?e~5AMj6B)iZH;3RH;l_QgR5&-F&JuS1J}j{ybC<; zoA~Zr;qpE`&^P9SyermuQIRX7qEj6j;;IB1B&(PI@AfNJx9%!d=K+Xhe>ZuG!4*Dvi zr0MGMMae^RwqqAiHbUgu_Ew;yBXO+R++ILbN7izg4hY|f90t*@p13%NckweeG z=`itI^mA0WS?CNF1_CAZKRp4=k{&Dx84&_x6GW>tu*Xj`2#{O_9zgDdO@U)16{T;0 z?B2m5#(iUmay~8nxo@~dFYyInL;Sxy=-)DGRyXZEQS zX5tZY^2$^@Kwhpm-hNP$6OObO?wkuoI}kiMYof*A%KuIwz=i2YM8pEte0QZk2iyN| z%7@eSoX9Owh-UXx6-oT6=Nh>CTHippTpsAM%_l1%;FtY4s`~s|Z0?^?D74mHebgTY zTfO<#PDArj0BRUe<6q1s0*nGD``heWuyOnmNa4t`GL_?JYRCtY8>AuM4So}ppd?#b z3S3OjO2j@2tsV{3N38tqsH7FBx9@ASWUz?i)8G45v9y|f2{-n+pv`_`Zyn4Mc7Bzg zM@W*g$Q05Xz8+-{W*Ic!Y*`T1Lc257p=`Z;rY=waT}CVAo8Jh!;{0=9bz8l=$64`K zf|XI) z3nvgYn7~xUdqgXJF+r&-dV&#PlCekodqN{v*!i_0WFfclNzIp2U!aRbd zA0{ZSk|!7;&Rc8=O=!#%vsTMt;n84M($AmtR-nb8E=f8pw@m**SN~6X6tyq=IhtzV zJ@EREKfPJ6Hth!zN%GdXRr0T|ZT!q{abEWF{|kr+vh#AYNs#%2VRYu9PO5|-;)@s1-# DsArA4 diff --git a/libs/angular/src/scss/bwicons/styles/style.scss b/libs/angular/src/scss/bwicons/styles/style.scss index 4b18243fb4e..c37050dbbea 100644 --- a/libs/angular/src/scss/bwicons/styles/style.scss +++ b/libs/angular/src/scss/bwicons/styles/style.scss @@ -128,7 +128,7 @@ $icons: ( "dbl-angle-left": "\e970", "dbl-angle-right": "\e971", "hamburger": "\e972", - "bw-folder-open-f": "\e93e", + "bw-folder-open-f1": "\e93e", "desktop": "\e96a", "angle-left": "\e96b", "user": "\e900", @@ -246,6 +246,10 @@ $icons: ( "family": "\e98b", "provider": "\e98c", "business": "\e98d", + "learning": "\e98e", + "chat": "\e990", + "server": "\e98f", + "search-book": "\e992", ); @each $name, $glyph in $icons { diff --git a/libs/components/src/stories/icons.stories.mdx b/libs/components/src/stories/icons.stories.mdx index 516fc090705..8ff0b2de80c 100644 --- a/libs/components/src/stories/icons.stories.mdx +++ b/libs/components/src/stories/icons.stories.mdx @@ -150,6 +150,7 @@ Avoid using icons to convey information unless paired with meaningful, clear tex | | bwi-puzzle | - | | | bwi-rocket | - | | | bwi-rss | - | +| | bwi-search-book | - | | | bwi-server | - | | | bwi-shield | - | | | bwi-sitemap | - | From 6539831bfce84bb4275e0023f46298bfec6f3d7c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Oct 2022 02:32:25 +0200 Subject: [PATCH 45/82] Autosync the updated translations (#3785) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/web/src/locales/af/messages.json | 16 ++++++ apps/web/src/locales/ar/messages.json | 16 ++++++ apps/web/src/locales/az/messages.json | 16 ++++++ apps/web/src/locales/be/messages.json | 16 ++++++ apps/web/src/locales/bg/messages.json | 16 ++++++ apps/web/src/locales/bn/messages.json | 16 ++++++ apps/web/src/locales/bs/messages.json | 16 ++++++ apps/web/src/locales/ca/messages.json | 36 +++++++++---- apps/web/src/locales/cs/messages.json | 16 ++++++ apps/web/src/locales/da/messages.json | 16 ++++++ apps/web/src/locales/de/messages.json | 16 ++++++ apps/web/src/locales/el/messages.json | 16 ++++++ apps/web/src/locales/en_GB/messages.json | 16 ++++++ apps/web/src/locales/en_IN/messages.json | 16 ++++++ apps/web/src/locales/eo/messages.json | 16 ++++++ apps/web/src/locales/es/messages.json | 20 ++++++- apps/web/src/locales/et/messages.json | 16 ++++++ apps/web/src/locales/eu/messages.json | 16 ++++++ apps/web/src/locales/fi/messages.json | 66 +++++++++++++++--------- apps/web/src/locales/fil/messages.json | 16 ++++++ apps/web/src/locales/fr/messages.json | 16 ++++++ apps/web/src/locales/he/messages.json | 16 ++++++ apps/web/src/locales/hi/messages.json | 16 ++++++ apps/web/src/locales/hr/messages.json | 16 ++++++ apps/web/src/locales/hu/messages.json | 16 ++++++ apps/web/src/locales/id/messages.json | 16 ++++++ apps/web/src/locales/it/messages.json | 16 ++++++ apps/web/src/locales/ja/messages.json | 16 ++++++ apps/web/src/locales/ka/messages.json | 16 ++++++ apps/web/src/locales/km/messages.json | 16 ++++++ apps/web/src/locales/kn/messages.json | 16 ++++++ apps/web/src/locales/ko/messages.json | 16 ++++++ apps/web/src/locales/lv/messages.json | 38 ++++++++++---- apps/web/src/locales/ml/messages.json | 16 ++++++ apps/web/src/locales/nb/messages.json | 16 ++++++ apps/web/src/locales/nl/messages.json | 16 ++++++ apps/web/src/locales/nn/messages.json | 16 ++++++ apps/web/src/locales/pl/messages.json | 16 ++++++ apps/web/src/locales/pt_BR/messages.json | 16 ++++++ apps/web/src/locales/pt_PT/messages.json | 44 +++++++++++----- apps/web/src/locales/ro/messages.json | 16 ++++++ apps/web/src/locales/ru/messages.json | 16 ++++++ apps/web/src/locales/si/messages.json | 16 ++++++ apps/web/src/locales/sk/messages.json | 16 ++++++ apps/web/src/locales/sl/messages.json | 16 ++++++ apps/web/src/locales/sr/messages.json | 16 ++++++ apps/web/src/locales/sr_CS/messages.json | 16 ++++++ apps/web/src/locales/sv/messages.json | 16 ++++++ apps/web/src/locales/tr/messages.json | 16 ++++++ apps/web/src/locales/uk/messages.json | 30 ++++++++--- apps/web/src/locales/vi/messages.json | 16 ++++++ apps/web/src/locales/zh_CN/messages.json | 16 ++++++ apps/web/src/locales/zh_TW/messages.json | 18 ++++++- 53 files changed, 918 insertions(+), 70 deletions(-) diff --git a/apps/web/src/locales/af/messages.json b/apps/web/src/locales/af/messages.json index eec950874e8..25ba8a4911d 100644 --- a/apps/web/src/locales/af/messages.json +++ b/apps/web/src/locales/af/messages.json @@ -3313,6 +3313,10 @@ "message": "Bygewerk", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Wagwoord Bygewerk", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Aantal gebruikers" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/ar/messages.json b/apps/web/src/locales/ar/messages.json index 43b82336bfc..b4111eff7d5 100644 --- a/apps/web/src/locales/ar/messages.json +++ b/apps/web/src/locales/ar/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/az/messages.json b/apps/web/src/locales/az/messages.json index d1dec240f28..09dcba1b557 100644 --- a/apps/web/src/locales/az/messages.json +++ b/apps/web/src/locales/az/messages.json @@ -3313,6 +3313,10 @@ "message": "Güncəlləndi", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Yaradıldı", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parol güncəlləndi", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "İstifadəçi sayı" + }, + "multiSelectPlaceholder": { + "message": "-- Filtrləmək üçün yazın --" + }, + "multiSelectLoading": { + "message": "Seçimlər alınır..." + }, + "multiSelectNotFound": { + "message": "Heç bir element tapılmadı" + }, + "multiSelectClearAll": { + "message": "Hamısını təmizlə" } } diff --git a/apps/web/src/locales/be/messages.json b/apps/web/src/locales/be/messages.json index c478bf41e34..8dcc9756563 100644 --- a/apps/web/src/locales/be/messages.json +++ b/apps/web/src/locales/be/messages.json @@ -3313,6 +3313,10 @@ "message": "Абноўлена", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Пароль абноўлены", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Колькасць карыстальнікаў" + }, + "multiSelectPlaceholder": { + "message": "- Увядзіце для фільтрацыі -" + }, + "multiSelectLoading": { + "message": "Атрыманне параметраў..." + }, + "multiSelectNotFound": { + "message": "Элементаў не знойдзена" + }, + "multiSelectClearAll": { + "message": "Ачысціць усё" } } diff --git a/apps/web/src/locales/bg/messages.json b/apps/web/src/locales/bg/messages.json index 71ab848dae1..e6032bde0b7 100644 --- a/apps/web/src/locales/bg/messages.json +++ b/apps/web/src/locales/bg/messages.json @@ -3313,6 +3313,10 @@ "message": "Обновена", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Създадено", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Обновена парола", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Брой потребители" + }, + "multiSelectPlaceholder": { + "message": "-- Пишете тук за филтриране --" + }, + "multiSelectLoading": { + "message": "Зареждане на опциите…" + }, + "multiSelectNotFound": { + "message": "Няма намерени записи" + }, + "multiSelectClearAll": { + "message": "Изчистване на всичко" } } diff --git a/apps/web/src/locales/bn/messages.json b/apps/web/src/locales/bn/messages.json index 4208da88078..8f5fe1a120c 100644 --- a/apps/web/src/locales/bn/messages.json +++ b/apps/web/src/locales/bn/messages.json @@ -3313,6 +3313,10 @@ "message": "হালনাগাদকৃত", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "পাসওয়ার্ড হালনাগাদকৃত", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/bs/messages.json b/apps/web/src/locales/bs/messages.json index 6e252cf11b0..ad21e8fdc12 100644 --- a/apps/web/src/locales/bs/messages.json +++ b/apps/web/src/locales/bs/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Broj korisnika" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/ca/messages.json b/apps/web/src/locales/ca/messages.json index e29962bc3e0..63e6d634a4a 100644 --- a/apps/web/src/locales/ca/messages.json +++ b/apps/web/src/locales/ca/messages.json @@ -570,16 +570,16 @@ "message": "Inicieu sessió o creeu un compte nou per accedir a la caixa forta." }, "loginWithDevice": { - "message": "Log in with device" + "message": "Inicieu sessió amb el dispositiu" }, "loginWithDeviceEnabledInfo": { - "message": "Log in with device must be enabled in the settings of the Bitwarden mobile app. Need another option?" + "message": "L'inici de sessió amb el dispositiu ha d'estar activat a la configuració de l'aplicació mòbil Bitwarden. Necessiteu una altra opció?" }, "createAccount": { "message": "Crea un compte" }, "newAroundHere": { - "message": "New around here?" + "message": "Nou per ací?" }, "startTrial": { "message": "Comença la prova" @@ -588,7 +588,7 @@ "message": "Inicia sessió" }, "logInInitiated": { - "message": "Log in initiated" + "message": "S'ha iniciat la sessió" }, "submit": { "message": "Envia" @@ -648,7 +648,7 @@ "message": "Cal tornar a escriure la contrasenya mestra." }, "masterPasswordMinlength": { - "message": "Master password must be at least 8 characters long." + "message": "La contrasenya mestra ha de contenir almenys 8 caràcters." }, "masterPassDoesntMatch": { "message": "La confirmació de la contrasenya mestra no coincideix." @@ -718,7 +718,7 @@ "message": "No pertanyeu a cap organització. Les organitzacions permeten compartir elements amb altres usuaris de forma segura." }, "notificationSentDevice": { - "message": "A notification has been sent to your device." + "message": "S'ha enviat una notificació al vostre dispositiu." }, "versionNumber": { "message": "Versió $VERSION_NUMBER$", @@ -2548,7 +2548,7 @@ } }, "viewAllLoginOptions": { - "message": "View all log in options" + "message": "Veure totes les opcions d'inici de sessió" }, "viewedItemId": { "message": "$ID$ de l'element vist.", @@ -3313,6 +3313,10 @@ "message": "Actualitzat", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Contrasenya actualitzada", "description": "ex. Date this password was updated" @@ -3391,10 +3395,10 @@ "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "fingerprintMatchInfo": { - "message": "Please make sure your vault is unlocked and Fingerprint phrase matches the other device." + "message": "Assegureu-vos que la vostra caixa forta estiga desbloquejada i que la frase d'empremta digital coincidisca amb l'altre dispositiu." }, "fingerprintPhraseHeader": { - "message": "Fingerprint phrase" + "message": "Frase d'empremta digital" }, "dontAskFingerprintAgain": { "message": "No sol·liciteu tornar a comprovar la frase de les empremtes dactilars (No recomanat)", @@ -4397,7 +4401,7 @@ "message": "Tornar a enviar invitacions" }, "resendNotification": { - "message": "Resend notification" + "message": "Torna a enviar la notificació" }, "noSelectedUsersApplicable": { "message": "Aquesta acció no és aplicable a cap dels usuaris seleccionats." @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Nombre d'usuaris" + }, + "multiSelectPlaceholder": { + "message": "-- Escriviu per filtrar --" + }, + "multiSelectLoading": { + "message": "Obtenint opcions..." + }, + "multiSelectNotFound": { + "message": "No s'ha trobat cap element" + }, + "multiSelectClearAll": { + "message": "Esborra-ho tot" } } diff --git a/apps/web/src/locales/cs/messages.json b/apps/web/src/locales/cs/messages.json index 7110b323a0c..f9a7477edd0 100644 --- a/apps/web/src/locales/cs/messages.json +++ b/apps/web/src/locales/cs/messages.json @@ -3313,6 +3313,10 @@ "message": "Upraveno", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Heslo bylo změněno", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/da/messages.json b/apps/web/src/locales/da/messages.json index 6c7cffd9ac7..63aa53eaeeb 100644 --- a/apps/web/src/locales/da/messages.json +++ b/apps/web/src/locales/da/messages.json @@ -3313,6 +3313,10 @@ "message": "Opdateret", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Oprettet", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Adgangskode opdateret", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Antal brugere" + }, + "multiSelectPlaceholder": { + "message": "-- Type at filtrere --" + }, + "multiSelectLoading": { + "message": "Henter indstillinger..." + }, + "multiSelectNotFound": { + "message": "Ingen emner fundet" + }, + "multiSelectClearAll": { + "message": "Ryd alt" } } diff --git a/apps/web/src/locales/de/messages.json b/apps/web/src/locales/de/messages.json index 53de20ac8f8..c9ed0f008eb 100644 --- a/apps/web/src/locales/de/messages.json +++ b/apps/web/src/locales/de/messages.json @@ -3313,6 +3313,10 @@ "message": "Aktualisiert", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Erstellt", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Passwort aktualisiert", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Anzahl der Benutzer" + }, + "multiSelectPlaceholder": { + "message": "-- Typ zum Filtern --" + }, + "multiSelectLoading": { + "message": "Optionen werden abgerufen..." + }, + "multiSelectNotFound": { + "message": "Keine Einträge gefunden" + }, + "multiSelectClearAll": { + "message": "Alles löschen" } } diff --git a/apps/web/src/locales/el/messages.json b/apps/web/src/locales/el/messages.json index a1f5ab49ecd..1d532bacd1b 100644 --- a/apps/web/src/locales/el/messages.json +++ b/apps/web/src/locales/el/messages.json @@ -3313,6 +3313,10 @@ "message": "Ενημερώθηκε", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Ο Κωδικός Ενημερώθηκε", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Αριθμός χρηστών" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/en_GB/messages.json b/apps/web/src/locales/en_GB/messages.json index 3a711cd61d6..288da49ea39 100644 --- a/apps/web/src/locales/en_GB/messages.json +++ b/apps/web/src/locales/en_GB/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/en_IN/messages.json b/apps/web/src/locales/en_IN/messages.json index 08ac0bef9fb..20aed93a304 100644 --- a/apps/web/src/locales/en_IN/messages.json +++ b/apps/web/src/locales/en_IN/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/eo/messages.json b/apps/web/src/locales/eo/messages.json index 8220166df90..53e1ee88790 100644 --- a/apps/web/src/locales/eo/messages.json +++ b/apps/web/src/locales/eo/messages.json @@ -3313,6 +3313,10 @@ "message": "Ĝisdatigita", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Pasvorto Ĝisdatigita", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Nombro de uzantoj" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/es/messages.json b/apps/web/src/locales/es/messages.json index d4ca589fd38..7cdfe450c71 100644 --- a/apps/web/src/locales/es/messages.json +++ b/apps/web/src/locales/es/messages.json @@ -3313,6 +3313,10 @@ "message": "Actualizada", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Creado", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Contraseña actualizada", "description": "ex. Date this password was updated" @@ -4729,7 +4733,7 @@ "message": "Comportamiento de firma" }, "spMinIncomingSigningAlgorithm": { - "message": "Minimum Incoming Signing Algorithm" + "message": "Algoritmo mínimo de firma entrante" }, "spWantAssertionsSigned": { "message": "Expect signed assertions" @@ -5053,7 +5057,7 @@ "message": "Facturación sincronizada" }, "billingSyncDesc": { - "message": "Billing Sync provides Free Families plans for members and advanced billing capabilities by linking your self-hosted Bitwarden to the Bitwarden cloud server." + "message": "La sincronización de facturación proveé planes Famliares gratuitos para los miembros y facilidades de facturación avanzada, conectando la bóveda autoalojada de Bitwarden al servidor en la nube de Bitwarden." }, "billingSyncKeyDesc": { "message": "A Billing Sync Token from your cloud organization's subscription settings is required to complete this form." @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Número de usuarios" + }, + "multiSelectPlaceholder": { + "message": "-- Escriba para filtrar --" + }, + "multiSelectLoading": { + "message": "Recuperando opciones..." + }, + "multiSelectNotFound": { + "message": "No hay elementos" + }, + "multiSelectClearAll": { + "message": "Borrar todo" } } diff --git a/apps/web/src/locales/et/messages.json b/apps/web/src/locales/et/messages.json index d67eb9d05ea..37d9ca76281 100644 --- a/apps/web/src/locales/et/messages.json +++ b/apps/web/src/locales/et/messages.json @@ -3313,6 +3313,10 @@ "message": "Uuendatud", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parool on uuendatud", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Kasutajate arv" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/eu/messages.json b/apps/web/src/locales/eu/messages.json index bc32cfa10b3..391e28356ae 100644 --- a/apps/web/src/locales/eu/messages.json +++ b/apps/web/src/locales/eu/messages.json @@ -3313,6 +3313,10 @@ "message": "Eguneratua", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Pasahitza eguneratu da", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Erabiltzaile kopurua" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/fi/messages.json b/apps/web/src/locales/fi/messages.json index 8607d1e279b..dd3537fafd6 100644 --- a/apps/web/src/locales/fi/messages.json +++ b/apps/web/src/locales/fi/messages.json @@ -461,13 +461,13 @@ "message": "Lisää uusi tiedostoliite" }, "deletedAttachment": { - "message": "Tiedostoliite poistettu" + "message": "Tiedostoliite poistettiin" }, "deleteAttachmentConfirmation": { "message": "Haluatko varmasti poistaa liitteen?" }, "attachmentSaved": { - "message": "Tiedostoliite tallennettu." + "message": "Tiedostoliite tallennettiin" }, "file": { "message": "Tiedosto" @@ -482,10 +482,10 @@ "message": "Et voi käyttää tätä toimintoa ennen kuin päivität salausavaimesi." }, "addedItem": { - "message": "Kohde lisätty" + "message": "Kohde lisättiin" }, "editedItem": { - "message": "Kohdetta muokattu" + "message": "Kohdetta muokattiin" }, "movedItemToOrg": { "message": "$ITEMNAME$ siirrettiin organisaatiolle $ORGNAME$", @@ -534,7 +534,7 @@ "message": "Haluatko varmasti korvata nykyisen salasanan?" }, "editedFolder": { - "message": "Kansiota muokattu" + "message": "Kansiota muokattiin" }, "addedFolder": { "message": "Kansio lisätty" @@ -543,7 +543,7 @@ "message": "Haluatko varmasti poistaa kansion?" }, "deletedFolder": { - "message": "Kansio poistettu" + "message": "Kansio poistettiin" }, "loggedOut": { "message": "Kirjauduttu ulos" @@ -573,7 +573,7 @@ "message": "Laitteella kirjautuminen" }, "loginWithDeviceEnabledInfo": { - "message": "Laitteella kirjautuminen oltava käytössä Biwarden-mobiilisovelluksen asetuksista. Tarvitsetko eri vaihtoehdon?" + "message": "Laitteella kirjautuminen otettava käyttöön Bitwardenin mobiilisovelluksen asetuksista. Tarvitsetko eri vaihtoehdon?" }, "createAccount": { "message": "Luo tili" @@ -1040,7 +1040,7 @@ "message": "Jatkamalla kirjaudut ulos nykyisestä istunnostasi ja joudut kirjautumaan uudelleen. Aktiiviset istunnot toisilla laitteilla saattavat pysyä aktiivisina vielä tunnin ajan." }, "emailChanged": { - "message": "Sähköpostiosoite vaihdettu" + "message": "Sähköpostiosoite vaihdettiin" }, "logBackIn": { "message": "Kirjaudu sisään uudelleen." @@ -1052,7 +1052,7 @@ "message": "Vaihda pääsalasana" }, "masterPasswordChanged": { - "message": "Pääsalasana vaihdettu" + "message": "Pääsalasana vaihdettiin" }, "currentMasterPass": { "message": "Nykyinen pääsalasana" @@ -1094,7 +1094,7 @@ "message": "Vaihda KDF-asetuksia" }, "encKeySettingsChanged": { - "message": "Salausavaimen asetukset muutettu" + "message": "Salausavaimen asetuksia muutettiin" }, "dangerZone": { "message": "Vaaravyöhyke" @@ -1112,7 +1112,7 @@ "message": "Jatkamalla kirjaudut ulos nykyisestä istunnostasi ja joudut kirjautumaan uudelleen. Myös kaksivaiheinen kirjautuminen on tehtävä uudelleen. Aktiiviset istunnot toisilla laitteilla saattavat pysyä aktiivisina vielä tunnin ajan." }, "sessionsDeauthorized": { - "message": "Kaikki istunnot mitätöity" + "message": "Kaikki istunnot mitätöitiin" }, "purgeVault": { "message": "Tyhjennä holvi" @@ -1566,7 +1566,7 @@ "message": "Tunnusten 2FA-tila" }, "inactive2faReportDesc": { - "message": "Kaksivaiheinen kirjautuminen (2FA) lisää tileillesi yhden suojaustason. Voit käyttää kaksivaiheiseen kirjautumiseen Bitwarden-todentajaa tai vaihtoehtoisia menetelmiä." + "message": "Kaksivaiheinen kirjautuminen (2FA) lisää tileillesi yhden suojaustason. Voit käyttää kaksivaiheiseen kirjautumiseen Bitwardenin todentajaa tai vaihtoehtoisia menetelmiä." }, "inactive2faFound": { "message": "Tunnuksia ilman kaksivaiheista kirjautumista löytyi" @@ -2386,7 +2386,7 @@ "message": "Kutsu käyttäjä" }, "inviteUserDesc": { - "message": "Kutsu organisaatioosi uusi käyttäjä syöttämällä alle heidän Bitwarden-tilinsä sähköpostiosoite. Jos heillä ei vielä ole Bitwarden-tiliä, heitä pyydetään luomaan uusi tili." + "message": "Kutsu organisaatioosi uusi käyttäjä syöttämällä alle heidän Bitwarden-tilinsä sähköpostiosoite. Jos heillä ei vielä ole Bitwarden-tiliä, heitä pyydetään luomaan uusi." }, "inviteMultipleEmailDesc": { "message": "Voit kutsua korkeintaan $COUNT$ käyttäjää kerrallaan, erottelemalla listan sähköpostiosoitteista pilkuilla.", @@ -2983,7 +2983,7 @@ "message": "Jos tilisi on olemassa, olemme lähettäneet sinulle lisäohjeita sähköpostitse." }, "deleteRecoverConfirmDesc": { - "message": "Olet pyytänyt Bitwarden-tilisi poistoa. Paina alla olevaa painiketta vahvistaaksesi." + "message": "Olet pyytänyt Bitwarden-tilisi poistoa. Vahvista painamalla alla olevaa painiketta." }, "myOrganization": { "message": "Oma organisaatio" @@ -3313,6 +3313,10 @@ "message": "Päivitetty", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Luotu", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Salasana päivitetty", "description": "ex. Date this password was updated" @@ -3391,7 +3395,7 @@ "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "fingerprintMatchInfo": { - "message": "Varmista, että holvisi on avattu ja tunnistelauseke vastaa kyseistä laitetta." + "message": "Varmista, että holvisi on avattu ja tunnistelauseke vastaa toista laitetta." }, "fingerprintPhraseHeader": { "message": "Tunnistelauseke" @@ -3779,7 +3783,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Nykyinen käyttökertojen määrä" + "message": "Käyttökertojen nykyinen määrä" }, "sendPasswordDesc": { "message": "Halutessasi, vaadi käyttäjiä syöttämään salasana Sendin avaamiseksi.", @@ -3894,7 +3898,7 @@ "message": "Muokkaa varmuuskontaktia" }, "inviteEmergencyContactDesc": { - "message": "Kutsu uusi varmuuskontakti syöttämällä alle heidän Bitwarden-tilinsä sähköpostiosoite. Jos heillä ei vielä ole Bitwarden-tiliä, heitä pyydetään luomaan uusi tili." + "message": "Kutsu uusi varmuuskontakti syöttämällä alle heidän Bitwarden-tilinsä sähköpostiosoite. Jos heillä ei vielä ole Bitwarden-tiliä, heitä pyydetään luomaan uusi." }, "emergencyAccessRecoveryInitiated": { "message": "Varmuuskäyttö aloitettu" @@ -4472,7 +4476,7 @@ "message": "Todentajan määritys" }, "setupProviderLoginDesc": { - "message": "Sinut on kutsuttu määrittämään uusi todentaja. Jatkaaksesi, sinun on kirjauduttava Bitwarden-tilillesi tai luotava uusi tili." + "message": "Sinut on kutsuttu määrittämään uusi todentaja. Jatkaaksesi, sinun on kirjauduttava tilillesi tai luotava uusi Bitwarden-tili." }, "setupProviderDesc": { "message": "Syötä alla pyydetyt tiedot viimeistelläksesi todentajan määrityksen. Jos sinulla on kysyttävää, ota yhteyttä asiakaspalveluun." @@ -4499,13 +4503,13 @@ "message": "Palvelun käyttäjät voivat käyttää ja hallita kaikkia asiakasorganisaatioita." }, "providerInviteUserDesc": { - "message": "Kutsu todentajallesi uusi käyttäjä syöttämällä alle heidän Bitwarden-tilinsä sähköpostiosoite. Jos heillä ei vielä ole Bitwarden-tiliä, pyydetään heitä luomaan uusi tili." + "message": "Kutsu todentajallesi uusi käyttäjä syöttämällä alle heidän Bitwarden-tilinsä sähköpostiosoite. Jos heillä ei vielä ole Bitwarden-tiliä, pyydetään heitä luomaan uusi." }, "joinProvider": { "message": "Liity todennustarjoajaan" }, "joinProviderDesc": { - "message": "Sinut on kutsuttu liittymään yllä mainittuun todentajaan. Hyväksyäksesi kutsun, sinun tulee kirjautua tilillesi tai luoda uusi Bitwarden-tili." + "message": "Sinut on kutsuttu liittymään yllä mainittuun todentajaan. Hyväksyäksesi kutsun, sinun on kirjauduttava tilillesi tai luotava uusi Bitwarden-tili." }, "providerInviteAcceptFailed": { "message": "Kutsua ei voitu hyväksyä. Pyydä todentajan ylläpitäjää lähettämään uusi kutsu." @@ -5278,19 +5282,19 @@ "message": "API-käyttötunniste" }, "deviceVerification": { - "message": "Laitetodennus" + "message": "Laitevahvistus" }, "enableDeviceVerification": { - "message": "Käytä laitetodennusta" + "message": "Käytä laitevahvistus" }, "deviceVerificationDesc": { - "message": "Kun käytössä, lähetetään todennuskoodit sähköpostitse, kun kirjaudutaan tuntemattomasta laitteesta" + "message": "Kun käytössä, todennuskoodit lähetetään sinulle sähköpostitse kirjauduttaessa tuntemattomasta laitteesta." }, "updatedDeviceVerification": { - "message": "Laitetodennus päivitettiin" + "message": "Laitevahvostus päivitettiin" }, "areYouSureYouWantToEnableDeviceVerificationTheVerificationCodeEmailsWillArriveAtX": { - "message": "Haluatko varmasti käyttää laitetodennusta? Todennuskoodit lähetetään sähköpostiosoitteeseen $EMAIL$", + "message": "Haluatko varmasti käyttää laitevahvistusta? Todennuskoodit lähetetään sähköpostiosoitteeseen $EMAIL$", "placeholders": { "email": { "content": "$1", @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Käyttäjien määrä" + }, + "multiSelectPlaceholder": { + "message": "-- Suodatettava tyyppi --" + }, + "multiSelectLoading": { + "message": "Noudetaan vaihtoehtoja..." + }, + "multiSelectNotFound": { + "message": "Kohteita ei löytynyt" + }, + "multiSelectClearAll": { + "message": "Tyhjennä kaikki" } } diff --git a/apps/web/src/locales/fil/messages.json b/apps/web/src/locales/fil/messages.json index a59eac00207..57947151f89 100644 --- a/apps/web/src/locales/fil/messages.json +++ b/apps/web/src/locales/fil/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/fr/messages.json b/apps/web/src/locales/fr/messages.json index 0c91379b73b..dcc39b5d6f2 100644 --- a/apps/web/src/locales/fr/messages.json +++ b/apps/web/src/locales/fr/messages.json @@ -3313,6 +3313,10 @@ "message": "Mis à jour", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Créé", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Mot de passe mis à jour", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Nombre d’utilisateurs" + }, + "multiSelectPlaceholder": { + "message": "-- Tapez pour Filtrer --" + }, + "multiSelectLoading": { + "message": "Récupération des options..." + }, + "multiSelectNotFound": { + "message": "Aucun élément trouvé" + }, + "multiSelectClearAll": { + "message": "Effacer tout" } } diff --git a/apps/web/src/locales/he/messages.json b/apps/web/src/locales/he/messages.json index 26a68564655..5062c48d3f9 100644 --- a/apps/web/src/locales/he/messages.json +++ b/apps/web/src/locales/he/messages.json @@ -3313,6 +3313,10 @@ "message": "עודכן", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "הסיסמה עודכנה", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/hi/messages.json b/apps/web/src/locales/hi/messages.json index b0f0aff0248..137ea553bda 100644 --- a/apps/web/src/locales/hi/messages.json +++ b/apps/web/src/locales/hi/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/hr/messages.json b/apps/web/src/locales/hr/messages.json index ac035f88cda..749cc7eb047 100644 --- a/apps/web/src/locales/hr/messages.json +++ b/apps/web/src/locales/hr/messages.json @@ -3313,6 +3313,10 @@ "message": "Ažurirano", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Lozinka ažurirana", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/hu/messages.json b/apps/web/src/locales/hu/messages.json index 51a7169184d..8d16c032b5c 100644 --- a/apps/web/src/locales/hu/messages.json +++ b/apps/web/src/locales/hu/messages.json @@ -3313,6 +3313,10 @@ "message": "A frissítés megtörtént.", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Létrehozva", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "A jelszó frissítésre került.", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Felhasználók száma" + }, + "multiSelectPlaceholder": { + "message": "-- Szűrendő típus --" + }, + "multiSelectLoading": { + "message": "Az opciók beolvasása folyamatban can..." + }, + "multiSelectNotFound": { + "message": "Nem található elem." + }, + "multiSelectClearAll": { + "message": "Összes törlése" } } diff --git a/apps/web/src/locales/id/messages.json b/apps/web/src/locales/id/messages.json index f9a0072e362..dbe662d51ac 100644 --- a/apps/web/src/locales/id/messages.json +++ b/apps/web/src/locales/id/messages.json @@ -3313,6 +3313,10 @@ "message": "Di perbarui", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Kata Sandi Diperbarui", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Jumplah pengguna" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/it/messages.json b/apps/web/src/locales/it/messages.json index 32685105ec2..af4a69de263 100644 --- a/apps/web/src/locales/it/messages.json +++ b/apps/web/src/locales/it/messages.json @@ -3313,6 +3313,10 @@ "message": "Aggiornato", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password aggiornata", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Numero di utenti" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/ja/messages.json b/apps/web/src/locales/ja/messages.json index fcb86f77272..cdccdf2aba2 100644 --- a/apps/web/src/locales/ja/messages.json +++ b/apps/web/src/locales/ja/messages.json @@ -3313,6 +3313,10 @@ "message": "更新日", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "作成日", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "パスワード更新日", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "ユーザー数" + }, + "multiSelectPlaceholder": { + "message": "-- 入力して絞り込み --" + }, + "multiSelectLoading": { + "message": "オプションを取得中..." + }, + "multiSelectNotFound": { + "message": "アイテムが見つかりません" + }, + "multiSelectClearAll": { + "message": "すべてクリア" } } diff --git a/apps/web/src/locales/ka/messages.json b/apps/web/src/locales/ka/messages.json index 5b7f4edc504..075c72bc948 100644 --- a/apps/web/src/locales/ka/messages.json +++ b/apps/web/src/locales/ka/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/km/messages.json b/apps/web/src/locales/km/messages.json index 5b7f4edc504..075c72bc948 100644 --- a/apps/web/src/locales/km/messages.json +++ b/apps/web/src/locales/km/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/kn/messages.json b/apps/web/src/locales/kn/messages.json index 69f614cc70f..fea74deecb2 100644 --- a/apps/web/src/locales/kn/messages.json +++ b/apps/web/src/locales/kn/messages.json @@ -3313,6 +3313,10 @@ "message": "ನವೀಕರಿಸಲಾಗಿದೆ", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "ಪಾಸ್ವರ್ಡ್ ನವೀಕರಿಸಲಾಗಿದೆ", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/ko/messages.json b/apps/web/src/locales/ko/messages.json index 0b3adb96d84..1c8eed81d88 100644 --- a/apps/web/src/locales/ko/messages.json +++ b/apps/web/src/locales/ko/messages.json @@ -3313,6 +3313,10 @@ "message": "업데이트됨", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "비밀번호 업데이트됨", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/lv/messages.json b/apps/web/src/locales/lv/messages.json index bc09efcf090..dfc55ec2cdf 100644 --- a/apps/web/src/locales/lv/messages.json +++ b/apps/web/src/locales/lv/messages.json @@ -3313,6 +3313,10 @@ "message": "Atjaunināts", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Izveidots", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parole atjaunināta", "description": "ex. Date this password was updated" @@ -5302,11 +5306,11 @@ "message": "Nepieciešams Premium abonements" }, "scim": { - "message": "SCIM Provisioning", + "message": "SCIM nodrošināšana", "description": "The text, 'SCIM', is an acronymn and should not be translated." }, "scimDescription": { - "message": "Automatically provision users and groups with your preferred identity provider via SCIM provisioning", + "message": "Automātiski nodrošina lietotājus un kopas ar vēlamo identitātes nodrošinātāju, izmantojot SCIM nodrošināšanu", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDesc": { @@ -5314,33 +5318,33 @@ "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimEnabledCheckboxDescHelpText": { - "message": "Set up your preferred identity provider by configuring the URL and SCIM API Key", + "message": "Uzstādīt vēlamo identitātes nodrošinātāju ar URL un SCIM API atslēgas iestatīšanu", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "scimApiKeyHelperText": { - "message": "This API key has access to manage users within your organization. It should be kept secret." + "message": "Šai API atslēgai ir piekļuve pāŗvaldīt apvienības lietotājus. Tā ir jātur noslēpumā." }, "copyScimKey": { - "message": "Copy the SCIM API Key to your clipboard", + "message": "Ievietot SCIM API atslēgu starpliktuvē", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKey": { - "message": "Rotate the SCIM API Key", + "message": "Nomainīt SCIM API atslēgu", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateScimKeyWarning": { - "message": "Are you sure you want to rotate the SCIM API Key? The current key will no longer work for any existing integrations.", + "message": "Vai tiešām nomainīt SCIM API atslēgu? Pašreizējā atslēga vairs nedarbosies nekur, kur tā ir norādīta.", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "rotateKey": { - "message": "Rotate Key" + "message": "Mainīt atslēgu" }, "scimApiKey": { "message": "SCIM API atslēga", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "copyScimUrl": { - "message": "Copy the SCIM endpoint URL to your clipboard", + "message": "Ievietot SCIM galapunkta URL starpliktuvē", "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimUrl": { @@ -5348,11 +5352,11 @@ "description": "the text, 'SCIM' and 'URL', are acronymns and should not be translated." }, "scimApiKeyRotated": { - "message": "The SCIM API Key has been successfully rotated", + "message": "SCIM API atslēga ir veiksmīgi nomainīta", "description": "the text, 'SCIM' and 'API', are acronymns and should not be translated." }, "scimSettingsSaved": { - "message": "SCIM settings have been saved successfully", + "message": "SCIM iestatījumi ir veiksmīgi saglabāti", "description": "the text, 'SCIM', is an acronymn and should not be translated." }, "inputRequired": { @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Lietotāju skaits" + }, + "multiSelectPlaceholder": { + "message": "-- Rakstīt, lai atlasītu --" + }, + "multiSelectLoading": { + "message": "Iegūst iespējas..." + }, + "multiSelectNotFound": { + "message": "Netika atrasti vienumi" + }, + "multiSelectClearAll": { + "message": "Notīrīt visu" } } diff --git a/apps/web/src/locales/ml/messages.json b/apps/web/src/locales/ml/messages.json index d2a735807a4..eb850bade65 100644 --- a/apps/web/src/locales/ml/messages.json +++ b/apps/web/src/locales/ml/messages.json @@ -3313,6 +3313,10 @@ "message": "പുതുക്കിയത്", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "പാസ്‍വേഡ് പുതുക്കി", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/nb/messages.json b/apps/web/src/locales/nb/messages.json index cd4edb5470e..f4eefceb487 100644 --- a/apps/web/src/locales/nb/messages.json +++ b/apps/web/src/locales/nb/messages.json @@ -3313,6 +3313,10 @@ "message": "Oppdatert den", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Passordet ble oppdatert den", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/nl/messages.json b/apps/web/src/locales/nl/messages.json index b58849e84e2..7a88342f1d7 100644 --- a/apps/web/src/locales/nl/messages.json +++ b/apps/web/src/locales/nl/messages.json @@ -3313,6 +3313,10 @@ "message": "Bijgewerkt", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Aangemaakt", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Wachtwoord bijgewerkt", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Aantal gebruikers" + }, + "multiSelectPlaceholder": { + "message": "-- Type om te filteren --" + }, + "multiSelectLoading": { + "message": "Opties ophalen..." + }, + "multiSelectNotFound": { + "message": "Geen items gevonden" + }, + "multiSelectClearAll": { + "message": "Alles wissen" } } diff --git a/apps/web/src/locales/nn/messages.json b/apps/web/src/locales/nn/messages.json index eac9d32f1f5..6444e9b1c0e 100644 --- a/apps/web/src/locales/nn/messages.json +++ b/apps/web/src/locales/nn/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/pl/messages.json b/apps/web/src/locales/pl/messages.json index ddde7c52e35..b214fb91fe7 100644 --- a/apps/web/src/locales/pl/messages.json +++ b/apps/web/src/locales/pl/messages.json @@ -3313,6 +3313,10 @@ "message": "Zaktualizowano", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Utworzono", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Aktualizacja hasła", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Liczba użytkowników" + }, + "multiSelectPlaceholder": { + "message": "-- Pisz, aby filtrować --" + }, + "multiSelectLoading": { + "message": "Pobieranie opcji..." + }, + "multiSelectNotFound": { + "message": "Nie znaleziono żadnych pozycji" + }, + "multiSelectClearAll": { + "message": "Wyczyść wszystko" } } diff --git a/apps/web/src/locales/pt_BR/messages.json b/apps/web/src/locales/pt_BR/messages.json index b7b4391cc69..0ba45d912b7 100644 --- a/apps/web/src/locales/pt_BR/messages.json +++ b/apps/web/src/locales/pt_BR/messages.json @@ -3313,6 +3313,10 @@ "message": "Atualizado", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Criado", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Senha Atualizada", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Número de usuários" + }, + "multiSelectPlaceholder": { + "message": "-- Digite para filtrar --" + }, + "multiSelectLoading": { + "message": "Carrgando Opções..." + }, + "multiSelectNotFound": { + "message": "Nenhum item encontrado" + }, + "multiSelectClearAll": { + "message": "Limpar todos" } } diff --git a/apps/web/src/locales/pt_PT/messages.json b/apps/web/src/locales/pt_PT/messages.json index ccdead830c7..d07ac80607e 100644 --- a/apps/web/src/locales/pt_PT/messages.json +++ b/apps/web/src/locales/pt_PT/messages.json @@ -3151,10 +3151,10 @@ "message": "Para ajuda adicional no gerenciamento da sua assinatura, entre em contato com o suporte ao cliente." }, "subscriptionUserSeatsUnlimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users." + "message": "Os ajustes à sua assinatura resultarão em alterações repartidas nos totais de faturamento. Se os utilizadores recém-convidados excederem o número de utilizadores na sua assinatura, receberá imediatamente uma cobrança proporcional pelos utilizadores adicionais." }, "subscriptionUserSeatsLimitedAutoscale": { - "message": "Adjustments to your subscription will result in prorated changes to your billing totals. If newly invited users exceed your subscription seats, you will immediately receive a prorated charge for the additional users until your $MAX$ seat limit is reached.", + "message": "Os ajustes à sua assinatura resultarão em alterações repartidas nos totais de faturamento. Se os utilizadores recém-convidados excederem os seus assentos de assinatura, receberá imediatamente uma cobrança proporcional por utilizador adicional até que o seu limite de $MAX$ seja atingido.", "placeholders": { "max": { "content": "$1", @@ -3313,6 +3313,10 @@ "message": "Atualizado", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Criado", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Palavra-passe atualizada", "description": "ex. Date this password was updated" @@ -3663,7 +3667,7 @@ "message": "Início de Sessão Único da Empresa" }, "ssoHandOff": { - "message": "You may now close this tab and continue in the extension." + "message": "Pode fechar esta aba e continuar na extensão." }, "includeAllTeamsFeatures": { "message": "Todas as funcionalidades de Equipas, mais:" @@ -3936,10 +3940,10 @@ "message": "You've been invited to become an emergency contact for the user listed above. To accept the invitation, you need to log in or create a new Bitwarden account." }, "emergencyInviteAcceptFailed": { - "message": "Unable to accept invitation. Ask the user to send a new invitation." + "message": "Não é possível aceitar o convite. Peça ao utilizador para enviar um novo convite." }, "emergencyInviteAcceptFailedShort": { - "message": "Unable to accept invitation. $DESCRIPTION$", + "message": "Não é possível aceitar o convite. $DESCRIPTION$", "placeholders": { "description": { "content": "$1", @@ -4145,7 +4149,7 @@ } }, "personalOwnershipPolicyInEffect": { - "message": "An organization policy is affecting your ownership options." + "message": "Uma política de organização está a afetar as suas opções de propriedade." }, "personalOwnershipPolicyInEffectImports": { "message": "An organization policy has disabled importing items into your personal vault." @@ -4289,7 +4293,7 @@ } }, "eventWithdrawPasswordReset": { - "message": "User $ID$ withdrew from password reset assistance.", + "message": "Utilizador $ID$ removeu-se da ajuda para redefinir senha.", "placeholders": { "id": { "content": "$1", @@ -4316,7 +4320,7 @@ } }, "firstSsoLogin": { - "message": "$ID$ logged in using Sso for the first time", + "message": "$ID$ conectou-se usando o Sso pela primeira vez", "placeholders": { "id": { "content": "$1", @@ -4352,7 +4356,7 @@ "message": "Redefinir Senha Mestra" }, "resetPasswordPolicyDescription": { - "message": "Allow admins to reset master passwords for members." + "message": "Permitir que administradores redefinam senhas mestres dos membros." }, "resetPasswordPolicyWarning": { "message": "Users in the organization will need to self-enroll or be auto-enrolled before administrators can reset their master password." @@ -4361,7 +4365,7 @@ "message": "Inscrição Automática" }, "resetPasswordPolicyAutoEnrollDescription": { - "message": "All users will be automatically enrolled in password reset once their invite is accepted and will not be allowed to withdraw." + "message": "Todos os utilizadores serão inscritos automaticamente na redefinição de senha assim que o convite for aceito e não será possível anular." }, "resetPasswordPolicyAutoEnrollWarning": { "message": "Users already in the organization will not be retroactively enrolled in password reset. They will need to self-enroll before administrators can reset their master password." @@ -4373,13 +4377,13 @@ "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." }, "resetPasswordOrgKeysError": { - "message": "Organization Keys response is null" + "message": "Resposta das chaves da organização é nula" }, "resetPasswordDetailsError": { - "message": "Reset Password Details response is null" + "message": "Redefinir senha de resposta é nula" }, "trashCleanupWarning": { - "message": "Items that have been in Trash more than 30 days will be automatically deleted." + "message": "Os registos que tenham sido enviados para a Lixeira, por mais que %d dias serão automaticamente excluídos." }, "trashCleanupWarningSelfHosted": { "message": "Items that have been in Trash for a while will be automatically deleted." @@ -4400,7 +4404,7 @@ "message": "Reenviar notificação" }, "noSelectedUsersApplicable": { - "message": "This action is not applicable to any of the selected users." + "message": "Esta ação não é aplicável a nenhum dos utilizadores selecionados." }, "removeUsersWarning": { "message": "Are you sure you want to remove the following users? The process may take a few seconds to complete and cannot be interrupted or canceled." @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Número de utilizadores" + }, + "multiSelectPlaceholder": { + "message": "-- Escreva para Filtrar --" + }, + "multiSelectLoading": { + "message": "A recuperar opções..." + }, + "multiSelectNotFound": { + "message": "Nenhum item encontrado" + }, + "multiSelectClearAll": { + "message": "Limpar tudo" } } diff --git a/apps/web/src/locales/ro/messages.json b/apps/web/src/locales/ro/messages.json index 75e6e69554e..1491ed8ec0e 100644 --- a/apps/web/src/locales/ro/messages.json +++ b/apps/web/src/locales/ro/messages.json @@ -3313,6 +3313,10 @@ "message": "S-a actualizat", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Creată", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parola s-a actualizat", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Număr de utilizatori" + }, + "multiSelectPlaceholder": { + "message": "-- Introduceți pentru a filtra --" + }, + "multiSelectLoading": { + "message": "Recuperarea opțiunilor..." + }, + "multiSelectNotFound": { + "message": "Niciun element găsit" + }, + "multiSelectClearAll": { + "message": "Ștergeți tot" } } diff --git a/apps/web/src/locales/ru/messages.json b/apps/web/src/locales/ru/messages.json index 15093d36403..2ba0800745c 100644 --- a/apps/web/src/locales/ru/messages.json +++ b/apps/web/src/locales/ru/messages.json @@ -3313,6 +3313,10 @@ "message": "Обновлено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Создан", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Пароль обновлен", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Количество пользователей" + }, + "multiSelectPlaceholder": { + "message": "-- Тип фильтра --" + }, + "multiSelectLoading": { + "message": "Получение параметров..." + }, + "multiSelectNotFound": { + "message": "Элементов не найдено" + }, + "multiSelectClearAll": { + "message": "Очистить все" } } diff --git a/apps/web/src/locales/si/messages.json b/apps/web/src/locales/si/messages.json index 26d759eadc8..73eb21fe161 100644 --- a/apps/web/src/locales/si/messages.json +++ b/apps/web/src/locales/si/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/sk/messages.json b/apps/web/src/locales/sk/messages.json index 38c624d1a38..3ed924a51e2 100644 --- a/apps/web/src/locales/sk/messages.json +++ b/apps/web/src/locales/sk/messages.json @@ -3313,6 +3313,10 @@ "message": "Aktualizované", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Vytvorené", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Heslo bolo aktualizované", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Počet používateľov" + }, + "multiSelectPlaceholder": { + "message": "-- Začnite písať pre filtrovanie --" + }, + "multiSelectLoading": { + "message": "Načítavajú sa možnosti..." + }, + "multiSelectNotFound": { + "message": "Nenašli sa žiadne položky" + }, + "multiSelectClearAll": { + "message": "Vyčistiť všetko" } } diff --git a/apps/web/src/locales/sl/messages.json b/apps/web/src/locales/sl/messages.json index c59098e98f4..e075410d2fb 100644 --- a/apps/web/src/locales/sl/messages.json +++ b/apps/web/src/locales/sl/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/sr/messages.json b/apps/web/src/locales/sr/messages.json index 6346a4e4155..5cde70b0fee 100644 --- a/apps/web/src/locales/sr/messages.json +++ b/apps/web/src/locales/sr/messages.json @@ -3313,6 +3313,10 @@ "message": "Промењено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Лозинка ажурирана", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Број корисника" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/sr_CS/messages.json b/apps/web/src/locales/sr_CS/messages.json index 9249d93ad34..db35f1e46de 100644 --- a/apps/web/src/locales/sr_CS/messages.json +++ b/apps/web/src/locales/sr_CS/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Number of users" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/sv/messages.json b/apps/web/src/locales/sv/messages.json index 61500c683d0..ec1e6e0646b 100644 --- a/apps/web/src/locales/sv/messages.json +++ b/apps/web/src/locales/sv/messages.json @@ -3313,6 +3313,10 @@ "message": "Uppdaterades", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Lösenordet uppdaterades", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Antal användare" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/tr/messages.json b/apps/web/src/locales/tr/messages.json index 28ec7bf050e..b7244830c20 100644 --- a/apps/web/src/locales/tr/messages.json +++ b/apps/web/src/locales/tr/messages.json @@ -3313,6 +3313,10 @@ "message": "Güncelleme", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Oluşturma", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parola güncelleme", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Kullanıcı sayısı" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Seçenekler alınıyor..." + }, + "multiSelectNotFound": { + "message": "Hiç kayıt bulunamadı" + }, + "multiSelectClearAll": { + "message": "Tümünü temizle" } } diff --git a/apps/web/src/locales/uk/messages.json b/apps/web/src/locales/uk/messages.json index a2ea167cdb3..a7dbd058ef9 100644 --- a/apps/web/src/locales/uk/messages.json +++ b/apps/web/src/locales/uk/messages.json @@ -522,10 +522,10 @@ "message": "Ви дійсно хочете перенести до смітника?" }, "deletedItem": { - "message": "Запис перенесено до смітника" + "message": "Запис переміщено до смітника" }, "deletedItems": { - "message": "Записи перенесено до смітника" + "message": "Записи переміщено до смітника" }, "movedItems": { "message": "Записи переміщено" @@ -537,7 +537,7 @@ "message": "Тека відредагована" }, "addedFolder": { - "message": "Додано теку" + "message": "Теку додано" }, "deleteFolderConfirmation": { "message": "Ви дійсно хочете видалити цю теку?" @@ -1321,10 +1321,10 @@ "message": "Преміум статус" }, "premiumRequired": { - "message": "Необхідний преміум статус" + "message": "Необхідна передплата преміум" }, "premiumRequiredDesc": { - "message": "Для використання цієї функції необхідний преміум статус." + "message": "Для використання цієї функції необхідна передплата преміум." }, "youHavePremiumAccess": { "message": "У вас є преміум-доступ" @@ -1792,7 +1792,7 @@ "message": "Пріоритетну технічну підтримку." }, "premiumSignUpFuture": { - "message": "Всі майбутні функції преміум статусу. Їх буде більше!" + "message": "Усі майбутні преміумфункції. Їх буде більше!" }, "premiumPrice": { "message": "Всього лише $PRICE$ / за рік!", @@ -2530,7 +2530,7 @@ } }, "deletedItemId": { - "message": "Запис $ID$ перенесено до смітника.", + "message": "Запис $ID$ переміщено до смітника.", "placeholders": { "id": { "content": "$1", @@ -3313,6 +3313,10 @@ "message": "Оновлено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Створено", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Пароль оновлено", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Кількість користувачів" + }, + "multiSelectPlaceholder": { + "message": "-- Введіть для фільтрування --" + }, + "multiSelectLoading": { + "message": "Параметри отримання..." + }, + "multiSelectNotFound": { + "message": "Нічого не знайдено" + }, + "multiSelectClearAll": { + "message": "Очистити все" } } diff --git a/apps/web/src/locales/vi/messages.json b/apps/web/src/locales/vi/messages.json index 5de8b0b6525..ac9fa51ab4a 100644 --- a/apps/web/src/locales/vi/messages.json +++ b/apps/web/src/locales/vi/messages.json @@ -3313,6 +3313,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Mật khẩu đã cập nhật", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "Số lượng người dùng" + }, + "multiSelectPlaceholder": { + "message": "-- Type to Filter --" + }, + "multiSelectLoading": { + "message": "Retrieving options..." + }, + "multiSelectNotFound": { + "message": "No items found" + }, + "multiSelectClearAll": { + "message": "Clear all" } } diff --git a/apps/web/src/locales/zh_CN/messages.json b/apps/web/src/locales/zh_CN/messages.json index a548cd4915a..554f2c12f27 100644 --- a/apps/web/src/locales/zh_CN/messages.json +++ b/apps/web/src/locales/zh_CN/messages.json @@ -3313,6 +3313,10 @@ "message": "更新于", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "创建于", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "密码更新于", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "用户数量" + }, + "multiSelectPlaceholder": { + "message": "-- 键入以筛选 --" + }, + "multiSelectLoading": { + "message": "正在获取选项..." + }, + "multiSelectNotFound": { + "message": "未找到任何项目" + }, + "multiSelectClearAll": { + "message": "清除全部" } } diff --git a/apps/web/src/locales/zh_TW/messages.json b/apps/web/src/locales/zh_TW/messages.json index c291747652f..0389b1987a3 100644 --- a/apps/web/src/locales/zh_TW/messages.json +++ b/apps/web/src/locales/zh_TW/messages.json @@ -3310,9 +3310,13 @@ "message": "於瀏覽器重新整理時" }, "dateUpdated": { - "message": "已更新", + "message": "更新於", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "建立於", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "密碼更新於", "description": "ex. Date this password was updated" @@ -5390,5 +5394,17 @@ }, "numberOfUsers": { "message": "使用者數量" + }, + "multiSelectPlaceholder": { + "message": "-- 輸入以進行篩選 --" + }, + "multiSelectLoading": { + "message": "正在取得選項…" + }, + "multiSelectNotFound": { + "message": "找不到任何項目" + }, + "multiSelectClearAll": { + "message": "全部清除" } } From cbbc31ba81bef4dd0b7fc7d89009c9768a9ca2d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Oct 2022 02:36:34 +0200 Subject: [PATCH 46/82] Autosync the updated translations (#3784) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/desktop/src/locales/af/messages.json | 4 +++ apps/desktop/src/locales/ar/messages.json | 4 +++ apps/desktop/src/locales/az/messages.json | 4 +++ apps/desktop/src/locales/be/messages.json | 4 +++ apps/desktop/src/locales/bg/messages.json | 4 +++ apps/desktop/src/locales/bn/messages.json | 4 +++ apps/desktop/src/locales/bs/messages.json | 4 +++ apps/desktop/src/locales/ca/messages.json | 4 +++ apps/desktop/src/locales/cs/messages.json | 4 +++ apps/desktop/src/locales/da/messages.json | 4 +++ apps/desktop/src/locales/de/messages.json | 4 +++ apps/desktop/src/locales/el/messages.json | 4 +++ apps/desktop/src/locales/en_GB/messages.json | 4 +++ apps/desktop/src/locales/en_IN/messages.json | 4 +++ apps/desktop/src/locales/eo/messages.json | 4 +++ apps/desktop/src/locales/es/messages.json | 4 +++ apps/desktop/src/locales/et/messages.json | 4 +++ apps/desktop/src/locales/eu/messages.json | 4 +++ apps/desktop/src/locales/fa/messages.json | 4 +++ apps/desktop/src/locales/fi/messages.json | 12 ++++++--- apps/desktop/src/locales/fil/messages.json | 4 +++ apps/desktop/src/locales/fr/messages.json | 20 +++++++++------ apps/desktop/src/locales/he/messages.json | 4 +++ apps/desktop/src/locales/hi/messages.json | 4 +++ apps/desktop/src/locales/hr/messages.json | 4 +++ apps/desktop/src/locales/hu/messages.json | 4 +++ apps/desktop/src/locales/id/messages.json | 4 +++ apps/desktop/src/locales/it/messages.json | 4 +++ apps/desktop/src/locales/ja/messages.json | 4 +++ apps/desktop/src/locales/ka/messages.json | 4 +++ apps/desktop/src/locales/km/messages.json | 4 +++ apps/desktop/src/locales/kn/messages.json | 4 +++ apps/desktop/src/locales/ko/messages.json | 4 +++ apps/desktop/src/locales/lv/messages.json | 4 +++ apps/desktop/src/locales/me/messages.json | 4 +++ apps/desktop/src/locales/ml/messages.json | 4 +++ apps/desktop/src/locales/nb/messages.json | 4 +++ apps/desktop/src/locales/nl/messages.json | 4 +++ apps/desktop/src/locales/nn/messages.json | 4 +++ apps/desktop/src/locales/pl/messages.json | 4 +++ apps/desktop/src/locales/pt_BR/messages.json | 4 +++ apps/desktop/src/locales/pt_PT/messages.json | 4 +++ apps/desktop/src/locales/ro/messages.json | 4 +++ apps/desktop/src/locales/ru/messages.json | 16 +++++++----- apps/desktop/src/locales/si/messages.json | 4 +++ apps/desktop/src/locales/sk/messages.json | 4 +++ apps/desktop/src/locales/sl/messages.json | 4 +++ apps/desktop/src/locales/sr/messages.json | 4 +++ apps/desktop/src/locales/sv/messages.json | 4 +++ apps/desktop/src/locales/th/messages.json | 4 +++ apps/desktop/src/locales/tr/messages.json | 4 +++ apps/desktop/src/locales/uk/messages.json | 26 +++++++++++--------- apps/desktop/src/locales/vi/messages.json | 4 +++ apps/desktop/src/locales/zh_CN/messages.json | 4 +++ apps/desktop/src/locales/zh_TW/messages.json | 6 ++++- 55 files changed, 250 insertions(+), 30 deletions(-) diff --git a/apps/desktop/src/locales/af/messages.json b/apps/desktop/src/locales/af/messages.json index daf4ccaaa41..8231e925e8c 100644 --- a/apps/desktop/src/locales/af/messages.json +++ b/apps/desktop/src/locales/af/messages.json @@ -1266,6 +1266,10 @@ "message": "Bygewerk", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Wagwoord bygewerk", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/ar/messages.json b/apps/desktop/src/locales/ar/messages.json index 305af3d4e90..eeb8a3cf57b 100644 --- a/apps/desktop/src/locales/ar/messages.json +++ b/apps/desktop/src/locales/ar/messages.json @@ -1266,6 +1266,10 @@ "message": "تم التحديث", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "تم تحديث كلمة المرور", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/az/messages.json b/apps/desktop/src/locales/az/messages.json index 93585928533..786ffaf1e44 100644 --- a/apps/desktop/src/locales/az/messages.json +++ b/apps/desktop/src/locales/az/messages.json @@ -1266,6 +1266,10 @@ "message": "Güncəlləndi", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Yaradıldı", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parol güncəlləndi", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/be/messages.json b/apps/desktop/src/locales/be/messages.json index f9458cf61a7..f552a265ff1 100644 --- a/apps/desktop/src/locales/be/messages.json +++ b/apps/desktop/src/locales/be/messages.json @@ -1266,6 +1266,10 @@ "message": "Абноўлена", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Створана", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Пароль абноўлены", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/bg/messages.json b/apps/desktop/src/locales/bg/messages.json index 72ee6e08e32..640e13020a7 100644 --- a/apps/desktop/src/locales/bg/messages.json +++ b/apps/desktop/src/locales/bg/messages.json @@ -1266,6 +1266,10 @@ "message": "Обновено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Създадено", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Обновена парола", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/bn/messages.json b/apps/desktop/src/locales/bn/messages.json index 47c7b64a8e1..f16d79ba980 100644 --- a/apps/desktop/src/locales/bn/messages.json +++ b/apps/desktop/src/locales/bn/messages.json @@ -1266,6 +1266,10 @@ "message": "হালনাগাদকৃত", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "পাসওয়ার্ড হালনাগাদকৃত", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/bs/messages.json b/apps/desktop/src/locales/bs/messages.json index 2b20273114e..a9e2d7ca650 100644 --- a/apps/desktop/src/locales/bs/messages.json +++ b/apps/desktop/src/locales/bs/messages.json @@ -1266,6 +1266,10 @@ "message": "Ažurirano", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Lozinka ažurirana", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/ca/messages.json b/apps/desktop/src/locales/ca/messages.json index ff2fb9047e3..028207e8750 100644 --- a/apps/desktop/src/locales/ca/messages.json +++ b/apps/desktop/src/locales/ca/messages.json @@ -1266,6 +1266,10 @@ "message": "Actualitzat", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Contrasenya actualitzada", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/cs/messages.json b/apps/desktop/src/locales/cs/messages.json index b6ef93b4cd4..dc543548cc5 100644 --- a/apps/desktop/src/locales/cs/messages.json +++ b/apps/desktop/src/locales/cs/messages.json @@ -1266,6 +1266,10 @@ "message": "Změněno", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Heslo bylo změněno", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/da/messages.json b/apps/desktop/src/locales/da/messages.json index c7945155819..f6d9b6d386b 100644 --- a/apps/desktop/src/locales/da/messages.json +++ b/apps/desktop/src/locales/da/messages.json @@ -1266,6 +1266,10 @@ "message": "Opdateret", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Adgangskode opdateret", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/de/messages.json b/apps/desktop/src/locales/de/messages.json index 612b1edd0b1..e920b824f5f 100644 --- a/apps/desktop/src/locales/de/messages.json +++ b/apps/desktop/src/locales/de/messages.json @@ -1266,6 +1266,10 @@ "message": "Aktualisiert", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Erstellt", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Passwort aktualisiert", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/el/messages.json b/apps/desktop/src/locales/el/messages.json index b4834c571aa..cacf5a7e955 100644 --- a/apps/desktop/src/locales/el/messages.json +++ b/apps/desktop/src/locales/el/messages.json @@ -1266,6 +1266,10 @@ "message": "Ενημερώθηκε", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Ο Κωδικός Ενημερώθηκε", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/en_GB/messages.json b/apps/desktop/src/locales/en_GB/messages.json index f2d527b668d..d7687161cc5 100644 --- a/apps/desktop/src/locales/en_GB/messages.json +++ b/apps/desktop/src/locales/en_GB/messages.json @@ -1266,6 +1266,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/en_IN/messages.json b/apps/desktop/src/locales/en_IN/messages.json index 11eb95758d7..60df91fd685 100644 --- a/apps/desktop/src/locales/en_IN/messages.json +++ b/apps/desktop/src/locales/en_IN/messages.json @@ -1266,6 +1266,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/eo/messages.json b/apps/desktop/src/locales/eo/messages.json index 7ddbc614b59..19fbf3836f1 100644 --- a/apps/desktop/src/locales/eo/messages.json +++ b/apps/desktop/src/locales/eo/messages.json @@ -1266,6 +1266,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/es/messages.json b/apps/desktop/src/locales/es/messages.json index aab30fce0d5..9876eb6c589 100644 --- a/apps/desktop/src/locales/es/messages.json +++ b/apps/desktop/src/locales/es/messages.json @@ -1266,6 +1266,10 @@ "message": "Actualizada", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Creado", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Contraseña actualizada", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/et/messages.json b/apps/desktop/src/locales/et/messages.json index 3dfb0bcbc70..ff7a066b9bc 100644 --- a/apps/desktop/src/locales/et/messages.json +++ b/apps/desktop/src/locales/et/messages.json @@ -1266,6 +1266,10 @@ "message": "Uuendatud", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parool on uuendatud", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/eu/messages.json b/apps/desktop/src/locales/eu/messages.json index 184ca3787b8..213ca0cac88 100644 --- a/apps/desktop/src/locales/eu/messages.json +++ b/apps/desktop/src/locales/eu/messages.json @@ -1266,6 +1266,10 @@ "message": "Eguneratua", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Pasahitza eguneratu da", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/fa/messages.json b/apps/desktop/src/locales/fa/messages.json index 30596769cf1..8292ecde7bb 100644 --- a/apps/desktop/src/locales/fa/messages.json +++ b/apps/desktop/src/locales/fa/messages.json @@ -1266,6 +1266,10 @@ "message": "بروزرسانی شد", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "کلمه عبور بروزرسانی شد", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/fi/messages.json b/apps/desktop/src/locales/fi/messages.json index 2e006edac97..c7656bb26f6 100644 --- a/apps/desktop/src/locales/fi/messages.json +++ b/apps/desktop/src/locales/fi/messages.json @@ -346,7 +346,7 @@ "message": "Nimi vaaditaan." }, "addedItem": { - "message": "Kohde lisätty" + "message": "Kohde lisättiin" }, "editedItem": { "message": "Kohdetta muokattu" @@ -1266,6 +1266,10 @@ "message": "Päivitetty", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Luotu", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Salasana päivitetty", "description": "ex. Date this password was updated" @@ -1364,7 +1368,7 @@ "message": "Avaa PIN-koodilla" }, "setYourPinCode": { - "message": "Aseta PIN-koodi Bitwardenin avaukselle. PIN-asetukset tyhjentyvät, jos kirjaudut kokonaan ulos sovelluksesta." + "message": "Aseta PIN-koodi Bitwardenin avaukselle. PIN-asetukset tyhjentyvät, jos kirjaudut sovelluksesta kokonaan ulos." }, "pinRequired": { "message": "PIN-koodi vaaditaan." @@ -1574,7 +1578,7 @@ "message": "Salli integraatio DuckDuckGo-selaimeen" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Käytä Bitwarden-holvia DuckDuckGo-selaimessa." + "message": "Käytä Bitwardenin holvia DuckDuckGo-selaimessa." }, "browserIntegrationUnsupportedTitle": { "message": "Selainintegraatiota ei tueta" @@ -1680,7 +1684,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Nykyinen käyttökertojen määrä" + "message": "Käyttökertojen nykyinen määrä" }, "disableSend": { "message": "Poista Send käytöstä, jottei kukaan voi avata sitä.", diff --git a/apps/desktop/src/locales/fil/messages.json b/apps/desktop/src/locales/fil/messages.json index 4f77b521ad0..0cc64739e4e 100644 --- a/apps/desktop/src/locales/fil/messages.json +++ b/apps/desktop/src/locales/fil/messages.json @@ -1266,6 +1266,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/fr/messages.json b/apps/desktop/src/locales/fr/messages.json index 86e4c15eb50..00962690919 100644 --- a/apps/desktop/src/locales/fr/messages.json +++ b/apps/desktop/src/locales/fr/messages.json @@ -1266,6 +1266,10 @@ "message": "Mis à jour ", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Mot de passe mis à jour", "description": "ex. Date this password was updated" @@ -1385,10 +1389,10 @@ "message": "déverouiller votre coffre" }, "autoPromptWindowsHello": { - "message": "Ask for Windows Hello on launch" + "message": "Demander à Windows Hello au démarrage" }, "autoPromptTouchId": { - "message": "Ask for Touch ID on launch" + "message": "Demander à Touch ID au démarrage" }, "lockWithMasterPassOnRestart": { "message": "Verrouiller avec le mot de passe maître lors du redémarrage" @@ -1571,10 +1575,10 @@ "message": "L'intégration avec le navigateur est utilisée pour le déverrouillage biométrique dans le navigateur." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Allow DuckDuckGo browser integration" + "message": "Autoriser l'intégration DuckDuckGo au navigateur" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Use your Bitwarden vault when browsing with DuckDuckGo." + "message": "Utiliser votre coffre Bitwarden quand vous naviguez avec DuckDuckGo." }, "browserIntegrationUnsupportedTitle": { "message": "Intégration dans le navigateur non supportée" @@ -1604,7 +1608,7 @@ "message": "Veuillez vous assurer que la phrase d'empreinte affichée est identique à celle affichée dans l'extension de navigateur." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ wants to connect to Bitwarden", + "message": "$APPID$ souhaite se connecter à Bitwarden", "placeholders": { "appid": { "content": "$1", @@ -1613,10 +1617,10 @@ } }, "verifyNativeMessagingConnectionDesc": { - "message": "Would you like to approve this request?" + "message": "Voulez-vous approuver cette demande ?" }, "verifyNativeMessagingConnectionWarning": { - "message": "If you did not initiate this request, do not approve it." + "message": "Si vous n'avez pas initié cette demande, ne l'approuverez pas." }, "biometricsNotEnabledTitle": { "message": "Le déverrouillage biométrique n'est pas activé" @@ -2016,6 +2020,6 @@ "message": "Mir" }, "vault": { - "message": "Vault" + "message": "Coffre" } } diff --git a/apps/desktop/src/locales/he/messages.json b/apps/desktop/src/locales/he/messages.json index d2eedf07910..d1cf929c9d1 100644 --- a/apps/desktop/src/locales/he/messages.json +++ b/apps/desktop/src/locales/he/messages.json @@ -1266,6 +1266,10 @@ "message": "עודכן", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "הסיסמה עודכנה", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/hi/messages.json b/apps/desktop/src/locales/hi/messages.json index d2eb932e7f1..2c5465dbd16 100644 --- a/apps/desktop/src/locales/hi/messages.json +++ b/apps/desktop/src/locales/hi/messages.json @@ -1266,6 +1266,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/hr/messages.json b/apps/desktop/src/locales/hr/messages.json index c720728df00..ef793dc9fec 100644 --- a/apps/desktop/src/locales/hr/messages.json +++ b/apps/desktop/src/locales/hr/messages.json @@ -1266,6 +1266,10 @@ "message": "Ažurirano", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Lozinka ažurirana", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/hu/messages.json b/apps/desktop/src/locales/hu/messages.json index b89d898cb3e..607dc42911a 100644 --- a/apps/desktop/src/locales/hu/messages.json +++ b/apps/desktop/src/locales/hu/messages.json @@ -1266,6 +1266,10 @@ "message": "A frissítés megtörtént.", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Létrehozva", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "A jelszó frissítésre került.", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/id/messages.json b/apps/desktop/src/locales/id/messages.json index b355f13f5d7..4e9856955b9 100644 --- a/apps/desktop/src/locales/id/messages.json +++ b/apps/desktop/src/locales/id/messages.json @@ -1266,6 +1266,10 @@ "message": "Di perbarui", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Kata Sandi telah Diperbarui", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/it/messages.json b/apps/desktop/src/locales/it/messages.json index 89a96eac050..397aec93987 100644 --- a/apps/desktop/src/locales/it/messages.json +++ b/apps/desktop/src/locales/it/messages.json @@ -1266,6 +1266,10 @@ "message": "Aggiornato", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Creato", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password aggiornata", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/ja/messages.json b/apps/desktop/src/locales/ja/messages.json index d2f5953e0fd..1e3a633874a 100644 --- a/apps/desktop/src/locales/ja/messages.json +++ b/apps/desktop/src/locales/ja/messages.json @@ -1266,6 +1266,10 @@ "message": "更新日", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "作成日", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "パスワード更新日", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/ka/messages.json b/apps/desktop/src/locales/ka/messages.json index 4f77b521ad0..0cc64739e4e 100644 --- a/apps/desktop/src/locales/ka/messages.json +++ b/apps/desktop/src/locales/ka/messages.json @@ -1266,6 +1266,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/km/messages.json b/apps/desktop/src/locales/km/messages.json index 4f77b521ad0..0cc64739e4e 100644 --- a/apps/desktop/src/locales/km/messages.json +++ b/apps/desktop/src/locales/km/messages.json @@ -1266,6 +1266,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/kn/messages.json b/apps/desktop/src/locales/kn/messages.json index 44349769747..d53acd225bc 100644 --- a/apps/desktop/src/locales/kn/messages.json +++ b/apps/desktop/src/locales/kn/messages.json @@ -1266,6 +1266,10 @@ "message": "ಅಪ್‌ಡೇಟ್", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "ಪಾಸ್ವರ್ಡ್ ನವೀಕರಿಸಲಾಗಿದೆ", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/ko/messages.json b/apps/desktop/src/locales/ko/messages.json index 39b7981ce11..5b42b687f76 100644 --- a/apps/desktop/src/locales/ko/messages.json +++ b/apps/desktop/src/locales/ko/messages.json @@ -1266,6 +1266,10 @@ "message": "업데이트됨", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "비밀번호 업데이트됨", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/lv/messages.json b/apps/desktop/src/locales/lv/messages.json index 5de38d841f5..226e4cc1aa2 100644 --- a/apps/desktop/src/locales/lv/messages.json +++ b/apps/desktop/src/locales/lv/messages.json @@ -1266,6 +1266,10 @@ "message": "Atjaunināts", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Izveidots", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parole atjaunināta", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/me/messages.json b/apps/desktop/src/locales/me/messages.json index bff24d49664..b62af8f36ec 100644 --- a/apps/desktop/src/locales/me/messages.json +++ b/apps/desktop/src/locales/me/messages.json @@ -1266,6 +1266,10 @@ "message": "Ažurirano", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Lozinka ažurirana", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/ml/messages.json b/apps/desktop/src/locales/ml/messages.json index 2b79830ce3f..9b9d7f5f17d 100644 --- a/apps/desktop/src/locales/ml/messages.json +++ b/apps/desktop/src/locales/ml/messages.json @@ -1266,6 +1266,10 @@ "message": "പുതുക്കിയത്", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "പാസ്‍വേഡ് പുതുക്കി", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/nb/messages.json b/apps/desktop/src/locales/nb/messages.json index 06aa41b63cb..096b37b23b9 100644 --- a/apps/desktop/src/locales/nb/messages.json +++ b/apps/desktop/src/locales/nb/messages.json @@ -1266,6 +1266,10 @@ "message": "Oppdatert den", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Passordet ble oppdatert den", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/nl/messages.json b/apps/desktop/src/locales/nl/messages.json index 0040f88c980..8d88419e8dc 100644 --- a/apps/desktop/src/locales/nl/messages.json +++ b/apps/desktop/src/locales/nl/messages.json @@ -1266,6 +1266,10 @@ "message": "Bijgewerkt", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Aangemaakt", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Wachtwoord bijgewerkt", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/nn/messages.json b/apps/desktop/src/locales/nn/messages.json index 27cb9423df4..44eed89c74f 100644 --- a/apps/desktop/src/locales/nn/messages.json +++ b/apps/desktop/src/locales/nn/messages.json @@ -1266,6 +1266,10 @@ "message": "Retta", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/pl/messages.json b/apps/desktop/src/locales/pl/messages.json index 7653d6143a3..75ebf05cb02 100644 --- a/apps/desktop/src/locales/pl/messages.json +++ b/apps/desktop/src/locales/pl/messages.json @@ -1266,6 +1266,10 @@ "message": "Zaktualizowano", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Utworzono", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Aktualizacja hasła", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/pt_BR/messages.json b/apps/desktop/src/locales/pt_BR/messages.json index f27f6cee8d3..1df8d3774a2 100644 --- a/apps/desktop/src/locales/pt_BR/messages.json +++ b/apps/desktop/src/locales/pt_BR/messages.json @@ -1266,6 +1266,10 @@ "message": "Atualizado", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Senha Atualizada", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/pt_PT/messages.json b/apps/desktop/src/locales/pt_PT/messages.json index 524f4209836..c647b0bd62a 100644 --- a/apps/desktop/src/locales/pt_PT/messages.json +++ b/apps/desktop/src/locales/pt_PT/messages.json @@ -1266,6 +1266,10 @@ "message": "Atualizado", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Criado", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Palavra-passe atualizada", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/ro/messages.json b/apps/desktop/src/locales/ro/messages.json index 3a54501d709..7b0ad37c853 100644 --- a/apps/desktop/src/locales/ro/messages.json +++ b/apps/desktop/src/locales/ro/messages.json @@ -1266,6 +1266,10 @@ "message": "S-a actualizat", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Creată", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parola s-a actualizat", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/ru/messages.json b/apps/desktop/src/locales/ru/messages.json index 84e67f00232..d0d325b9674 100644 --- a/apps/desktop/src/locales/ru/messages.json +++ b/apps/desktop/src/locales/ru/messages.json @@ -1239,7 +1239,7 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Переключить настройки" + "message": "Настройки перебора" }, "organization": { "message": "Организация", @@ -1266,6 +1266,10 @@ "message": "Обновлено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Создан", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Пароль обновлен", "description": "ex. Date this password was updated" @@ -1571,10 +1575,10 @@ "message": "Используется для биометрии в браузере." }, "enableDuckDuckGoBrowserIntegration": { - "message": "Allow DuckDuckGo browser integration" + "message": "Разрешить интеграцию в браузер DuckDuckGo" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "Use your Bitwarden vault when browsing with DuckDuckGo." + "message": "Использовать хранилище Bitwarden совместно с браузером DuckDuckGo." }, "browserIntegrationUnsupportedTitle": { "message": "Интеграция с браузером не поддерживается" @@ -1604,7 +1608,7 @@ "message": "Пожалуйста, убедитесь, что отображаемый отпечаток идентичен отпечатку, отображаемому в расширении браузера." }, "verifyNativeMessagingConnectionTitle": { - "message": "$APPID$ wants to connect to Bitwarden", + "message": "$APPID$ хочет подключиться к Bitwarden", "placeholders": { "appid": { "content": "$1", @@ -1613,10 +1617,10 @@ } }, "verifyNativeMessagingConnectionDesc": { - "message": "Would you like to approve this request?" + "message": "Вы хотите одобрить этот запрос?" }, "verifyNativeMessagingConnectionWarning": { - "message": "If you did not initiate this request, do not approve it." + "message": "Если запрос инициировали не вы, не одобряйте его." }, "biometricsNotEnabledTitle": { "message": "Биометрия не включена" diff --git a/apps/desktop/src/locales/si/messages.json b/apps/desktop/src/locales/si/messages.json index 32eebc8e99e..4c7c458a6b9 100644 --- a/apps/desktop/src/locales/si/messages.json +++ b/apps/desktop/src/locales/si/messages.json @@ -1266,6 +1266,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/sk/messages.json b/apps/desktop/src/locales/sk/messages.json index a0d1cd36431..bc16be1747e 100644 --- a/apps/desktop/src/locales/sk/messages.json +++ b/apps/desktop/src/locales/sk/messages.json @@ -1266,6 +1266,10 @@ "message": "Aktualizované", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Vytvorené", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Heslo bolo aktualizované", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/sl/messages.json b/apps/desktop/src/locales/sl/messages.json index 34e557dc68e..225866453ff 100644 --- a/apps/desktop/src/locales/sl/messages.json +++ b/apps/desktop/src/locales/sl/messages.json @@ -1266,6 +1266,10 @@ "message": "Posodobljeno", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Geslo je bilo posodobljeno", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/sr/messages.json b/apps/desktop/src/locales/sr/messages.json index 48baf44ce55..fdf8cce3c0a 100644 --- a/apps/desktop/src/locales/sr/messages.json +++ b/apps/desktop/src/locales/sr/messages.json @@ -1266,6 +1266,10 @@ "message": "Промењено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Лозинка ажурирана", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/sv/messages.json b/apps/desktop/src/locales/sv/messages.json index aa99b529b13..0239eb435b5 100644 --- a/apps/desktop/src/locales/sv/messages.json +++ b/apps/desktop/src/locales/sv/messages.json @@ -1266,6 +1266,10 @@ "message": "Uppdaterades", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Lösenordet uppdaterades", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/th/messages.json b/apps/desktop/src/locales/th/messages.json index cfdde1e0700..7c006ebf594 100644 --- a/apps/desktop/src/locales/th/messages.json +++ b/apps/desktop/src/locales/th/messages.json @@ -1266,6 +1266,10 @@ "message": "อัปเดตแล้ว", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/tr/messages.json b/apps/desktop/src/locales/tr/messages.json index 5919d1fc067..7a475bf1c7a 100644 --- a/apps/desktop/src/locales/tr/messages.json +++ b/apps/desktop/src/locales/tr/messages.json @@ -1266,6 +1266,10 @@ "message": "Güncelleme", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Oluşturma", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parola güncelleme", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/uk/messages.json b/apps/desktop/src/locales/uk/messages.json index b8ef216840a..e6fe9b3eab1 100644 --- a/apps/desktop/src/locales/uk/messages.json +++ b/apps/desktop/src/locales/uk/messages.json @@ -175,10 +175,10 @@ "message": "Адреса" }, "premiumRequired": { - "message": "Необхідний преміум статус" + "message": "Необхідна передплата преміум" }, "premiumRequiredDesc": { - "message": "Для використання цієї функції необхідний преміум статус." + "message": "Для використання цієї функції необхідна передплата преміум." }, "errorOccurred": { "message": "Сталася помилка." @@ -364,7 +364,7 @@ "message": "Ви дійсно хочете перенести до смітника?" }, "deletedItem": { - "message": "Запис перенесено до смітника" + "message": "Запис переміщено до смітника" }, "overwritePasswordConfirmation": { "message": "Ви дійсно хочете перезаписати поточний пароль?" @@ -479,7 +479,7 @@ "message": "Тека відредагована" }, "addedFolder": { - "message": "Додано теку" + "message": "Теку додано" }, "deleteFolderConfirmation": { "message": "Ви дійсно хочете видалити цю теку?" @@ -1047,19 +1047,19 @@ "message": "Преміум статус" }, "premiumManage": { - "message": "Керувати статусом" + "message": "Керувати передплатою" }, "premiumManageAlert": { "message": "Ви можете керувати своїм статусом у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" }, "premiumRefresh": { - "message": "Оновити статус" + "message": "Оновити стан передплати" }, "premiumNotCurrentMember": { - "message": "Зараз у вас немає преміум-статусу." + "message": "Зараз у вас немає передплати преміум." }, "premiumSignUpAndGet": { - "message": "Підпишіться на преміум-статус і отримайте:" + "message": "Передплатіть преміум і отримайте:" }, "premiumSignUpStorage": { "message": "1 ГБ зашифрованого сховища для файлів." @@ -1077,16 +1077,16 @@ "message": "Пріоритетну технічну підтримку." }, "premiumSignUpFuture": { - "message": "Всі майбутні функції преміум статусу. Їх буде більше!" + "message": "Усі майбутні преміумфункції. Їх буде більше!" }, "premiumPurchase": { "message": "Придбати преміум" }, "premiumPurchaseAlert": { - "message": "Ви можете придбати преміум статус у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + "message": "Ви можете передплатити преміум у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" }, "premiumCurrentMember": { - "message": "У вас преміум статус!" + "message": "Ви користуєтеся передплатою преміум!" }, "premiumCurrentMemberThanks": { "message": "Дякуємо за підтримку Bitwarden." @@ -1266,6 +1266,10 @@ "message": "Оновлено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Створено", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Пароль оновлено", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/vi/messages.json b/apps/desktop/src/locales/vi/messages.json index d1609de42f7..5c653a7693e 100644 --- a/apps/desktop/src/locales/vi/messages.json +++ b/apps/desktop/src/locales/vi/messages.json @@ -1266,6 +1266,10 @@ "message": "Ngày cập nhật", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/zh_CN/messages.json b/apps/desktop/src/locales/zh_CN/messages.json index caf13e94e0e..c392d2a78c2 100644 --- a/apps/desktop/src/locales/zh_CN/messages.json +++ b/apps/desktop/src/locales/zh_CN/messages.json @@ -1266,6 +1266,10 @@ "message": "更新于", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "创建于", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "密码更新于", "description": "ex. Date this password was updated" diff --git a/apps/desktop/src/locales/zh_TW/messages.json b/apps/desktop/src/locales/zh_TW/messages.json index cff53e074c5..f32e5e03eb6 100644 --- a/apps/desktop/src/locales/zh_TW/messages.json +++ b/apps/desktop/src/locales/zh_TW/messages.json @@ -1266,6 +1266,10 @@ "message": "更新於", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "建立於", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "密碼更新於", "description": "ex. Date this password was updated" @@ -1574,7 +1578,7 @@ "message": "允許 DuckDuckGo 瀏覽器整合" }, "enableDuckDuckGoBrowserIntegrationDesc": { - "message": "使用 DuckDuckGo 瀏覽時,使用您的 Bitwarden 密碼庫。" + "message": "當使用 DuckDuckGo 瀏覽時,使用您的 Bitwarden 密碼庫。" }, "browserIntegrationUnsupportedTitle": { "message": "不支援瀏覽器整合" From 62aaa8b54d2d8156abc930ed04bd30d4fe7f155f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Oct 2022 12:55:37 +0200 Subject: [PATCH 47/82] Autosync the updated translations (#3783) Co-authored-by: bitwarden-devops-bot <106330231+bitwarden-devops-bot@users.noreply.github.com> --- apps/browser/src/_locales/ar/messages.json | 172 ++++----- apps/browser/src/_locales/az/messages.json | 4 + apps/browser/src/_locales/be/messages.json | 4 + apps/browser/src/_locales/bg/messages.json | 14 +- apps/browser/src/_locales/bn/messages.json | 90 ++--- apps/browser/src/_locales/bs/messages.json | 346 ++++++++--------- apps/browser/src/_locales/ca/messages.json | 12 +- apps/browser/src/_locales/cs/messages.json | 36 +- apps/browser/src/_locales/da/messages.json | 72 ++-- apps/browser/src/_locales/de/messages.json | 46 +-- apps/browser/src/_locales/el/messages.json | 10 +- apps/browser/src/_locales/en_GB/messages.json | 8 +- apps/browser/src/_locales/en_IN/messages.json | 4 + apps/browser/src/_locales/es/messages.json | 6 +- apps/browser/src/_locales/et/messages.json | 12 +- apps/browser/src/_locales/eu/messages.json | 4 + apps/browser/src/_locales/fa/messages.json | 4 + apps/browser/src/_locales/fi/messages.json | 90 ++--- apps/browser/src/_locales/fil/messages.json | 328 ++++++++-------- apps/browser/src/_locales/fr/messages.json | 54 +-- apps/browser/src/_locales/he/messages.json | 80 ++-- apps/browser/src/_locales/hi/messages.json | 72 ++-- apps/browser/src/_locales/hr/messages.json | 24 +- apps/browser/src/_locales/hu/messages.json | 40 +- apps/browser/src/_locales/id/messages.json | 40 +- apps/browser/src/_locales/it/messages.json | 24 +- apps/browser/src/_locales/ja/messages.json | 12 +- apps/browser/src/_locales/ka/messages.json | 324 ++++++++-------- apps/browser/src/_locales/km/messages.json | 352 +++++++++--------- apps/browser/src/_locales/kn/messages.json | 72 ++-- apps/browser/src/_locales/ko/messages.json | 20 +- apps/browser/src/_locales/lt/messages.json | 162 ++++---- apps/browser/src/_locales/lv/messages.json | 4 + apps/browser/src/_locales/ml/messages.json | 122 +++--- apps/browser/src/_locales/nb/messages.json | 12 +- apps/browser/src/_locales/nl/messages.json | 20 +- apps/browser/src/_locales/nn/messages.json | 352 +++++++++--------- apps/browser/src/_locales/pl/messages.json | 32 +- apps/browser/src/_locales/pt_BR/messages.json | 30 +- apps/browser/src/_locales/pt_PT/messages.json | 90 ++--- apps/browser/src/_locales/ro/messages.json | 152 ++++---- apps/browser/src/_locales/ru/messages.json | 36 +- apps/browser/src/_locales/si/messages.json | 44 ++- apps/browser/src/_locales/sk/messages.json | 14 +- apps/browser/src/_locales/sl/messages.json | 186 ++++----- apps/browser/src/_locales/sr/messages.json | 4 + apps/browser/src/_locales/sv/messages.json | 64 ++-- apps/browser/src/_locales/th/messages.json | 146 ++++---- apps/browser/src/_locales/tr/messages.json | 76 ++-- apps/browser/src/_locales/uk/messages.json | 36 +- apps/browser/src/_locales/vi/messages.json | 68 ++-- apps/browser/src/_locales/zh_CN/messages.json | 94 ++--- apps/browser/src/_locales/zh_TW/messages.json | 82 ++-- apps/browser/store/locales/ml/copy.resx | 4 +- 54 files changed, 2209 insertions(+), 1997 deletions(-) diff --git a/apps/browser/src/_locales/ar/messages.json b/apps/browser/src/_locales/ar/messages.json index a6fb87d2305..1cddbf6f7ce 100644 --- a/apps/browser/src/_locales/ar/messages.json +++ b/apps/browser/src/_locales/ar/messages.json @@ -482,7 +482,7 @@ "message": "الاسم مطلوب." }, "addedFolder": { - "message": "Added folder" + "message": "Folder added" }, "changeMasterPass": { "message": "تغيير كلمة المرور الرئيسية" @@ -494,7 +494,7 @@ "message": "تسجيل الدخول بخطوتين يجعل حسابك أكثر أمنا من خلال مطالبتك بالتحقق من تسجيل الدخول باستخدام جهاز آخر مثل مفتاح الأمان، تطبيق المصادقة، الرسائل القصيرة، المكالمة الهاتفية، أو البريد الإلكتروني. يمكن تمكين تسجيل الدخول بخطوتين على خزنة الويب bitwarden.com. هل تريد زيارة الموقع الآن؟" }, "editedFolder": { - "message": "Edited folder" + "message": "Folder saved" }, "deleteFolderConfirmation": { "message": "هل أنت متأكد من حذف هذا المجلّد؟" @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "مشاركة" @@ -711,7 +711,7 @@ "message": "رمز التحقق (TOTP)" }, "copyVerificationCode": { - "message": "Copy Verification Code" + "message": "Copy verification code" }, "attachments": { "message": "Attachments" @@ -723,28 +723,28 @@ "message": "Are you sure you want to delete this attachment?" }, "deletedAttachment": { - "message": "Deleted attachment" + "message": "Attachment deleted" }, "newAttachment": { - "message": "Add New Attachment" + "message": "Add new attachment" }, "noAttachments": { "message": "No attachments." }, "attachmentSaved": { - "message": "The attachment has been saved." + "message": "Attachment saved" }, "file": { "message": "File" }, "selectFile": { - "message": "Select a file." + "message": "Select a file" }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, "featureUnavailable": { - "message": "Feature Unavailable" + "message": "Feature unavailable" }, "updateKey": { "message": "You cannot use this feature until you update your encryption key." @@ -753,19 +753,19 @@ "message": "Premium membership" }, "premiumManage": { - "message": "Manage Membership" + "message": "Manage membership" }, "premiumManageAlert": { "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumRefresh": { - "message": "Refresh Membership" + "message": "Refresh membership" }, "premiumNotCurrentMember": { - "message": "You are not currently a premium member." + "message": "You are not currently a Premium member." }, "premiumSignUpAndGet": { - "message": "Sign up for a premium membership and get:" + "message": "Sign up for a Premium membership and get:" }, "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." @@ -783,16 +783,16 @@ "message": "Priority customer support." }, "ppremiumSignUpFuture": { - "message": "All future premium features. More coming soon!" + "message": "All future Premium features. More coming soon!" }, "premiumPurchase": { "message": "Purchase Premium" }, "premiumPurchaseAlert": { - "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "You can purchase Premium membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumCurrentMember": { - "message": "You are a premium member!" + "message": "You are a Premium member!" }, "premiumCurrentMemberThanks": { "message": "Thank you for supporting Bitwarden." @@ -819,10 +819,10 @@ "message": "Ask for biometrics on launch" }, "premiumRequired": { - "message": "Premium Required" + "message": "Premium required" }, "premiumRequiredDesc": { - "message": "A premium membership is required to use this feature." + "message": "A Premium membership is required to use this feature." }, "enterVerificationCodeApp": { "message": "Enter the 6 digit verification code from your authenticator app." @@ -870,25 +870,25 @@ "message": "Authenticate WebAuthn" }, "loginUnavailable": { - "message": "Login Unavailable" + "message": "Login unavailable" }, "noTwoStepProviders": { - "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + "message": "This account has two-step login set up, however, none of the configured two-step providers are supported by this web browser." }, "noTwoStepProviders2": { "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." }, "twoStepOptions": { - "message": "Two-step Login Options" + "message": "Two-step login options" }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." }, "recoveryCodeTitle": { - "message": "Recovery Code" + "message": "Recovery code" }, "authenticatorAppTitle": { - "message": "Authenticator App" + "message": "Authenticator app" }, "authenticatorAppDesc": { "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "Email" @@ -921,13 +921,13 @@ "message": "Verification codes will be emailed to you." }, "selfHostedEnvironment": { - "message": "Self-hosted Environment" + "message": "Self-hosted environment" }, "selfHostedEnvironmentFooter": { "message": "Specify the base URL of your on-premises hosted Bitwarden installation." }, "customEnvironment": { - "message": "Custom Environment" + "message": "Custom environment" }, "customEnvironmentFooter": { "message": "For advanced users. You can specify the base URL of each service independently." @@ -939,19 +939,19 @@ "message": "API Server URL" }, "webVaultUrl": { - "message": "Web Vault Server URL" + "message": "Web vault server URL" }, "identityUrl": { - "message": "Identity Server URL" + "message": "Identity server URL" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "Notifications server URL" }, "iconsUrl": { - "message": "Icons Server URL" + "message": "Icons server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -999,16 +999,16 @@ "message": "Private mode support is experimental and some features are limited." }, "customFields": { - "message": "Custom Fields" + "message": "Custom fields" }, "copyValue": { - "message": "Copy Value" + "message": "Copy value" }, "value": { "message": "Value" }, "newCustomField": { - "message": "New Custom Field" + "message": "New custom field" }, "dragToSort": { "message": "Drag to sort" @@ -1049,7 +1049,7 @@ "message": "Indicate how many logins you have for the current web page." }, "cardholderName": { - "message": "Cardholder Name" + "message": "Cardholder name" }, "number": { "message": "Number" @@ -1058,10 +1058,10 @@ "message": "Brand" }, "expirationMonth": { - "message": "Expiration Month" + "message": "Expiration month" }, "expirationYear": { - "message": "Expiration Year" + "message": "Expiration year" }, "expiration": { "message": "Expiration" @@ -1103,7 +1103,7 @@ "message": "December" }, "securityCode": { - "message": "Security Code" + "message": "Security code" }, "ex": { "message": "ex." @@ -1136,19 +1136,19 @@ "message": "الاسم الكامل" }, "identityName": { - "message": "Identity Name" + "message": "Identity name" }, "company": { "message": "Company" }, "ssn": { - "message": "Social Security Number" + "message": "Social Security number" }, "passportNumber": { - "message": "Passport Number" + "message": "Passport number" }, "licenseNumber": { - "message": "License Number" + "message": "License number" }, "email": { "message": "Email" @@ -1175,7 +1175,7 @@ "message": "State / Province" }, "zipPostalCode": { - "message": "Zip / Postal Code" + "message": "Zip / Postal code" }, "country": { "message": "Country" @@ -1190,7 +1190,7 @@ "message": "Logins" }, "typeSecureNote": { - "message": "Secure Note" + "message": "Secure note" }, "typeCard": { "message": "Card" @@ -1199,7 +1199,7 @@ "message": "Identity" }, "passwordHistory": { - "message": "Password History" + "message": "Password history" }, "back": { "message": "Back" @@ -1226,7 +1226,7 @@ "message": "Logins" }, "secureNotes": { - "message": "Secure Notes" + "message": "Secure notes" }, "clear": { "message": "Clear", @@ -1270,7 +1270,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match Detection", + "message": "Match detection", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1278,10 +1278,10 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Toggle Options" + "message": "Toggle options" }, "toggleCurrentUris": { - "message": "Toggle Current URIs", + "message": "Toggle current URIs", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1296,7 +1296,7 @@ "message": "Types" }, "allItems": { - "message": "All Items" + "message": "All items" }, "noPasswordsInList": { "message": "There are no passwords to list." @@ -1311,8 +1311,12 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { - "message": "Password Updated", + "message": "Password updated", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1343,7 +1347,7 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Weak Master Password" + "message": "Weak master password" }, "weakMasterPasswordDesc": { "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" @@ -1371,7 +1375,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" @@ -1380,7 +1384,7 @@ "message": "You must select at least one collection." }, "cloneItem": { - "message": "Clone Item" + "message": "Clone item" }, "clone": { "message": "Clone" @@ -1409,7 +1413,7 @@ "message": "هل أنت متأكد من أنك تريد حذف هذا العنصر بشكل دائم؟" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Item permanently deleted" }, "restoreItem": { "message": "استعادة العنصر" @@ -1418,25 +1422,25 @@ "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored Item" + "message": "Item restored" }, "vaultTimeoutLogOutConfirmation": { "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Timeout action confirmation" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Auto-fill and save" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Item auto-filled and URI saved" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Item auto-filled " }, "setMasterPassword": { - "message": "Set Master Password" + "message": "Set master password" }, "masterPasswordPolicyInEffect": { "message": "One or more organization policies require your master password to meet the following requirements:" @@ -1505,19 +1509,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1625,10 +1629,10 @@ "message": "حذف" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,7 +1669,7 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { "message": "كلمة المرور الجديدة" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1810,7 +1814,7 @@ "message": "يجب عليك تأكيد بريدك الإلكتروني لاستخدام هذه الميزة. يمكنك تأكيد بريدك الإلكتروني في خزنة الويب." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { "message": "تحديث كلمة المرور الرئيسية" @@ -1919,7 +1923,7 @@ "message": "نوع اسم المستخدم" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { @@ -1966,7 +1970,7 @@ "message": "مفتاح الـ API" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "الاشتراك المميز مطلوب" @@ -2005,7 +2009,7 @@ "message": "استضافة ذاتية" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/az/messages.json b/apps/browser/src/_locales/az/messages.json index ad0bd40da11..2f352242566 100644 --- a/apps/browser/src/_locales/az/messages.json +++ b/apps/browser/src/_locales/az/messages.json @@ -1311,6 +1311,10 @@ "message": "Güncəlləndi", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Yaradıldı", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parol güncəlləndi", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/be/messages.json b/apps/browser/src/_locales/be/messages.json index 5fd933b3784..4188db0ba8f 100644 --- a/apps/browser/src/_locales/be/messages.json +++ b/apps/browser/src/_locales/be/messages.json @@ -1311,6 +1311,10 @@ "message": "Абноўлена", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Створана", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Пароль абноўлены", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/bg/messages.json b/apps/browser/src/_locales/bg/messages.json index f9507f48823..2f80a57b456 100644 --- a/apps/browser/src/_locales/bg/messages.json +++ b/apps/browser/src/_locales/bg/messages.json @@ -83,7 +83,7 @@ "message": "Копиране на потребителското име" }, "copyNumber": { - "message": "Копиране на но̀мера" + "message": "Копиране на номера" }, "copySecurityCode": { "message": "Копиране на кода да сигурност" @@ -1311,6 +1311,10 @@ "message": "Обновено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Създадено", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Обновена парола", "description": "ex. Date this password was updated" @@ -1919,14 +1923,14 @@ "message": "Тип потребителско име" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Използвайте възможностите за под-адресиране на е-поща на своя доставчик." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1950,7 +1954,7 @@ "message": "Услуга" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -2005,7 +2009,7 @@ "message": "Собствен хостинг" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/bn/messages.json b/apps/browser/src/_locales/bn/messages.json index 0047cc61411..d811b79b113 100644 --- a/apps/browser/src/_locales/bn/messages.json +++ b/apps/browser/src/_locales/bn/messages.json @@ -59,7 +59,7 @@ "message": "আমার ভল্ট" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "সরঞ্জামসমূহ" @@ -95,7 +95,7 @@ "message": "পাসওয়ার্ড তৈরি করুন (অনুলিপিকৃত)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { "message": "কোনও মিলত লগইন নেই।" @@ -131,10 +131,10 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { - "message": "Code Sent" + "message": "Code sent" }, "verificationCode": { "message": "যাচাইকরণ কোড" @@ -245,7 +245,7 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { "message": "শব্দের সংখ্যা" @@ -339,7 +339,7 @@ "message": "আপনার ওয়েব ব্রাউজার সহজে ক্লিপবোর্ড অনুলিপি সমর্থন করে না। পরিবর্তে এটি নিজেই অনুলিপি করুন।" }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "আপনার ভল্ট লক করা আছে। চালিয়ে যেতে আপনার মূল পাসওয়ার্ডটি যাচাই করান।" @@ -552,7 +552,7 @@ "message": "আপনি কি নিশ্চিত যে আপনি বর্তমান পাসওয়ার্ডটি ওভাররাইট করতে চান?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "ভাগ করুন" @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "ই-মেইল" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -1133,7 +1133,7 @@ "message": "নামের শেষাংশ" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { "message": "পরিচয়ের নাম" @@ -1311,6 +1311,10 @@ "message": "হালনাগাদকৃত", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "পাসওয়ার্ড হালনাগাদকৃত", "description": "ex. Date this password was updated" @@ -1628,7 +1632,7 @@ "message": "পাসওয়ার্ড অপসারিত হয়েছে" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,14 +1669,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1816,10 +1820,10 @@ "message": "প্রধান পাসওয়ার্ড আপডেট করুন" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,7 +1878,7 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { "message": "প্রধান পাসওয়ার্ডটি অপসারণ করুন" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/bs/messages.json b/apps/browser/src/_locales/bs/messages.json index 0a73ff28d96..ffd3a3eee8f 100644 --- a/apps/browser/src/_locales/bs/messages.json +++ b/apps/browser/src/_locales/bs/messages.json @@ -20,7 +20,7 @@ "message": "Prijavite se" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "Enterprise single sign-on" }, "cancel": { "message": "Otkaži" @@ -35,7 +35,7 @@ "message": "E-Mail adresa" }, "masterPass": { - "message": "Master Password" + "message": "Master password" }, "masterPassDesc": { "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." @@ -44,10 +44,10 @@ "message": "A master password hint can help you remember your password if you forget it." }, "reTypeMasterPass": { - "message": "Re-type Master Password" + "message": "Re-type master password" }, "masterPassHint": { - "message": "Master Password Hint (optional)" + "message": "Master password hint (optional)" }, "tab": { "message": "Tab" @@ -56,10 +56,10 @@ "message": "Vault" }, "myVault": { - "message": "My Vault" + "message": "My vault" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "Tools" @@ -68,37 +68,37 @@ "message": "Settings" }, "currentTab": { - "message": "Current Tab" + "message": "Current tab" }, "copyPassword": { - "message": "Copy Password" + "message": "Copy password" }, "copyNote": { - "message": "Copy Note" + "message": "Copy note" }, "copyUri": { "message": "Copy URI" }, "copyUsername": { - "message": "Copy Username" + "message": "Copy username" }, "copyNumber": { - "message": "Copy Number" + "message": "Copy number" }, "copySecurityCode": { - "message": "Copy Security Code" + "message": "Copy security code" }, "autoFill": { "message": "Auto-fill" }, "generatePasswordCopied": { - "message": "Generate Password (copied)" + "message": "Generate password (copied)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { - "message": "No matching logins." + "message": "No matching logins" }, "unlockVaultMenu": { "message": "Unlock your vault" @@ -110,13 +110,13 @@ "message": "There are no logins available to auto-fill for the current browser tab." }, "addLogin": { - "message": "Add a Login" + "message": "Add a login" }, "addItem": { - "message": "Add Item" + "message": "Add item" }, "passwordHint": { - "message": "Password Hint" + "message": "Password hint" }, "enterEmailToGetHint": { "message": "Enter your account email address to receive your master password hint." @@ -131,13 +131,13 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { - "message": "Code Sent" + "message": "Code sent" }, "verificationCode": { - "message": "Verification Code" + "message": "Verification code" }, "confirmIdentity": { "message": "Confirm your identity to continue." @@ -175,16 +175,16 @@ "message": "Move" }, "addFolder": { - "message": "Add Folder" + "message": "Add folder" }, "name": { "message": "Name" }, "editFolder": { - "message": "Edit Folder" + "message": "Edit folder" }, "deleteFolder": { - "message": "Delete Folder" + "message": "Delete folder" }, "folders": { "message": "Folders" @@ -199,13 +199,13 @@ "message": "Sync" }, "syncVaultNow": { - "message": "Sync Vault Now" + "message": "Sync vault now" }, "lastSync": { - "message": "Last Sync:" + "message": "Last sync:" }, "passGen": { - "message": "Password Generator" + "message": "Password generator" }, "generator": { "message": "Generator", @@ -224,10 +224,10 @@ "message": "Select" }, "generatePassword": { - "message": "Generate Password" + "message": "Generate password" }, "regeneratePassword": { - "message": "Regenerate Password" + "message": "Regenerate password" }, "options": { "message": "Options" @@ -245,29 +245,29 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { - "message": "Number of Words" + "message": "Number of words" }, "wordSeparator": { - "message": "Word Separator" + "message": "Word separator" }, "capitalize": { "message": "Capitalize", "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Include Number" + "message": "Include number" }, "minNumbers": { - "message": "Minimum Numbers" + "message": "Minimum numbers" }, "minSpecial": { - "message": "Minimum Special" + "message": "Minimum special" }, "avoidAmbChar": { - "message": "Avoid Ambiguous Characters" + "message": "Avoid ambiguous characters" }, "searchVault": { "message": "Search vault" @@ -282,7 +282,7 @@ "message": "There are no items to list." }, "itemInformation": { - "message": "Item Information" + "message": "Item information" }, "username": { "message": "Username" @@ -303,16 +303,16 @@ "message": "Note" }, "editItem": { - "message": "Edit Item" + "message": "Edit item" }, "folder": { "message": "Folder" }, "deleteItem": { - "message": "Delete Item" + "message": "Delete item" }, "viewItem": { - "message": "View Item" + "message": "View item" }, "launch": { "message": "Launch" @@ -321,7 +321,7 @@ "message": "Website" }, "toggleVisibility": { - "message": "Toggle Visibility" + "message": "Toggle visibility" }, "manage": { "message": "Manage" @@ -339,7 +339,7 @@ "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "Your vault is locked. Verify your identity to continue." @@ -482,28 +482,28 @@ "message": "Name is required." }, "addedFolder": { - "message": "Added folder" + "message": "Folder added" }, "changeMasterPass": { - "message": "Change Master Password" + "message": "Change master password" }, "changeMasterPasswordConfirmation": { "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" }, "twoStepLoginConfirmation": { - "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be set up on the bitwarden.com web vault. Do you want to visit the website now?" }, "editedFolder": { - "message": "Edited folder" + "message": "Folder saved" }, "deleteFolderConfirmation": { "message": "Are you sure you want to delete this folder?" }, "deletedFolder": { - "message": "Deleted folder" + "message": "Folder deleted" }, "gettingStartedTutorial": { - "message": "Getting Started Tutorial" + "message": "Getting started tutorial" }, "gettingStartedTutorialVideo": { "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." @@ -534,25 +534,25 @@ "message": "New URI" }, "addedItem": { - "message": "Added item" + "message": "Item added" }, "editedItem": { - "message": "Edited item" + "message": "Item saved" }, "deleteItemConfirmation": { "message": "Do you really want to send to the trash?" }, "deletedItem": { - "message": "Sent item to trash" + "message": "Item sent to trash" }, "overwritePassword": { - "message": "Overwrite Password" + "message": "Overwrite password" }, "overwritePasswordConfirmation": { "message": "Are you sure you want to overwrite the current password?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -567,7 +567,7 @@ "message": "Search type" }, "noneFolder": { - "message": "No Folder", + "message": "No folder", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -649,14 +649,14 @@ "message": "Export vault" }, "fileFormat": { - "message": "File Format" + "message": "File format" }, "warning": { "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirm vault export" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "Share" @@ -705,13 +705,13 @@ "message": "Learn more" }, "authenticatorKeyTotp": { - "message": "Authenticator Key (TOTP)" + "message": "Authenticator key (TOTP)" }, "verificationCodeTotp": { - "message": "Verification Code (TOTP)" + "message": "Verification code (TOTP)" }, "copyVerificationCode": { - "message": "Copy Verification Code" + "message": "Copy verification code" }, "attachments": { "message": "Attachments" @@ -723,28 +723,28 @@ "message": "Are you sure you want to delete this attachment?" }, "deletedAttachment": { - "message": "Deleted attachment" + "message": "Attachment deleted" }, "newAttachment": { - "message": "Add New Attachment" + "message": "Add new attachment" }, "noAttachments": { "message": "No attachments." }, "attachmentSaved": { - "message": "The attachment has been saved." + "message": "Attachment saved" }, "file": { "message": "File" }, "selectFile": { - "message": "Select a file." + "message": "Select a file" }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, "featureUnavailable": { - "message": "Feature Unavailable" + "message": "Feature unavailable" }, "updateKey": { "message": "You cannot use this feature until you update your encryption key." @@ -753,19 +753,19 @@ "message": "Premium membership" }, "premiumManage": { - "message": "Manage Membership" + "message": "Manage membership" }, "premiumManageAlert": { "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumRefresh": { - "message": "Refresh Membership" + "message": "Refresh membership" }, "premiumNotCurrentMember": { - "message": "You are not currently a premium member." + "message": "You are not currently a Premium member." }, "premiumSignUpAndGet": { - "message": "Sign up for a premium membership and get:" + "message": "Sign up for a Premium membership and get:" }, "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." @@ -783,16 +783,16 @@ "message": "Priority customer support." }, "ppremiumSignUpFuture": { - "message": "All future premium features. More coming soon!" + "message": "All future Premium features. More coming soon!" }, "premiumPurchase": { "message": "Purchase Premium" }, "premiumPurchaseAlert": { - "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "You can purchase Premium membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumCurrentMember": { - "message": "You are a premium member!" + "message": "You are a Premium member!" }, "premiumCurrentMemberThanks": { "message": "Thank you for supporting Bitwarden." @@ -819,10 +819,10 @@ "message": "Ask for biometrics on launch" }, "premiumRequired": { - "message": "Premium Required" + "message": "Premium required" }, "premiumRequiredDesc": { - "message": "A premium membership is required to use this feature." + "message": "A Premium membership is required to use this feature." }, "enterVerificationCodeApp": { "message": "Enter the 6 digit verification code from your authenticator app." @@ -870,25 +870,25 @@ "message": "Authenticate WebAuthn" }, "loginUnavailable": { - "message": "Login Unavailable" + "message": "Login unavailable" }, "noTwoStepProviders": { - "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + "message": "This account has two-step login set up, however, none of the configured two-step providers are supported by this web browser." }, "noTwoStepProviders2": { "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." }, "twoStepOptions": { - "message": "Two-step Login Options" + "message": "Two-step login options" }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." }, "recoveryCodeTitle": { - "message": "Recovery Code" + "message": "Recovery code" }, "authenticatorAppTitle": { - "message": "Authenticator App" + "message": "Authenticator app" }, "authenticatorAppDesc": { "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "Email" @@ -921,13 +921,13 @@ "message": "Verification codes will be emailed to you." }, "selfHostedEnvironment": { - "message": "Self-hosted Environment" + "message": "Self-hosted environment" }, "selfHostedEnvironmentFooter": { "message": "Specify the base URL of your on-premises hosted Bitwarden installation." }, "customEnvironment": { - "message": "Custom Environment" + "message": "Custom environment" }, "customEnvironmentFooter": { "message": "For advanced users. You can specify the base URL of each service independently." @@ -939,19 +939,19 @@ "message": "API Server URL" }, "webVaultUrl": { - "message": "Web Vault Server URL" + "message": "Web vault server URL" }, "identityUrl": { - "message": "Identity Server URL" + "message": "Identity server URL" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "Notifications server URL" }, "iconsUrl": { - "message": "Icons Server URL" + "message": "Icons server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -999,16 +999,16 @@ "message": "Private mode support is experimental and some features are limited." }, "customFields": { - "message": "Custom Fields" + "message": "Custom fields" }, "copyValue": { - "message": "Copy Value" + "message": "Copy value" }, "value": { "message": "Value" }, "newCustomField": { - "message": "New Custom Field" + "message": "New custom field" }, "dragToSort": { "message": "Drag to sort" @@ -1049,7 +1049,7 @@ "message": "Indicate how many logins you have for the current web page." }, "cardholderName": { - "message": "Cardholder Name" + "message": "Cardholder name" }, "number": { "message": "Number" @@ -1058,10 +1058,10 @@ "message": "Brand" }, "expirationMonth": { - "message": "Expiration Month" + "message": "Expiration month" }, "expirationYear": { - "message": "Expiration Year" + "message": "Expiration year" }, "expiration": { "message": "Expiration" @@ -1103,7 +1103,7 @@ "message": "December" }, "securityCode": { - "message": "Security Code" + "message": "Security code" }, "ex": { "message": "ex." @@ -1124,31 +1124,31 @@ "message": "Dr" }, "firstName": { - "message": "First Name" + "message": "First name" }, "middleName": { - "message": "Middle Name" + "message": "Middle name" }, "lastName": { - "message": "Last Name" + "message": "Last name" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { - "message": "Identity Name" + "message": "Identity name" }, "company": { "message": "Company" }, "ssn": { - "message": "Social Security Number" + "message": "Social Security number" }, "passportNumber": { - "message": "Passport Number" + "message": "Passport number" }, "licenseNumber": { - "message": "License Number" + "message": "License number" }, "email": { "message": "Email" @@ -1175,7 +1175,7 @@ "message": "State / Province" }, "zipPostalCode": { - "message": "Zip / Postal Code" + "message": "Zip / Postal code" }, "country": { "message": "Country" @@ -1190,7 +1190,7 @@ "message": "Logins" }, "typeSecureNote": { - "message": "Secure Note" + "message": "Secure note" }, "typeCard": { "message": "Card" @@ -1199,7 +1199,7 @@ "message": "Identity" }, "passwordHistory": { - "message": "Password History" + "message": "Password history" }, "back": { "message": "Back" @@ -1226,7 +1226,7 @@ "message": "Logins" }, "secureNotes": { - "message": "Secure Notes" + "message": "Secure notes" }, "clear": { "message": "Clear", @@ -1270,7 +1270,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match Detection", + "message": "Match detection", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1278,10 +1278,10 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Toggle Options" + "message": "Toggle options" }, "toggleCurrentUris": { - "message": "Toggle Current URIs", + "message": "Toggle current URIs", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1296,7 +1296,7 @@ "message": "Types" }, "allItems": { - "message": "All Items" + "message": "All items" }, "noPasswordsInList": { "message": "There are no passwords to list." @@ -1311,8 +1311,12 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { - "message": "Password Updated", + "message": "Password updated", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1343,7 +1347,7 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Weak Master Password" + "message": "Weak master password" }, "weakMasterPasswordDesc": { "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" @@ -1371,7 +1375,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" @@ -1380,7 +1384,7 @@ "message": "You must select at least one collection." }, "cloneItem": { - "message": "Clone Item" + "message": "Clone item" }, "clone": { "message": "Clone" @@ -1403,40 +1407,40 @@ "message": "Search trash" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Permanently delete item" }, "permanentlyDeleteItemConfirmation": { "message": "Are you sure you want to permanently delete this item?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Item permanently deleted" }, "restoreItem": { - "message": "Restore Item" + "message": "Restore item" }, "restoreItemConfirmation": { "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored Item" + "message": "Item restored" }, "vaultTimeoutLogOutConfirmation": { "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Timeout action confirmation" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Auto-fill and save" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Item auto-filled and URI saved" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Item auto-filled " }, "setMasterPassword": { - "message": "Set Master Password" + "message": "Set master password" }, "masterPasswordPolicyInEffect": { "message": "One or more organization policies require your master password to meet the following requirements:" @@ -1505,19 +1509,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1625,10 +1629,10 @@ "message": "Delete" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,14 +1669,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1808,22 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/ca/messages.json b/apps/browser/src/_locales/ca/messages.json index fe994510046..82c78e830b7 100644 --- a/apps/browser/src/_locales/ca/messages.json +++ b/apps/browser/src/_locales/ca/messages.json @@ -56,7 +56,7 @@ "message": "Caixa forta" }, "myVault": { - "message": "La meua caixa forta" + "message": "Caixa forta" }, "allVaults": { "message": "Totes les caixes fortes" @@ -494,7 +494,7 @@ "message": "L'inici de sessió en dues passes fa que el vostre compte siga més segur, ja que obliga a verificar el vostre inici de sessió amb un altre dispositiu, com ara una clau de seguretat, una aplicació autenticadora, un SMS, una trucada telefònica o un correu electrònic. Es pot habilitar l'inici de sessió en dues passes a la caixa forta web de bitwarden.com. Voleu visitar el lloc web ara?" }, "editedFolder": { - "message": "Carpeta editada" + "message": "Carpeta guardada" }, "deleteFolderConfirmation": { "message": "Esteu segur que voleu suprimir aquesta carpeta?" @@ -1311,6 +1311,10 @@ "message": "Actualitzat", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Creat", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Contrasenya actualitzada", "description": "ex. Date this password was updated" @@ -1874,7 +1878,7 @@ } }, "leaveOrganization": { - "message": "Abandona organització" + "message": "Abandona l'organització" }, "removeMasterPassword": { "message": "Suprimiu la contrasenya mestra" @@ -1926,7 +1930,7 @@ "message": "Utilitzeu les capacitats de subadreçament del vostre proveïdor de correu electrònic." }, "catchallEmail": { - "message": "Captura tot correu electrònic" + "message": "Captura tot el correu electrònic" }, "catchallEmailDesc": { "message": "Utilitzeu la safata d'entrada global configurada del vostre domini." diff --git a/apps/browser/src/_locales/cs/messages.json b/apps/browser/src/_locales/cs/messages.json index c47f6f63b2a..e3427996601 100644 --- a/apps/browser/src/_locales/cs/messages.json +++ b/apps/browser/src/_locales/cs/messages.json @@ -149,7 +149,7 @@ "message": "Změnit hlavní heslo" }, "fingerprintPhrase": { - "message": "Fráze otisku prstu", + "message": "Unikátní přístupová fráze", "description": "A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing." }, "yourAccountsFingerprint": { @@ -184,7 +184,7 @@ "message": "Upravit složku" }, "deleteFolder": { - "message": "Smazat složku" + "message": "Odstranit složku" }, "folders": { "message": "Složky" @@ -482,7 +482,7 @@ "message": "Název je povinný." }, "addedFolder": { - "message": "Složka byla přidána" + "message": "Složka byla úspěšně přidána" }, "changeMasterPass": { "message": "Změnit hlavní heslo" @@ -500,7 +500,7 @@ "message": "Opravdu chcete tuto složku smazat?" }, "deletedFolder": { - "message": "Složka byla smazána" + "message": "Smazaná složka" }, "gettingStartedTutorial": { "message": "Průvodce pro začátečníky" @@ -534,7 +534,7 @@ "message": "Nová URI" }, "addedItem": { - "message": "Položka byla přidána" + "message": "Přidaná položka" }, "editedItem": { "message": "Položka byla upravena" @@ -1148,7 +1148,7 @@ "message": "Číslo cestovního pasu" }, "licenseNumber": { - "message": "Číslo dokladu totožnosti" + "message": "Licenční číslo" }, "email": { "message": "E-mail" @@ -1311,6 +1311,10 @@ "message": "Změněno", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Heslo bylo změněno", "description": "ex. Date this password was updated" @@ -1895,10 +1899,10 @@ "message": "Vypršel časový limit relace. Vraťte se prosím zpět a zkuste se znovu přihlásit." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1919,7 +1923,7 @@ "message": "Typ uživatelského jména" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { @@ -1950,7 +1954,7 @@ "message": "Služba" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Vygenerovat e-mailový alias pomocí externí služby pro přesměrování." @@ -1966,16 +1970,16 @@ "message": "API klíč" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Vyžadováno prémiové předplatné" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Verze serveru" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/da/messages.json b/apps/browser/src/_locales/da/messages.json index fa91c2e4640..6d282a04674 100644 --- a/apps/browser/src/_locales/da/messages.json +++ b/apps/browser/src/_locales/da/messages.json @@ -20,7 +20,7 @@ "message": "Log ind" }, "enterpriseSingleSignOn": { - "message": "Virksomheds Single Sign On" + "message": "Virksomheds Single-Sign-On" }, "cancel": { "message": "Annullér" @@ -44,7 +44,7 @@ "message": "Et tip til hovedadgangskoden kan hjælpe dig med at huske din adgangskode, hvis du glemmer den." }, "reTypeMasterPass": { - "message": "Bekræft hovedadgangskode" + "message": "Indtast hovedadgangskode igen" }, "masterPassHint": { "message": "Hovedadgangskodetip (valgfrit)" @@ -98,7 +98,7 @@ "message": "Kopiér brugerdefineret feltnavn" }, "noMatchingLogins": { - "message": "Ingen matchende logins." + "message": "Ingen matchende logins" }, "unlockVaultMenu": { "message": "Lås din boks op" @@ -245,7 +245,7 @@ "message": "Tal (0-9)" }, "specialCharacters": { - "message": "Specielle tegn (!@#$%^&*)" + "message": "Specialtegn (!@#$%^&*)" }, "numWords": { "message": "Antal ord" @@ -482,7 +482,7 @@ "message": "Navn er påkrævet." }, "addedFolder": { - "message": "Tilføjede mappe" + "message": "Mappe tilføjet" }, "changeMasterPass": { "message": "Skift hovedadgangskode" @@ -491,16 +491,16 @@ "message": "Du kan ændre din hovedadgangskode i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?" }, "twoStepLoginConfirmation": { - "message": "To-trins login gør din konto mere sikker ved at kræve, at du verificerer dit login med en anden enhed, med en sikkerhedsnøgle, autentificerings app, SMS, telefonopkald eller e-mail. To-trins login kan aktiveres i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?" + "message": "To-trins login gør din konto mere sikker ved at kræve, at du verificerer dit login med en anden enhed, såsom en sikkerhedsnøgle, autentificeringsapp, SMS, telefonopkald eller e-mail. To-trins login kan aktiveres i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?" }, "editedFolder": { - "message": "Redigerede mappe" + "message": "Mappe gemt" }, "deleteFolderConfirmation": { "message": "Er du sikker på du vil slette denne mappe?" }, "deletedFolder": { - "message": "Slettede mappe" + "message": "Mappe slettet" }, "gettingStartedTutorial": { "message": "Sådan kommer du i gang" @@ -534,10 +534,10 @@ "message": "Ny URI" }, "addedItem": { - "message": "Tilføjede element" + "message": "Element tilføjet" }, "editedItem": { - "message": "Redigerede element" + "message": "Element gemt" }, "deleteItemConfirmation": { "message": "Er du sikker på, at du sende til papirkurven?" @@ -723,7 +723,7 @@ "message": "Er du sikker på du vil slette denne vedhæftning?" }, "deletedAttachment": { - "message": "Slettet vedhæftning" + "message": "Vedhæftning slettet" }, "newAttachment": { "message": "Tilføj ny vedhæftning" @@ -732,13 +732,13 @@ "message": "Ingen vedhæftninger." }, "attachmentSaved": { - "message": "Vedhæftningen er blevet gemt." + "message": "Vedhæftning gemt" }, "file": { "message": "Fil" }, "selectFile": { - "message": "Vælg en fil." + "message": "Vælg en fil" }, "maxFileSize": { "message": "Maksimum filstørrelse er 500 MB." @@ -783,7 +783,7 @@ "message": "Prioriteret kundeservice." }, "ppremiumSignUpFuture": { - "message": "Alle fremtidige premium-funktioner. Mere kommer snart!" + "message": "Alle fremtidige premium-funktioner. Flere kommer snart!" }, "premiumPurchase": { "message": "Køb premium" @@ -879,7 +879,7 @@ "message": "Du skal bruge en understøttet webbrowser (såsom Chrome) og/eller tilføje ekstra udbydere, der understøttes bedre på tværs af webbrowsere (f.eks. en autentificering app)." }, "twoStepOptions": { - "message": "To-trins login muligheder" + "message": "To-trins-login indstillinger" }, "recoveryCodeDesc": { "message": "Mistet adgang til alle dine to-faktor-udbydere? Brug din genoprettelseskode til at deaktivere alle to-faktor udbydere på din konto." @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Brug en hvilken som helst WebAuthn-aktiveret sikkerhedsnøgle til at få adgang til din konto." + "message": "Brug en hvilken som helst WebAuthn-kompatibel sikkerhedsnøgle til at få adgang til din konto." }, "emailTitle": { "message": "E-mail" @@ -1049,7 +1049,7 @@ "message": "Vis hvor mange logins du har til den aktuelle webside." }, "cardholderName": { - "message": "Kortindehaverens navn" + "message": "Kortholders navn" }, "number": { "message": "Nummer" @@ -1148,7 +1148,7 @@ "message": "Pasnummer" }, "licenseNumber": { - "message": "Kørekortnummer" + "message": "Licensnummer" }, "email": { "message": "E-mail" @@ -1311,6 +1311,10 @@ "message": "Opdateret", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Oprettet", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Adgangskode opdateret", "description": "ex. Date this password was updated" @@ -1505,10 +1509,10 @@ "message": "Bekræft venligst at skrivebordsprogrammet viser dette fingeraftryk: " }, "desktopIntegrationDisabledTitle": { - "message": "Browserintegration er ikke aktiveret" + "message": "Browserintegration er ikke konfigureret" }, "desktopIntegrationDisabledDesc": { - "message": "Browserintegration er ikke aktiveret i Bitwarden skrivebordsapplikationen. Aktivér det i indstillingerne i skrivebordsprogrammet." + "message": "Browserintegration er ikke konfigureret i Bitwarden skrivebordsapplikationen. Aktivér det i indstillingerne i skrivebordsapplikationen." }, "startDesktopTitle": { "message": "Start Bitwarden skrivebordsapplikationen" @@ -1538,7 +1542,7 @@ "message": "Biometri ikke aktiveret" }, "biometricsNotEnabledDesc": { - "message": "Browserbiometri kræver, at desktop-biometri er aktiveret i indstillingerne først." + "message": "Browserbiometri kræver, at skrivebords-biometri er aktiveret i indstillingerne først." }, "biometricsNotSupportedTitle": { "message": "Biometri ikke understøttet" @@ -1559,7 +1563,7 @@ "message": "Denne handling kan ikke udføres i sidebjælken, prøv handlingen igen i popup tilstand eller i et nyt vindue." }, "personalOwnershipSubmitError": { - "message": "På grund af en virksomhedspolitik er du begrænset til at gemme elementer i din personlige boks. Skift ejerskabsindstillingen til en organisation, og vælg blandt de tilgængelige samlinger." + "message": "På grund af en virksomhedspolitik er du begrænset fra at gemme elementer i din personlige boks. Skift ejerskabsindstillingen til en organisation, og vælg blandt de tilgængelige samlinger." }, "personalOwnershipPolicyInEffect": { "message": "En organisationspolitik påvirker dine ejerskabsmuligheder." @@ -1727,14 +1731,14 @@ "message": "Aktuelt antal tilgange" }, "createSend": { - "message": "Opret ny Send", + "message": "Ny Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { "message": "Ny adgangskode" }, "sendDisabled": { - "message": "Send deaktiveret", + "message": "Send fjernet", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1746,7 +1750,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send opdateret", + "message": "Send gemt", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1816,10 +1820,10 @@ "message": "Opdatér hovedadgangskode" }, "updateMasterPasswordWarning": { - "message": "Dit hovedadgangskode blev for nylig ændret af en administrator i din organisation. For at få adgang til boksen skal du opdatere din hovedadgangskode nu. Hvis du fortsætter, logges du ud af din nuværende session, hvilket kræver, at du logger ind igen. Aktive sessioner på andre enheder kan fortsætte med at være aktive i op til én time." + "message": "Dit hovedadgangskode blev for nylig ændret af en administrator i din organisation. For at få adgang til boksen skal du opdatere den nu. Hvis du fortsætter, logges du ud af din nuværende session, hvilket kræver, at du logger ind igen. Aktive sessioner på andre enheder kan fortsætte med at være aktive i op til én time." }, "resetPasswordPolicyAutoEnroll": { - "message": "Auto-indrullering" + "message": "Automatisk tilmelding" }, "resetPasswordAutoEnrollInviteWarning": { "message": "Denne organisation har en virksomhedspolitik, der automatisk tilmelder dig til nulstilling af adgangskode. Tilmelding giver organisationsadministratorer mulighed for at skifte din hovedadgangskode." @@ -1853,7 +1857,7 @@ "message": "Din boks-timeout overskrider de begrænsninger, der er fastsat af din organisation." }, "vaultExportDisabled": { - "message": "Bokseksport deaktiveret" + "message": "Boks-eksport ikke tilgængelig" }, "personalVaultExportPolicyInEffect": { "message": "En eller flere organisationspolitikker forhindrer dig i at eksportere din personlige boks." @@ -1880,7 +1884,7 @@ "message": "Fjern hovedadgangskode" }, "removedMasterPassword": { - "message": "Hovedadgangskode fjernet." + "message": "Hovedadgangskode fjernet" }, "leaveOrganizationConfirmation": { "message": "Er du sikker på, at du vil forlade denne organisation?" @@ -1898,7 +1902,7 @@ "message": "Eksporterer personlig boks" }, "exportingPersonalVaultDescription": { - "message": "Kun de personlige bokselementer tilknyttet $EMAIL$ eksporteres. Organisationsbokseelementer medtages ikke.", + "message": "Kun de personlige bokselementer tilknyttet $EMAIL$ vil blive eksporteret. Organisationsbokseelementer vil ikke være inkluderet.", "placeholders": { "email": { "content": "$1", @@ -1919,7 +1923,7 @@ "message": "Brugernavnstype" }, "plusAddressedEmail": { - "message": "Plus adresseret e-mail", + "message": "Plus-adresseret e-mail", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { @@ -1950,7 +1954,7 @@ "message": "Tjeneste" }, "forwardedEmail": { - "message": "Videresendt E-mail Alias" + "message": "Videresendt e-mail alias" }, "forwardedEmailDesc": { "message": "Generér et e-mail alias med en ekstern viderestillingstjeneste." @@ -1972,10 +1976,10 @@ "message": "Premium-abonnement kræves" }, "organizationIsDisabled": { - "message": "Organisationen er deaktiveret." + "message": "Organisation suspenderet." }, "disabledOrganizationFilterError": { - "message": "Elementer i deaktiverede organisationer kan ikke tilgås. Kontakt din organisationsejer for at få hjælp." + "message": "Elementer i suspenderede organisationer kan ikke tilgås. Kontakt din organisationsejer for at få hjælp." }, "cardBrandMir": { "message": "Mir" diff --git a/apps/browser/src/_locales/de/messages.json b/apps/browser/src/_locales/de/messages.json index 0c00c4d6658..ba5b31a54df 100644 --- a/apps/browser/src/_locales/de/messages.json +++ b/apps/browser/src/_locales/de/messages.json @@ -32,7 +32,7 @@ "message": "Absenden" }, "emailAddress": { - "message": "E-Mail Adresse" + "message": "E-Mail-Adresse" }, "masterPass": { "message": "Master-Passwort" @@ -44,7 +44,7 @@ "message": "Ein Master-Passwort-Hinweis kann dir helfen, dich an das Passwort zu erinnern, sofern du es vergessen hast." }, "reTypeMasterPass": { - "message": "Master-Passwort wiederholen" + "message": "Master-Passwort erneut eingeben" }, "masterPassHint": { "message": "Master-Passwort-Hinweis (optional)" @@ -80,7 +80,7 @@ "message": "URI kopieren" }, "copyUsername": { - "message": "Nutzernamen Kopieren" + "message": "Nutzernamen kopieren" }, "copyNumber": { "message": "Nummer kopieren" @@ -131,7 +131,7 @@ "message": "Einen Bestätigungscode an deine E-Mail senden" }, "sendCode": { - "message": "Code senden" + "message": "Send Code" }, "codeSent": { "message": "Code gesendet" @@ -199,13 +199,13 @@ "message": "Synchronisierung" }, "syncVaultNow": { - "message": "Tresor jetzt synchronisieren" + "message": "Datenspeicher jetzt synchronisieren" }, "lastSync": { - "message": "Letzte Synchronisation:" + "message": "Zuletzt synchronisiert:" }, "passGen": { - "message": "Passwort-Generator" + "message": "Passwortgenerator" }, "generator": { "message": "Generator", @@ -227,7 +227,7 @@ "message": "Passwort generieren" }, "regeneratePassword": { - "message": "Password neu generieren" + "message": "Passwort neu generieren" }, "options": { "message": "Optionen" @@ -258,10 +258,10 @@ "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Zahl hinzufügen" + "message": "Ziffer hinzufügen" }, "minNumbers": { - "message": "Mindestanzahl Zahlen" + "message": "Mindestanzahl Ziffern" }, "minSpecial": { "message": "Mindestanzahl Sonderzeichen" @@ -282,7 +282,7 @@ "message": "Keine Einträge zum Anzeigen vorhanden." }, "itemInformation": { - "message": "Eintrags-Information" + "message": "Anmeldedaten Information" }, "username": { "message": "Nutzername" @@ -491,7 +491,7 @@ "message": "Du kannst dein Master-Passwort im Bitwarden.com Web-Tresor ändern. Möchtest du die Seite jetzt öffnen?" }, "twoStepLoginConfirmation": { - "message": "Mit der Zwei-Faktor Authentifizierung wird dein Account zusätzlich abgesichert, da jede Anmeldung durch einen Sicherheitscode, eine Authentifizierungs-App, SMS, einen Anruf oder eine E-Mail verifiziert werden muss. Die Zwei-Faktor Authentifizierung kann im Bitwarden.com Web-Tresor aktiviert werden. Möchtest du die Seite jetzt öffnen?" + "message": "Mit der Zwei-Faktor-Authentifizierung wird Ihr Account zusätzlich abgesichert, da jede Anmeldung durch einen Sicherheitscode, eine Authentifizierungs-App, eine SMS, einen Anruf oder eine E-Mail verifiziert werden muss. Die Zwei-Faktor-Authentifizierung kann im bitwarden.com Web-Tresor aktiviert werden. Möchten Sie die Seite jetzt öffnen?" }, "editedFolder": { "message": "Ordner bearbeitet" @@ -705,13 +705,13 @@ "message": "Erfahre mehr" }, "authenticatorKeyTotp": { - "message": "Authenticator Schlüssel (TOTP)" + "message": "Authentifizierungsschlüssel (TOTP)" }, "verificationCodeTotp": { "message": "Verifizierungscode (TOTP)" }, "copyVerificationCode": { - "message": "Kopiere Verifizierungscode" + "message": "Verifizierungscode kopieren" }, "attachments": { "message": "Anhänge" @@ -762,7 +762,7 @@ "message": "Mitgliedschaft erneuern" }, "premiumNotCurrentMember": { - "message": "Du hast derzeit keine Premium-Mitgliedschaft." + "message": "Sie haben derzeit keine Premium-Mitgliedschaft." }, "premiumSignUpAndGet": { "message": "Werde Premium-Mitglied und erhalte dafür:" @@ -792,7 +792,7 @@ "message": "Du kannst deine Premium-Mitgliedschaft im Bitwarden.com Web-Tresor kaufen. Möchtest du die Webseite jetzt besuchen?" }, "premiumCurrentMember": { - "message": "Du bist jetzt Premium-Mitglied!" + "message": "Sie sind jetzt Premium-Mitglied!" }, "premiumCurrentMemberThanks": { "message": "Vielen Dank, dass du Bitwarden unterstützt." @@ -819,7 +819,7 @@ "message": "Beim Start nach biometrischen Daten fragen" }, "premiumRequired": { - "message": "Premium-Mitgliedschaft wird benötigt" + "message": "Erweiterte Mitgliedschaft wird benötigt" }, "premiumRequiredDesc": { "message": "Eine Premium-Mitgliedschaft ist für diese Funktion notwendig." @@ -882,7 +882,7 @@ "message": "Optionen für Zwei-Faktor Authentifizierung" }, "recoveryCodeDesc": { - "message": "Zugang zu allen Zwei-Faktor Anbietern verloren? Benutze deinen Wiederherstellungscode, um alle Zwei-Faktor Anbieter in deinem Konto zu deaktivieren." + "message": "Zugang zu allen Zwei-Faktor-Anbietern verloren? Benutzen Sie Ihren Wiederherstellungscode, um alle Zwei-Faktor-Anbieter in Ihrem Konto zu deaktivieren." }, "recoveryCodeTitle": { "message": "Wiederherstellungscode" @@ -1311,6 +1311,10 @@ "message": "Aktualisiert", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Erstellt", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Passwort aktualisiert", "description": "ex. Date this password was updated" @@ -1430,7 +1434,7 @@ "message": "Automatisch ausfüllen und speichern" }, "autoFillSuccessAndSavedUri": { - "message": "Automatisch ausgefüllter Eintrag und gespeicherte URI" + "message": "Auto-Ausgefüllter Eintrag und gespeicherte URI" }, "autoFillSuccess": { "message": "Automatisch ausgefüllter Eintrag" @@ -1508,7 +1512,7 @@ "message": "Browser-Einbindung ist nicht aktiviert" }, "desktopIntegrationDisabledDesc": { - "message": "Die Browser-Einbindung ist in der Bitwarden Desktop-Anwendung nicht aktiviert. Bitte aktiviere diese in den Einstellungen innerhalb der Desktop-Anwendung." + "message": "Die Browser-Einbindung ist in der Bitwarden Desktop-Anwendung nicht aktiviert. Bitte aktivieren Sie diese in den Einstellungen innerhalb der Desktop-Anwendung." }, "startDesktopTitle": { "message": "Bitwarden Desktop-Anwendung starten" @@ -1898,7 +1902,7 @@ "message": "Persönlichen Tresor exportieren" }, "exportingPersonalVaultDescription": { - "message": "Nur die persönlichen Tresoreinträge die mit $EMAIL$ verbunden sind, werden exportiert. Tresoreinträge der Organisation werden nicht berücksichtigt.", + "message": "Nur die persönlichen Tresoreinträge, die mit $EMAIL$ verbunden sind, werden exportiert. Tresoreinträge der Organisation werden nicht berücksichtigt.", "placeholders": { "email": { "content": "$1", diff --git a/apps/browser/src/_locales/el/messages.json b/apps/browser/src/_locales/el/messages.json index 98b40e03ac7..43a12676a09 100644 --- a/apps/browser/src/_locales/el/messages.json +++ b/apps/browser/src/_locales/el/messages.json @@ -32,7 +32,7 @@ "message": "Υποβολή" }, "emailAddress": { - "message": "Διεύθυνση Email" + "message": "Διεύθυνση email" }, "masterPass": { "message": "Κύριος κωδικός" @@ -1311,6 +1311,10 @@ "message": "Ενημερώθηκε", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Ο Κωδικός Ενημερώθηκε", "description": "ex. Date this password was updated" @@ -2002,10 +2006,10 @@ "message": "Έκδοση διακομιστή" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/en_GB/messages.json b/apps/browser/src/_locales/en_GB/messages.json index e94a67345ff..379f6e0da2d 100644 --- a/apps/browser/src/_locales/en_GB/messages.json +++ b/apps/browser/src/_locales/en_GB/messages.json @@ -92,7 +92,7 @@ "message": "Auto-fill" }, "generatePasswordCopied": { - "message": "Generate password (copied)" + "message": "Generate Password (and Copy)" }, "copyElementIdentifier": { "message": "Copy Custom Field Name" @@ -543,7 +543,7 @@ "message": "Do you really want to send to the bin?" }, "deletedItem": { - "message": "Sent item to bin" + "message": "Deleted item" }, "overwritePassword": { "message": "Overwrite password" @@ -1311,6 +1311,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password updated", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/en_IN/messages.json b/apps/browser/src/_locales/en_IN/messages.json index a9bc526f019..10f2ccf37c5 100644 --- a/apps/browser/src/_locales/en_IN/messages.json +++ b/apps/browser/src/_locales/en_IN/messages.json @@ -1311,6 +1311,10 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password updated", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/es/messages.json b/apps/browser/src/_locales/es/messages.json index b85c00492f2..ff5ce837e13 100644 --- a/apps/browser/src/_locales/es/messages.json +++ b/apps/browser/src/_locales/es/messages.json @@ -822,7 +822,7 @@ "message": "Premium requerido" }, "premiumRequiredDesc": { - "message": "Una membresía Premium es requerida para utilizar esta característica." + "message": "Una membrasía Premium es requerida para utilizar esta característica." }, "enterVerificationCodeApp": { "message": "Introduce el código de verificación de 6 dígitos de tu aplicación autenticadora." @@ -1311,6 +1311,10 @@ "message": "Actualizado", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Creado", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Contraseña actualizada", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/et/messages.json b/apps/browser/src/_locales/et/messages.json index a398a08342a..3fdff052c75 100644 --- a/apps/browser/src/_locales/et/messages.json +++ b/apps/browser/src/_locales/et/messages.json @@ -1311,6 +1311,10 @@ "message": "Uuendatud", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Loodud", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parool on uuendatud", "description": "ex. Date this password was updated" @@ -1999,13 +2003,13 @@ "message": "et taastada eelseadistatud seaded" }, "serverVersion": { - "message": "Server Version" + "message": "Serveri versioon" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Enda majutatud" }, "thirdParty": { - "message": "Third-Party" + "message": "Kolmanda osapoole" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", @@ -2017,7 +2021,7 @@ } }, "lastSeenOn": { - "message": "last seen on: $DATE$", + "message": "viimati nähtud: $DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/src/_locales/eu/messages.json b/apps/browser/src/_locales/eu/messages.json index 9af529421b1..283cc957ecd 100644 --- a/apps/browser/src/_locales/eu/messages.json +++ b/apps/browser/src/_locales/eu/messages.json @@ -1311,6 +1311,10 @@ "message": "Eguneratua", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Pasahitza eguneratu da", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/fa/messages.json b/apps/browser/src/_locales/fa/messages.json index 29cd75ad3f3..67018e81e5d 100644 --- a/apps/browser/src/_locales/fa/messages.json +++ b/apps/browser/src/_locales/fa/messages.json @@ -1311,6 +1311,10 @@ "message": "بروزرسانی شد", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "کلمه عبور بروزرسانی شد", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/fi/messages.json b/apps/browser/src/_locales/fi/messages.json index 49675664113..fa51e48652d 100644 --- a/apps/browser/src/_locales/fi/messages.json +++ b/apps/browser/src/_locales/fi/messages.json @@ -140,7 +140,7 @@ "message": "Todennuskoodi" }, "confirmIdentity": { - "message": "Vahvista henkilöllisyytesi jatkaaksesi." + "message": "Jatka vahvistamalla henkilöllisyytesi." }, "account": { "message": "Käyttäjätili" @@ -342,7 +342,7 @@ "message": "Vahvista henkilöllisyys" }, "yourVaultIsLocked": { - "message": "Holvisi on lukittu. Vahvista henkilöllisyytesi jatkaaksesi." + "message": "Holvisi on lukittu. Jatka vahvistamalla henkilöllisyytesi." }, "unlock": { "message": "Avaa" @@ -494,13 +494,13 @@ "message": "Kaksivaiheinen kirjautuminen tekee tilistäsi turvallisemman edellyttämällä salasanan lisäksi kirjautumisen lisätodennusta todennuslaitteen, ‑sovelluksen, tekstiviestin, puhelun tai sähköpostin avulla. Voit ottaa kaksivaiheisen kirjautumisen käyttöön bitwarden.com‑verkkoholvissa. Haluatko käydä sivustolla nyt?" }, "editedFolder": { - "message": "Kansiota muokattu" + "message": "Kansio tallennettiin" }, "deleteFolderConfirmation": { "message": "Haluatko varmasti poistaa kansion?" }, "deletedFolder": { - "message": "Kansio poistettu" + "message": "Kansio poistettiin" }, "gettingStartedTutorial": { "message": "Aloitusopas" @@ -534,10 +534,10 @@ "message": "Uusi URI" }, "addedItem": { - "message": "Kohde lisätty" + "message": "Kohde lisättiin" }, "editedItem": { - "message": "Kohdetta muokattu" + "message": "Kohde tallennettiin" }, "deleteItemConfirmation": { "message": "Haluatko varmasti siirtää roskakoriin?" @@ -677,7 +677,7 @@ "message": "Lisätietoja organisaatioista" }, "learnOrgConfirmation": { - "message": "Bitwardenin avulla voit jakaa holvisi sisältöä muiden kanssa organisaatiotiliä käyttäen. Haluatko lukea bitwarden.com-sivustolta lisää?" + "message": "Bitwarden mahdollistaa holvin sisällön jaon organisaatiotilin avulla. Haluatko lukea lisää bitwarden.com-sivustolta?" }, "moveToOrganization": { "message": "Siirrä organisaatiolle" @@ -723,7 +723,7 @@ "message": "Haluatko varmasti poistaa liitteen?" }, "deletedAttachment": { - "message": "Poistettu tiedostoliite" + "message": "Tiedostoliite poistettiin" }, "newAttachment": { "message": "Lisää uusi tiedostoliite" @@ -732,7 +732,7 @@ "message": "Ei liitteitä." }, "attachmentSaved": { - "message": "Tiedostoliite tallennettiin." + "message": "Tiedostoliite tallennettiin" }, "file": { "message": "Tiedosto" @@ -744,7 +744,7 @@ "message": "Tiedoston enimmäiskoko on 500 Mt." }, "featureUnavailable": { - "message": "Toiminto ei ole käytettävissä" + "message": "Ominaisuus ei ole käytettävissä" }, "updateKey": { "message": "Et voi käyttää tätä toimintoa ennen kuin päivität salausavaimesi." @@ -789,7 +789,7 @@ "message": "Osta Premium" }, "premiumPurchaseAlert": { - "message": "Voit ostaa Premium-jäsenyyden bitwarden.com-verkkoholvissa. Haluatko käydä sivustolla nyt?" + "message": "Voit ostaa Premium-jäsenyyden bitwarden.com-verkkoholvista. Haluatko avata sivuston nyt?" }, "premiumCurrentMember": { "message": "Olet Premium-jäsen!" @@ -807,7 +807,7 @@ } }, "refreshComplete": { - "message": "Päivitys on valmis" + "message": "Päivitys valmistui" }, "enableAutoTotpCopy": { "message": "Kopioi TOTP-koodi automaattisesti" @@ -822,7 +822,7 @@ "message": "Premium vaaditaan" }, "premiumRequiredDesc": { - "message": "Käyttääksesi tätä toimintoa tarvitset Premium-jäsenyyden." + "message": "Tämä ominaisuus edellyttää Premium-jäsenyyttä." }, "enterVerificationCodeApp": { "message": "Syötä 6-numeroinen todennuskoodi todennussovelluksestasi." @@ -873,7 +873,7 @@ "message": "Kirjautuminen ei ole käytettävissä" }, "noTwoStepProviders": { - "message": "Tilillä on käytössä kaksivaiheinen kirjautuminen, mutta tämä selain ei tue käytettävissä olevia todentajia." + "message": "Tilille on määritetty kaksivaiheinen kirjautuminen, mutta selain ei tue käytettävissä olevia todentajia." }, "noTwoStepProviders2": { "message": "Käytä tuettua selainta (kuten Chrome) ja lisää/tai ota käyttöön laajemmin tuettu todentaja (kuten todennussovellus)." @@ -882,7 +882,7 @@ "message": "Kaksivaiheisen kirjautumisen asetukset" }, "recoveryCodeDesc": { - "message": "Etkö pysty käyttämään kaksivaiheisen kirjautumisen todentajiasi? Poista kaikki tilisi todentajat käytöstä palautuskoodillasi." + "message": "Etkö pysty käyttämään kaksivaiheisen kirjautumisen todentajiasi? Poista kaikki tilillesi määritetyt todentajat käytöstä palautuskoodillasi." }, "recoveryCodeTitle": { "message": "Palautuskoodi" @@ -951,7 +951,7 @@ "message": "Kuvakepalvelimen URL" }, "environmentSaved": { - "message": "Palvelinten URL-osoitteet tallennettiin." + "message": "Palvelinympäristön URL-osoitteet tallennettiin" }, "enableAutoFillOnPageLoad": { "message": "Automaattinen täyttö sivun avautuessa" @@ -969,7 +969,7 @@ "message": "Voit ottaa automaattisen täytön käyttöön tai poistaa sen käytöstä kirjautumistietokohtaisesti muokkaamalla kohdetta." }, "itemAutoFillOnPageLoad": { - "message": "Automaattinen täyttö sivun avautuessa (jos kytketty asetuksista käyttöön)" + "message": "Automaattinen täyttö sivun avautuessa (jos määritetty asetuksista)" }, "autoFillOnPageLoadUseDefault": { "message": "Käytä oletusasetusta" @@ -1281,7 +1281,7 @@ "message": "Näytä tai piilota asetukset" }, "toggleCurrentUris": { - "message": "Näytä tai piilota nykyiset URI:t", + "message": "Näytä/piilota nykyiset URI:t", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1311,6 +1311,10 @@ "message": "Päivitetty", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Luotu", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Salasana päivitetty", "description": "ex. Date this password was updated" @@ -1356,7 +1360,7 @@ "message": "Avaa PIN-koodilla" }, "setYourPinCode": { - "message": "Aseta PIN-koodi Bitwardenin avaukselle. PIN-asetukset tyhjentyvät, jos kirjaudut kokonaan ulos laajennuksesta." + "message": "Aseta PIN-koodi Bitwardenin avaukselle. PIN-asetukset tyhjentyvät, jos kirjaudut laajennuksesta kokonaan ulos." }, "pinRequired": { "message": "PIN-koodi vaaditaan." @@ -1371,7 +1375,7 @@ "message": "Odottaa vahvistusta työpöydältä" }, "awaitDesktopDesc": { - "message": "Vahvista biometrian käyttö Bitwardenin työpöytäsovelluksessa käyttääksesi sitä selaimessa." + "message": "Vahvista biometrian käyttö Bitwardenin työpöytäsovelluksesta käyttääksesi sitä selaimessa." }, "lockWithMasterPassOnRestart": { "message": "Lukitse pääsalasanalla kun selain käynnistetään uudelleen" @@ -1409,7 +1413,7 @@ "message": "Haluatko varmasti poistaa kohteen pysyvästi?" }, "permanentlyDeletedItem": { - "message": "Kohde poistettu pysyvästi" + "message": "Kohde poistettiin pysyvästi" }, "restoreItem": { "message": "Palauta kohde" @@ -1418,7 +1422,7 @@ "message": "Haluatko varmasti palauttaa kohteen?" }, "restoredItem": { - "message": "Kohde palautettu" + "message": "Kohde palautettiin" }, "vaultTimeoutLogOutConfirmation": { "message": "Uloskirjautuminen estää pääsyn holviisi ja vaatii ajan umpeuduttua todennuksen Internet-yhteyden välityksellä. Haluatko varmasti käyttää asetusta?" @@ -1508,7 +1512,7 @@ "message": "Selainintegraatio ei ole käytössä" }, "desktopIntegrationDisabledDesc": { - "message": "Selainintegraatio ei ole käytössä Bitwardenin työpöytäsovelluksessa. Ota se käyttöön työpöytäsovelluksen asetuksista." + "message": "Selainintegraatiota ei ole määritetty Bitwardenin työpöytäsovelluksesta. Määritä se työpöytäsovelluksen asetuksista." }, "startDesktopTitle": { "message": "Käynnistä Bitwardenin työpöytäsovellus" @@ -1517,7 +1521,7 @@ "message": "Bitwardenin työpöytäsovellus on käynnistettävä ennen kuin biometristä avausta voidaan käyttää." }, "errorEnableBiometricTitle": { - "message": "Biometriaa ei voitu ottaa käyttöön" + "message": "Biometriaa ei voitu määrittää" }, "errorEnableBiometricDesc": { "message": "Työpöytäsovellus perui toiminnon" @@ -1535,10 +1539,10 @@ "message": "Tili ei täsmää" }, "biometricsNotEnabledTitle": { - "message": "Biometria ei ole käytössä" + "message": "Biometriaa ei ole määritetty" }, "biometricsNotEnabledDesc": { - "message": "Käyttääksesi biometriaa selaimessa, on biometria otettava käyttöön työpöytäsovelluksen asetuksista." + "message": "Biometria selaimissa edellyttää sen määritystä työpöytäsovelluksen asetuksista." }, "biometricsNotSupportedTitle": { "message": "Biometriaa ei tueta" @@ -1550,7 +1554,7 @@ "message": "Oikeutta ei myönnetty" }, "nativeMessaginPermissionErrorDesc": { - "message": "Ilman viestintäoikeutta Bitwardenin työpöytäsovelluksen kanssa, ei biometriaa tueta selainlaajennuksessa. Yritä uudelleen." + "message": "Biometriaa ei tueta selainlaajennuksessa ilman viestintäoikeutta Bitwardenin työpöytäsovelluksen kanssa. Yritä uudelleen." }, "nativeMessaginPermissionSidebarTitle": { "message": "Käyttöoikeuspyynnön virhe" @@ -1559,7 +1563,7 @@ "message": "Toimintoa ei voi suorittaa sivupalkissa, yritä toimintoa uudelleen ponnahdusvalikossa tai ponnahdusikkunassa." }, "personalOwnershipSubmitError": { - "message": "Yrityksen asettaman käytännön johdosta kohteiden tallennus omaan holviisi ei ole mahdollista. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista." + "message": "Yrityksen asettaman käytännön johdosta et voi tallentaa kohteita henkilökohtaiseen holviisi. Muuta omistusasetus organisaatiolle ja valitse käytettävissä olevista kokoelmista." }, "personalOwnershipPolicyInEffect": { "message": "Organisaatiokäytäntö vaikuttaa omistajuusvalintoihisi." @@ -1625,10 +1629,10 @@ "message": "Poista" }, "removedPassword": { - "message": "Salasana poistettu" + "message": "Salasana poistettiin" }, "deletedSend": { - "message": "Poistettu Send", + "message": "Send poistettiin", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Nykyinen käyttökertojen määrä" + "message": "Käyttökertojen nykyinen määrä" }, "createSend": { - "message": "Luo uusi Send", + "message": "Uusi Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { "message": "Uusi salasana" }, "sendDisabled": { - "message": "Send on poistettu käytöstä", + "message": "Send poistettiin", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Send luotu", + "message": "Send luotiin", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Sendiä muokattu", + "message": "Send tallennettiin", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1801,19 +1805,19 @@ "message": "Pääsalasanan vahvistus" }, "passwordConfirmationDesc": { - "message": "Toiminto on suojattu. Jatkaaksesi, syötä pääsalasanasi uudelleen vahvistaaksesi henkilöllisyytesi." + "message": "Toiminto on suojattu. Jatka vahvistamalla henkilöllisyytesi syöttämällä pääsalasanasi uudelleen." }, "emailVerificationRequired": { - "message": "Sähköpostiosoitteen vahvistus vaaditaan" + "message": "Sähköpostiosoite on vahvistettava" }, "emailVerificationRequiredDesc": { "message": "Sinun on vahvistettava sähköpostiosoitteesi käyttääksesi ominaisuutta. Voit vahvistaa osoitteesi verkkoholvissa." }, "updatedMasterPassword": { - "message": "Pääsalasana on päivitetty" + "message": "Pääsalasana vaihdettiin" }, "updateMasterPassword": { - "message": "Päivitä pääsalasana" + "message": "Vaihda pääsalasana" }, "updateMasterPasswordWarning": { "message": "Organisaatiosi ylläpito on hiljattain vaihtanut pääsalasanasi. Käyttääksesi holvia, on sinun päivitettävä se nyt. Tämä uloskirjaa kaikki nykyiset istunnot pakottaen uudelleenkirjautumisen. Muiden laitteiden aktiiviset istunnot saattavat toimia vielä tunnin ajan." @@ -1853,10 +1857,10 @@ "message": "Holvisi aikakatkaisu ylittää organisaatiosi asettamat rajoitukset." }, "vaultExportDisabled": { - "message": "Holvin vienti on poistettu käytöstä" + "message": "Holvin vienti ei ole käytettävissä" }, "personalVaultExportPolicyInEffect": { - "message": "Yksi tai useampi organisaation käytäntö estää henkilökohtaisen holvisi viennin." + "message": "Yksi tai useampi organisaatiokäytäntö estää henkilökohtaisen holvisi viennin." }, "copyCustomFieldNameInvalidElement": { "message": "Oikeaa lomakkeen elementtiä ei voitu tunnistaa. Tutki sen sijaan HTML-koodia." @@ -1880,7 +1884,7 @@ "message": "Poista pääsalasana" }, "removedMasterPassword": { - "message": "Pääsalasana on poistettu." + "message": "Pääsalasana on poistettiin" }, "leaveOrganizationConfirmation": { "message": "Haluatko varmasti poistua tästä organisaatiosta?" @@ -1898,7 +1902,7 @@ "message": "Henkilökohtaisen holvin vienti" }, "exportingPersonalVaultDescription": { - "message": "Vain tunnukseen $EMAIL$ liitetyt henkilökohtaiset holvin kohteet viedään. Organisaation kohteet eivät sisälly tähän.", + "message": "Vain tunnukselle $EMAIL$ liitetyt henkilökohtaisen holvin kohteet viedään. Organisaation kohteet eivät sisälly tähän.", "placeholders": { "email": { "content": "$1", diff --git a/apps/browser/src/_locales/fil/messages.json b/apps/browser/src/_locales/fil/messages.json index a1d1a776a89..ef019e07386 100644 --- a/apps/browser/src/_locales/fil/messages.json +++ b/apps/browser/src/_locales/fil/messages.json @@ -20,7 +20,7 @@ "message": "Mag-login" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "Enterprise single sign-on" }, "cancel": { "message": "Kanselahin" @@ -47,7 +47,7 @@ "message": "Muling i-type ang Master Password" }, "masterPassHint": { - "message": "Master Password Hint (optional)" + "message": "Master password hint (optional)" }, "tab": { "message": "Tab" @@ -59,7 +59,7 @@ "message": "Aking Kahadeyero" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "Mga Kagamitan" @@ -80,25 +80,25 @@ "message": "Kopyahin ang URI" }, "copyUsername": { - "message": "Copy Username" + "message": "Copy username" }, "copyNumber": { - "message": "Copy Number" + "message": "Copy number" }, "copySecurityCode": { - "message": "Copy Security Code" + "message": "Copy security code" }, "autoFill": { "message": "Auto-fill" }, "generatePasswordCopied": { - "message": "Generate Password (copied)" + "message": "Generate password (copied)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { - "message": "No matching logins." + "message": "No matching logins" }, "unlockVaultMenu": { "message": "Buksan ang iyong kahadeyero" @@ -116,7 +116,7 @@ "message": "Magdagdag ng Item" }, "passwordHint": { - "message": "Password Hint" + "message": "Password hint" }, "enterEmailToGetHint": { "message": "Enter your account email address to receive your master password hint." @@ -131,13 +131,13 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { "message": "Ipinadala ang Code" }, "verificationCode": { - "message": "Verification Code" + "message": "Verification code" }, "confirmIdentity": { "message": "Kumpirmahin ang iyong identididad upang magpatuloy." @@ -175,16 +175,16 @@ "message": "Move" }, "addFolder": { - "message": "Add Folder" + "message": "Add folder" }, "name": { "message": "Name" }, "editFolder": { - "message": "Edit Folder" + "message": "Edit folder" }, "deleteFolder": { - "message": "Delete Folder" + "message": "Delete folder" }, "folders": { "message": "Folders" @@ -199,13 +199,13 @@ "message": "Sync" }, "syncVaultNow": { - "message": "Sync Vault Now" + "message": "Sync vault now" }, "lastSync": { - "message": "Last Sync:" + "message": "Last sync:" }, "passGen": { - "message": "Password Generator" + "message": "Password generator" }, "generator": { "message": "Generator", @@ -224,10 +224,10 @@ "message": "Select" }, "generatePassword": { - "message": "Generate Password" + "message": "Generate password" }, "regeneratePassword": { - "message": "Regenerate Password" + "message": "Regenerate password" }, "options": { "message": "Options" @@ -245,29 +245,29 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { - "message": "Number of Words" + "message": "Number of words" }, "wordSeparator": { - "message": "Word Separator" + "message": "Word separator" }, "capitalize": { "message": "Capitalize", "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Include Number" + "message": "Include number" }, "minNumbers": { - "message": "Minimum Numbers" + "message": "Minimum numbers" }, "minSpecial": { - "message": "Minimum Special" + "message": "Minimum special" }, "avoidAmbChar": { - "message": "Avoid Ambiguous Characters" + "message": "Avoid ambiguous characters" }, "searchVault": { "message": "Search vault" @@ -282,7 +282,7 @@ "message": "There are no items to list." }, "itemInformation": { - "message": "Item Information" + "message": "Item information" }, "username": { "message": "Username" @@ -303,16 +303,16 @@ "message": "Note" }, "editItem": { - "message": "Edit Item" + "message": "Edit item" }, "folder": { "message": "Folder" }, "deleteItem": { - "message": "Delete Item" + "message": "Delete item" }, "viewItem": { - "message": "View Item" + "message": "View item" }, "launch": { "message": "Launch" @@ -321,7 +321,7 @@ "message": "Website" }, "toggleVisibility": { - "message": "Toggle Visibility" + "message": "Toggle visibility" }, "manage": { "message": "Manage" @@ -339,7 +339,7 @@ "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "Your vault is locked. Verify your identity to continue." @@ -482,28 +482,28 @@ "message": "Name is required." }, "addedFolder": { - "message": "Added folder" + "message": "Folder added" }, "changeMasterPass": { - "message": "Change Master Password" + "message": "Change master password" }, "changeMasterPasswordConfirmation": { "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" }, "twoStepLoginConfirmation": { - "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be set up on the bitwarden.com web vault. Do you want to visit the website now?" }, "editedFolder": { - "message": "Edited folder" + "message": "Folder saved" }, "deleteFolderConfirmation": { "message": "Are you sure you want to delete this folder?" }, "deletedFolder": { - "message": "Deleted folder" + "message": "Folder deleted" }, "gettingStartedTutorial": { - "message": "Getting Started Tutorial" + "message": "Getting started tutorial" }, "gettingStartedTutorialVideo": { "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." @@ -534,25 +534,25 @@ "message": "New URI" }, "addedItem": { - "message": "Added item" + "message": "Item added" }, "editedItem": { - "message": "Edited item" + "message": "Item saved" }, "deleteItemConfirmation": { "message": "Do you really want to send to the trash?" }, "deletedItem": { - "message": "Sent item to trash" + "message": "Item sent to trash" }, "overwritePassword": { - "message": "Overwrite Password" + "message": "Overwrite password" }, "overwritePasswordConfirmation": { "message": "Are you sure you want to overwrite the current password?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -567,7 +567,7 @@ "message": "Search type" }, "noneFolder": { - "message": "No Folder", + "message": "No folder", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -649,14 +649,14 @@ "message": "Export vault" }, "fileFormat": { - "message": "File Format" + "message": "File format" }, "warning": { "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirm vault export" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "Share" @@ -705,13 +705,13 @@ "message": "Learn more" }, "authenticatorKeyTotp": { - "message": "Authenticator Key (TOTP)" + "message": "Authenticator key (TOTP)" }, "verificationCodeTotp": { - "message": "Verification Code (TOTP)" + "message": "Verification code (TOTP)" }, "copyVerificationCode": { - "message": "Copy Verification Code" + "message": "Copy verification code" }, "attachments": { "message": "Attachments" @@ -723,28 +723,28 @@ "message": "Are you sure you want to delete this attachment?" }, "deletedAttachment": { - "message": "Deleted attachment" + "message": "Attachment deleted" }, "newAttachment": { - "message": "Add New Attachment" + "message": "Add new attachment" }, "noAttachments": { "message": "No attachments." }, "attachmentSaved": { - "message": "The attachment has been saved." + "message": "Attachment saved" }, "file": { "message": "File" }, "selectFile": { - "message": "Select a file." + "message": "Select a file" }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, "featureUnavailable": { - "message": "Feature Unavailable" + "message": "Feature unavailable" }, "updateKey": { "message": "You cannot use this feature until you update your encryption key." @@ -753,19 +753,19 @@ "message": "Premium membership" }, "premiumManage": { - "message": "Manage Membership" + "message": "Manage membership" }, "premiumManageAlert": { "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumRefresh": { - "message": "Refresh Membership" + "message": "Refresh membership" }, "premiumNotCurrentMember": { - "message": "You are not currently a premium member." + "message": "You are not currently a Premium member." }, "premiumSignUpAndGet": { - "message": "Sign up for a premium membership and get:" + "message": "Sign up for a Premium membership and get:" }, "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." @@ -783,16 +783,16 @@ "message": "Priority customer support." }, "ppremiumSignUpFuture": { - "message": "All future premium features. More coming soon!" + "message": "All future Premium features. More coming soon!" }, "premiumPurchase": { "message": "Purchase Premium" }, "premiumPurchaseAlert": { - "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "You can purchase Premium membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumCurrentMember": { - "message": "You are a premium member!" + "message": "You are a Premium member!" }, "premiumCurrentMemberThanks": { "message": "Thank you for supporting Bitwarden." @@ -819,10 +819,10 @@ "message": "Ask for biometrics on launch" }, "premiumRequired": { - "message": "Premium Required" + "message": "Premium required" }, "premiumRequiredDesc": { - "message": "A premium membership is required to use this feature." + "message": "A Premium membership is required to use this feature." }, "enterVerificationCodeApp": { "message": "Enter the 6 digit verification code from your authenticator app." @@ -870,25 +870,25 @@ "message": "Authenticate WebAuthn" }, "loginUnavailable": { - "message": "Login Unavailable" + "message": "Login unavailable" }, "noTwoStepProviders": { - "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + "message": "This account has two-step login set up, however, none of the configured two-step providers are supported by this web browser." }, "noTwoStepProviders2": { "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." }, "twoStepOptions": { - "message": "Two-step Login Options" + "message": "Two-step login options" }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." }, "recoveryCodeTitle": { - "message": "Recovery Code" + "message": "Recovery code" }, "authenticatorAppTitle": { - "message": "Authenticator App" + "message": "Authenticator app" }, "authenticatorAppDesc": { "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "Email" @@ -921,13 +921,13 @@ "message": "Verification codes will be emailed to you." }, "selfHostedEnvironment": { - "message": "Self-hosted Environment" + "message": "Self-hosted environment" }, "selfHostedEnvironmentFooter": { "message": "Specify the base URL of your on-premises hosted Bitwarden installation." }, "customEnvironment": { - "message": "Custom Environment" + "message": "Custom environment" }, "customEnvironmentFooter": { "message": "For advanced users. You can specify the base URL of each service independently." @@ -939,19 +939,19 @@ "message": "API Server URL" }, "webVaultUrl": { - "message": "Web Vault Server URL" + "message": "Web vault server URL" }, "identityUrl": { - "message": "Identity Server URL" + "message": "Identity server URL" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "Notifications server URL" }, "iconsUrl": { - "message": "Icons Server URL" + "message": "Icons server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -999,16 +999,16 @@ "message": "Private mode support is experimental and some features are limited." }, "customFields": { - "message": "Custom Fields" + "message": "Custom fields" }, "copyValue": { - "message": "Copy Value" + "message": "Copy value" }, "value": { "message": "Value" }, "newCustomField": { - "message": "New Custom Field" + "message": "New custom field" }, "dragToSort": { "message": "Drag to sort" @@ -1049,7 +1049,7 @@ "message": "Indicate how many logins you have for the current web page." }, "cardholderName": { - "message": "Cardholder Name" + "message": "Cardholder name" }, "number": { "message": "Number" @@ -1058,10 +1058,10 @@ "message": "Brand" }, "expirationMonth": { - "message": "Expiration Month" + "message": "Expiration month" }, "expirationYear": { - "message": "Expiration Year" + "message": "Expiration year" }, "expiration": { "message": "Expiration" @@ -1103,7 +1103,7 @@ "message": "December" }, "securityCode": { - "message": "Security Code" + "message": "Security code" }, "ex": { "message": "ex." @@ -1124,31 +1124,31 @@ "message": "Dr" }, "firstName": { - "message": "First Name" + "message": "First name" }, "middleName": { - "message": "Middle Name" + "message": "Middle name" }, "lastName": { - "message": "Last Name" + "message": "Last name" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { - "message": "Identity Name" + "message": "Identity name" }, "company": { "message": "Company" }, "ssn": { - "message": "Social Security Number" + "message": "Social Security number" }, "passportNumber": { - "message": "Passport Number" + "message": "Passport number" }, "licenseNumber": { - "message": "License Number" + "message": "License number" }, "email": { "message": "Email" @@ -1175,7 +1175,7 @@ "message": "State / Province" }, "zipPostalCode": { - "message": "Zip / Postal Code" + "message": "Zip / Postal code" }, "country": { "message": "Country" @@ -1190,7 +1190,7 @@ "message": "Logins" }, "typeSecureNote": { - "message": "Secure Note" + "message": "Secure note" }, "typeCard": { "message": "Card" @@ -1199,7 +1199,7 @@ "message": "Identity" }, "passwordHistory": { - "message": "Password History" + "message": "Password history" }, "back": { "message": "Back" @@ -1226,7 +1226,7 @@ "message": "Logins" }, "secureNotes": { - "message": "Secure Notes" + "message": "Secure notes" }, "clear": { "message": "Clear", @@ -1270,7 +1270,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match Detection", + "message": "Match detection", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1278,10 +1278,10 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Toggle Options" + "message": "Toggle options" }, "toggleCurrentUris": { - "message": "Toggle Current URIs", + "message": "Toggle current URIs", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1296,7 +1296,7 @@ "message": "Types" }, "allItems": { - "message": "All Items" + "message": "All items" }, "noPasswordsInList": { "message": "There are no passwords to list." @@ -1311,8 +1311,12 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { - "message": "Password Updated", + "message": "Password updated", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1343,7 +1347,7 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Weak Master Password" + "message": "Weak master password" }, "weakMasterPasswordDesc": { "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" @@ -1371,7 +1375,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" @@ -1380,7 +1384,7 @@ "message": "You must select at least one collection." }, "cloneItem": { - "message": "Clone Item" + "message": "Clone item" }, "clone": { "message": "Clone" @@ -1403,40 +1407,40 @@ "message": "Search trash" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Permanently delete item" }, "permanentlyDeleteItemConfirmation": { "message": "Are you sure you want to permanently delete this item?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Item permanently deleted" }, "restoreItem": { - "message": "Restore Item" + "message": "Restore item" }, "restoreItemConfirmation": { "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored Item" + "message": "Item restored" }, "vaultTimeoutLogOutConfirmation": { "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Timeout action confirmation" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Auto-fill and save" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Item auto-filled and URI saved" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Item auto-filled " }, "setMasterPassword": { - "message": "Set Master Password" + "message": "Set master password" }, "masterPasswordPolicyInEffect": { "message": "One or more organization policies require your master password to meet the following requirements:" @@ -1505,19 +1509,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1625,10 +1629,10 @@ "message": "Delete" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,14 +1669,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1808,22 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/fr/messages.json b/apps/browser/src/_locales/fr/messages.json index c64d822b613..62b28b4d675 100644 --- a/apps/browser/src/_locales/fr/messages.json +++ b/apps/browser/src/_locales/fr/messages.json @@ -44,7 +44,7 @@ "message": "Un indice de mot de passe maître peut vous aider à vous rappeler de votre mot de passe en cas d'oubli." }, "reTypeMasterPass": { - "message": "Saisissez à nouveau le mot de passe maître" + "message": "Saisir à nouveau le mot de passe maître" }, "masterPassHint": { "message": "Indice du mot de passe maître (facultatif)" @@ -56,7 +56,7 @@ "message": "Coffre" }, "myVault": { - "message": "Mon coffre" + "message": "Mon Coffre" }, "allVaults": { "message": "Tous les coffres" @@ -98,7 +98,7 @@ "message": "Copier le nom du champ personnalisé" }, "noMatchingLogins": { - "message": "Aucun site correspondant." + "message": "Aucun identifiant correspondant." }, "unlockVaultMenu": { "message": "Déverrouillez votre coffre" @@ -110,13 +110,13 @@ "message": "Il n'existe aucun site disponible pour le remplissage automatique pour l'onglet actuel du navigateur." }, "addLogin": { - "message": "Ajouter un identifiant" + "message": "Ajouter un site" }, "addItem": { "message": "Ajouter un élément" }, "passwordHint": { - "message": "Indice du mot de passe" + "message": "Indice mot de passe" }, "enterEmailToGetHint": { "message": "Saisissez l'adresse e-mail de votre compte pour recevoir l'indice de votre mot de passe maître." @@ -227,7 +227,7 @@ "message": "Générer un mot de passe" }, "regeneratePassword": { - "message": "Générer un nouveau mot de passe" + "message": "Re-générer un mot de passe" }, "options": { "message": "Options" @@ -258,7 +258,7 @@ "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Inclure un chiffre" + "message": "Inclure le numéro" }, "minNumbers": { "message": "Nombre minimum de chiffres" @@ -282,7 +282,7 @@ "message": "Aucun identifiant à afficher." }, "itemInformation": { - "message": "Informations sur l'élément" + "message": "Information sur l'élément" }, "username": { "message": "Nom d'utilisateur" @@ -303,16 +303,16 @@ "message": "Note" }, "editItem": { - "message": "Modifier l'élément" + "message": "Modifier l'identifiant" }, "folder": { "message": "Dossier" }, "deleteItem": { - "message": "Supprimer l'élément" + "message": "Supprimer l'identifiant" }, "viewItem": { - "message": "Afficher l'élément" + "message": "Voir l'élément" }, "launch": { "message": "Ouvrir" @@ -491,7 +491,7 @@ "message": "Vous pouvez modifier votre mot de passe maître depuis le coffre web sur bitwarden.com. Souhaitez-vous visiter le site maintenant ?" }, "twoStepLoginConfirmation": { - "message": "L'identification en deux étapes sécurise davantage votre compte en vous demandant à chaque connexion de saisir un code de sécurité obtenu depuis un autre appareil, via une clé de sécurité, une application d'authentification, un SMS, un appel téléphonique, ou un e-mail. L'identification en deux étapes peut être activée depuis le coffre web sur bitwarden.com. Voulez-vous vous visiter le site web maintenant ?" + "message": "L'identification en deux étapes rend votre compte plus sécurisé en vous demandant de saisir un code de sécurité depuis une application d'authentification à chaque fois que vous vous identifiez. L'identification en deux étapes peut être activée depuis le coffre web sur bitwarden.com. Souhaitez-vous visiter le site maintenant ?" }, "editedFolder": { "message": "Dossier modifié" @@ -503,7 +503,7 @@ "message": "Dossier supprimé" }, "gettingStartedTutorial": { - "message": "Tutoriel" + "message": "Didacticiel" }, "gettingStartedTutorialVideo": { "message": "Regardez notre didacticiel pour savoir comment parfaitement utiliser l'extension du navigateur." @@ -567,7 +567,7 @@ "message": "Rechercher dans le type" }, "noneFolder": { - "message": "Aucun dossier", + "message": "Pas de dossier", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -783,13 +783,13 @@ "message": "Support client prioritaire." }, "ppremiumSignUpFuture": { - "message": "Toutes les futures options premium. D'autres suivront prochainement !" + "message": "Toutes les futures options premium. Prochainement !" }, "premiumPurchase": { "message": "Acheter Premium" }, "premiumPurchaseAlert": { - "message": "Vous pouvez opter pour une adhésion premium depuis le coffre web sur bitwarden.com. Souhaitez-vous visiter le site web maintenant ?" + "message": "Vous pouvez opter pour une adhésion premium depuis le coffre web sur bitwarden.com. Souhaitez-vous consulter le site web maintenant ?" }, "premiumCurrentMember": { "message": "Vous êtes un adhérent premium !" @@ -819,7 +819,7 @@ "message": "Ask for biometrics on launch" }, "premiumRequired": { - "message": "Adhésion Premium requise" + "message": "Version Premium requise" }, "premiumRequiredDesc": { "message": "Une adhésion premium est requise pour utiliser cette fonctionnalité." @@ -870,16 +870,16 @@ "message": "Authentifier WebAuthn" }, "loginUnavailable": { - "message": "Connexion impossible" + "message": "Identifiant non disponible" }, "noTwoStepProviders": { - "message": "Ce compte dispose d'une identification en deux étapes. Cependant, aucun service d'identification en deux étapes n'est supporté par ce navigateur web." + "message": "Ce compte dispose d'une authentification à double facteurs, cependant, aucun service d'authentification à double facteurs n'est supporté par ce navigateur web." }, "noTwoStepProviders2": { "message": "Merci d'utiliser un navigateur web compatible (comme Chrome) et/ou d'ajouter des services additionnels d'identification en deux étapes qui sont mieux supportés par les navigateurs web (comme par exemple une application d'authentification)." }, "twoStepOptions": { - "message": "Options d'identification en deux étapes" + "message": "Options d'identification à double facteurs" }, "recoveryCodeDesc": { "message": "Accès perdu à tous vos services d'authentification à double facteurs ? Utilisez votre code de récupération pour désactiver tous les services de double authentifications sur votre compte." @@ -1148,7 +1148,7 @@ "message": "Numéro de passeport" }, "licenseNumber": { - "message": "Numéro de permis" + "message": "Numéro de permis de Conduire" }, "email": { "message": "E-mail" @@ -1278,7 +1278,7 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Afficher/masquer les options" + "message": "Options de basculement" }, "toggleCurrentUris": { "message": "Afficher/masquer les URIs actuels", @@ -1311,6 +1311,10 @@ "message": "Mis à jour", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Mot de passe mis à jour", "description": "ex. Date this password was updated" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/he/messages.json b/apps/browser/src/_locales/he/messages.json index 3a52d70f647..a5ab167ab74 100644 --- a/apps/browser/src/_locales/he/messages.json +++ b/apps/browser/src/_locales/he/messages.json @@ -20,7 +20,7 @@ "message": "התחבר" }, "enterpriseSingleSignOn": { - "message": "כניסה אחודה ארגונית" + "message": "כניסה ארגונית אחידה" }, "cancel": { "message": "בטל" @@ -32,7 +32,7 @@ "message": "שלח" }, "emailAddress": { - "message": "כתובת אימייל" + "message": "כתובת דוא\"ל" }, "masterPass": { "message": "סיסמה ראשית" @@ -59,7 +59,7 @@ "message": "הכספת שלי" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "כלים" @@ -92,10 +92,10 @@ "message": "השלמה אוטומטית" }, "generatePasswordCopied": { - "message": "צור סיסמה חדשה (והעתק לזיכרון)" + "message": "צור סיסמה (העתק)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { "message": "לא נמצאו פרטי כניסה תואמים." @@ -245,7 +245,7 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { "message": "מספר מילים" @@ -552,7 +552,7 @@ "message": "האם אתה בטוח שברצונך לדרוס את הסיסמה הנוכחית?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "שתף" @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "אימייל" @@ -1311,6 +1311,10 @@ "message": "עודכן", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "הסיסמה עודכנה", "description": "ex. Date this password was updated" @@ -1625,10 +1629,10 @@ "message": "Delete" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1808,22 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "הזמן הקצוב לכספת שלך חורג מהמגבלות שנקבעו על ידי הארגון שלך." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1910,23 +1914,23 @@ "message": "שגיאה" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { "message": "סוג שם משתמש" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,16 +1939,16 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" @@ -1966,16 +1970,16 @@ "message": "מפתח API" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/hi/messages.json b/apps/browser/src/_locales/hi/messages.json index b36fe0cd95f..80e1c53c86b 100644 --- a/apps/browser/src/_locales/hi/messages.json +++ b/apps/browser/src/_locales/hi/messages.json @@ -59,7 +59,7 @@ "message": "My Vault" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "उपकरण" @@ -95,7 +95,7 @@ "message": "Generate Password (copied)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { "message": "कोई मेल-मिला लॉगिन नहीं |" @@ -131,10 +131,10 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { - "message": "Code Sent" + "message": "Code sent" }, "verificationCode": { "message": "Verification Code" @@ -245,7 +245,7 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { "message": "Number of Words" @@ -339,7 +339,7 @@ "message": "आपका वेब ब्राउज़र आसान क्लिपबोर्ड कॉपीिंग का समर्थन नहीं करता है। इसके बजाय इसे मैन्युअल रूप से कॉपी करें।" }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "आपकी वॉल्ट लॉक हो गई है। जारी रखने के लिए अपने मास्टर पासवर्ड को सत्यापित करें।" @@ -552,7 +552,7 @@ "message": "क्या आप सुनिश्चित हैं कि आप वर्तमान पासवर्ड को ओवरराइट करना चाहते हैं?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -1133,7 +1133,7 @@ "message": "Last Name" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { "message": "Identity Name" @@ -1311,6 +1311,10 @@ "message": "अपडेट किया गया", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -1810,16 +1814,16 @@ "message": "इस सुविधा का उपयोग करने के लिए आपको अपने ईमेल को सत्यापित करना होगा। आप वेब वॉल्ट में अपने ईमेल को सत्यापित कर सकते हैं।" }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/hr/messages.json b/apps/browser/src/_locales/hr/messages.json index f55313d87b3..73700c8caea 100644 --- a/apps/browser/src/_locales/hr/messages.json +++ b/apps/browser/src/_locales/hr/messages.json @@ -14,7 +14,7 @@ "message": "Prijavi se ili stvori novi račun za pristup svojem sigurnom trezoru." }, "createAccount": { - "message": "Stvori račun" + "message": "Napravi račun" }, "login": { "message": "Prijava" @@ -32,7 +32,7 @@ "message": "Pošalji" }, "emailAddress": { - "message": "Adresa e-pošte" + "message": "Email Adresa" }, "masterPass": { "message": "Glavna lozinka" @@ -95,7 +95,7 @@ "message": "Generiraj lozinku (i kopiraj)" }, "copyElementIdentifier": { - "message": "Kopiranje prilagođenog naziva polja" + "message": "Prilagođeno ime polja" }, "noMatchingLogins": { "message": "Nema podudarajućih prijava." @@ -494,7 +494,7 @@ "message": "Prijava u dva koraka čini tvoj račun još sigurnijim tako što će zahtijevati da potvrdiš prijavu putem drugog uređaja kao što je sigurnosni ključ, autentifikatorske aplikacije, SMS-om, pozivom ili e-poštom. Prijavu u dva koraka možeš omogućiti na web trezoru. Želiš li sada posjetiti bitwarden.com?" }, "editedFolder": { - "message": "Uređena mapa" + "message": "Mapa izmijenjena" }, "deleteFolderConfirmation": { "message": "Sigurno želiš izbrisati ovu mapu?" @@ -879,7 +879,7 @@ "message": "Koristi podržani web-preglednik (npr. Chrome) i/ili dodaj dodatne usluge koje su bolje podržane u web preglednicima (npr. aplikacija Autentifikator)." }, "twoStepOptions": { - "message": "Mogućnosti prijave u dva koraka" + "message": "Mogućnosti dvostruke autentifikacije" }, "recoveryCodeDesc": { "message": "Izgubljen je pristup uređaju za dvostruku autentifikaciju? Koristi svoj kôd za oporavak za onemogućavanje svih pružatelja usluga dvostruke autentifikacije na tvojem računu." @@ -1311,6 +1311,10 @@ "message": "Ažurirano", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Lozinka ažurirana", "description": "ex. Date this password was updated" @@ -1972,10 +1976,10 @@ "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/hu/messages.json b/apps/browser/src/_locales/hu/messages.json index 78a4bc43e0d..44d7249133f 100644 --- a/apps/browser/src/_locales/hu/messages.json +++ b/apps/browser/src/_locales/hu/messages.json @@ -482,7 +482,7 @@ "message": "Név megadása kötelező." }, "addedFolder": { - "message": "Hozzáadott mappa" + "message": "A mappa hozzáadásra került." }, "changeMasterPass": { "message": "Mesterjelszó módosítása" @@ -491,7 +491,7 @@ "message": "Mesterjelszavadat a bitwarden.com webes széfén tudod megváltoztatni. Szeretnéd meglátogatni a most a weboldalt?" }, "twoStepLoginConfirmation": { - "message": "A kétlépcsős bejelentkezés biztonságosabbá teszi a felhasználódat azáltal, hogy ellenőrizned kell a bejelentkezésedet egy másik készülékkel mint például biztonsági kulcs, hitelesítő alkalmazás, SMS, telefon hívás vagy e-mail. Kétlépcsős bejelentkezést a bitwarden.com webes széfén tudod megváltoztatni. Szeretnéd meglátogatni a most a weboldalt?" + "message": "A kétlépcsős bejelentkezés biztonságosabbá teszi a fiókot azáltal, hogy ellenőrizni kell a bejelentkezést egy másik olyan eszközzel mint például biztonsági kulcs, hitelesítő alkalmazás, SMS, telefon hívás vagy email. A kétlépcsős bejelentkezést a bitwarden.com webes széfben lehet engedélyezni. Felkeressük a webhelyet most?" }, "editedFolder": { "message": "A mappa módosításra került." @@ -500,7 +500,7 @@ "message": "Biztos, hogy törölni akarod ezt a mappát?" }, "deletedFolder": { - "message": "Törölt mappa" + "message": "A mappa törlésre került." }, "gettingStartedTutorial": { "message": "Kezdeti ismertető" @@ -534,10 +534,10 @@ "message": "Új URI" }, "addedItem": { - "message": "Elem hozzáadva" + "message": "Az elem hozzáadásra került." }, "editedItem": { - "message": "Elem szerkesztve" + "message": "Az elem szerkesztésre került." }, "deleteItemConfirmation": { "message": "Biztosan törlésre kerüljön ezt az elem?" @@ -723,7 +723,7 @@ "message": "Biztos törölni akarod ezt a mellékletet?" }, "deletedAttachment": { - "message": "Mellékletek törlése" + "message": "A melléklet törlésre került." }, "newAttachment": { "message": "Új melléklet hozzáadása" @@ -738,7 +738,7 @@ "message": "Fájl" }, "selectFile": { - "message": "Válassz ki egy fájlt." + "message": "Válasszunk egy fájlt." }, "maxFileSize": { "message": "A naximális fájlméret 500 MB." @@ -762,10 +762,10 @@ "message": "Tagság frissítése" }, "premiumNotCurrentMember": { - "message": "Pillanatnyilag nem vagy prémium tag." + "message": "Jelenleg nincs prémium tagság." }, "premiumSignUpAndGet": { - "message": "Regisztrálj prémium tagságra az alábbi funkciókért:" + "message": "Regisztráció a prémium tagságra az alábbi funkciókért:" }, "ppremiumSignUpStorage": { "message": "1 GB titkosított tárhely a fájlmellékleteknek." @@ -783,16 +783,16 @@ "message": "Kiemelt ügyfélszolgálati." }, "ppremiumSignUpFuture": { - "message": "Minden jövőbeli prémium funkció. Hamarosan jön még több!" + "message": "Minden jövőbeli prémium funkció. Hamarosan jön még több." }, "premiumPurchase": { "message": "Prémium funkció megvásárlása" }, "premiumPurchaseAlert": { - "message": "Prémium tagságot a bitwarden.com webes széfén tudsz venni. Szeretnéd meglátogatni a most a weboldalt?" + "message": "A prémium tagság megvásárolható a bitwarden.com webes széfben. Szeretnénk felkeresni a webhelyet most?" }, "premiumCurrentMember": { - "message": "Te egy prémium tag vagy!" + "message": "Jelenleg a prémium tagság érvényben van." }, "premiumCurrentMemberThanks": { "message": "Köszönjük a Bitwarden támogatását." @@ -822,7 +822,7 @@ "message": "Prémium funkció szükséges" }, "premiumRequiredDesc": { - "message": "Prémium tagság szükséges ennek a funkciónak eléréséhez." + "message": "Prémium tagság szükséges ennek a funkciónak eléréséhez a jövőben." }, "enterVerificationCodeApp": { "message": "Add meg a 6 számjegyű ellenőrző kódot a hitelesítő alkalmazásodból." @@ -882,7 +882,7 @@ "message": "Kétlépcsős bejelentkezés opciók" }, "recoveryCodeDesc": { - "message": "Elvesztetted a hozzáférésed az összes kétlépcsős szolgáltatásodhoz? Használd a visszaállítókódod a kétlépcsős kiszolgálok kikapcsolásához a felhasználódon." + "message": "Elveszett a hozzáférés az összes kétlépcsős szolgáltatóhoz? A helyreállító kód használatával letilthatók fiókból a kétlépcsős szolgáltatók." }, "recoveryCodeTitle": { "message": "Helyreállító kód" @@ -927,7 +927,7 @@ "message": "A helyileg működtetett Bitwarden telepítés alap webcímének megadása." }, "customEnvironment": { - "message": "Egyedi környezet" + "message": "Egyéni környezet" }, "customEnvironmentFooter": { "message": "Haladó felhasználóknak. Minden egyes szolgáltatás alap URL-jét külön megadhatod." @@ -951,7 +951,7 @@ "message": "Ikonok szerver webcím" }, "environmentSaved": { - "message": "A környezet URL-ek mentésre kerültek." + "message": "A környezeti webcímek mentésre kerültek." }, "enableAutoFillOnPageLoad": { "message": "Automatikus kitöltés engedélyezése oldal betöltéskor" @@ -1103,7 +1103,7 @@ "message": "December" }, "securityCode": { - "message": "Biztonsági kód" + "message": "Biztonsági Kód" }, "ex": { "message": "példa:" @@ -1311,6 +1311,10 @@ "message": "A frissítés megtörtént.", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Létrehozva", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "A jelszó frissítésre került.", "description": "ex. Date this password was updated" @@ -1727,7 +1731,7 @@ "message": "Aktuális elérési szám" }, "createSend": { - "message": "Új küldés létrehozása", + "message": "Új Send létrehozása", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { diff --git a/apps/browser/src/_locales/id/messages.json b/apps/browser/src/_locales/id/messages.json index 8cad01f8763..f0563f550ca 100644 --- a/apps/browser/src/_locales/id/messages.json +++ b/apps/browser/src/_locales/id/messages.json @@ -59,7 +59,7 @@ "message": "Brankas Saya" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "Alat" @@ -1311,6 +1311,10 @@ "message": "Diperbarui", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Kata Sandi Diperbarui", "description": "ex. Date this password was updated" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/it/messages.json b/apps/browser/src/_locales/it/messages.json index 069bf8c9384..18f2b2d8938 100644 --- a/apps/browser/src/_locales/it/messages.json +++ b/apps/browser/src/_locales/it/messages.json @@ -86,7 +86,7 @@ "message": "Copia numero" }, "copySecurityCode": { - "message": "Copia codice di sicurezza" + "message": "Copia il codice di sicurezza" }, "autoFill": { "message": "Auto-riempimento" @@ -98,7 +98,7 @@ "message": "Copia nome campo personalizzato" }, "noMatchingLogins": { - "message": "Nessun login corrispondente." + "message": "Nessun accesso corrispondente." }, "unlockVaultMenu": { "message": "Sblocca la tua cassaforte" @@ -199,7 +199,7 @@ "message": "Sincronizza" }, "syncVaultNow": { - "message": "Sincronizza ora la cassaforte" + "message": "Sincronizza cassaforte ora" }, "lastSync": { "message": "Ultima sincronizzazione:" @@ -261,10 +261,10 @@ "message": "Includi numero" }, "minNumbers": { - "message": "Minimo di numeri" + "message": "Minimo numeri" }, "minSpecial": { - "message": "Minimo di speciali" + "message": "Minimo caratteri speciali" }, "avoidAmbChar": { "message": "Evita caratteri ambigui" @@ -711,7 +711,7 @@ "message": "Codice di verifica (TOTP)" }, "copyVerificationCode": { - "message": "Copia codice di verifica" + "message": "Copia il codice di verifica" }, "attachments": { "message": "Allegati" @@ -726,7 +726,7 @@ "message": "Allegato eliminato" }, "newAttachment": { - "message": "Aggiungi Nuovo Allegato" + "message": "Aggiungi nuovo allegato" }, "noAttachments": { "message": "Nessun allegato." @@ -765,7 +765,7 @@ "message": "Al momento non sei un membro premium." }, "premiumSignUpAndGet": { - "message": "Iscriviti a un abbonamento premium e ottieni:" + "message": "Iscriviti ad un abbonamento premium e ottieni:" }, "ppremiumSignUpStorage": { "message": "1 GB di spazio di archiviazione cifrato per gli allegati." @@ -822,7 +822,7 @@ "message": "Premium richiesto" }, "premiumRequiredDesc": { - "message": "Un abbonamento premium è richiesto per utilizzare questa funzionalità." + "message": "Un abbonamento Premium è richiesto per utilizzare questa funzionalità." }, "enterVerificationCodeApp": { "message": "Inserisci il codice di verifica a 6 cifre dalla tua applicazione di autenticazione." @@ -1311,6 +1311,10 @@ "message": "Aggiornato", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password aggiornata", "description": "ex. Date this password was updated" @@ -1371,7 +1375,7 @@ "message": "In attesa di conferma dal desktop" }, "awaitDesktopDesc": { - "message": "Conferma utilizzando l'autenticazione biometrica nell'applicazione Bitwarden Desktop per abilitare l'autenticazione biometrica per il browser." + "message": "Si prega di confermare utilizzando l'autenticazione biometrica nell'applicazione Bitwarden Desktop per abilitare l'autenticazione biometrica per il browser." }, "lockWithMasterPassOnRestart": { "message": "Blocca con la password principale al riavvio del browser" diff --git a/apps/browser/src/_locales/ja/messages.json b/apps/browser/src/_locales/ja/messages.json index 31e2ec70665..20dcfe6e394 100644 --- a/apps/browser/src/_locales/ja/messages.json +++ b/apps/browser/src/_locales/ja/messages.json @@ -482,7 +482,7 @@ "message": "名前は必須項目です。" }, "addedFolder": { - "message": "フォルダーを追加しました" + "message": "フォルダを追加しました" }, "changeMasterPass": { "message": "マスターパスワードの変更" @@ -534,10 +534,10 @@ "message": "新しい URI" }, "addedItem": { - "message": "追加しました" + "message": "追加されたアイテム" }, "editedItem": { - "message": "編集しました" + "message": "編集されたアイテム" }, "deleteItemConfirmation": { "message": "このアイテムを削除しますか?" @@ -567,7 +567,7 @@ "message": "検索の種類" }, "noneFolder": { - "message": "フォルダーなし", + "message": "フォルダなし", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -1311,6 +1311,10 @@ "message": "更新日", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "作成日", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "パスワード更新日", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/ka/messages.json b/apps/browser/src/_locales/ka/messages.json index 802693cd565..1c75bdf8d95 100644 --- a/apps/browser/src/_locales/ka/messages.json +++ b/apps/browser/src/_locales/ka/messages.json @@ -20,7 +20,7 @@ "message": "ავტორიზაცია" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "Enterprise single sign-on" }, "cancel": { "message": "გაუქმება" @@ -35,7 +35,7 @@ "message": "ელ-ფოსტა" }, "masterPass": { - "message": "Master Password" + "message": "Master password" }, "masterPassDesc": { "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." @@ -44,10 +44,10 @@ "message": "A master password hint can help you remember your password if you forget it." }, "reTypeMasterPass": { - "message": "Re-type Master Password" + "message": "Re-type master password" }, "masterPassHint": { - "message": "Master Password Hint (optional)" + "message": "Master password hint (optional)" }, "tab": { "message": "Tab" @@ -56,10 +56,10 @@ "message": "Vault" }, "myVault": { - "message": "My Vault" + "message": "My vault" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "ხელსაწყოები" @@ -68,13 +68,13 @@ "message": "პარამეტრები" }, "currentTab": { - "message": "Current Tab" + "message": "Current tab" }, "copyPassword": { "message": "პაროლის კოპირება" }, "copyNote": { - "message": "Copy Note" + "message": "Copy note" }, "copyUri": { "message": "Copy URI" @@ -83,7 +83,7 @@ "message": "მომხმარებლის სახელის კოპირება" }, "copyNumber": { - "message": "Copy Number" + "message": "Copy number" }, "copySecurityCode": { "message": "უსაფრთხოების კოდის კოპირება" @@ -92,13 +92,13 @@ "message": "თვითშევსება" }, "generatePasswordCopied": { - "message": "Generate Password (copied)" + "message": "Generate password (copied)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { - "message": "No matching logins." + "message": "No matching logins" }, "unlockVaultMenu": { "message": "Unlock your vault" @@ -113,10 +113,10 @@ "message": "ავტორიზაციის დამატება" }, "addItem": { - "message": "Add Item" + "message": "Add item" }, "passwordHint": { - "message": "Password Hint" + "message": "Password hint" }, "enterEmailToGetHint": { "message": "Enter your account email address to receive your master password hint." @@ -199,13 +199,13 @@ "message": "სინქრონიზაცია" }, "syncVaultNow": { - "message": "Sync Vault Now" + "message": "Sync vault now" }, "lastSync": { - "message": "Last Sync:" + "message": "Last sync:" }, "passGen": { - "message": "Password Generator" + "message": "Password generator" }, "generator": { "message": "Generator", @@ -224,10 +224,10 @@ "message": "მონიშვნა" }, "generatePassword": { - "message": "Generate Password" + "message": "Generate password" }, "regeneratePassword": { - "message": "Regenerate Password" + "message": "Regenerate password" }, "options": { "message": "პარამეტრები" @@ -245,29 +245,29 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { "message": "სიტყვათა რაოდენობა" }, "wordSeparator": { - "message": "Word Separator" + "message": "Word separator" }, "capitalize": { "message": "დიდი ასოთი აღნიშვნა", "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Include Number" + "message": "Include number" }, "minNumbers": { - "message": "Minimum Numbers" + "message": "Minimum numbers" }, "minSpecial": { - "message": "Minimum Special" + "message": "Minimum special" }, "avoidAmbChar": { - "message": "Avoid Ambiguous Characters" + "message": "Avoid ambiguous characters" }, "searchVault": { "message": "Search vault" @@ -282,7 +282,7 @@ "message": "There are no items to list." }, "itemInformation": { - "message": "Item Information" + "message": "Item information" }, "username": { "message": "მომხმარებლის სახელი" @@ -303,16 +303,16 @@ "message": "Note" }, "editItem": { - "message": "Edit Item" + "message": "Edit item" }, "folder": { "message": "საქაღალდე" }, "deleteItem": { - "message": "Delete Item" + "message": "Delete item" }, "viewItem": { - "message": "View Item" + "message": "View item" }, "launch": { "message": "Launch" @@ -321,7 +321,7 @@ "message": "ვებგვერდი" }, "toggleVisibility": { - "message": "Toggle Visibility" + "message": "Toggle visibility" }, "manage": { "message": "მართვა" @@ -339,7 +339,7 @@ "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "Your vault is locked. Verify your identity to continue." @@ -482,28 +482,28 @@ "message": "სახელი სავალდებულოა." }, "addedFolder": { - "message": "Added folder" + "message": "Folder added" }, "changeMasterPass": { - "message": "Change Master Password" + "message": "Change master password" }, "changeMasterPasswordConfirmation": { "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" }, "twoStepLoginConfirmation": { - "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be set up on the bitwarden.com web vault. Do you want to visit the website now?" }, "editedFolder": { - "message": "Edited folder" + "message": "Folder saved" }, "deleteFolderConfirmation": { "message": "Are you sure you want to delete this folder?" }, "deletedFolder": { - "message": "Deleted folder" + "message": "Folder deleted" }, "gettingStartedTutorial": { - "message": "Getting Started Tutorial" + "message": "Getting started tutorial" }, "gettingStartedTutorialVideo": { "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." @@ -534,25 +534,25 @@ "message": "New URI" }, "addedItem": { - "message": "Added item" + "message": "Item added" }, "editedItem": { - "message": "Edited item" + "message": "Item saved" }, "deleteItemConfirmation": { "message": "Do you really want to send to the trash?" }, "deletedItem": { - "message": "Sent item to trash" + "message": "Item sent to trash" }, "overwritePassword": { - "message": "Overwrite Password" + "message": "Overwrite password" }, "overwritePasswordConfirmation": { "message": "Are you sure you want to overwrite the current password?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -567,7 +567,7 @@ "message": "Search type" }, "noneFolder": { - "message": "No Folder", + "message": "No folder", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -649,14 +649,14 @@ "message": "Export vault" }, "fileFormat": { - "message": "File Format" + "message": "File format" }, "warning": { "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirm vault export" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "Share" @@ -705,13 +705,13 @@ "message": "Learn more" }, "authenticatorKeyTotp": { - "message": "Authenticator Key (TOTP)" + "message": "Authenticator key (TOTP)" }, "verificationCodeTotp": { - "message": "Verification Code (TOTP)" + "message": "Verification code (TOTP)" }, "copyVerificationCode": { - "message": "Copy Verification Code" + "message": "Copy verification code" }, "attachments": { "message": "Attachments" @@ -723,28 +723,28 @@ "message": "Are you sure you want to delete this attachment?" }, "deletedAttachment": { - "message": "Deleted attachment" + "message": "Attachment deleted" }, "newAttachment": { - "message": "Add New Attachment" + "message": "Add new attachment" }, "noAttachments": { "message": "No attachments." }, "attachmentSaved": { - "message": "The attachment has been saved." + "message": "Attachment saved" }, "file": { "message": "File" }, "selectFile": { - "message": "Select a file." + "message": "Select a file" }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, "featureUnavailable": { - "message": "Feature Unavailable" + "message": "Feature unavailable" }, "updateKey": { "message": "You cannot use this feature until you update your encryption key." @@ -753,19 +753,19 @@ "message": "Premium membership" }, "premiumManage": { - "message": "Manage Membership" + "message": "Manage membership" }, "premiumManageAlert": { "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumRefresh": { - "message": "Refresh Membership" + "message": "Refresh membership" }, "premiumNotCurrentMember": { - "message": "You are not currently a premium member." + "message": "You are not currently a Premium member." }, "premiumSignUpAndGet": { - "message": "Sign up for a premium membership and get:" + "message": "Sign up for a Premium membership and get:" }, "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." @@ -783,16 +783,16 @@ "message": "Priority customer support." }, "ppremiumSignUpFuture": { - "message": "All future premium features. More coming soon!" + "message": "All future Premium features. More coming soon!" }, "premiumPurchase": { "message": "Purchase Premium" }, "premiumPurchaseAlert": { - "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "You can purchase Premium membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumCurrentMember": { - "message": "You are a premium member!" + "message": "You are a Premium member!" }, "premiumCurrentMemberThanks": { "message": "Thank you for supporting Bitwarden." @@ -819,10 +819,10 @@ "message": "Ask for biometrics on launch" }, "premiumRequired": { - "message": "Premium Required" + "message": "Premium required" }, "premiumRequiredDesc": { - "message": "A premium membership is required to use this feature." + "message": "A Premium membership is required to use this feature." }, "enterVerificationCodeApp": { "message": "Enter the 6 digit verification code from your authenticator app." @@ -870,25 +870,25 @@ "message": "Authenticate WebAuthn" }, "loginUnavailable": { - "message": "Login Unavailable" + "message": "Login unavailable" }, "noTwoStepProviders": { - "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + "message": "This account has two-step login set up, however, none of the configured two-step providers are supported by this web browser." }, "noTwoStepProviders2": { "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." }, "twoStepOptions": { - "message": "Two-step Login Options" + "message": "Two-step login options" }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." }, "recoveryCodeTitle": { - "message": "Recovery Code" + "message": "Recovery code" }, "authenticatorAppTitle": { - "message": "Authenticator App" + "message": "Authenticator app" }, "authenticatorAppDesc": { "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "Email" @@ -921,13 +921,13 @@ "message": "Verification codes will be emailed to you." }, "selfHostedEnvironment": { - "message": "Self-hosted Environment" + "message": "Self-hosted environment" }, "selfHostedEnvironmentFooter": { "message": "Specify the base URL of your on-premises hosted Bitwarden installation." }, "customEnvironment": { - "message": "Custom Environment" + "message": "Custom environment" }, "customEnvironmentFooter": { "message": "For advanced users. You can specify the base URL of each service independently." @@ -939,19 +939,19 @@ "message": "API Server URL" }, "webVaultUrl": { - "message": "Web Vault Server URL" + "message": "Web vault server URL" }, "identityUrl": { - "message": "Identity Server URL" + "message": "Identity server URL" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "Notifications server URL" }, "iconsUrl": { - "message": "Icons Server URL" + "message": "Icons server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -999,16 +999,16 @@ "message": "Private mode support is experimental and some features are limited." }, "customFields": { - "message": "Custom Fields" + "message": "Custom fields" }, "copyValue": { - "message": "Copy Value" + "message": "Copy value" }, "value": { "message": "Value" }, "newCustomField": { - "message": "New Custom Field" + "message": "New custom field" }, "dragToSort": { "message": "Drag to sort" @@ -1049,7 +1049,7 @@ "message": "Indicate how many logins you have for the current web page." }, "cardholderName": { - "message": "Cardholder Name" + "message": "Cardholder name" }, "number": { "message": "Number" @@ -1058,10 +1058,10 @@ "message": "Brand" }, "expirationMonth": { - "message": "Expiration Month" + "message": "Expiration month" }, "expirationYear": { - "message": "Expiration Year" + "message": "Expiration year" }, "expiration": { "message": "Expiration" @@ -1103,7 +1103,7 @@ "message": "December" }, "securityCode": { - "message": "Security Code" + "message": "Security code" }, "ex": { "message": "ex." @@ -1124,31 +1124,31 @@ "message": "Dr" }, "firstName": { - "message": "First Name" + "message": "First name" }, "middleName": { - "message": "Middle Name" + "message": "Middle name" }, "lastName": { - "message": "Last Name" + "message": "Last name" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { - "message": "Identity Name" + "message": "Identity name" }, "company": { "message": "Company" }, "ssn": { - "message": "Social Security Number" + "message": "Social Security number" }, "passportNumber": { - "message": "Passport Number" + "message": "Passport number" }, "licenseNumber": { - "message": "License Number" + "message": "License number" }, "email": { "message": "Email" @@ -1175,7 +1175,7 @@ "message": "State / Province" }, "zipPostalCode": { - "message": "Zip / Postal Code" + "message": "Zip / Postal code" }, "country": { "message": "Country" @@ -1190,7 +1190,7 @@ "message": "Logins" }, "typeSecureNote": { - "message": "Secure Note" + "message": "Secure note" }, "typeCard": { "message": "Card" @@ -1199,7 +1199,7 @@ "message": "Identity" }, "passwordHistory": { - "message": "Password History" + "message": "Password history" }, "back": { "message": "Back" @@ -1226,7 +1226,7 @@ "message": "Logins" }, "secureNotes": { - "message": "Secure Notes" + "message": "Secure notes" }, "clear": { "message": "Clear", @@ -1270,7 +1270,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match Detection", + "message": "Match detection", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1278,10 +1278,10 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Toggle Options" + "message": "Toggle options" }, "toggleCurrentUris": { - "message": "Toggle Current URIs", + "message": "Toggle current URIs", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1296,7 +1296,7 @@ "message": "Types" }, "allItems": { - "message": "All Items" + "message": "All items" }, "noPasswordsInList": { "message": "There are no passwords to list." @@ -1311,8 +1311,12 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { - "message": "Password Updated", + "message": "Password updated", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1343,7 +1347,7 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Weak Master Password" + "message": "Weak master password" }, "weakMasterPasswordDesc": { "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" @@ -1371,7 +1375,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" @@ -1380,7 +1384,7 @@ "message": "You must select at least one collection." }, "cloneItem": { - "message": "Clone Item" + "message": "Clone item" }, "clone": { "message": "Clone" @@ -1403,40 +1407,40 @@ "message": "Search trash" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Permanently delete item" }, "permanentlyDeleteItemConfirmation": { "message": "Are you sure you want to permanently delete this item?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Item permanently deleted" }, "restoreItem": { - "message": "Restore Item" + "message": "Restore item" }, "restoreItemConfirmation": { "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored Item" + "message": "Item restored" }, "vaultTimeoutLogOutConfirmation": { "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Timeout action confirmation" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Auto-fill and save" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Item auto-filled and URI saved" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Item auto-filled " }, "setMasterPassword": { - "message": "Set Master Password" + "message": "Set master password" }, "masterPasswordPolicyInEffect": { "message": "One or more organization policies require your master password to meet the following requirements:" @@ -1505,19 +1509,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1625,10 +1629,10 @@ "message": "Delete" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,14 +1669,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1808,22 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/km/messages.json b/apps/browser/src/_locales/km/messages.json index d7e586da741..ae21dc164c5 100644 --- a/apps/browser/src/_locales/km/messages.json +++ b/apps/browser/src/_locales/km/messages.json @@ -14,13 +14,13 @@ "message": "Log in or create a new account to access your secure vault." }, "createAccount": { - "message": "Create Account" + "message": "Create account" }, "login": { - "message": "Log In" + "message": "Log in" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "Enterprise single sign-on" }, "cancel": { "message": "Cancel" @@ -32,10 +32,10 @@ "message": "Submit" }, "emailAddress": { - "message": "Email Address" + "message": "Email address" }, "masterPass": { - "message": "Master Password" + "message": "Master password" }, "masterPassDesc": { "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." @@ -44,10 +44,10 @@ "message": "A master password hint can help you remember your password if you forget it." }, "reTypeMasterPass": { - "message": "Re-type Master Password" + "message": "Re-type master password" }, "masterPassHint": { - "message": "Master Password Hint (optional)" + "message": "Master password hint (optional)" }, "tab": { "message": "Tab" @@ -56,10 +56,10 @@ "message": "Vault" }, "myVault": { - "message": "My Vault" + "message": "My vault" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "Tools" @@ -68,37 +68,37 @@ "message": "Settings" }, "currentTab": { - "message": "Current Tab" + "message": "Current tab" }, "copyPassword": { - "message": "Copy Password" + "message": "Copy password" }, "copyNote": { - "message": "Copy Note" + "message": "Copy note" }, "copyUri": { "message": "Copy URI" }, "copyUsername": { - "message": "Copy Username" + "message": "Copy username" }, "copyNumber": { - "message": "Copy Number" + "message": "Copy number" }, "copySecurityCode": { - "message": "Copy Security Code" + "message": "Copy security code" }, "autoFill": { "message": "Auto-fill" }, "generatePasswordCopied": { - "message": "Generate Password (copied)" + "message": "Generate password (copied)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { - "message": "No matching logins." + "message": "No matching logins" }, "unlockVaultMenu": { "message": "Unlock your vault" @@ -110,13 +110,13 @@ "message": "There are no logins available to auto-fill for the current browser tab." }, "addLogin": { - "message": "Add a Login" + "message": "Add a login" }, "addItem": { - "message": "Add Item" + "message": "Add item" }, "passwordHint": { - "message": "Password Hint" + "message": "Password hint" }, "enterEmailToGetHint": { "message": "Enter your account email address to receive your master password hint." @@ -131,13 +131,13 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { - "message": "Code Sent" + "message": "Code sent" }, "verificationCode": { - "message": "Verification Code" + "message": "Verification code" }, "confirmIdentity": { "message": "Confirm your identity to continue." @@ -175,16 +175,16 @@ "message": "Move" }, "addFolder": { - "message": "Add Folder" + "message": "Add folder" }, "name": { "message": "Name" }, "editFolder": { - "message": "Edit Folder" + "message": "Edit folder" }, "deleteFolder": { - "message": "Delete Folder" + "message": "Delete folder" }, "folders": { "message": "Folders" @@ -199,13 +199,13 @@ "message": "Sync" }, "syncVaultNow": { - "message": "Sync Vault Now" + "message": "Sync vault now" }, "lastSync": { - "message": "Last Sync:" + "message": "Last sync:" }, "passGen": { - "message": "Password Generator" + "message": "Password generator" }, "generator": { "message": "Generator", @@ -224,10 +224,10 @@ "message": "Select" }, "generatePassword": { - "message": "Generate Password" + "message": "Generate password" }, "regeneratePassword": { - "message": "Regenerate Password" + "message": "Regenerate password" }, "options": { "message": "Options" @@ -245,29 +245,29 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { - "message": "Number of Words" + "message": "Number of words" }, "wordSeparator": { - "message": "Word Separator" + "message": "Word separator" }, "capitalize": { "message": "Capitalize", "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Include Number" + "message": "Include number" }, "minNumbers": { - "message": "Minimum Numbers" + "message": "Minimum numbers" }, "minSpecial": { - "message": "Minimum Special" + "message": "Minimum special" }, "avoidAmbChar": { - "message": "Avoid Ambiguous Characters" + "message": "Avoid ambiguous characters" }, "searchVault": { "message": "Search vault" @@ -282,7 +282,7 @@ "message": "There are no items to list." }, "itemInformation": { - "message": "Item Information" + "message": "Item information" }, "username": { "message": "Username" @@ -303,16 +303,16 @@ "message": "Note" }, "editItem": { - "message": "Edit Item" + "message": "Edit item" }, "folder": { "message": "Folder" }, "deleteItem": { - "message": "Delete Item" + "message": "Delete item" }, "viewItem": { - "message": "View Item" + "message": "View item" }, "launch": { "message": "Launch" @@ -321,7 +321,7 @@ "message": "Website" }, "toggleVisibility": { - "message": "Toggle Visibility" + "message": "Toggle visibility" }, "manage": { "message": "Manage" @@ -339,7 +339,7 @@ "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "Your vault is locked. Verify your identity to continue." @@ -482,28 +482,28 @@ "message": "Name is required." }, "addedFolder": { - "message": "Added folder" + "message": "Folder added" }, "changeMasterPass": { - "message": "Change Master Password" + "message": "Change master password" }, "changeMasterPasswordConfirmation": { "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" }, "twoStepLoginConfirmation": { - "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be set up on the bitwarden.com web vault. Do you want to visit the website now?" }, "editedFolder": { - "message": "Edited folder" + "message": "Folder saved" }, "deleteFolderConfirmation": { "message": "Are you sure you want to delete this folder?" }, "deletedFolder": { - "message": "Deleted folder" + "message": "Folder deleted" }, "gettingStartedTutorial": { - "message": "Getting Started Tutorial" + "message": "Getting started tutorial" }, "gettingStartedTutorialVideo": { "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." @@ -534,25 +534,25 @@ "message": "New URI" }, "addedItem": { - "message": "Added item" + "message": "Item added" }, "editedItem": { - "message": "Edited item" + "message": "Item saved" }, "deleteItemConfirmation": { "message": "Do you really want to send to the trash?" }, "deletedItem": { - "message": "Sent item to trash" + "message": "Item sent to trash" }, "overwritePassword": { - "message": "Overwrite Password" + "message": "Overwrite password" }, "overwritePasswordConfirmation": { "message": "Are you sure you want to overwrite the current password?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -567,7 +567,7 @@ "message": "Search type" }, "noneFolder": { - "message": "No Folder", + "message": "No folder", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -649,14 +649,14 @@ "message": "Export vault" }, "fileFormat": { - "message": "File Format" + "message": "File format" }, "warning": { "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirm vault export" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "Share" @@ -705,13 +705,13 @@ "message": "Learn more" }, "authenticatorKeyTotp": { - "message": "Authenticator Key (TOTP)" + "message": "Authenticator key (TOTP)" }, "verificationCodeTotp": { - "message": "Verification Code (TOTP)" + "message": "Verification code (TOTP)" }, "copyVerificationCode": { - "message": "Copy Verification Code" + "message": "Copy verification code" }, "attachments": { "message": "Attachments" @@ -723,28 +723,28 @@ "message": "Are you sure you want to delete this attachment?" }, "deletedAttachment": { - "message": "Deleted attachment" + "message": "Attachment deleted" }, "newAttachment": { - "message": "Add New Attachment" + "message": "Add new attachment" }, "noAttachments": { "message": "No attachments." }, "attachmentSaved": { - "message": "The attachment has been saved." + "message": "Attachment saved" }, "file": { "message": "File" }, "selectFile": { - "message": "Select a file." + "message": "Select a file" }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, "featureUnavailable": { - "message": "Feature Unavailable" + "message": "Feature unavailable" }, "updateKey": { "message": "You cannot use this feature until you update your encryption key." @@ -753,19 +753,19 @@ "message": "Premium membership" }, "premiumManage": { - "message": "Manage Membership" + "message": "Manage membership" }, "premiumManageAlert": { "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumRefresh": { - "message": "Refresh Membership" + "message": "Refresh membership" }, "premiumNotCurrentMember": { - "message": "You are not currently a premium member." + "message": "You are not currently a Premium member." }, "premiumSignUpAndGet": { - "message": "Sign up for a premium membership and get:" + "message": "Sign up for a Premium membership and get:" }, "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." @@ -783,16 +783,16 @@ "message": "Priority customer support." }, "ppremiumSignUpFuture": { - "message": "All future premium features. More coming soon!" + "message": "All future Premium features. More coming soon!" }, "premiumPurchase": { "message": "Purchase Premium" }, "premiumPurchaseAlert": { - "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "You can purchase Premium membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumCurrentMember": { - "message": "You are a premium member!" + "message": "You are a Premium member!" }, "premiumCurrentMemberThanks": { "message": "Thank you for supporting Bitwarden." @@ -819,10 +819,10 @@ "message": "Ask for biometrics on launch" }, "premiumRequired": { - "message": "Premium Required" + "message": "Premium required" }, "premiumRequiredDesc": { - "message": "A premium membership is required to use this feature." + "message": "A Premium membership is required to use this feature." }, "enterVerificationCodeApp": { "message": "Enter the 6 digit verification code from your authenticator app." @@ -870,25 +870,25 @@ "message": "Authenticate WebAuthn" }, "loginUnavailable": { - "message": "Login Unavailable" + "message": "Login unavailable" }, "noTwoStepProviders": { - "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + "message": "This account has two-step login set up, however, none of the configured two-step providers are supported by this web browser." }, "noTwoStepProviders2": { "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." }, "twoStepOptions": { - "message": "Two-step Login Options" + "message": "Two-step login options" }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." }, "recoveryCodeTitle": { - "message": "Recovery Code" + "message": "Recovery code" }, "authenticatorAppTitle": { - "message": "Authenticator App" + "message": "Authenticator app" }, "authenticatorAppDesc": { "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "Email" @@ -921,13 +921,13 @@ "message": "Verification codes will be emailed to you." }, "selfHostedEnvironment": { - "message": "Self-hosted Environment" + "message": "Self-hosted environment" }, "selfHostedEnvironmentFooter": { "message": "Specify the base URL of your on-premises hosted Bitwarden installation." }, "customEnvironment": { - "message": "Custom Environment" + "message": "Custom environment" }, "customEnvironmentFooter": { "message": "For advanced users. You can specify the base URL of each service independently." @@ -939,19 +939,19 @@ "message": "API Server URL" }, "webVaultUrl": { - "message": "Web Vault Server URL" + "message": "Web vault server URL" }, "identityUrl": { - "message": "Identity Server URL" + "message": "Identity server URL" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "Notifications server URL" }, "iconsUrl": { - "message": "Icons Server URL" + "message": "Icons server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -999,16 +999,16 @@ "message": "Private mode support is experimental and some features are limited." }, "customFields": { - "message": "Custom Fields" + "message": "Custom fields" }, "copyValue": { - "message": "Copy Value" + "message": "Copy value" }, "value": { "message": "Value" }, "newCustomField": { - "message": "New Custom Field" + "message": "New custom field" }, "dragToSort": { "message": "Drag to sort" @@ -1049,7 +1049,7 @@ "message": "Indicate how many logins you have for the current web page." }, "cardholderName": { - "message": "Cardholder Name" + "message": "Cardholder name" }, "number": { "message": "Number" @@ -1058,10 +1058,10 @@ "message": "Brand" }, "expirationMonth": { - "message": "Expiration Month" + "message": "Expiration month" }, "expirationYear": { - "message": "Expiration Year" + "message": "Expiration year" }, "expiration": { "message": "Expiration" @@ -1103,7 +1103,7 @@ "message": "December" }, "securityCode": { - "message": "Security Code" + "message": "Security code" }, "ex": { "message": "ex." @@ -1124,31 +1124,31 @@ "message": "Dr" }, "firstName": { - "message": "First Name" + "message": "First name" }, "middleName": { - "message": "Middle Name" + "message": "Middle name" }, "lastName": { - "message": "Last Name" + "message": "Last name" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { - "message": "Identity Name" + "message": "Identity name" }, "company": { "message": "Company" }, "ssn": { - "message": "Social Security Number" + "message": "Social Security number" }, "passportNumber": { - "message": "Passport Number" + "message": "Passport number" }, "licenseNumber": { - "message": "License Number" + "message": "License number" }, "email": { "message": "Email" @@ -1175,7 +1175,7 @@ "message": "State / Province" }, "zipPostalCode": { - "message": "Zip / Postal Code" + "message": "Zip / Postal code" }, "country": { "message": "Country" @@ -1190,7 +1190,7 @@ "message": "Logins" }, "typeSecureNote": { - "message": "Secure Note" + "message": "Secure note" }, "typeCard": { "message": "Card" @@ -1199,7 +1199,7 @@ "message": "Identity" }, "passwordHistory": { - "message": "Password History" + "message": "Password history" }, "back": { "message": "Back" @@ -1226,7 +1226,7 @@ "message": "Logins" }, "secureNotes": { - "message": "Secure Notes" + "message": "Secure notes" }, "clear": { "message": "Clear", @@ -1270,7 +1270,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match Detection", + "message": "Match detection", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1278,10 +1278,10 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Toggle Options" + "message": "Toggle options" }, "toggleCurrentUris": { - "message": "Toggle Current URIs", + "message": "Toggle current URIs", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1296,7 +1296,7 @@ "message": "Types" }, "allItems": { - "message": "All Items" + "message": "All items" }, "noPasswordsInList": { "message": "There are no passwords to list." @@ -1311,8 +1311,12 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { - "message": "Password Updated", + "message": "Password updated", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1343,7 +1347,7 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Weak Master Password" + "message": "Weak master password" }, "weakMasterPasswordDesc": { "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" @@ -1371,7 +1375,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" @@ -1380,7 +1384,7 @@ "message": "You must select at least one collection." }, "cloneItem": { - "message": "Clone Item" + "message": "Clone item" }, "clone": { "message": "Clone" @@ -1403,40 +1407,40 @@ "message": "Search trash" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Permanently delete item" }, "permanentlyDeleteItemConfirmation": { "message": "Are you sure you want to permanently delete this item?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Item permanently deleted" }, "restoreItem": { - "message": "Restore Item" + "message": "Restore item" }, "restoreItemConfirmation": { "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored Item" + "message": "Item restored" }, "vaultTimeoutLogOutConfirmation": { "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Timeout action confirmation" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Auto-fill and save" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Item auto-filled and URI saved" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Item auto-filled " }, "setMasterPassword": { - "message": "Set Master Password" + "message": "Set master password" }, "masterPasswordPolicyInEffect": { "message": "One or more organization policies require your master password to meet the following requirements:" @@ -1505,19 +1509,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1625,10 +1629,10 @@ "message": "Delete" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,14 +1669,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1808,22 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/kn/messages.json b/apps/browser/src/_locales/kn/messages.json index 5a8ec8a3558..d3a91b54202 100644 --- a/apps/browser/src/_locales/kn/messages.json +++ b/apps/browser/src/_locales/kn/messages.json @@ -59,7 +59,7 @@ "message": "ನನ್ನ ವಾಲ್ಟ್" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "ಉಪಕರಣ" @@ -95,7 +95,7 @@ "message": "ಪಾಸ್ವರ್ಡ್ ರಚಿಸಿ (ನಕಲಿಸಲಾಗಿದೆ)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { "message": "ಹೊಂದಾಣಿಕೆಯ ಲಾಗಿನ್‌ಗಳು ಇಲ್ಲ." @@ -131,10 +131,10 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { - "message": "Code Sent" + "message": "Code sent" }, "verificationCode": { "message": "ಪರಿಶೀಲನಾ ಕೋಡ್‌ಗಳು" @@ -245,7 +245,7 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { "message": "ಪದಗಳ ಸಂಖ್ಯೆ" @@ -339,7 +339,7 @@ "message": "ನಿಮ್ಮ ವೆಬ್ ಬ್ರೌಸರ್ ಸುಲಭವಾದ ಕ್ಲಿಪ್‌ಬೋರ್ಡ್ ನಕಲು ಮಾಡುವುದನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಬದಲಿಗೆ ಅದನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ನಕಲಿಸಿ." }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "ನಿಮ್ಮ ವಾಲ್ಟ್ ಲಾಕ್ ಆಗಿದೆ. ಮುಂದುವರೆಯಲು ನಿಮ್ಮ ಮಾಸ್ಟರ್ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ." @@ -552,7 +552,7 @@ "message": "ಪ್ರಸ್ತುತ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ತಿದ್ದಿಬರೆಯಲು ನೀವು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -1133,7 +1133,7 @@ "message": "ಕೊನೆ ಹೆಸರು" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { "message": "ಹೆಸರು ಗುರುತು" @@ -1311,6 +1311,10 @@ "message": "ಅಪ್‌ಡೇಟ್", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "ಪಾಸ್ವರ್ಡ್ ನವೀಕರಿಸಲಾಗಿದೆ", "description": "ex. Date this password was updated" @@ -1810,16 +1814,16 @@ "message": "ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು ನಿಮ್ಮ ಇಮೇಲ್ ಅನ್ನು ನೀವು ಪರಿಶೀಲಿಸಬೇಕು. ವೆಬ್ ವಾಲ್ಟ್ನಲ್ಲಿ ನಿಮ್ಮ ಇಮೇಲ್ ಅನ್ನು ನೀವು ಪರಿಶೀಲಿಸಬಹುದು." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/ko/messages.json b/apps/browser/src/_locales/ko/messages.json index a8e84cd33e8..b339d9880fa 100644 --- a/apps/browser/src/_locales/ko/messages.json +++ b/apps/browser/src/_locales/ko/messages.json @@ -1311,6 +1311,10 @@ "message": "업데이트됨", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "비밀번호 업데이트됨", "description": "ex. Date this password was updated" @@ -1919,14 +1923,14 @@ "message": "아이디 유형" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1950,7 +1954,7 @@ "message": "서비스" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1972,10 +1976,10 @@ "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/lt/messages.json b/apps/browser/src/_locales/lt/messages.json index 25278ce6da0..1c37c0ef40e 100644 --- a/apps/browser/src/_locales/lt/messages.json +++ b/apps/browser/src/_locales/lt/messages.json @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "Bendrinti" @@ -765,7 +765,7 @@ "message": "Neturite Premium narystės." }, "premiumSignUpAndGet": { - "message": "Sign up for a premium membership and get:" + "message": "Sign up for a Premium membership and get:" }, "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." @@ -783,16 +783,16 @@ "message": "Priority customer support." }, "ppremiumSignUpFuture": { - "message": "All future premium features. More coming soon!" + "message": "All future Premium features. More coming soon!" }, "premiumPurchase": { "message": "Purchase Premium" }, "premiumPurchaseAlert": { - "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "You can purchase Premium membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumCurrentMember": { - "message": "You are a premium member!" + "message": "You are a Premium member!" }, "premiumCurrentMemberThanks": { "message": "Dėkojame, kad remiate Bitwarden." @@ -873,19 +873,19 @@ "message": "Prisijungimas nepasiekiamas" }, "noTwoStepProviders": { - "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + "message": "This account has two-step login set up, however, none of the configured two-step providers are supported by this web browser." }, "noTwoStepProviders2": { "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." }, "twoStepOptions": { - "message": "Two-step Login Options" + "message": "Two-step login options" }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." }, "recoveryCodeTitle": { - "message": "Recovery Code" + "message": "Recovery code" }, "authenticatorAppTitle": { "message": "Autentifikavimo programa" @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "El. paštas" @@ -921,13 +921,13 @@ "message": "Verification codes will be emailed to you." }, "selfHostedEnvironment": { - "message": "Self-hosted Environment" + "message": "Self-hosted environment" }, "selfHostedEnvironmentFooter": { "message": "Specify the base URL of your on-premises hosted Bitwarden installation." }, "customEnvironment": { - "message": "Custom Environment" + "message": "Custom environment" }, "customEnvironmentFooter": { "message": "For advanced users. You can specify the base URL of each service independently." @@ -939,19 +939,19 @@ "message": "API serverio nuoroda" }, "webVaultUrl": { - "message": "Web Vault Server URL" + "message": "Web vault server URL" }, "identityUrl": { - "message": "Identity Server URL" + "message": "Identity server URL" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "Notifications server URL" }, "iconsUrl": { - "message": "Icons Server URL" + "message": "Icons server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "enableAutoFillOnPageLoad": { "message": "Automatiškai užpildyti užsikrovus puslapiui" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -999,10 +999,10 @@ "message": "Private mode support is experimental and some features are limited." }, "customFields": { - "message": "Custom Fields" + "message": "Custom fields" }, "copyValue": { - "message": "Copy Value" + "message": "Copy value" }, "value": { "message": "Value" @@ -1058,10 +1058,10 @@ "message": "Brand" }, "expirationMonth": { - "message": "Expiration Month" + "message": "Expiration month" }, "expirationYear": { - "message": "Expiration Year" + "message": "Expiration year" }, "expiration": { "message": "Expiration" @@ -1226,7 +1226,7 @@ "message": "Logins" }, "secureNotes": { - "message": "Secure Notes" + "message": "Secure notes" }, "clear": { "message": "Clear", @@ -1270,7 +1270,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match Detection", + "message": "Match detection", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1278,10 +1278,10 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Toggle Options" + "message": "Toggle options" }, "toggleCurrentUris": { - "message": "Toggle Current URIs", + "message": "Toggle current URIs", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1296,7 +1296,7 @@ "message": "Types" }, "allItems": { - "message": "All Items" + "message": "All items" }, "noPasswordsInList": { "message": "There are no passwords to list." @@ -1311,8 +1311,12 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { - "message": "Password Updated", + "message": "Password updated", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1371,7 +1375,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" @@ -1380,7 +1384,7 @@ "message": "You must select at least one collection." }, "cloneItem": { - "message": "Clone Item" + "message": "Clone item" }, "clone": { "message": "Clone" @@ -1412,28 +1416,28 @@ "message": "Ištrintas visam laikui" }, "restoreItem": { - "message": "Restore Item" + "message": "Restore item" }, "restoreItemConfirmation": { "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored Item" + "message": "Item restored" }, "vaultTimeoutLogOutConfirmation": { "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Timeout action confirmation" }, "autoFillAndSave": { "message": "Automatiškai užpildyti ir išsaugoti" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Item auto-filled and URI saved" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Item auto-filled " }, "setMasterPassword": { "message": "Pagrindinio slaptažodžio nustatymas" @@ -1505,19 +1509,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrika negali būti naudojama" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1625,10 +1629,10 @@ "message": "Delete" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,14 +1669,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,7 +1808,7 @@ "message": "Negalite šio veiksmo padaryti neįvedus savo pagrindinio slaptažodžio ir patvirtinę tapatybę." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." @@ -1813,13 +1817,13 @@ "message": "Naujasis pagrindinis slaptažodis" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { "message": "Ištrinti pagrindinį slaptažodį" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/lv/messages.json b/apps/browser/src/_locales/lv/messages.json index 622634bb936..8db582bc209 100644 --- a/apps/browser/src/_locales/lv/messages.json +++ b/apps/browser/src/_locales/lv/messages.json @@ -1311,6 +1311,10 @@ "message": "Atjaunināts", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Izveidots", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parole atjaunināta", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/ml/messages.json b/apps/browser/src/_locales/ml/messages.json index cc79141a1c8..42376dcbfa0 100644 --- a/apps/browser/src/_locales/ml/messages.json +++ b/apps/browser/src/_locales/ml/messages.json @@ -59,7 +59,7 @@ "message": "എൻ്റെ വാൾട് " }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "ഉപകരണങ്ങള്‍" @@ -95,7 +95,7 @@ "message": "പാസ്‌വേഡ് സൃഷ്ടിക്കുക (പകർത്തുക )" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { "message": "പൊരുത്തപ്പെടുന്ന ലോഗിനുകളൊന്നുമില്ല." @@ -131,10 +131,10 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { - "message": "Code Sent" + "message": "Code sent" }, "verificationCode": { "message": "പരിശോധിച്ചുറപ്പിക്കൽ കോഡ്" @@ -245,7 +245,7 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { "message": "വാക്കുകളുടെ എണ്ണം" @@ -339,7 +339,7 @@ "message": "നിങ്ങളുടെ ബ്രൌസർ എളുപ്പമുള്ള ക്ലിപ്പ്ബോർഡ് പകർത്തൽ പിന്തുണയ്ക്കത്തില്ല. പകരം അത് സ്വമേധയാ പകർക്കുക ." }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "തങ്ങളുടെ വാൾട് പൂട്ടിയിരിക്കുന്നു. തുടരുന്നതിന് നിങ്ങളുടെ പ്രാഥമിക പാസ്‌വേഡ് പരിശോധിക്കുക." @@ -552,7 +552,7 @@ "message": "നിലവിലെ പാസ്‌വേഡ് പുനരാലേഖനം ചെയ്യണമെന്ന് നിങ്ങൾക്ക് ഉറപ്പാണോ?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -656,7 +656,7 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirm vault export" }, "exportWarningDesc": { "message": "ഈ എക്‌സ്‌പോർട്ടിൽ എൻക്രിപ്റ്റ് ചെയ്യാത്ത ഫോർമാറ്റിൽ നിങ്ങളുടെ വാൾട് ഡാറ്റ അടങ്ങിയിരിക്കുന്നു. എക്‌സ്‌പോർട് ചെയ്ത ഫയൽ സുരക്ഷിതമല്ലാത്ത ചാനലുകളിൽ (ഇമെയിൽ പോലുള്ളവ) നിങ്ങൾ സംഭരിക്കുകയോ അയയ്ക്കുകയോ ചെയ്യരുത്. നിങ്ങൾ ഇത് ഉപയോഗിച്ചുകഴിഞ്ഞാലുടൻ അത് മായ്ച്ചുകളയണം." @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "പങ്കിടുക" @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "ഇമെയിൽ" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -1133,7 +1133,7 @@ "message": "പേരിന്റെ അവസാന ഭാഗം" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { "message": "ഐഡന്റിറ്റിയുടെ പേര്" @@ -1311,6 +1311,10 @@ "message": "പുതുക്കി", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "പാസ്സ്‌വേഡ് പുതുക്കി", "description": "ex. Date this password was updated" @@ -1371,7 +1375,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "ബ്രൌസർ പുനരാരംഭത്തിൽ പ്രാഥമിക പാസ്‌വേഡ് ഉപയോഗിച്ച് ലോക്ക് ചെയ്യുക" @@ -1505,19 +1509,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1625,10 +1629,10 @@ "message": "Delete" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,14 +1669,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1808,22 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/nb/messages.json b/apps/browser/src/_locales/nb/messages.json index 64253459cdf..ce7e40e7765 100644 --- a/apps/browser/src/_locales/nb/messages.json +++ b/apps/browser/src/_locales/nb/messages.json @@ -491,7 +491,7 @@ "message": "Du kan endre superpassordet ditt på bitwarden.net-netthvelvet. Vil du besøke det nettstedet nå?" }, "twoStepLoginConfirmation": { - "message": "2-trinnsinnlogging gjør kontoen din mer sikker, ved å kreve at du verifiserer din innlogging med en annen enhet, f.eks. en autentiseringsapp, SMS, E-post, telefonsamtale, eller sikkerhetsnøkkel. 2-trinnsinnlogging kan aktiveres på bitwarden.com-netthvelvet. Vil du besøke den nettsiden nå?" + "message": "2-trinnsinnlogging gjør kontoen din mer sikker, ved å kreve at du verifiserer din innlogging med en annen enhet, f.eks. en autentiseringsapp, SMS, e-post, telefonsamtale, eller sikkerhetsnøkkel. 2-trinnsinnlogging kan aktiveres i netthvelvet ditt på bitwarden.com. Vil du besøke bitwarden.com nå?" }, "editedFolder": { "message": "Redigerte mappen" @@ -534,7 +534,7 @@ "message": "Ny URI" }, "addedItem": { - "message": "La til gjenstanden" + "message": "La til element" }, "editedItem": { "message": "Redigerte elementet" @@ -783,13 +783,13 @@ "message": "Prioritert kundestøtte." }, "ppremiumSignUpFuture": { - "message": "Alle fremtidige Premium-egenskaper. Mere er planlagt snart!" + "message": "Alle fremtidige Premium-egenskaper. Mer er planlagt og vil komme snart!" }, "premiumPurchase": { "message": "Kjøp Premium" }, "premiumPurchaseAlert": { - "message": "Du kan kjøpe et Premium-medlemskap på bitwarden.net-netthvelvet. Vil du besøke det nettstedet nå?" + "message": "Du kan kjøpe et Premium-medlemskap på bitwarden.com. Vil du besøke det nettstedet nå?" }, "premiumCurrentMember": { "message": "Du er et Premium-medlem!" @@ -1311,6 +1311,10 @@ "message": "Oppdatert den", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Passordet ble oppdatert den", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/nl/messages.json b/apps/browser/src/_locales/nl/messages.json index f1fd5631207..5ae8dd4911a 100644 --- a/apps/browser/src/_locales/nl/messages.json +++ b/apps/browser/src/_locales/nl/messages.json @@ -227,7 +227,7 @@ "message": "Wachtwoord genereren" }, "regeneratePassword": { - "message": "Opnieuw genereren" + "message": "Wachtwoord opnieuw genereren" }, "options": { "message": "Opties" @@ -996,7 +996,7 @@ "message": "Kluis vergrendelen" }, "privateModeWarning": { - "message": "Private mode support is experimental and some features are limited." + "message": "Private mode ondersteuning is experimenteel en sommige functies zijn beperkt." }, "customFields": { "message": "Aangepaste velden" @@ -1127,7 +1127,7 @@ "message": "Voornaam" }, "middleName": { - "message": "Tweede naam" + "message": "Tussenvoegsel" }, "lastName": { "message": "Achternaam" @@ -1311,6 +1311,10 @@ "message": "Bijgewerkt", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Wachtwoord bijgewerkt", "description": "ex. Date this password was updated" @@ -1999,16 +2003,16 @@ "message": "om terug te gaan naar vooraf geconfigureerde instellingen" }, "serverVersion": { - "message": "Server Version" + "message": "Serverversie" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Zelfgehost" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { - "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", + "message": "Verbonden met server implementatie van derden, $SERVERNAME$. Reproduceer bugs via de officiële server, of meld ze bij het serverproject.", "placeholders": { "servername": { "content": "$1", @@ -2017,7 +2021,7 @@ } }, "lastSeenOn": { - "message": "last seen on: $DATE$", + "message": "laatst gezien op: $DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/src/_locales/nn/messages.json b/apps/browser/src/_locales/nn/messages.json index d7e586da741..ae21dc164c5 100644 --- a/apps/browser/src/_locales/nn/messages.json +++ b/apps/browser/src/_locales/nn/messages.json @@ -14,13 +14,13 @@ "message": "Log in or create a new account to access your secure vault." }, "createAccount": { - "message": "Create Account" + "message": "Create account" }, "login": { - "message": "Log In" + "message": "Log in" }, "enterpriseSingleSignOn": { - "message": "Enterprise Single Sign-On" + "message": "Enterprise single sign-on" }, "cancel": { "message": "Cancel" @@ -32,10 +32,10 @@ "message": "Submit" }, "emailAddress": { - "message": "Email Address" + "message": "Email address" }, "masterPass": { - "message": "Master Password" + "message": "Master password" }, "masterPassDesc": { "message": "The master password is the password you use to access your vault. It is very important that you do not forget your master password. There is no way to recover the password in the event that you forget it." @@ -44,10 +44,10 @@ "message": "A master password hint can help you remember your password if you forget it." }, "reTypeMasterPass": { - "message": "Re-type Master Password" + "message": "Re-type master password" }, "masterPassHint": { - "message": "Master Password Hint (optional)" + "message": "Master password hint (optional)" }, "tab": { "message": "Tab" @@ -56,10 +56,10 @@ "message": "Vault" }, "myVault": { - "message": "My Vault" + "message": "My vault" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "Tools" @@ -68,37 +68,37 @@ "message": "Settings" }, "currentTab": { - "message": "Current Tab" + "message": "Current tab" }, "copyPassword": { - "message": "Copy Password" + "message": "Copy password" }, "copyNote": { - "message": "Copy Note" + "message": "Copy note" }, "copyUri": { "message": "Copy URI" }, "copyUsername": { - "message": "Copy Username" + "message": "Copy username" }, "copyNumber": { - "message": "Copy Number" + "message": "Copy number" }, "copySecurityCode": { - "message": "Copy Security Code" + "message": "Copy security code" }, "autoFill": { "message": "Auto-fill" }, "generatePasswordCopied": { - "message": "Generate Password (copied)" + "message": "Generate password (copied)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { - "message": "No matching logins." + "message": "No matching logins" }, "unlockVaultMenu": { "message": "Unlock your vault" @@ -110,13 +110,13 @@ "message": "There are no logins available to auto-fill for the current browser tab." }, "addLogin": { - "message": "Add a Login" + "message": "Add a login" }, "addItem": { - "message": "Add Item" + "message": "Add item" }, "passwordHint": { - "message": "Password Hint" + "message": "Password hint" }, "enterEmailToGetHint": { "message": "Enter your account email address to receive your master password hint." @@ -131,13 +131,13 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { - "message": "Code Sent" + "message": "Code sent" }, "verificationCode": { - "message": "Verification Code" + "message": "Verification code" }, "confirmIdentity": { "message": "Confirm your identity to continue." @@ -175,16 +175,16 @@ "message": "Move" }, "addFolder": { - "message": "Add Folder" + "message": "Add folder" }, "name": { "message": "Name" }, "editFolder": { - "message": "Edit Folder" + "message": "Edit folder" }, "deleteFolder": { - "message": "Delete Folder" + "message": "Delete folder" }, "folders": { "message": "Folders" @@ -199,13 +199,13 @@ "message": "Sync" }, "syncVaultNow": { - "message": "Sync Vault Now" + "message": "Sync vault now" }, "lastSync": { - "message": "Last Sync:" + "message": "Last sync:" }, "passGen": { - "message": "Password Generator" + "message": "Password generator" }, "generator": { "message": "Generator", @@ -224,10 +224,10 @@ "message": "Select" }, "generatePassword": { - "message": "Generate Password" + "message": "Generate password" }, "regeneratePassword": { - "message": "Regenerate Password" + "message": "Regenerate password" }, "options": { "message": "Options" @@ -245,29 +245,29 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { - "message": "Number of Words" + "message": "Number of words" }, "wordSeparator": { - "message": "Word Separator" + "message": "Word separator" }, "capitalize": { "message": "Capitalize", "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Include Number" + "message": "Include number" }, "minNumbers": { - "message": "Minimum Numbers" + "message": "Minimum numbers" }, "minSpecial": { - "message": "Minimum Special" + "message": "Minimum special" }, "avoidAmbChar": { - "message": "Avoid Ambiguous Characters" + "message": "Avoid ambiguous characters" }, "searchVault": { "message": "Search vault" @@ -282,7 +282,7 @@ "message": "There are no items to list." }, "itemInformation": { - "message": "Item Information" + "message": "Item information" }, "username": { "message": "Username" @@ -303,16 +303,16 @@ "message": "Note" }, "editItem": { - "message": "Edit Item" + "message": "Edit item" }, "folder": { "message": "Folder" }, "deleteItem": { - "message": "Delete Item" + "message": "Delete item" }, "viewItem": { - "message": "View Item" + "message": "View item" }, "launch": { "message": "Launch" @@ -321,7 +321,7 @@ "message": "Website" }, "toggleVisibility": { - "message": "Toggle Visibility" + "message": "Toggle visibility" }, "manage": { "message": "Manage" @@ -339,7 +339,7 @@ "message": "Your web browser does not support easy clipboard copying. Copy it manually instead." }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "Your vault is locked. Verify your identity to continue." @@ -482,28 +482,28 @@ "message": "Name is required." }, "addedFolder": { - "message": "Added folder" + "message": "Folder added" }, "changeMasterPass": { - "message": "Change Master Password" + "message": "Change master password" }, "changeMasterPasswordConfirmation": { "message": "You can change your master password on the bitwarden.com web vault. Do you want to visit the website now?" }, "twoStepLoginConfirmation": { - "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be set up on the bitwarden.com web vault. Do you want to visit the website now?" }, "editedFolder": { - "message": "Edited folder" + "message": "Folder saved" }, "deleteFolderConfirmation": { "message": "Are you sure you want to delete this folder?" }, "deletedFolder": { - "message": "Deleted folder" + "message": "Folder deleted" }, "gettingStartedTutorial": { - "message": "Getting Started Tutorial" + "message": "Getting started tutorial" }, "gettingStartedTutorialVideo": { "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." @@ -534,25 +534,25 @@ "message": "New URI" }, "addedItem": { - "message": "Added item" + "message": "Item added" }, "editedItem": { - "message": "Edited item" + "message": "Item saved" }, "deleteItemConfirmation": { "message": "Do you really want to send to the trash?" }, "deletedItem": { - "message": "Sent item to trash" + "message": "Item sent to trash" }, "overwritePassword": { - "message": "Overwrite Password" + "message": "Overwrite password" }, "overwritePasswordConfirmation": { "message": "Are you sure you want to overwrite the current password?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -567,7 +567,7 @@ "message": "Search type" }, "noneFolder": { - "message": "No Folder", + "message": "No folder", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -649,14 +649,14 @@ "message": "Export vault" }, "fileFormat": { - "message": "File Format" + "message": "File format" }, "warning": { "message": "WARNING", "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirm vault export" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "Share" @@ -705,13 +705,13 @@ "message": "Learn more" }, "authenticatorKeyTotp": { - "message": "Authenticator Key (TOTP)" + "message": "Authenticator key (TOTP)" }, "verificationCodeTotp": { - "message": "Verification Code (TOTP)" + "message": "Verification code (TOTP)" }, "copyVerificationCode": { - "message": "Copy Verification Code" + "message": "Copy verification code" }, "attachments": { "message": "Attachments" @@ -723,28 +723,28 @@ "message": "Are you sure you want to delete this attachment?" }, "deletedAttachment": { - "message": "Deleted attachment" + "message": "Attachment deleted" }, "newAttachment": { - "message": "Add New Attachment" + "message": "Add new attachment" }, "noAttachments": { "message": "No attachments." }, "attachmentSaved": { - "message": "The attachment has been saved." + "message": "Attachment saved" }, "file": { "message": "File" }, "selectFile": { - "message": "Select a file." + "message": "Select a file" }, "maxFileSize": { "message": "Maximum file size is 500 MB." }, "featureUnavailable": { - "message": "Feature Unavailable" + "message": "Feature unavailable" }, "updateKey": { "message": "You cannot use this feature until you update your encryption key." @@ -753,19 +753,19 @@ "message": "Premium membership" }, "premiumManage": { - "message": "Manage Membership" + "message": "Manage membership" }, "premiumManageAlert": { "message": "You can manage your membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumRefresh": { - "message": "Refresh Membership" + "message": "Refresh membership" }, "premiumNotCurrentMember": { - "message": "You are not currently a premium member." + "message": "You are not currently a Premium member." }, "premiumSignUpAndGet": { - "message": "Sign up for a premium membership and get:" + "message": "Sign up for a Premium membership and get:" }, "ppremiumSignUpStorage": { "message": "1 GB encrypted storage for file attachments." @@ -783,16 +783,16 @@ "message": "Priority customer support." }, "ppremiumSignUpFuture": { - "message": "All future premium features. More coming soon!" + "message": "All future Premium features. More coming soon!" }, "premiumPurchase": { "message": "Purchase Premium" }, "premiumPurchaseAlert": { - "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "You can purchase Premium membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumCurrentMember": { - "message": "You are a premium member!" + "message": "You are a Premium member!" }, "premiumCurrentMemberThanks": { "message": "Thank you for supporting Bitwarden." @@ -819,10 +819,10 @@ "message": "Ask for biometrics on launch" }, "premiumRequired": { - "message": "Premium Required" + "message": "Premium required" }, "premiumRequiredDesc": { - "message": "A premium membership is required to use this feature." + "message": "A Premium membership is required to use this feature." }, "enterVerificationCodeApp": { "message": "Enter the 6 digit verification code from your authenticator app." @@ -870,25 +870,25 @@ "message": "Authenticate WebAuthn" }, "loginUnavailable": { - "message": "Login Unavailable" + "message": "Login unavailable" }, "noTwoStepProviders": { - "message": "This account has two-step login enabled, however, none of the configured two-step providers are supported by this web browser." + "message": "This account has two-step login set up, however, none of the configured two-step providers are supported by this web browser." }, "noTwoStepProviders2": { "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." }, "twoStepOptions": { - "message": "Two-step Login Options" + "message": "Two-step login options" }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." }, "recoveryCodeTitle": { - "message": "Recovery Code" + "message": "Recovery code" }, "authenticatorAppTitle": { - "message": "Authenticator App" + "message": "Authenticator app" }, "authenticatorAppDesc": { "message": "Use an authenticator app (such as Authy or Google Authenticator) to generate time-based verification codes.", @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "Email" @@ -921,13 +921,13 @@ "message": "Verification codes will be emailed to you." }, "selfHostedEnvironment": { - "message": "Self-hosted Environment" + "message": "Self-hosted environment" }, "selfHostedEnvironmentFooter": { "message": "Specify the base URL of your on-premises hosted Bitwarden installation." }, "customEnvironment": { - "message": "Custom Environment" + "message": "Custom environment" }, "customEnvironmentFooter": { "message": "For advanced users. You can specify the base URL of each service independently." @@ -939,19 +939,19 @@ "message": "API Server URL" }, "webVaultUrl": { - "message": "Web Vault Server URL" + "message": "Web vault server URL" }, "identityUrl": { - "message": "Identity Server URL" + "message": "Identity server URL" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "Notifications server URL" }, "iconsUrl": { - "message": "Icons Server URL" + "message": "Icons server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -999,16 +999,16 @@ "message": "Private mode support is experimental and some features are limited." }, "customFields": { - "message": "Custom Fields" + "message": "Custom fields" }, "copyValue": { - "message": "Copy Value" + "message": "Copy value" }, "value": { "message": "Value" }, "newCustomField": { - "message": "New Custom Field" + "message": "New custom field" }, "dragToSort": { "message": "Drag to sort" @@ -1049,7 +1049,7 @@ "message": "Indicate how many logins you have for the current web page." }, "cardholderName": { - "message": "Cardholder Name" + "message": "Cardholder name" }, "number": { "message": "Number" @@ -1058,10 +1058,10 @@ "message": "Brand" }, "expirationMonth": { - "message": "Expiration Month" + "message": "Expiration month" }, "expirationYear": { - "message": "Expiration Year" + "message": "Expiration year" }, "expiration": { "message": "Expiration" @@ -1103,7 +1103,7 @@ "message": "December" }, "securityCode": { - "message": "Security Code" + "message": "Security code" }, "ex": { "message": "ex." @@ -1124,31 +1124,31 @@ "message": "Dr" }, "firstName": { - "message": "First Name" + "message": "First name" }, "middleName": { - "message": "Middle Name" + "message": "Middle name" }, "lastName": { - "message": "Last Name" + "message": "Last name" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { - "message": "Identity Name" + "message": "Identity name" }, "company": { "message": "Company" }, "ssn": { - "message": "Social Security Number" + "message": "Social Security number" }, "passportNumber": { - "message": "Passport Number" + "message": "Passport number" }, "licenseNumber": { - "message": "License Number" + "message": "License number" }, "email": { "message": "Email" @@ -1175,7 +1175,7 @@ "message": "State / Province" }, "zipPostalCode": { - "message": "Zip / Postal Code" + "message": "Zip / Postal code" }, "country": { "message": "Country" @@ -1190,7 +1190,7 @@ "message": "Logins" }, "typeSecureNote": { - "message": "Secure Note" + "message": "Secure note" }, "typeCard": { "message": "Card" @@ -1199,7 +1199,7 @@ "message": "Identity" }, "passwordHistory": { - "message": "Password History" + "message": "Password history" }, "back": { "message": "Back" @@ -1226,7 +1226,7 @@ "message": "Logins" }, "secureNotes": { - "message": "Secure Notes" + "message": "Secure notes" }, "clear": { "message": "Clear", @@ -1270,7 +1270,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match Detection", + "message": "Match detection", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1278,10 +1278,10 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Toggle Options" + "message": "Toggle options" }, "toggleCurrentUris": { - "message": "Toggle Current URIs", + "message": "Toggle current URIs", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1296,7 +1296,7 @@ "message": "Types" }, "allItems": { - "message": "All Items" + "message": "All items" }, "noPasswordsInList": { "message": "There are no passwords to list." @@ -1311,8 +1311,12 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { - "message": "Password Updated", + "message": "Password updated", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1343,7 +1347,7 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Weak Master Password" + "message": "Weak master password" }, "weakMasterPasswordDesc": { "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" @@ -1371,7 +1375,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" @@ -1380,7 +1384,7 @@ "message": "You must select at least one collection." }, "cloneItem": { - "message": "Clone Item" + "message": "Clone item" }, "clone": { "message": "Clone" @@ -1403,40 +1407,40 @@ "message": "Search trash" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Permanently delete item" }, "permanentlyDeleteItemConfirmation": { "message": "Are you sure you want to permanently delete this item?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Item permanently deleted" }, "restoreItem": { - "message": "Restore Item" + "message": "Restore item" }, "restoreItemConfirmation": { "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored Item" + "message": "Item restored" }, "vaultTimeoutLogOutConfirmation": { "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Timeout action confirmation" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Auto-fill and save" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Item auto-filled and URI saved" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Item auto-filled " }, "setMasterPassword": { - "message": "Set Master Password" + "message": "Set master password" }, "masterPasswordPolicyInEffect": { "message": "One or more organization policies require your master password to meet the following requirements:" @@ -1505,19 +1509,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1625,10 +1629,10 @@ "message": "Delete" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,14 +1669,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1808,22 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/pl/messages.json b/apps/browser/src/_locales/pl/messages.json index cc5e8dcff1c..c4682d106ed 100644 --- a/apps/browser/src/_locales/pl/messages.json +++ b/apps/browser/src/_locales/pl/messages.json @@ -32,7 +32,7 @@ "message": "Wyślij" }, "emailAddress": { - "message": "Adres e-mail" + "message": "Adres email" }, "masterPass": { "message": "Hasło główne" @@ -56,7 +56,7 @@ "message": "Sejf" }, "myVault": { - "message": "Mój sejf" + "message": "Mój Sejf" }, "allVaults": { "message": "Wszystkie sejfy" @@ -68,31 +68,31 @@ "message": "Ustawienia" }, "currentTab": { - "message": "Obecna karta" + "message": "Bieżąca karta" }, "copyPassword": { - "message": "Kopiuj hasło" + "message": "Skopiuj hasło" }, "copyNote": { - "message": "Kopiuj notatkę" + "message": "Skopiuj notatkę" }, "copyUri": { "message": "Kopiuj URI" }, "copyUsername": { - "message": "Kopiuj nazwę użytkownika" + "message": "Skopiuj nazwę użytkownika" }, "copyNumber": { - "message": "Kopiuj numer" + "message": "Skopiuj numer" }, "copySecurityCode": { - "message": "Kopiuj kod zabezpieczający" + "message": "Skopiuj kod zabezpieczający" }, "autoFill": { "message": "Autouzupełnianie" }, "generatePasswordCopied": { - "message": "Generuj hasło (do schowka)" + "message": "Wygeneruj hasło (do schowka)" }, "copyElementIdentifier": { "message": "Kopiuj nazwę pola niestandardowego" @@ -199,7 +199,7 @@ "message": "Synchronizacja" }, "syncVaultNow": { - "message": "Synchronizuj sejf" + "message": "Rozpocznij synchronizację sejfu" }, "lastSync": { "message": "Ostatnia synchronizacja:" @@ -1311,6 +1311,10 @@ "message": "Zaktualizowano", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Utworzono", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Aktualizacja hasła", "description": "ex. Date this password was updated" @@ -1810,16 +1814,16 @@ "message": "Musisz zweryfikować adres e-mail, aby korzystać z tej funkcji. Adres możesz zweryfikować w sejfie internetowym." }, "updatedMasterPassword": { - "message": "Hasło główne zostało zaktualizowane" + "message": "Zaktualizowane hasło główne" }, "updateMasterPassword": { "message": "Zaktualizuj hasło główne" }, "updateMasterPasswordWarning": { - "message": "Hasło główne zostało zmienione przez administratora Twojej organizacji. Musisz je zaktualizować, aby uzyskać dostęp do sejfu. Ta czynność spowoduje wylogowanie z bieżącej sesji, przez co konieczne będzie ponowne zalogowanie się. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie godzinę." + "message": "Twoje hasło główne zostało ostatnio zmienione przez administratora Twojej organizacji. Musisz je teraz zaktualizować, aby uzyskać dostęp do sejfu. W przypadku kontynuacji nastąpi wylogowanie z bieżącej sesji, przez co konieczne będzie ponowne zalogowanie się. Aktywne sesje na innych urządzeniach mogą pozostać aktywne przez maksymalnie jedną godzinę." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatyczne rejestrowanie użytkowników do resetowania hasła" + "message": "Automatyczne rejestrowanie użytkowników" }, "resetPasswordAutoEnrollInviteWarning": { "message": "Ta organizacja posługuje się zasadą, która automatycznie rejestruje użytkowników do resetowania hasła. Rejestracja umożliwia administratorom organizacji zmianę Twojego hasła głównego." @@ -1853,7 +1857,7 @@ "message": "Czas blokowania sejfu przekracza limit określony przez organizację." }, "vaultExportDisabled": { - "message": "Eksportowanie sejfu zostało wyłączone" + "message": "Eksport sejfu wyłączony" }, "personalVaultExportPolicyInEffect": { "message": "Co najmniej jedna zasada organizacji uniemożliwia wyeksportowanie Twojego sejfu." diff --git a/apps/browser/src/_locales/pt_BR/messages.json b/apps/browser/src/_locales/pt_BR/messages.json index fe9428998ab..0714076bbda 100644 --- a/apps/browser/src/_locales/pt_BR/messages.json +++ b/apps/browser/src/_locales/pt_BR/messages.json @@ -110,7 +110,7 @@ "message": "Não há credenciais disponíveis para autopreenchimento para a aba do navegador atual." }, "addLogin": { - "message": "Adicionar uma Credencial" + "message": "Adicionar um Login" }, "addItem": { "message": "Adicionar Item" @@ -261,10 +261,10 @@ "message": "Incluir Número" }, "minNumbers": { - "message": "Mínimo de Números" + "message": "Números Mínimos" }, "minSpecial": { - "message": "Mínimo Especial" + "message": "Especiais Mínimos" }, "avoidAmbChar": { "message": "Evitar Caracteres Ambíguos" @@ -491,7 +491,7 @@ "message": "Você pode alterar a sua senha mestra no cofre web em bitwarden.com. Você deseja visitar o site agora?" }, "twoStepLoginConfirmation": { - "message": "O login em duas etapas torna a sua conta mais segura ao exigir que você verifique seu login com outro dispositivo como uma chave de segurança, aplicativo de autenticação, SMS, ligação telefônica, ou e-mail. O login em duas etapas pode ser ativado no cofre web em bitwarden.com. Você deseja visitar o site agora?" + "message": "O login de duas etapas torna a sua conta mais segura ao exigir que digite um código de segurança de um aplicativo de autenticação quando for iniciar a sessão. O login de duas etapas pode ser ativado no cofre web bitwarden.com. Deseja visitar o site agora?" }, "editedFolder": { "message": "Pasta Editada" @@ -543,7 +543,7 @@ "message": "Você tem certeza que deseja enviar este item para a lixeira?" }, "deletedItem": { - "message": "Enviar item para lixeira" + "message": "Item excluído" }, "overwritePassword": { "message": "Sobrescrever Senha" @@ -762,10 +762,10 @@ "message": "Atualizar Assinatura" }, "premiumNotCurrentMember": { - "message": "Você não é um membro premium atualmente." + "message": "Você não é atualmente um membro premium." }, "premiumSignUpAndGet": { - "message": "Registre-se para uma assinatura premium e obtenha:" + "message": "Registe-se para uma assinatura premium e obtenha:" }, "ppremiumSignUpStorage": { "message": "1 GB de armazenamento de arquivos encriptados." @@ -873,7 +873,7 @@ "message": "Sessão Indisponível" }, "noTwoStepProviders": { - "message": "Esta conta tem a verificação em duas etapas ativado, no entanto, nenhum dos provedores de verificação em duas etapas configurados são suportados por este navegador web." + "message": "Esta conta tem a verificação de duas etapas ativado, no entanto, nenhum dos provedores de verificação de duas etapas configurados são suportados por este navegador web." }, "noTwoStepProviders2": { "message": "Por favor utilize um navegador web suportado (tal como o Chrome) e/ou inclua provedores adicionais que são melhor suportados entre navegadores web (tal como uma aplicativo de autenticação)." @@ -1130,7 +1130,7 @@ "message": "Nome do Meio" }, "lastName": { - "message": "Sobrenome" + "message": "Último Nome" }, "fullName": { "message": "Nome Completo" @@ -1142,7 +1142,7 @@ "message": "Empresa" }, "ssn": { - "message": "Cadastro de Pessoas Físicas (CPF)" + "message": "Número de Segurança Social" }, "passportNumber": { "message": "Número do Passaporte" @@ -1311,6 +1311,10 @@ "message": "Atualizado", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Senha Atualizada", "description": "ex. Date this password was updated" @@ -1505,10 +1509,10 @@ "message": "Por favor, verifique se o aplicativo desktop mostra esta impressão digital: " }, "desktopIntegrationDisabledTitle": { - "message": "A integração com o navegador não está ativada" + "message": "A integração com o navegador não está habilitada" }, "desktopIntegrationDisabledDesc": { - "message": "A integração com o navegador não está ativada no aplicativo Bitwarden Desktop. Por favor, ative-a nas configurações do aplicativo desktop." + "message": "A integração com o navegador não está habilitada no aplicativo Bitwarden Desktop. Por favor, habilite-a nas configurações do aplicativo desktop." }, "startDesktopTitle": { "message": "Iniciar o aplicativo Bitwarden Desktop" @@ -1538,7 +1542,7 @@ "message": "Biometria não ativada" }, "biometricsNotEnabledDesc": { - "message": "A biometria com o navegador requer que a biometria de desktop seja ativada nas configurações primeiro." + "message": "A biometria com o navegador requer que a biometria de desktop seja habilitada nas configurações primeiro." }, "biometricsNotSupportedTitle": { "message": "Biometria não suportada" diff --git a/apps/browser/src/_locales/pt_PT/messages.json b/apps/browser/src/_locales/pt_PT/messages.json index 43e2dfd7bda..93aed50622c 100644 --- a/apps/browser/src/_locales/pt_PT/messages.json +++ b/apps/browser/src/_locales/pt_PT/messages.json @@ -32,10 +32,10 @@ "message": "Submeter" }, "emailAddress": { - "message": "Endereço de email" + "message": "Endereço de Email" }, "masterPass": { - "message": "Palavra-passe mestra" + "message": "Palavra-passe Mestra" }, "masterPassDesc": { "message": "A palavra-passe mestra é a palavra-passe que utiliza para aceder ao seu cofre. É muito importante que não se esqueça da sua palavra-passe mestra. Não existe maneira de recuperar a palavra-passe no caso de a esquecer." @@ -44,10 +44,10 @@ "message": "Uma dica da palavra-passe mestra pode ajudar a lembrar-se da sua palavra-passe se a esquecer." }, "reTypeMasterPass": { - "message": "Reescreva a palavra-passe mestra" + "message": "Re-digite a palavra-passe mestra" }, "masterPassHint": { - "message": "Dica da palavra-passe mestra (opcional)" + "message": "Dica da Palavra-passe Mestra (opcional)" }, "tab": { "message": "Separador" @@ -56,7 +56,7 @@ "message": "Cofre" }, "myVault": { - "message": "Meu cofre" + "message": "O meu Cofre" }, "allVaults": { "message": "Todos os Cofres" @@ -68,10 +68,10 @@ "message": "Definições" }, "currentTab": { - "message": "Separador atual" + "message": "Separador Atual" }, "copyPassword": { - "message": "Copiar palavra-passe" + "message": "Copiar Palavra-passe" }, "copyNote": { "message": "Copiar nota" @@ -80,10 +80,10 @@ "message": "Copiar URI" }, "copyUsername": { - "message": "Copiar nome de utilizador" + "message": "Copiar Nome de Utilizador" }, "copyNumber": { - "message": "Copiar número" + "message": "Copiar Número" }, "copySecurityCode": { "message": "Copiar código de segurança" @@ -92,7 +92,7 @@ "message": "Auto-preencher" }, "generatePasswordCopied": { - "message": "Gerar palavra-passe (copiada)" + "message": "Gerar Palavra-passe (copiada)" }, "copyElementIdentifier": { "message": "Copiar nome do campo personalizado" @@ -113,7 +113,7 @@ "message": "Adicionar uma credencial" }, "addItem": { - "message": "Adicionar item" + "message": "Adicionar Item" }, "passwordHint": { "message": "Dica da palavra-passe" @@ -137,7 +137,7 @@ "message": "Código enviado" }, "verificationCode": { - "message": "Código de verificação" + "message": "Código de Verificação" }, "confirmIdentity": { "message": "Confirme a sua identidade para continuar." @@ -175,13 +175,13 @@ "message": "Mover" }, "addFolder": { - "message": "Adicionar pasta" + "message": "Adicionar Pasta" }, "name": { "message": "Nome" }, "editFolder": { - "message": "Editar pasta" + "message": "Editar Pasta" }, "deleteFolder": { "message": "Eliminar pasta" @@ -264,7 +264,7 @@ "message": "Números mínimos" }, "minSpecial": { - "message": "Especiais mínimos" + "message": "Especiais minímos" }, "avoidAmbChar": { "message": "Evitar caracteres ambíguos" @@ -309,7 +309,7 @@ "message": "Pasta" }, "deleteItem": { - "message": "Eliminar item" + "message": "Apagar item" }, "viewItem": { "message": "Ver item" @@ -723,7 +723,7 @@ "message": "Tem a certeza de que deseja eliminar este anexo?" }, "deletedAttachment": { - "message": "Anexo eliminado" + "message": "Anexo apagado" }, "newAttachment": { "message": "Adicionar novo anexo" @@ -1311,6 +1311,10 @@ "message": "Atualizado", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Criado", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Palavra-passe atualizada", "description": "ex. Date this password was updated" @@ -1514,10 +1518,10 @@ "message": "Iniciar a aplicação Bitwarden Desktop" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1672,7 +1676,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,7 +1808,7 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." @@ -1816,7 +1820,7 @@ "message": "Atualizar Senha Mestra" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { "message": "Inscrição Automática" @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1919,14 +1923,14 @@ "message": "Tipo de Nome de Utilizador" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1950,7 +1954,7 @@ "message": "Serviço" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "Chave da API" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Subscrição premium necessária" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "para voltar às definições predefinidas" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/ro/messages.json b/apps/browser/src/_locales/ro/messages.json index aef801e1bb2..d8e719f6aac 100644 --- a/apps/browser/src/_locales/ro/messages.json +++ b/apps/browser/src/_locales/ro/messages.json @@ -17,10 +17,10 @@ "message": "Creare cont" }, "login": { - "message": "Autentificare" + "message": "Conectare" }, "enterpriseSingleSignOn": { - "message": "Conectare unică organizație (SSO)" + "message": "Conectare unică organizație" }, "cancel": { "message": "Anulare" @@ -98,7 +98,7 @@ "message": "Copiere nume de câmp personalizat" }, "noMatchingLogins": { - "message": "Nu există potrivire de autentificări." + "message": "Nu există potrivire de autentificări" }, "unlockVaultMenu": { "message": "Deblocați-vă seiful" @@ -282,7 +282,7 @@ "message": "Nu există niciun articol de afișat." }, "itemInformation": { - "message": "Informații de autentificare" + "message": "Informații despre articol" }, "username": { "message": "Nume utilizator" @@ -491,10 +491,10 @@ "message": "Puteți modifica parola principală în seiful web bitwarden.com. Doriți să vizitați saitul acum?" }, "twoStepLoginConfirmation": { - "message": "Autentificarea în două etape întărește siguranța contului dvs. prin solicitarea unei confirmări de autentificare cu un alt dispozitiv, cum ar fi: o cheie de securitate, o aplicație de autentificare, un SMS, un apel telefonic sau un e-mail. Autentificarea în două etape poate fi activată în seiful web bitwarden.com. Doriți să vizitați saitul acum?" + "message": "Autentificarea în două etape vă face contul mai sigur, prin solicitarea unei verificări de autentificare cu un alt dispozitiv, cum ar fi o cheie de securitate, o aplicație de autentificare, un SMS, un apel telefonic sau un e-mail. Autentificarea în două etape poate fi configurată în seiful web bitwarden.com. Doriți să vizitați site-ul web acum?" }, "editedFolder": { - "message": "Dosar editat" + "message": "Dosar salvat" }, "deleteFolderConfirmation": { "message": "Sigur doriți să ștergeți dosarul?" @@ -503,7 +503,7 @@ "message": "Dosar șters" }, "gettingStartedTutorial": { - "message": "Tutorial introductiv" + "message": "Tutorial de inițiere" }, "gettingStartedTutorialVideo": { "message": "Urmăriți tutorialul nostru pentru a afla cum să beneficiați cât mai mult de această extensie a browserului." @@ -537,22 +537,22 @@ "message": "Articol adăugat" }, "editedItem": { - "message": "Articol editat" + "message": "Articol salvat" }, "deleteItemConfirmation": { "message": "Sigur doriți să trimiteți în coșul de reciclare?" }, "deletedItem": { - "message": "Articolul a fost trimis în coșul de reciclare" + "message": "Articolul a fost trimis la gunoi" }, "overwritePassword": { - "message": "Modificare parolă" + "message": "Suprascriere parolă" }, "overwritePasswordConfirmation": { "message": "Sigur doriți să modificați parola curentă?" }, "overwriteUsername": { - "message": "Suprascrieți numele de utilizator" + "message": "Suprascriere nume de utilizator" }, "overwriteUsernameConfirmation": { "message": "Sunteți sigur că doriți să suprascrieți numele de utilizator curent?" @@ -705,7 +705,7 @@ "message": "Aflați mai multe" }, "authenticatorKeyTotp": { - "message": "Cheie autentificare (TOTP)" + "message": "Cheie de autentificare (TOTP)" }, "verificationCodeTotp": { "message": "Cod de verificare (TOTP)" @@ -732,19 +732,19 @@ "message": "Niciun atașament." }, "attachmentSaved": { - "message": "Atașamentul a fost salvat." + "message": "Atașamentul a fost salvat" }, "file": { "message": "Fișier" }, "selectFile": { - "message": "Selectare fișier." + "message": "Selectare fișier" }, "maxFileSize": { "message": "Mărimea maximă a fișierului este de 500 MB." }, "featureUnavailable": { - "message": "Caracteristică indisponibilă" + "message": "Funcție indisponibilă" }, "updateKey": { "message": "Nu puteți utiliza această caracteristică înainte de a actualiza cheia de criptare." @@ -783,13 +783,13 @@ "message": "Asistență prioritară pentru clienți." }, "ppremiumSignUpFuture": { - "message": "Toate caracteristicile Premium viitoare. Mai multe în curând!" + "message": "Toate funcțiile Premium viitoare. Mai multe în curând!" }, "premiumPurchase": { "message": "Achiziționare abonament Premium" }, "premiumPurchaseAlert": { - "message": "Puteți achiziționa un abonament premium pe saitul web bitwarden.com. Doriți să vizitați saitul acum?" + "message": "Puteți achiziționa un abonament Premium pe website-ul bitwarden.com. Doriți să vizitați site-ul acum?" }, "premiumCurrentMember": { "message": "Sunteți un membru Premium!" @@ -819,10 +819,10 @@ "message": "Solicitați date biometrice la pornire" }, "premiumRequired": { - "message": "Este necesară versiunea Premium" + "message": "Premium necesar" }, "premiumRequiredDesc": { - "message": "Este necesar statutul de membru Premium pentru a utiliza această caracteristică." + "message": "Pentru a utiliza această funcție este necesar un abonament Premium." }, "enterVerificationCodeApp": { "message": "Introducere cod de verificare din 6 cifre din aplicația de autentificare." @@ -870,10 +870,10 @@ "message": "Autentificare WebAuthn" }, "loginUnavailable": { - "message": "Conectare indisponibilă" + "message": "Autentificare indisponibilă" }, "noTwoStepProviders": { - "message": "Acest cont are activată autentificarea în două etape, dar niciunul dintre furnizorii configurați pentru aceasta nu este acceptat de acest browser web." + "message": "Acest cont are autentificarea în doi etape activată, dar niciunul dintre furnizorii în două etape configurați nu este acceptat de acest browser web." }, "noTwoStepProviders2": { "message": "Utilizați un browser acceptat (cum ar fi Chrome) și/sau adăugați furnizori suplimentari mai bine susținuți de browserele web (cum ar fi o aplicație de autentificare)." @@ -888,7 +888,7 @@ "message": "Cod de recuperare" }, "authenticatorAppTitle": { - "message": "Aplicație de autentificare" + "message": "Aplicația Authenticator" }, "authenticatorAppDesc": { "message": "Utilizați o aplicație de autentificare (cum ar fi Authy sau Google Authenticator) pentru a genera codurile de verificare bazate pe timp.", @@ -921,7 +921,7 @@ "message": "Codurile de verificare vor fi trimise prin e-mail." }, "selfHostedEnvironment": { - "message": "Mediu de găzduire personal" + "message": "Mediu autogăzduit" }, "selfHostedEnvironmentFooter": { "message": "Specificați URL-ul de bază al implementări Bitwarden găzduită local." @@ -939,7 +939,7 @@ "message": "URL server API" }, "webVaultUrl": { - "message": "URL server seif Web" + "message": "URL server seif web" }, "identityUrl": { "message": "URL server de identificare" @@ -948,10 +948,10 @@ "message": "URL server de notificări" }, "iconsUrl": { - "message": "URL server de iconuri" + "message": "URL server de pictograme" }, "environmentSaved": { - "message": "URL-urile mediului au fost salvate." + "message": "URL-urile mediului au fost salvate" }, "enableAutoFillOnPageLoad": { "message": "Completare automată la încărcarea paginii" @@ -969,7 +969,7 @@ "message": "Puteți dezactiva completarea automată la încărcarea paginii pentru elementele de autentificare individuale din vizualizarea Editare element." }, "itemAutoFillOnPageLoad": { - "message": "Completare automată la încărcarea paginii (dacă este activată în Opțiuni)" + "message": "Completare automată la încărcarea paginii (dacă este configurată în Opțiuni)" }, "autoFillOnPageLoadUseDefault": { "message": "Utilizați setarea implicită" @@ -1049,7 +1049,7 @@ "message": "Indică numărul de autentificări pe care le aveți pentru pagina web curentă." }, "cardholderName": { - "message": "Deținător card" + "message": "Numele titularului cardului" }, "number": { "message": "Număr card" @@ -1103,7 +1103,7 @@ "message": "decembrie" }, "securityCode": { - "message": "Cod de securitate (CVV/CVC)" + "message": "Cod de securitate" }, "ex": { "message": "ex." @@ -1136,19 +1136,19 @@ "message": "Numele complet" }, "identityName": { - "message": "Identitate" + "message": "Numele identității" }, "company": { "message": "Companie" }, "ssn": { - "message": "Cod Numeric Personal" + "message": "Numărul de securitate socială" }, "passportNumber": { - "message": "Număr CI / Pașaport" + "message": "Numărul de pașaport" }, "licenseNumber": { - "message": "Număr licență" + "message": "Numărul de licență" }, "email": { "message": "E-mail" @@ -1190,7 +1190,7 @@ "message": "Conectări" }, "typeSecureNote": { - "message": "Notă protejată" + "message": "Notă securizată" }, "typeCard": { "message": "Card" @@ -1226,7 +1226,7 @@ "message": "Conectări" }, "secureNotes": { - "message": "Note protejate" + "message": "Note securizate" }, "clear": { "message": "Ștergere", @@ -1278,7 +1278,7 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Activare/dezactivare opțiuni" + "message": "Comutare opțiuni" }, "toggleCurrentUris": { "message": "Comutare URI-uri curente", @@ -1296,7 +1296,7 @@ "message": "Tipuri" }, "allItems": { - "message": "Toate elementele" + "message": "Toate articolele" }, "noPasswordsInList": { "message": "Nicio parolă de afișat." @@ -1311,6 +1311,10 @@ "message": "S-a actualizat", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Creată", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Parola s-a actualizat", "description": "ex. Date this password was updated" @@ -1371,7 +1375,7 @@ "message": "Se așteaptă confirmarea de la desktop" }, "awaitDesktopDesc": { - "message": "Vă rugăm să confirmați utilizarea biometriei în aplicația Bitwarden Desktop pentru a activa biometria pentru browser." + "message": "Confirmați utilizarea datelor biometrice în aplicația desktop Bitwarden pentru a configura datele biometrice pentru browser." }, "lockWithMasterPassOnRestart": { "message": "Blocare cu parola principală la repornirea browserului" @@ -1403,13 +1407,13 @@ "message": "Căutare în coșul de reciclare" }, "permanentlyDeleteItem": { - "message": "Ștergere definitivă a articolului" + "message": "Ștergerea permanentă a articolului" }, "permanentlyDeleteItemConfirmation": { "message": "Sigur doriți să ștergeți definitiv acest articol?" }, "permanentlyDeletedItem": { - "message": "Articolul a fost șters definitiv" + "message": "Articol șters permanent" }, "restoreItem": { "message": "Restabilire articol" @@ -1427,13 +1431,13 @@ "message": "Confirmare acțiune la expirare" }, "autoFillAndSave": { - "message": "Auto-completare și Salvare" + "message": "Completare automată și salvare" }, "autoFillSuccessAndSavedUri": { - "message": "Articolul s-a completat automat și URl-ul s-a salvat" + "message": "Articol completat automat și URI salvat" }, "autoFillSuccess": { - "message": "Articolul s-a completat automat" + "message": "Articolul s-a completat automat " }, "setMasterPassword": { "message": "Setare parolă principală" @@ -1505,19 +1509,19 @@ "message": "Verificați dacă aplicația desktop afișează această amprentă digitală:" }, "desktopIntegrationDisabledTitle": { - "message": "Integrarea browserului nu este activată" + "message": "Integrarea browserului nu este configurată" }, "desktopIntegrationDisabledDesc": { - "message": "Integrarea browserului nu este activată în aplicația Bitwarden Desktop. Vă rugăm să o activați în setările din aplicația desktop." + "message": "Integrarea browserului nu este configurată în aplicația desktop Bitwarden. Configurați-o în setările din aplicația desktop." }, "startDesktopTitle": { - "message": "Porniți aplicația Bitwarden Desktop" + "message": "Porniți aplicația desktop Bitwarden" }, "startDesktopDesc": { "message": "Aplicația Bitwarden Desktop trebuie să fie pornită înainte de a putea fi utilizată deblocarea cu date biometrice." }, "errorEnableBiometricTitle": { - "message": "Nu se poate activa biometria" + "message": "Nu se pot configura datele biometrice" }, "errorEnableBiometricDesc": { "message": "Acțiunea a fost anulată de aplicația desktop" @@ -1535,10 +1539,10 @@ "message": "Eroare de cont" }, "biometricsNotEnabledTitle": { - "message": "Biometria nu a fost activată" + "message": "Datele biometrice nu sunt configurate" }, "biometricsNotEnabledDesc": { - "message": "Biometria browserului necesită activarea mai întâi a biometriei de pe desktop în setări." + "message": "Biometria browserului necesită ca biometria desktopului să fie mai întâi configurată în setări." }, "biometricsNotSupportedTitle": { "message": "Biometria nu este acceptată" @@ -1559,7 +1563,7 @@ "message": "Această acțiune nu se poate efectua în bara laterală, vă rugăm să reîncercați acțiunea în fereastra pop-up sau popup." }, "personalOwnershipSubmitError": { - "message": "Datorită unei politici pentru întreprinderi, vă este restricționată salvarea de elemente în seiful dvs. personal. Schimbați opțiunea de proprietate la o organizație și alegeți dintre colecțiile disponibile." + "message": "Datorită unei politici de întreprindere, nu puteți salva articole în seiful personal. Modificați opțiunea Proprietate la o organizație și alegeți dintre colecțiile disponibile." }, "personalOwnershipPolicyInEffect": { "message": "O politică de organizație vă afectează opțiunile de proprietate." @@ -1625,10 +1629,10 @@ "message": "Ștergere" }, "removedPassword": { - "message": "Parola a fost eliminată" + "message": "Parolă înlăturată" }, "deletedSend": { - "message": "Send-ul a fost șters", + "message": "Send șters", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Dezactivează acest Send astfel încât nimeni să nu-l poată accesa.", + "message": "Dezactivați acest Send pentru ca nimeni să nu-l poată accesa.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Număr actual de accesări" + "message": "Numărul actual de accesări" }, "createSend": { - "message": "Creare de nou Send", + "message": "Nou Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { "message": "Parolă nouă" }, "sendDisabled": { - "message": "Send dezactivat", + "message": "Send înlăturat", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1746,7 +1750,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send editat", + "message": "Send salvat", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1808,22 @@ "message": "Această acțiune este protejată. Pentru a continua, vă rugăm să reintroduceți parola principală pentru a vă verifica identitatea." }, "emailVerificationRequired": { - "message": "Este necesară verificarea adresei de e-mail" + "message": "Verificare e-mail necesară" }, "emailVerificationRequiredDesc": { "message": "Trebuie să vă verificați e-mailul pentru a utiliza această caracteristică. Puteți verifica e-mailul în seiful web." }, "updatedMasterPassword": { - "message": "Parolă principală actualizată" + "message": "Parola principală actualizată" }, "updateMasterPassword": { "message": "Actualizare parolă principală" }, "updateMasterPasswordWarning": { - "message": "Parola dvs. principală a fost modificată recent de unul din administratorii organizației dvs. Pentru a accesa seiful, trebuie să o actualizați acum. Procedura vă va deconecta de la sesiunea curentă, necesitând să vă reconectați. Sesiunile active de pe alte dispozitive pot continua să rămână active timp de până la o oră." + "message": "Parola principală a fost schimbată recent de către un administrator din organizație. Pentru a accesa seiful, trebuie să o actualizați acum. Continuarea vă va deconecta de la sesiunea curentă, cerându-vă să vă conectați din nou. Sesiunile active de pe alte dispozitive pot continua să rămână active timp de până la o oră." }, "resetPasswordPolicyAutoEnroll": { - "message": "Înregistrare automată" + "message": "Înscrierea automată" }, "resetPasswordAutoEnrollInviteWarning": { "message": "Această organizație are o politică de întreprindere care vă va înregistra automat la resetarea parolei. Înregistrarea va permite administratorilor organizației să vă modifice parola principală." @@ -1853,10 +1857,10 @@ "message": "Timpul de expirare al seifului depășește restricțiile stabilite de organizația dvs." }, "vaultExportDisabled": { - "message": "Export de seif dezactivat" + "message": "Exportul de seif indisponibil" }, "personalVaultExportPolicyInEffect": { - "message": "Una sau mai multe politici ale organizației vă împiedică să exportați seiful personal." + "message": "Una sau mai multe politici de organizație vă împiedică să vă exportați seiful individual." }, "copyCustomFieldNameInvalidElement": { "message": "Imposibil de identificat un element de formular valid. Încercați să inspectați codul HTML." @@ -1865,7 +1869,7 @@ "message": "Nu a fost găsit niciun identificator unic." }, "convertOrganizationEncryptionDesc": { - "message": "$ORGANIZATION$ folosește SSO cu un server de chei auto-găzduit. Membrii acestei organizații nu mai au nevoie de o parolă principală pentru autentificare.", + "message": "$ORGANIZATION$ folosește SSO cu un server de chei autogăzduit. Membrii acestei organizații nu mai au nevoie de o parolă principală pentru autentificare.", "placeholders": { "organization": { "content": "$1", @@ -1877,10 +1881,10 @@ "message": "Părăsire organizație" }, "removeMasterPassword": { - "message": "Eliminare parolă principală" + "message": "Înlăturare parolă principală" }, "removedMasterPassword": { - "message": "Parolă principală eliminată." + "message": "Parola principală înlăturată" }, "leaveOrganizationConfirmation": { "message": "Sigur doriți să părăsiți această organizație?" @@ -1895,10 +1899,10 @@ "message": "Sesiunea dvs. a expirat. Vă rugăm reveniți și încercați să vă autentificați din nou." }, "exportingPersonalVaultTitle": { - "message": "Exportarea seifului personal" + "message": "Exportul seifului individual" }, "exportingPersonalVaultDescription": { - "message": "Numai elementele personale din seif asociate cu $EMAIL$ vor fi exportate. Elementele seifului organizației nu vor fi incluse.", + "message": "Numai articolele de seif individuale asociate cu $EMAIL$ vor fi exportate. Articolele de seif ale organizației nu vor fi incluse.", "placeholders": { "email": { "content": "$1", @@ -1919,7 +1923,7 @@ "message": "Tip de nume de utilizator" }, "plusAddressedEmail": { - "message": "Plus e-mail adresat", + "message": "E-mail Plus adresat", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { @@ -1938,7 +1942,7 @@ "message": "Cuvânt aleatoriu" }, "websiteName": { - "message": "Numele site-ului web" + "message": "Nume website" }, "whatWouldYouLikeToGenerate": { "message": "Ce doriți să generați?" @@ -1966,16 +1970,16 @@ "message": "Cheie API" }, "ssoKeyConnectorError": { - "message": "Eroare de Conector Cheie: asigurați-vă că aveți conectorul Cheie disponibil și că funcționează corect." + "message": "Eroare de conector cheie: verificați dacă acesta este disponibil și funcționează corect." }, "premiumSubcriptionRequired": { "message": "Este necesar un abonament Premium" }, "organizationIsDisabled": { - "message": "Organizația este dezactivată." + "message": "Organizație suspendată." }, "disabledOrganizationFilterError": { - "message": "Articolele din Organizațiile dezactivate nu pot fi accesate. Contactați proprietarul Organizației pentru asistență." + "message": "Articolele din Organizații suspendate nu pot fi accesate. Contactați proprietarul Organizației pentru asistență." }, "cardBrandMir": { "message": "Mir" @@ -2002,7 +2006,7 @@ "message": "Versiune server" }, "selfHosted": { - "message": "Auto-găzduit" + "message": "Autogăzduit" }, "thirdParty": { "message": "Parte terță" diff --git a/apps/browser/src/_locales/ru/messages.json b/apps/browser/src/_locales/ru/messages.json index 53814e19891..72b3150d4ef 100644 --- a/apps/browser/src/_locales/ru/messages.json +++ b/apps/browser/src/_locales/ru/messages.json @@ -309,7 +309,7 @@ "message": "Папка" }, "deleteItem": { - "message": "Удалить элемент" + "message": "Удаление элемента" }, "viewItem": { "message": "Просмотр элемента" @@ -494,7 +494,7 @@ "message": "Двухфакторная аутентификация делает ваш аккаунт более защищенным, требуя подтверждения входа на другом устройстве, например, ключом безопасности, приложением-аутентификатором, SMS, телефонным звонком или письмом. Двухфакторная аутентификация включается на bitwarden.com. Перейти на сайт сейчас?" }, "editedFolder": { - "message": "Папка отредактирована" + "message": "Папка сохранена" }, "deleteFolderConfirmation": { "message": "Удалить эту папку?" @@ -503,7 +503,7 @@ "message": "Папка удалена" }, "gettingStartedTutorial": { - "message": "Учебник по началу работы" + "message": "Гид по bitwarden" }, "gettingStartedTutorialVideo": { "message": "Посмотрите небольшой обучающий материал, чтобы узнать, как получить максимальную отдачу от расширения браузера." @@ -537,7 +537,7 @@ "message": "Элемент добавлен" }, "editedItem": { - "message": "Элемент изменен" + "message": "Элемент сохранен" }, "deleteItemConfirmation": { "message": "Вы действительно хотите отправить в корзину?" @@ -723,7 +723,7 @@ "message": "Вы действительно хотите удалить это вложение?" }, "deletedAttachment": { - "message": "Вложение удалено" + "message": "Удаленное вложение" }, "newAttachment": { "message": "Добавить новое вложение" @@ -753,19 +753,19 @@ "message": "Премиум" }, "premiumManage": { - "message": "Управление Премиум" + "message": "Управление статусом" }, "premiumManageAlert": { "message": "Вы можете управлять Премиум на bitwarden.com. Перейти на сайт сейчас?" }, "premiumRefresh": { - "message": "Обновить Премиум" + "message": "Обновить статус" }, "premiumNotCurrentMember": { - "message": "На текущий момент у вас отсутствует Премиум." + "message": "Сейчас вы не Премиум-участник." }, "premiumSignUpAndGet": { - "message": "Подпишитесь на Премиум и получите:" + "message": "Подпишитесь на премиум-статус и получите:" }, "ppremiumSignUpStorage": { "message": "1 ГБ зашифрованного хранилища для вложенных файлов." @@ -783,16 +783,16 @@ "message": "Приоритетная поддержка." }, "ppremiumSignUpFuture": { - "message": "Все будущие функции Премиум. Их будет больше!" + "message": "Все будущие функции премиум-статуса. Их будет больше!" }, "premiumPurchase": { "message": "Купить Премиум" }, "premiumPurchaseAlert": { - "message": "Вы можете купить Премиум на bitwarden.com. Перейти на сайт сейчас?" + "message": "Вы можете купить премиум-статус на bitwarden.com. Перейти на сайт сейчас?" }, "premiumCurrentMember": { - "message": "У вас есть Премиум!" + "message": "У вас премиум-статус!" }, "premiumCurrentMemberThanks": { "message": "Благодарим вас за поддержку Bitwarden." @@ -819,7 +819,7 @@ "message": "Запрашивать биометрию при запуске" }, "premiumRequired": { - "message": "Необходим Премиум" + "message": "Требуется Премиум" }, "premiumRequiredDesc": { "message": "Для использования этой функции необходим Премиум." @@ -873,13 +873,13 @@ "message": "Вход недоступен" }, "noTwoStepProviders": { - "message": "У этой учетной записи включена двухфакторная аутентификация, однако ни один из настроенных вариантов не поддерживается этим веб-браузером." + "message": "У аккаунта включена двухэтапная аутентификация, но ни один из настроенных вариантов не поддерживается этим веб-браузером." }, "noTwoStepProviders2": { "message": "Используйте поддерживаемый веб-браузер (например, Chrome) и/или добавьте дополнительные варианты аутентификации, которые поддерживаются в веб-браузерах (например, приложение-аутентификатор)." }, "twoStepOptions": { - "message": "Настройки двухфакторной аутентификации" + "message": "Настройки двухэтапной аутентификации" }, "recoveryCodeDesc": { "message": "Потеряли доступ ко всем вариантам двухфакторной аутентификации? Используйте код восстановления, чтобы отключить двухфакторную аутентификацию для вашей учетной записи." @@ -1278,7 +1278,7 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Переключить настройки" + "message": "Настройки перебора" }, "toggleCurrentUris": { "message": "Переключить текущий URI", @@ -1311,6 +1311,10 @@ "message": "Обновлено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Создан", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Пароль обновлен", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/si/messages.json b/apps/browser/src/_locales/si/messages.json index 36e072746b8..e12ddce1f19 100644 --- a/apps/browser/src/_locales/si/messages.json +++ b/apps/browser/src/_locales/si/messages.json @@ -59,7 +59,7 @@ "message": "මගේ සුරක්ෂිතාගාරය" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "මෙවලම්" @@ -245,7 +245,7 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { "message": "වචන ගණන" @@ -552,7 +552,7 @@ "message": "ඔබට වත්මන් මුරපදය නැවත ලිවීමට අවශ්ය බව ඔබට විශ්වාසද?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -1311,6 +1311,10 @@ "message": "යාවත්කාලීන", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "මුරපදය යාවත්කාලීන කිරීම", "description": "ex. Date this password was updated" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/sk/messages.json b/apps/browser/src/_locales/sk/messages.json index e699eaf3ffd..b7c2cc79d84 100644 --- a/apps/browser/src/_locales/sk/messages.json +++ b/apps/browser/src/_locales/sk/messages.json @@ -20,7 +20,7 @@ "message": "Prihlásiť sa" }, "enterpriseSingleSignOn": { - "message": "Prihlásenie cez prihlasovací formulár spoločnosti (SSO)" + "message": "Jednotné prihlásenie pre podniky (SSO)" }, "cancel": { "message": "Zrušiť" @@ -309,7 +309,7 @@ "message": "Priečinok" }, "deleteItem": { - "message": "Zmazať položku" + "message": "Odstrániť položku" }, "viewItem": { "message": "Zobraziť položku" @@ -534,16 +534,16 @@ "message": "Nové URI" }, "addedItem": { - "message": "Položka pridaná" + "message": "Pridaná položka" }, "editedItem": { - "message": "Položka upravená" + "message": "Upravená položka" }, "deleteItemConfirmation": { "message": "Naozaj chcete odstrániť túto položku?" }, "deletedItem": { - "message": "Položka odstránená do koša" + "message": "Odstránená položka" }, "overwritePassword": { "message": "Prepísať heslo" @@ -1311,6 +1311,10 @@ "message": "Aktualizované", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Vytvorené", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Heslo bolo aktualizované", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/sl/messages.json b/apps/browser/src/_locales/sl/messages.json index da47adc01b3..2624b26293a 100644 --- a/apps/browser/src/_locales/sl/messages.json +++ b/apps/browser/src/_locales/sl/messages.json @@ -59,7 +59,7 @@ "message": "Moj trezor" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "Orodja" @@ -95,7 +95,7 @@ "message": "Generiraj geslo (kopirano)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { "message": "Nobenih ujemajočih prijav." @@ -131,10 +131,10 @@ "message": "Send a verification code to your email" }, "sendCode": { - "message": "Send Code" + "message": "Send code" }, "codeSent": { - "message": "Code Sent" + "message": "Code sent" }, "verificationCode": { "message": "Verifikacijska koda" @@ -245,7 +245,7 @@ "message": "Numbers (0-9)" }, "specialCharacters": { - "message": "Special Characters (!@#$%^&*)" + "message": "Special characters (!@#$%^&*)" }, "numWords": { "message": "Število besed" @@ -339,7 +339,7 @@ "message": "Vaš spletni brskalnik ne podpira enostavno kopiranje odložišča. Kopirajte ročno." }, "verifyIdentity": { - "message": "Verify Identity" + "message": "Verify identity" }, "yourVaultIsLocked": { "message": "Vaš trezor je zaklenjen. Potrdite vaše glavno geslo za nadaljevanje." @@ -491,7 +491,7 @@ "message": "Svoje glavno geslo lahko spremenite v bitwarden.com spletnem trezorju. Želite obiskati spletno stran zdaj?" }, "twoStepLoginConfirmation": { - "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be enabled on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "Two-step login makes your account more secure by requiring you to verify your login with another device such as a security key, authenticator app, SMS, phone call, or email. Two-step login can be set up on the bitwarden.com web vault. Do you want to visit the website now?" }, "editedFolder": { "message": "Urejena mapa" @@ -503,7 +503,7 @@ "message": "Izbrisana mapa" }, "gettingStartedTutorial": { - "message": "Getting Started Tutorial" + "message": "Getting started tutorial" }, "gettingStartedTutorialVideo": { "message": "Watch our getting started tutorial to learn how to get the most out of the browser extension." @@ -552,7 +552,7 @@ "message": "Ali ste prepričani, da želite prepisati vaše trenutno geslo?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "Deli" @@ -879,10 +879,10 @@ "message": "Please use a supported web browser (such as Chrome) and/or add additional providers that are better supported across web browsers (such as an authenticator app)." }, "twoStepOptions": { - "message": "Two-step Login Options" + "message": "Two-step login options" }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." }, "recoveryCodeTitle": { "message": "Koda za obnovitev" @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "E-pošta" @@ -921,13 +921,13 @@ "message": "Potrditvene kode vam bodo posredovane po e-pošti." }, "selfHostedEnvironment": { - "message": "Self-hosted Environment" + "message": "Self-hosted environment" }, "selfHostedEnvironmentFooter": { "message": "Specify the base URL of your on-premises hosted Bitwarden installation." }, "customEnvironment": { - "message": "Custom Environment" + "message": "Custom environment" }, "customEnvironmentFooter": { "message": "For advanced users. You can specify the base URL of each service independently." @@ -939,19 +939,19 @@ "message": "URL naslov API strežnika" }, "webVaultUrl": { - "message": "Web Vault Server URL" + "message": "Web vault server URL" }, "identityUrl": { - "message": "Identity Server URL" + "message": "Identity server URL" }, "notificationsUrl": { - "message": "Notifications Server URL" + "message": "Notifications server URL" }, "iconsUrl": { - "message": "Icons Server URL" + "message": "Icons server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "enableAutoFillOnPageLoad": { "message": "Auto-fill on page load" @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Uporabi privzete nastavitve" @@ -999,16 +999,16 @@ "message": "Private mode support is experimental and some features are limited." }, "customFields": { - "message": "Custom Fields" + "message": "Custom fields" }, "copyValue": { - "message": "Copy Value" + "message": "Copy value" }, "value": { "message": "Value" }, "newCustomField": { - "message": "New Custom Field" + "message": "New custom field" }, "dragToSort": { "message": "Drag to sort" @@ -1133,7 +1133,7 @@ "message": "Priimek" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { "message": "Ime identitete" @@ -1190,7 +1190,7 @@ "message": "Prijave" }, "typeSecureNote": { - "message": "Secure Note" + "message": "Secure note" }, "typeCard": { "message": "Card" @@ -1199,7 +1199,7 @@ "message": "Identity" }, "passwordHistory": { - "message": "Password History" + "message": "Password history" }, "back": { "message": "Back" @@ -1226,7 +1226,7 @@ "message": "Prijave" }, "secureNotes": { - "message": "Secure Notes" + "message": "Secure notes" }, "clear": { "message": "Počisti", @@ -1270,7 +1270,7 @@ "description": "A programming term, also known as 'RegEx'." }, "matchDetection": { - "message": "Match Detection", + "message": "Match detection", "description": "URI match detection for auto-fill." }, "defaultMatchDetection": { @@ -1278,10 +1278,10 @@ "description": "Default URI match detection for auto-fill." }, "toggleOptions": { - "message": "Toggle Options" + "message": "Toggle options" }, "toggleCurrentUris": { - "message": "Toggle Current URIs", + "message": "Toggle current URIs", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1296,7 +1296,7 @@ "message": "Types" }, "allItems": { - "message": "All Items" + "message": "All items" }, "noPasswordsInList": { "message": "There are no passwords to list." @@ -1311,8 +1311,12 @@ "message": "Updated", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { - "message": "Password Updated", + "message": "Password updated", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1343,7 +1347,7 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "Weak Master Password" + "message": "Weak master password" }, "weakMasterPasswordDesc": { "message": "The master password you have chosen is weak. You should use a strong master password (or a passphrase) to properly protect your Bitwarden account. Are you sure you want to use this master password?" @@ -1371,7 +1375,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" @@ -1380,7 +1384,7 @@ "message": "You must select at least one collection." }, "cloneItem": { - "message": "Clone Item" + "message": "Clone item" }, "clone": { "message": "Clone" @@ -1403,40 +1407,40 @@ "message": "Search trash" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Permanently delete item" }, "permanentlyDeleteItemConfirmation": { "message": "Are you sure you want to permanently delete this item?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Item permanently deleted" }, "restoreItem": { - "message": "Restore Item" + "message": "Restore item" }, "restoreItemConfirmation": { "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored Item" + "message": "Item restored" }, "vaultTimeoutLogOutConfirmation": { "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Timeout action confirmation" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Auto-fill and save" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Item auto-filled and URI saved" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Item auto-filled " }, "setMasterPassword": { - "message": "Set Master Password" + "message": "Set master password" }, "masterPasswordPolicyInEffect": { "message": "One or more organization policies require your master password to meet the following requirements:" @@ -1505,19 +1509,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1625,10 +1629,10 @@ "message": "Delete" }, "removedPassword": { - "message": "Removed Password" + "message": "Password removed" }, "deletedSend": { - "message": "Deleted Send", + "message": "Send deleted", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1665,14 +1669,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1808,22 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/sr/messages.json b/apps/browser/src/_locales/sr/messages.json index ab2033e54f0..459ffad893d 100644 --- a/apps/browser/src/_locales/sr/messages.json +++ b/apps/browser/src/_locales/sr/messages.json @@ -1311,6 +1311,10 @@ "message": "Промењено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Лозинка ажурирана", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/sv/messages.json b/apps/browser/src/_locales/sv/messages.json index eb8eff77062..31ea1f7e23e 100644 --- a/apps/browser/src/_locales/sv/messages.json +++ b/apps/browser/src/_locales/sv/messages.json @@ -44,7 +44,7 @@ "message": "En huvudlösenordsledtråd kan hjälpa dig att komma ihåg ditt lösenord om du glömmer bort det." }, "reTypeMasterPass": { - "message": "Ange huvudlösenordet igen" + "message": "Skriv in huvudlösenordet igen" }, "masterPassHint": { "message": "Huvudlösenordsledtråd (frivillig)" @@ -92,7 +92,7 @@ "message": "Fyll i automatiskt" }, "generatePasswordCopied": { - "message": "Skapa lösenord (kopierad)" + "message": "Skapa lösenord (kopieras)" }, "copyElementIdentifier": { "message": "Kopiera anpassat fältnamn" @@ -175,7 +175,7 @@ "message": "Flytta" }, "addFolder": { - "message": "Skapa mapp" + "message": "Lägg till mapp" }, "name": { "message": "Namn" @@ -251,7 +251,7 @@ "message": "Antal ord" }, "wordSeparator": { - "message": "Ordseparator" + "message": "Ordavgränsare" }, "capitalize": { "message": "Versalisera", @@ -261,13 +261,13 @@ "message": "Inkludera siffra" }, "minNumbers": { - "message": "Minst antal nummer" + "message": "Minsta antal siffror" }, "minSpecial": { - "message": "Minst antal speciella tecken" + "message": "Minsta antal specialtecken" }, "avoidAmbChar": { - "message": "Undvik mångtydiga tecken" + "message": "Undvik tvetydiga tecken" }, "searchVault": { "message": "Sök i valvet" @@ -482,7 +482,7 @@ "message": "Namn krävs." }, "addedFolder": { - "message": "Skapade mapp" + "message": "Lade till mapp" }, "changeMasterPass": { "message": "Ändra huvudlösenord" @@ -491,16 +491,16 @@ "message": "Du kan ändra ditt huvudlösenord på bitwardens webbvalv. Vill du besöka webbplatsen nu?" }, "twoStepLoginConfirmation": { - "message": "Tvåstegsverifiering gör ditt konto säkrare genom att kräva att du verifierar din inloggning med en annan enhet, till exempel genom en säkerhetsnyckel, autentiseringsapp, SMS, telefonsamtal eller mejl. Tvåstegsverifiering kan aktiveras på bitwardens webbvalv. Vill du besöka webbplatsen nu?" + "message": "Tvåstegsverifiering gör ditt konto säkrare genom att kräva att du verifierar din inloggning med en annan enhet, t.ex. en säkerhetsnyckel, autentiseringsapp, SMS, telefonsamtal eller e-post. Tvåstegsverifiering kan aktiveras i Bitwardens webbvalv. Vill du besöka webbplatsen nu?" }, "editedFolder": { - "message": "Ändrade mapp" + "message": "Redigerade mapp" }, "deleteFolderConfirmation": { "message": "Är du säker på att du vill ta bort den här mappen?" }, "deletedFolder": { - "message": "Tog bort mapp" + "message": "Raderade mapp" }, "gettingStartedTutorial": { "message": "Komma igång - Handledning" @@ -534,10 +534,10 @@ "message": "Ny URI" }, "addedItem": { - "message": "Skapade objekt" + "message": "Lade till objekt" }, "editedItem": { - "message": "Ändrade objekt" + "message": "Redigerade objekt" }, "deleteItemConfirmation": { "message": "Är du säker på att du vill radera detta objekt?" @@ -723,16 +723,16 @@ "message": "Är du säker på att du vill ta bort bilagan?" }, "deletedAttachment": { - "message": "Tog bort bilaga" + "message": "Raderade bilaga" }, "newAttachment": { - "message": "Bifoga ny fil" + "message": "Lägg till ny bilaga" }, "noAttachments": { "message": "Inga bilagor." }, "attachmentSaved": { - "message": "Den bifogade filen har sparats." + "message": "Bilagan har sparats." }, "file": { "message": "Fil" @@ -744,7 +744,7 @@ "message": "Filen får vara maximalt 500 MB." }, "featureUnavailable": { - "message": "Funktionen är inte tillgänglig" + "message": "Funktion ej tillgänglig" }, "updateKey": { "message": "Du kan inte använda denna funktion förrän du uppdaterar din krypteringsnyckel." @@ -789,7 +789,7 @@ "message": "Köp Premium" }, "premiumPurchaseAlert": { - "message": "Du kan köpa premium-medlemskap på bitwardens webbvalv. Vill du besöka webbplatsen nu?" + "message": "Du kan köpa premium-medlemskap i Bitwardens webbvalv. Vill du besöka webbplatsen nu?" }, "premiumCurrentMember": { "message": "Du är en premium-medlem!" @@ -870,10 +870,10 @@ "message": "Autentisera WebAuthn" }, "loginUnavailable": { - "message": "Inloggning inte tillgänglig" + "message": "Inloggning ej tillgänglig" }, "noTwoStepProviders": { - "message": "Detta konto har tvåstegsverifiering aktiverat, men inget av de aktiverade alternativen stöds av den här webbläsaren." + "message": "Detta konto har tvåstegsverifiering aktiverat, men ingen av de konfigurerade metoderna stöds av den här webbläsaren." }, "noTwoStepProviders2": { "message": "Vänligen använd en webbläsare som stöds (till exempel Chrome) och/eller lägg till fler alternativ som stöds bättre över webbläsare (till exempel en autentiseringsapp)." @@ -882,7 +882,7 @@ "message": "Alternativ för tvåstegsverifiering" }, "recoveryCodeDesc": { - "message": "Förlorat åtkomst till alla dina tvåstegsverifierings-alternativ? Använd din återställningskod för att inaktivera tvåstegsverifiering på ditt konto." + "message": "Förlorat åtkomst till alla dina metoder för tvåstegsverifiering? Använd din återställningskod för att inaktivera tvåstegsverifiering på ditt konto." }, "recoveryCodeTitle": { "message": "Återställningskod" @@ -939,19 +939,19 @@ "message": "API server-URL" }, "webVaultUrl": { - "message": "Webbvalv server-URL" + "message": "Webbvalvsserver-URL" }, "identityUrl": { "message": "Identitetsserver-URL" }, "notificationsUrl": { - "message": "URL för notifieringsserver" + "message": "Aviseringsserver-URL" }, "iconsUrl": { - "message": "Ikoner Server-URL" + "message": "Ikonserver-URL" }, "environmentSaved": { - "message": "Miljö-URL:er har sparats." + "message": "Miljö-URL:erna har sparats." }, "enableAutoFillOnPageLoad": { "message": "Aktivera automatisk ifyllnad vid sidhämtning" @@ -1058,10 +1058,10 @@ "message": "Märke" }, "expirationMonth": { - "message": "Förfallomånad" + "message": "Utgångsmånad" }, "expirationYear": { - "message": "Förfalloår" + "message": "Utgångsår" }, "expiration": { "message": "Utgång" @@ -1148,7 +1148,7 @@ "message": "Passnummer" }, "licenseNumber": { - "message": "Licensnummer" + "message": "Körkortsnummer" }, "email": { "message": "E-post" @@ -1311,8 +1311,12 @@ "message": "Uppdaterad", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Skapad", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { - "message": "Lösenord uppdaterat", + "message": "Lösenordet uppdaterades", "description": "ex. Date this password was updated" }, "neverLockWarning": { @@ -1628,7 +1632,7 @@ "message": "Tog bort lösenord" }, "deletedSend": { - "message": "Raderade Send", + "message": "Raderad Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { diff --git a/apps/browser/src/_locales/th/messages.json b/apps/browser/src/_locales/th/messages.json index 7c1851aefd1..610e6a1950f 100644 --- a/apps/browser/src/_locales/th/messages.json +++ b/apps/browser/src/_locales/th/messages.json @@ -59,7 +59,7 @@ "message": "My Vault" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "เครื่องมือ" @@ -95,7 +95,7 @@ "message": "Generate Password (copied)" }, "copyElementIdentifier": { - "message": "Copy Custom Field Name" + "message": "Copy custom field name" }, "noMatchingLogins": { "message": "ไม่พบข้อมูลล็อกอินที่ตรงกัน" @@ -552,7 +552,7 @@ "message": "คุณต้องการเขียนทับรหัสผ่านปัจจุบันใช่หรือไม่?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -656,7 +656,7 @@ "description": "WARNING (should stay in capitalized letters if the language permits)" }, "confirmVaultExport": { - "message": "Confirm Vault Export" + "message": "Confirm vault export" }, "exportWarningDesc": { "message": "This export contains your vault data in an unencrypted format. You should not store or send the exported file over unsecure channels (such as email). Delete it immediately after you are done using it." @@ -680,7 +680,7 @@ "message": "Bitwarden allows you to share your vault items with others by using an organization. Would you like to visit the bitwarden.com website to learn more?" }, "moveToOrganization": { - "message": "Move to Organization" + "message": "Move to organization" }, "share": { "message": "แชร์" @@ -762,10 +762,10 @@ "message": "Refresh Membership" }, "premiumNotCurrentMember": { - "message": "You are not currently a premium member." + "message": "You are not currently a Premium member." }, "premiumSignUpAndGet": { - "message": "Sign up for a premium membership and get:" + "message": "Sign up for a Premium membership and get:" }, "ppremiumSignUpStorage": { "message": "1 GB of encrypted file storage." @@ -783,16 +783,16 @@ "message": "Priority customer support." }, "ppremiumSignUpFuture": { - "message": "All future premium features. More coming soon!" + "message": "All future Premium features. More coming soon!" }, "premiumPurchase": { "message": "Purchase Premium" }, "premiumPurchaseAlert": { - "message": "You can purchase premium membership on the bitwarden.com web vault. Do you want to visit the website now?" + "message": "You can purchase Premium membership on the bitwarden.com web vault. Do you want to visit the website now?" }, "premiumCurrentMember": { - "message": "You are a premium member!" + "message": "You are a Premium member!" }, "premiumCurrentMemberThanks": { "message": "Thank you for supporting bitwarden." @@ -822,7 +822,7 @@ "message": "Premium Required" }, "premiumRequiredDesc": { - "message": "A premium membership is required to use this feature." + "message": "A Premium membership is required to use this feature." }, "enterVerificationCodeApp": { "message": "Enter the 6 digit verification code from your authenticator app." @@ -882,7 +882,7 @@ "message": "Two-step Login Options" }, "recoveryCodeDesc": { - "message": "Lost access to all of your two-factor providers? Use your recovery code to disable all two-factor providers from your account." + "message": "Lost access to all of your two-factor providers? Use your recovery code to turn off all two-factor providers from your account." }, "recoveryCodeTitle": { "message": "Recovery Code" @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "อีเมล" @@ -951,7 +951,7 @@ "message": "Icons Server URL" }, "environmentSaved": { - "message": "The environment URLs have been saved." + "message": "Environment URLs saved" }, "enableAutoFillOnPageLoad": { "message": "Enable Auto-fill On Page Load." @@ -969,7 +969,7 @@ "message": "You can turn off auto-fill on page load for individual login items from the item's Edit view." }, "itemAutoFillOnPageLoad": { - "message": "Auto-fill on page load (if enabled in Options)" + "message": "Auto-fill on page load (if set up in Options)" }, "autoFillOnPageLoadUseDefault": { "message": "Use default setting" @@ -1133,7 +1133,7 @@ "message": "Last Name" }, "fullName": { - "message": "Full Name" + "message": "Full name" }, "identityName": { "message": "Identity Name" @@ -1281,7 +1281,7 @@ "message": "Toggle Options" }, "toggleCurrentUris": { - "message": "Toggle Current URIs", + "message": "Toggle current URIs", "description": "Toggle the display of the URIs of the currently open tabs in the browser." }, "currentUri": { @@ -1311,6 +1311,10 @@ "message": "อัปเดตแล้ว", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "อัปเดต Password แล้ว", "description": "ex. Date this password was updated" @@ -1371,7 +1375,7 @@ "message": "Awaiting confirmation from desktop" }, "awaitDesktopDesc": { - "message": "Please confirm using biometrics in the Bitwarden Desktop application to enable biometrics for browser." + "message": "Please confirm using biometrics in the Bitwarden desktop application to set up biometrics for browser." }, "lockWithMasterPassOnRestart": { "message": "Lock with master password on browser restart" @@ -1380,7 +1384,7 @@ "message": "You must select at least one collection." }, "cloneItem": { - "message": "Clone Item" + "message": "Clone item" }, "clone": { "message": "Clone" @@ -1403,37 +1407,37 @@ "message": "ค้นหาในถังขยะ" }, "permanentlyDeleteItem": { - "message": "Permanently Delete Item" + "message": "Permanently delete item" }, "permanentlyDeleteItemConfirmation": { "message": "Are you sure you want to permanently delete this item?" }, "permanentlyDeletedItem": { - "message": "Permanently Deleted item" + "message": "Item permanently deleted" }, "restoreItem": { - "message": "Restore Item" + "message": "Restore item" }, "restoreItemConfirmation": { "message": "Are you sure you want to restore this item?" }, "restoredItem": { - "message": "Restored Item" + "message": "Item restored" }, "vaultTimeoutLogOutConfirmation": { "message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?" }, "vaultTimeoutLogOutConfirmationTitle": { - "message": "Timeout Action Confirmation" + "message": "Timeout action confirmation" }, "autoFillAndSave": { - "message": "Auto-fill and Save" + "message": "Auto-fill and save" }, "autoFillSuccessAndSavedUri": { - "message": "Auto-filled Item and Saved URI" + "message": "Item auto-filled and URI saved" }, "autoFillSuccess": { - "message": "Auto-filled Item" + "message": "Item auto-filled " }, "setMasterPassword": { "message": "ตั้งรหัสผ่านหลัก" @@ -1505,19 +1509,19 @@ "message": "Please verify that the desktop application shows this fingerprint: " }, "desktopIntegrationDisabledTitle": { - "message": "Browser integration is not enabled" + "message": "Browser integration is not set up" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { - "message": "Start the Bitwarden Desktop application" + "message": "Start the Bitwarden desktop application" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { - "message": "Unable to enable biometrics" + "message": "Unable to set up biometrics" }, "errorEnableBiometricDesc": { "message": "Action was canceled by the desktop application" @@ -1535,10 +1539,10 @@ "message": "Account missmatch" }, "biometricsNotEnabledTitle": { - "message": "Biometrics not enabled" + "message": "Biometrics not set up" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Biometrics not supported" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1665,14 +1669,14 @@ "message": "The file you want to send." }, "deletionDate": { - "message": "Deletion Date" + "message": "Deletion date" }, "deletionDateDesc": { "message": "The Send will be permanently deleted on the specified date and time.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "expirationDate": { - "message": "Expiration Date" + "message": "Expiration date" }, "expirationDateDesc": { "message": "If set, access to this Send will expire on the specified date and time.", @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,17 +1728,17 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "New Password" + "message": "New password" }, "sendDisabled": { - "message": "Send Disabled", + "message": "Send removed", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "Created Send", + "message": "Send created", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Edited Send", + "message": "Send saved", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,22 +1808,22 @@ "message": "This action is protected. To continue, please re-enter your master password to verify your identity." }, "emailVerificationRequired": { - "message": "Email Verification Required" + "message": "Email verification required" }, "emailVerificationRequiredDesc": { "message": "You must verify your email to use this feature. You can verify your email in the web vault." }, "updatedMasterPassword": { - "message": "Updated Master Password" + "message": "Updated master password" }, "updateMasterPassword": { - "message": "Update Master Password" + "message": "Update master password" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1853,10 +1857,10 @@ "message": "Your vault timeout exceeds the restrictions set by your organization." }, "vaultExportDisabled": { - "message": "Vault Export Disabled" + "message": "Vault export unavailable" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "Leave Organization" + "message": "Leave organization" }, "removeMasterPassword": { - "message": "Remove Master Password" + "message": "Remove master password" }, "removedMasterPassword": { - "message": "Master password removed." + "message": "Master password removed" }, "leaveOrganizationConfirmation": { "message": "Are you sure you want to leave this organization?" @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "API Key" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "to reset to pre-configured settings" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/tr/messages.json b/apps/browser/src/_locales/tr/messages.json index 3e79a9e586d..47bebf604ed 100644 --- a/apps/browser/src/_locales/tr/messages.json +++ b/apps/browser/src/_locales/tr/messages.json @@ -14,10 +14,10 @@ "message": "Güvenli kasanıza ulaşmak için giriş yapın veya yeni bir hesap oluşturun." }, "createAccount": { - "message": "Hesap oluştur" + "message": "Hesap Oluştur" }, "login": { - "message": "Giriş yap" + "message": "Giriş Yap" }, "enterpriseSingleSignOn": { "message": "Kurumsal tek oturum açma (SSO)" @@ -32,10 +32,10 @@ "message": "Gönder" }, "emailAddress": { - "message": "E-posta adresi" + "message": "E-posta Adresi" }, "masterPass": { - "message": "Ana parola" + "message": "Ana Parola" }, "masterPassDesc": { "message": "Ana parola, kasanıza ulaşmak için kullanacağınız paroladır. Ana parolanızı unutmamanız çok önemlidir. Unutursanız parolalarınızı asla kurtaramazsınız." @@ -44,7 +44,7 @@ "message": "Ana parolanızı unutursanız bu ipucuna bakınca size ana parolanızı hatırlatacak bir şey yazabilirsiniz." }, "reTypeMasterPass": { - "message": "Ana parolayı tekrar yazın" + "message": "Ana Parolayı Tekrar Yazın" }, "masterPassHint": { "message": "Ana Parola İpucu (isteğe bağlı)" @@ -68,10 +68,10 @@ "message": "Ayarlar" }, "currentTab": { - "message": "Geçerli sekme" + "message": "Mevcut Sekme" }, "copyPassword": { - "message": "Parolayı kopyala" + "message": "Parolayı Kopyala" }, "copyNote": { "message": "Notu kopyala" @@ -80,19 +80,19 @@ "message": "URI'yi kopyala" }, "copyUsername": { - "message": "Kullanıcı adını kopyala" + "message": "Kullanıcı Adını Kopyala" }, "copyNumber": { - "message": "Numarayı kopyala" + "message": "Numarayı Kopyala" }, "copySecurityCode": { - "message": "Güvenlik kodunu kopyala" + "message": "Güvenlik Kodunu Kopyala" }, "autoFill": { "message": "Otomatik doldur" }, "generatePasswordCopied": { - "message": "Parola oluştur (ve kopyala)" + "message": "Parola Oluştur (kopyalandı)" }, "copyElementIdentifier": { "message": "Özel alan adını kopyala" @@ -110,13 +110,13 @@ "message": "Mevcut sekme için otomatik doldurulacak giriş bilgisi bulunmuyor." }, "addLogin": { - "message": "Hesap ekle" + "message": "Oturum Ekle" }, "addItem": { - "message": "Kayıt ekle" + "message": "Hesap Ekle" }, "passwordHint": { - "message": "Parola ipucu" + "message": "Parola İpucu" }, "enterEmailToGetHint": { "message": "Ana parola ipucunu almak için hesabınızın e-posta adresini girin." @@ -137,7 +137,7 @@ "message": "Kod gönderildi" }, "verificationCode": { - "message": "Doğrulama kodu" + "message": "Doğrulama Kodu" }, "confirmIdentity": { "message": "Devam etmek için kimliğinizi doğrulayın." @@ -175,16 +175,16 @@ "message": "Taşı" }, "addFolder": { - "message": "Klasör ekle" + "message": "Klasör Ekle" }, "name": { "message": "Ad" }, "editFolder": { - "message": "Klasörü düzenle" + "message": "Klasörü Düzenle" }, "deleteFolder": { - "message": "Klasörü sil" + "message": "Klasörü Sil" }, "folders": { "message": "Klasörler" @@ -199,10 +199,10 @@ "message": "Eşitle" }, "syncVaultNow": { - "message": "Kasayı şimdi eşitle" + "message": "Kasayı Şimdi Eşitle" }, "lastSync": { - "message": "Son eşitleme:" + "message": "Son Eşitleme:" }, "passGen": { "message": "Parola Oluşturucu" @@ -224,10 +224,10 @@ "message": "Seç" }, "generatePassword": { - "message": "Parola oluştur" + "message": "Parola Oluştur" }, "regeneratePassword": { - "message": "Yeni parola oluştur" + "message": "Tekrar Parola Oluştur" }, "options": { "message": "Seçenekler" @@ -248,26 +248,26 @@ "message": "Özel karakterler (!@#$%^&*)" }, "numWords": { - "message": "Kelime sayısı" + "message": "Kelime Sayısı" }, "wordSeparator": { - "message": "Kelime ayracı" + "message": "Kelime Ayracı" }, "capitalize": { "message": "Baş harfleri büyük yap", "description": "Make the first letter of a work uppercase." }, "includeNumber": { - "message": "Rakam ekle" + "message": "Sayı Ekle" }, "minNumbers": { - "message": "En az rakam" + "message": "En Az Rakam" }, "minSpecial": { - "message": "En az özel karakter" + "message": "En Az Özel Karakter" }, "avoidAmbChar": { - "message": "Okurken karışabilecek karakterleri kullanma" + "message": "Belirsiz Karakterler Kullanma" }, "searchVault": { "message": "Kasada ara" @@ -282,7 +282,7 @@ "message": "Listelenecek kayıt yok." }, "itemInformation": { - "message": "Hesap Bilgileri" + "message": "Hesap Bilgisi" }, "username": { "message": "Kullanıcı adı" @@ -485,7 +485,7 @@ "message": "Klasör eklendi" }, "changeMasterPass": { - "message": "Ana parolayı değiştir" + "message": "Ana Parolayı Değiştir" }, "changeMasterPasswordConfirmation": { "message": "Ana parolanızı bitwarden.com web kasası üzerinden değiştirebilirsiniz. Siteye gitmek ister misiniz?" @@ -494,7 +494,7 @@ "message": "İki aşamalı giriş, hesabınıza girererken işlemi bir güvenlik anahtarı, şifrematik uygulaması, SMS, telefon araması veya e-posta gibi ek bir yöntemle doğrulamanızı isteyerek hesabınızın güvenliğini artırır. İki aşamalı giriş özelliğini bitwarden.com web kasası üzerinden etkinleştirebilirsiniz. Şimdi siteye gitmek ister misiniz?" }, "editedFolder": { - "message": "Klasör düzenlendi" + "message": "Klasör Düzenlendi" }, "deleteFolderConfirmation": { "message": "Bu klasörü silmek istediğinizden emin misiniz?" @@ -567,7 +567,7 @@ "message": "Arama türü" }, "noneFolder": { - "message": "Klasör yok", + "message": "Klasör Yok", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -885,7 +885,7 @@ "message": "İki aşamalı doğrulama sağlayıcılarınıza ulaşamıyor musunuz? Kurtarma kodunuzu kullanarak hesabınızdaki tüm iki aşamalı giriş sağlayıcılarını devre dışı bırakabilirsiniz." }, "recoveryCodeTitle": { - "message": "Kurtarma kodu" + "message": "Kurtarma Kodu" }, "authenticatorAppTitle": { "message": "Kimlik doğrulama uygulaması" @@ -1002,7 +1002,7 @@ "message": "Özel alanlar" }, "copyValue": { - "message": "Değeri kopyala" + "message": "Değeri Kopyala" }, "value": { "message": "Değer" @@ -1296,7 +1296,7 @@ "message": "Türler" }, "allItems": { - "message": "Tüm kayıtlar" + "message": "Tüm ögeler" }, "noPasswordsInList": { "message": "Listelenecek parola yok." @@ -1311,8 +1311,12 @@ "message": "Güncelleme", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Oluşturma", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { - "message": "Parola güncelleme", + "message": "Parola Güncellendi", "description": "ex. Date this password was updated" }, "neverLockWarning": { diff --git a/apps/browser/src/_locales/uk/messages.json b/apps/browser/src/_locales/uk/messages.json index ce1660dd759..007e0a45703 100644 --- a/apps/browser/src/_locales/uk/messages.json +++ b/apps/browser/src/_locales/uk/messages.json @@ -98,7 +98,7 @@ "message": "Копіювати назву власного поля" }, "noMatchingLogins": { - "message": "Немає відповідних записів." + "message": "Немає відповідних записів" }, "unlockVaultMenu": { "message": "Розблокуйте сховище" @@ -303,7 +303,7 @@ "message": "Нотатка" }, "editItem": { - "message": "Зміна запису" + "message": "Редагування запису" }, "folder": { "message": "Тека" @@ -482,7 +482,7 @@ "message": "Потрібна назва." }, "addedFolder": { - "message": "Додано теку" + "message": "Теку додано" }, "changeMasterPass": { "message": "Змінити головний пароль" @@ -494,7 +494,7 @@ "message": "Двоетапна перевірка робить ваш обліковий запис більш захищеним, вимагаючи підтвердження входу з використанням іншого пристрою, наприклад, за допомогою коду безпеки, програми авторизації, SMS, телефонного виклику, або е-пошти. Ви можете увімкнути двоетапну перевірку в сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" }, "editedFolder": { - "message": "Тека змінена" + "message": "Теку збережено" }, "deleteFolderConfirmation": { "message": "Ви дійсно хочете видалити цю теку?" @@ -543,7 +543,7 @@ "message": "Ви дійсно хочете перенести до смітника?" }, "deletedItem": { - "message": "Запис перенесено до смітника" + "message": "Запис переміщено до смітника" }, "overwritePassword": { "message": "Перезаписати пароль" @@ -732,13 +732,13 @@ "message": "Немає вкладень." }, "attachmentSaved": { - "message": "Вкладення збережено." + "message": "Вкладення збережено" }, "file": { "message": "Файл" }, "selectFile": { - "message": "Оберіть файл." + "message": "Оберіть файл" }, "maxFileSize": { "message": "Максимальний розмір файлу 500 Мб." @@ -753,19 +753,19 @@ "message": "Преміум статус" }, "premiumManage": { - "message": "Керувати статусом" + "message": "Керувати передплатою" }, "premiumManageAlert": { "message": "Ви можете керувати своїм статусом у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" }, "premiumRefresh": { - "message": "Оновити статус" + "message": "Оновити стан передплати" }, "premiumNotCurrentMember": { - "message": "Зараз у вас немає преміум-статусу." + "message": "Зараз у вас немає передплати преміум." }, "premiumSignUpAndGet": { - "message": "Підпишіться на преміум-статус і отримайте:" + "message": "Передплатіть преміум і отримайте:" }, "ppremiumSignUpStorage": { "message": "1 ГБ зашифрованого сховища для файлів." @@ -783,16 +783,16 @@ "message": "Пріоритетну технічну підтримку." }, "ppremiumSignUpFuture": { - "message": "Всі майбутні функції преміум статусу. Їх буде більше!" + "message": "Усі майбутні преміумфункції. Їх буде більше!" }, "premiumPurchase": { "message": "Придбати преміум" }, "premiumPurchaseAlert": { - "message": "Ви можете придбати преміум статус у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" + "message": "Ви можете передплатити преміум у сховищі на bitwarden.com. Хочете перейти на вебсайт зараз?" }, "premiumCurrentMember": { - "message": "У вас преміум статус!" + "message": "Ви користуєтеся передплатою преміум!" }, "premiumCurrentMemberThanks": { "message": "Дякуємо за підтримку Bitwarden." @@ -819,10 +819,10 @@ "message": "Запитувати біометрію під час запуску" }, "premiumRequired": { - "message": "Необхідний преміум статус" + "message": "Необхідна передплата преміум" }, "premiumRequiredDesc": { - "message": "Для використання цієї функції необхідний преміум статус." + "message": "Для використання цієї функції необхідна передплата преміум." }, "enterVerificationCodeApp": { "message": "Введіть 6-значний код підтвердження з програми авторизації." @@ -1311,6 +1311,10 @@ "message": "Оновлено", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Створено", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Пароль оновлено", "description": "ex. Date this password was updated" diff --git a/apps/browser/src/_locales/vi/messages.json b/apps/browser/src/_locales/vi/messages.json index 3e6db9fa609..d4d1ec1178c 100644 --- a/apps/browser/src/_locales/vi/messages.json +++ b/apps/browser/src/_locales/vi/messages.json @@ -59,7 +59,7 @@ "message": "Hầm của tôi" }, "allVaults": { - "message": "All Vaults" + "message": "All vaults" }, "tools": { "message": "Công cụ" @@ -491,7 +491,7 @@ "message": "Bạn có thể thay đổi mật khẩu chủ trong trang web Bitwarden. Bạn có muốn truy cập bitwarden.com bây giờ?" }, "twoStepLoginConfirmation": { - "message": "Xác thực hai lớp giúp cho tài khoản của bạn an toàn hơn bằng cách yêu cầu bạn xác minh thông tin đăng nhập của bạn bằng một thiết bị khác như khóa bảo mật, ứng dụng xác thực, SMS, cuộc gọi điện thoại hoặc email. Bạn có thể bật xác thực hai lớp trong trang web Bitwarden. Bạn có muốn ghé thăm bitwarden.com bây giờ?" + "message": "Xác thực hai lớp giúp cho tài khoản của bạn an toàn hơn bằng cách yêu cầu bạn xác minh thông tin đăng nhập của bạn bằng một thiết bị khác như khóa bảo mật, ứng dụng xác thực, SMS, cuộc gọi điện thoại hoặc email. Bạn có thể bật xác thực hai lớp trong kho bitwarden nền web. Bạn có muốn ghé thăm trang web bây giờ?" }, "editedFolder": { "message": "Chỉnh sửa Thư mục" @@ -552,7 +552,7 @@ "message": "Bạn có chắc chắn muốn ghi đè mật khẩu hiện tại không?" }, "overwriteUsername": { - "message": "Overwrite Username" + "message": "Overwrite username" }, "overwriteUsernameConfirmation": { "message": "Are you sure you want to overwrite the current username?" @@ -789,7 +789,7 @@ "message": "Mua bản Cao Cấp" }, "premiumPurchaseAlert": { - "message": "Bạn có thể nâng cấp làm thành viên cao cấp trong trang web Bitwarden. Bạn có muốn truy cập bitwarden.com bây giờ?" + "message": "Bạn có thể nâng cấp làm thành viên cao cấp trong kho bitwarden nền web. Bạn có muốn truy cập trang web bây giờ?" }, "premiumCurrentMember": { "message": "Bạn là một thành viên cao cấp!" @@ -912,7 +912,7 @@ "message": "FIDO2 WebAuthn" }, "webAuthnDesc": { - "message": "Use any WebAuthn enabled security key to access your account." + "message": "Use any WebAuthn compatible security key to access your account." }, "emailTitle": { "message": "Email" @@ -1311,6 +1311,10 @@ "message": "Ngày cập nhật", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "Created", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "Password Updated", "description": "ex. Date this password was updated" @@ -1508,13 +1512,13 @@ "message": "Tích hợp trình duyệt chưa được kích hoạt" }, "desktopIntegrationDisabledDesc": { - "message": "Browser integration is not enabled in the Bitwarden Desktop application. Please enable it in the settings within the desktop application." + "message": "Browser integration is not set up in the Bitwarden desktop application. Please set it up in the settings within the desktop application." }, "startDesktopTitle": { "message": "Mở ứng dụng Bitwarden trên máy tính" }, "startDesktopDesc": { - "message": "The Bitwarden Desktop application needs to be started before unlock with biometrics can be used." + "message": "The Bitwarden desktop application needs to be started before unlock with biometrics can be used." }, "errorEnableBiometricTitle": { "message": "Không thể bật nhận dạng sinh trắc học" @@ -1538,7 +1542,7 @@ "message": "Nhận dạng sinh trắc học chưa được bật" }, "biometricsNotEnabledDesc": { - "message": "Browser biometrics requires desktop biometric to be enabled in the settings first." + "message": "Browser biometrics requires desktop biometric to be set up in the settings first." }, "biometricsNotSupportedTitle": { "message": "Nhận dạng sinh trắc học không được hỗ trợ" @@ -1559,7 +1563,7 @@ "message": "This action cannot be done in the sidebar, please retry the action in the popup or popout." }, "personalOwnershipSubmitError": { - "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available Collections." + "message": "Due to an Enterprise Policy, you are restricted from saving items to your personal vault. Change the Ownership option to an organization and choose from available collections." }, "personalOwnershipPolicyInEffect": { "message": "An organization policy is affecting your ownership options." @@ -1709,7 +1713,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisableDesc": { - "message": "Disable this Send so that no one can access it.", + "message": "Deactivate this Send so that no one can access it.", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendShareDesc": { @@ -1724,10 +1728,10 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "currentAccessCount": { - "message": "Current Access Count" + "message": "Current access count" }, "createSend": { - "message": "Create New Send", + "message": "New Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { @@ -1816,10 +1820,10 @@ "message": "Cập nhật mật khẩu chính" }, "updateMasterPasswordWarning": { - "message": "Your Master Password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." + "message": "Your master password was recently changed by an administrator in your organization. In order to access the vault, you must update it now. Proceeding will log you out of your current session, requiring you to log back in. Active sessions on other devices may continue to remain active for up to one hour." }, "resetPasswordPolicyAutoEnroll": { - "message": "Automatic Enrollment" + "message": "Automatic enrollment" }, "resetPasswordAutoEnrollInviteWarning": { "message": "This organization has an enterprise policy that will automatically enroll you in password reset. Enrollment will allow organization administrators to change your master password." @@ -1856,7 +1860,7 @@ "message": "Xuất mật khẩu đăng tắt" }, "personalVaultExportPolicyInEffect": { - "message": "One or more organization policies prevents you from exporting your personal vault." + "message": "One or more organization policies prevents you from exporting your individual vault." }, "copyCustomFieldNameInvalidElement": { "message": "Unable to identify a valid form element. Try inspecting the HTML instead." @@ -1895,10 +1899,10 @@ "message": "Your session has timed out. Please go back and try logging in again." }, "exportingPersonalVaultTitle": { - "message": "Exporting Personal Vault" + "message": "Exporting individual vault" }, "exportingPersonalVaultDescription": { - "message": "Only the personal vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", + "message": "Only the individual vault items associated with $EMAIL$ will be exported. Organization vault items will not be included.", "placeholders": { "email": { "content": "$1", @@ -1910,23 +1914,23 @@ "message": "Error" }, "regenerateUsername": { - "message": "Regenerate Username" + "message": "Regenerate username" }, "generateUsername": { - "message": "Generate Username" + "message": "Generate username" }, "usernameType": { - "message": "Username Type" + "message": "Username type" }, "plusAddressedEmail": { - "message": "Plus Addressed Email", + "message": "Plus addressed email", "description": "Username generator option that appends a random sub-address to the username. For example: address+subaddress@email.com" }, "plusAddressedEmailDesc": { "message": "Use your email provider's sub-addressing capabilities." }, "catchallEmail": { - "message": "Catch-all Email" + "message": "Catch-all email" }, "catchallEmailDesc": { "message": "Use your domain's configured catch-all inbox." @@ -1935,22 +1939,22 @@ "message": "Random" }, "randomWord": { - "message": "Random Word" + "message": "Random word" }, "websiteName": { - "message": "Website Name" + "message": "Website name" }, "whatWouldYouLikeToGenerate": { "message": "What would you like to generate?" }, "passwordType": { - "message": "Password Type" + "message": "Password type" }, "service": { "message": "Service" }, "forwardedEmail": { - "message": "Forwarded Email Alias" + "message": "Forwarded email alias" }, "forwardedEmailDesc": { "message": "Generate an email alias with an external forwarding service." @@ -1966,16 +1970,16 @@ "message": "Khóa API" }, "ssoKeyConnectorError": { - "message": "Key Connector error: make sure Key Connector is available and working correctly." + "message": "Key connector error: make sure key connector is available and working correctly." }, "premiumSubcriptionRequired": { "message": "Premium subscription required" }, "organizationIsDisabled": { - "message": "Organization is disabled." + "message": "Organization suspended." }, "disabledOrganizationFilterError": { - "message": "Items in disabled Organizations cannot be accessed. Contact your Organization owner for assistance." + "message": "Items in suspended Organizations cannot be accessed. Contact your Organization owner for assistance." }, "cardBrandMir": { "message": "Mir" @@ -1999,13 +2003,13 @@ "message": "để đặt lại cài đặt đã thiết đặt từ trước" }, "serverVersion": { - "message": "Server Version" + "message": "Server version" }, "selfHosted": { - "message": "Self-Hosted" + "message": "Self-hosted" }, "thirdParty": { - "message": "Third-Party" + "message": "Third-party" }, "thirdPartyServerMessage": { "message": "Connected to third-party server implementation, $SERVERNAME$. Please verify bugs using the official server, or report them to the third-party server.", diff --git a/apps/browser/src/_locales/zh_CN/messages.json b/apps/browser/src/_locales/zh_CN/messages.json index d3a1ec4373d..e14469c8646 100644 --- a/apps/browser/src/_locales/zh_CN/messages.json +++ b/apps/browser/src/_locales/zh_CN/messages.json @@ -44,7 +44,7 @@ "message": "主密码提示可以在你忘记密码时帮你回忆起来。" }, "reTypeMasterPass": { - "message": "重新输入主密码" + "message": "再次输入主密码" }, "masterPassHint": { "message": "主密码提示(可选)" @@ -56,7 +56,7 @@ "message": "密码库" }, "myVault": { - "message": "密码库" + "message": "我的密码库" }, "allVaults": { "message": "所有密码库" @@ -98,7 +98,7 @@ "message": "复制自定义字段名称" }, "noMatchingLogins": { - "message": "无匹配的登录信息。" + "message": "无匹配的登录项目" }, "unlockVaultMenu": { "message": "解锁您的密码库" @@ -131,10 +131,10 @@ "message": "发送验证码到您的电子邮箱" }, "sendCode": { - "message": "发送验证码" + "message": "发送代码" }, "codeSent": { - "message": "验证码已发送" + "message": "代码已发送" }, "verificationCode": { "message": "验证码" @@ -248,7 +248,7 @@ "message": "特殊字符 (!@#$%^&*)" }, "numWords": { - "message": "单词数" + "message": "单词个数" }, "wordSeparator": { "message": "单词分隔符" @@ -491,10 +491,10 @@ "message": "您可以在 bitwarden.com 网页版密码库修改主密码。您现在要访问这个网站吗?" }, "twoStepLoginConfirmation": { - "message": "两步登录要求您从其他设备(例如安全钥匙、验证器应用、短信、电话或者电子邮件)来验证你的登录,这能使您的账户更加安全。两步登录可以在 bitwarden.com 网页版密码库启用。您现在要访问这个网站吗?" + "message": "两步登录要求您从其他设备(例如安全钥匙、验证器应用、短信、电话或者电子邮件)来验证您的登录,这能使您的账户更加安全。两步登录需要在 bitwarden.com 网页版密码中设置。您现在要访问这个网站吗?" }, "editedFolder": { - "message": "文件夹已编辑" + "message": "文件夹已保存" }, "deleteFolderConfirmation": { "message": "您确定要删除此文件夹吗?" @@ -537,7 +537,7 @@ "message": "项目已添加" }, "editedItem": { - "message": "项目已编辑" + "message": "项目已保存" }, "deleteItemConfirmation": { "message": "您确定要删除此项目吗?" @@ -732,13 +732,13 @@ "message": "没有附件。" }, "attachmentSaved": { - "message": "附件已保存。" + "message": "附件已保存" }, "file": { "message": "文件" }, "selectFile": { - "message": "选择一个文件。" + "message": "选择一个文件" }, "maxFileSize": { "message": "文件最大为 500 MB。" @@ -825,7 +825,7 @@ "message": "使用此功能需要高级会员资格。" }, "enterVerificationCodeApp": { - "message": "请输入您的身份验证器应用中的 6 位验证码。" + "message": "请输入您的验证器应用中的 6 位验证码。" }, "enterVerificationCodeEmail": { "message": "请输入通过电子邮件发送给 $EMAIL$ 的 6 位验证码。", @@ -873,16 +873,16 @@ "message": "登录不可用" }, "noTwoStepProviders": { - "message": "此账户已启用两步登录,但此浏览器不支持任何已配置的两步登录提供程序。" + "message": "此账户已设置两步登录,但此浏览器不支持任何已配置的两步登录提供程序。" }, "noTwoStepProviders2": { - "message": "请使用支持的网页浏览器(例如 Chrome)和/或添加其他支持更广泛的提供程序(例如验证器应用)。" + "message": "请使用支持的网页浏览器(例如 Chrome),和/或添加其他对跨浏览器支持更广泛的提供程序(例如验证器应用)。" }, "twoStepOptions": { "message": "两步登录选项" }, "recoveryCodeDesc": { - "message": "失去访问您所有的双重身份验证设备?请使用您的恢复代码来禁用您账户中所有的两步登录提供程序。" + "message": "无法访问您所有的双重身份提供程序吗?请使用您的恢复代码来禁用您账户中所有的双重身份提供程序。" }, "recoveryCodeTitle": { "message": "恢复代码" @@ -891,7 +891,7 @@ "message": "验证器应用" }, "authenticatorAppDesc": { - "message": "使用身份验证器应用(例如 Authy 或 Google Authenticator)来生成基于时间的验证码。", + "message": "使用验证器应用(例如 Authy 或 Google Authenticator)来生成基于时间的验证码。", "description": "'Authy' and 'Google Authenticator' are product names and should not be translated." }, "yubiKeyTitle": { @@ -951,7 +951,7 @@ "message": "图标服务器 URL" }, "environmentSaved": { - "message": "各环境 URL 已保存。" + "message": "环境 URL 已保存" }, "enableAutoFillOnPageLoad": { "message": "页面加载时自动填充" @@ -969,7 +969,7 @@ "message": "您可以从项目编辑视图中为单个登录项目关闭页面加载时自动填充。" }, "itemAutoFillOnPageLoad": { - "message": "页面加载时自动填充(如果选项中已启用)" + "message": "页面加载时自动填充(如果选项中已设置)" }, "autoFillOnPageLoadUseDefault": { "message": "使用默认设置" @@ -1142,13 +1142,13 @@ "message": "公司" }, "ssn": { - "message": "社会安全号码" + "message": "社会保险号码" }, "passportNumber": { "message": "护照号码" }, "licenseNumber": { - "message": "许可证编号" + "message": "许可证号码" }, "email": { "message": "Email" @@ -1311,6 +1311,10 @@ "message": "更新于", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "创建于", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "密码更新于", "description": "ex. Date this password was updated" @@ -1343,7 +1347,7 @@ "description": "ex. A weak password. Scale: Weak -> Good -> Strong" }, "weakMasterPassword": { - "message": "脆弱的主密码" + "message": "弱主密码" }, "weakMasterPasswordDesc": { "message": "您选择的主密码较弱。您应该使用强密码(或密码短语)来正确保护您的 Bitwarden 账户。仍要使用此主密码吗?" @@ -1356,7 +1360,7 @@ "message": "使用 PIN 码解锁" }, "setYourPinCode": { - "message": "设定您用来解锁 Bitwarden 的 PIN 码。您的 PIN 设置将在您退出账户时被重置。" + "message": "设置您用来解锁 Bitwarden 的 PIN 码。您的 PIN 设置将在您退出账户时被重置。" }, "pinRequired": { "message": "需要 PIN 码。" @@ -1371,7 +1375,7 @@ "message": "等待来自桌面应用程序的确认" }, "awaitDesktopDesc": { - "message": "请确认在 Bitwarden 桌面应用程序中使用了生物识别以启用浏览器的生物识别。" + "message": "请确认在 Bitwarden 桌面应用程序中设置了生物识别以设置浏览器的生物识别。" }, "lockWithMasterPassOnRestart": { "message": "浏览器重启后使用主密码锁定" @@ -1409,7 +1413,7 @@ "message": "您确定要永久删除此项目吗?" }, "permanentlyDeletedItem": { - "message": "已永久删除项目" + "message": "项目已永久删除" }, "restoreItem": { "message": "恢复项目" @@ -1433,7 +1437,7 @@ "message": "项目已自动填充且 URI 已保存" }, "autoFillSuccess": { - "message": "项目已自动填充" + "message": "项目已自动填充 " }, "setMasterPassword": { "message": "设置主密码" @@ -1505,19 +1509,19 @@ "message": "请确认桌面应用程序显示此指纹: " }, "desktopIntegrationDisabledTitle": { - "message": "浏览器整合未启用" + "message": "浏览器集成未设置" }, "desktopIntegrationDisabledDesc": { - "message": "浏览器整合在 Bitwarden 桌面应用程序中未启用。请在桌面应用程序的设置中启用它。" + "message": "浏览器集成在 Bitwarden 桌面应用程序中未设置。请在桌面应用程序的设置中设置它。" }, "startDesktopTitle": { "message": "启动 Bitwarden 桌面应用程序" }, "startDesktopDesc": { - "message": "Bitwarden 桌面应用程序需要已启动才能使用生物识别解锁功能。" + "message": "Bitwarden 桌面应用程序需要已启动才能使用生物识别解锁。" }, "errorEnableBiometricTitle": { - "message": "无法启用生物识别" + "message": "无法设置生物识别" }, "errorEnableBiometricDesc": { "message": "操作被桌面应用程序取消" @@ -1535,10 +1539,10 @@ "message": "账户不匹配" }, "biometricsNotEnabledTitle": { - "message": "生物识别未启用" + "message": "生物识别未设置" }, "biometricsNotEnabledDesc": { - "message": "需要首先在桌面应用程序的设置中启用生物识别才能使用浏览器的生物识别。" + "message": "需要首先在桌面应用程序的设置中设置生物识别才能使用浏览器的生物识别。" }, "biometricsNotSupportedTitle": { "message": "不支持生物识别" @@ -1559,7 +1563,7 @@ "message": "此操作不能在侧边栏中完成,请在弹出窗口或弹出对话框中重试。" }, "personalOwnershipSubmitError": { - "message": "由于某个企业策略,您被限制为保存项目到您的个人密码库。将所有权选项更改为组织,并从可用的集合中选择。" + "message": "由于某个企业策略,您被限制为保存项目到您的个人密码库。将所有权选项更改为组织,然后从可用的集合中选择。" }, "personalOwnershipPolicyInEffect": { "message": "一个组织策略正影响您的所有权选项。" @@ -1727,14 +1731,14 @@ "message": "当前访问次数" }, "createSend": { - "message": "创建新 Send", + "message": "新建 Send", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "newPassword": { - "message": "新密码" + "message": "新建密码" }, "sendDisabled": { - "message": "Send 已禁用", + "message": "Send 已移除", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1746,7 +1750,7 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "Send 已编辑", + "message": "Send 已保存", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1804,7 +1808,7 @@ "message": "此操作受到保护。若要继续,请重新输入您的主密码以验证您的身份。" }, "emailVerificationRequired": { - "message": "需要验证电子邮件地址" + "message": "需要验证电子邮件" }, "emailVerificationRequiredDesc": { "message": "您必须验证电子邮件才能使用此功能。您可以在网页密码库中验证您的电子邮件。" @@ -1816,7 +1820,7 @@ "message": "更新主密码" }, "updateMasterPasswordWarning": { - "message": "您的主密码最近被您组织的管理员更改过。要访问密码库,您必须立即更新它。继续操作将使您退出当前会话,要求您重新登录。其他设备上的活动会话可能会继续保持活动状态长达一小时。" + "message": "您的主密码最近被您组织的管理员更改过。要访问密码库,您必须立即更新它。继续操作将使您退出当前会话并要求您重新登录。其他设备上的活动会话可能会继续保持活动状态长达一小时。" }, "resetPasswordPolicyAutoEnroll": { "message": "自动注册" @@ -1856,7 +1860,7 @@ "message": "密码库导出已禁用" }, "personalVaultExportPolicyInEffect": { - "message": "一个或多个组织策略阻止您导出个人密码库。" + "message": "一个或多个组织策略禁止您导出个人密码库。" }, "copyCustomFieldNameInvalidElement": { "message": "无法识别有效的表单元素。请尝试检查 HTML。" @@ -1874,13 +1878,13 @@ } }, "leaveOrganization": { - "message": "离开组织" + "message": "退出组织" }, "removeMasterPassword": { "message": "移除主密码" }, "removedMasterPassword": { - "message": "主密码已移除。" + "message": "主密码已移除" }, "leaveOrganizationConfirmation": { "message": "您确定要离开该组织吗?" @@ -1898,7 +1902,7 @@ "message": "导出个人密码库" }, "exportingPersonalVaultDescription": { - "message": "仅会导出与 $EMAIL$ 关联的个人密码库。组织密码库的项目不会导出。", + "message": "仅会导出与 $EMAIL$ 关联的个人密码库项目。组织密码库的项目不会导出。", "placeholders": { "email": { "content": "$1", @@ -1972,10 +1976,10 @@ "message": "需要高级版订阅" }, "organizationIsDisabled": { - "message": "组织已被禁用。" + "message": "组织已被挂起。" }, "disabledOrganizationFilterError": { - "message": "无法访问已禁用组织中的项目。请联系您的组织所有者获取协助。" + "message": "无法访问已被挂起的组织中的项目。请联系您的组织所有者获取帮助。" }, "cardBrandMir": { "message": "Mir" @@ -2017,7 +2021,7 @@ } }, "lastSeenOn": { - "message": "最后上线于 $DATE$", + "message": "最后上线于:$DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/src/_locales/zh_TW/messages.json b/apps/browser/src/_locales/zh_TW/messages.json index 0f78713b417..60ce0f000c8 100644 --- a/apps/browser/src/_locales/zh_TW/messages.json +++ b/apps/browser/src/_locales/zh_TW/messages.json @@ -14,7 +14,7 @@ "message": "登入或建立帳戶以存取您的安全密碼庫。" }, "createAccount": { - "message": "建立帳戶" + "message": "新增帳戶" }, "login": { "message": "登入" @@ -44,7 +44,7 @@ "message": "主密碼提示可以在您忘記主密碼時幫助您回憶主密碼。" }, "reTypeMasterPass": { - "message": "重新輸入主密碼" + "message": "再次輸入主密碼" }, "masterPassHint": { "message": "主密碼提示(選用)" @@ -56,7 +56,7 @@ "message": "密碼庫" }, "myVault": { - "message": "密碼庫" + "message": "我的密碼庫" }, "allVaults": { "message": "所有密碼庫" @@ -98,7 +98,7 @@ "message": "複製自訂欄位名稱" }, "noMatchingLogins": { - "message": "無符合的登入資料。" + "message": "無符合的登入資料" }, "unlockVaultMenu": { "message": "解鎖您的密碼庫" @@ -248,10 +248,10 @@ "message": "特殊字元 (!@#$%^&*)" }, "numWords": { - "message": "字數" + "message": "單詞數量" }, "wordSeparator": { - "message": "文字分隔字元" + "message": "單詞分隔字元" }, "capitalize": { "message": "大寫", @@ -321,7 +321,7 @@ "message": "網站" }, "toggleVisibility": { - "message": "切換可見度" + "message": "切換可見性" }, "manage": { "message": "管理" @@ -482,7 +482,7 @@ "message": "必須填入名稱。" }, "addedFolder": { - "message": "已新增資料夾" + "message": "資料夾已新增" }, "changeMasterPass": { "message": "變更主密碼" @@ -494,13 +494,13 @@ "message": "兩步驟登入需要您從其他裝置(例如安全金鑰、驗證器程式、SMS、手機或電子郵件)來驗證您的登入,這使您的帳戶更加安全。兩步驟登入可以在 bitwarden.com 網頁版密碼庫啟用。現在要前往嗎?" }, "editedFolder": { - "message": "已編輯資料夾" + "message": "資料夾已儲存" }, "deleteFolderConfirmation": { "message": "您確定要刪除此資料夾嗎?" }, "deletedFolder": { - "message": "已刪除資料夾" + "message": "資料夾已刪除" }, "gettingStartedTutorial": { "message": "新手教學" @@ -534,16 +534,16 @@ "message": "新增 URI" }, "addedItem": { - "message": "已新增項目" + "message": "項目已新增" }, "editedItem": { - "message": "已編輯項目" + "message": "項目已儲存" }, "deleteItemConfirmation": { "message": "確定要刪除此項目嗎?" }, "deletedItem": { - "message": "已將項目移至垃圾桶" + "message": "項目已移至垃圾桶" }, "overwritePassword": { "message": "覆寫密碼" @@ -567,7 +567,7 @@ "message": "搜尋類型" }, "noneFolder": { - "message": "(未分類)", + "message": "預設資料夾", "description": "This is the folder for uncategorized items" }, "enableAddLoginNotification": { @@ -732,7 +732,7 @@ "message": "沒有附件。" }, "attachmentSaved": { - "message": "附件已儲存。" + "message": "附件已儲存" }, "file": { "message": "檔案" @@ -744,7 +744,7 @@ "message": "檔案最大為 500MB。" }, "featureUnavailable": { - "message": "功能無法使用" + "message": "功能不可用" }, "updateKey": { "message": "更新加密金鑰前不能使用此功能。" @@ -870,13 +870,13 @@ "message": "驗證 WebAuthn" }, "loginUnavailable": { - "message": "無法登入" + "message": "登入無法使用" }, "noTwoStepProviders": { - "message": "此帳戶已啟用兩步驟登入,但是本瀏覽器不支援已設定的兩步驟登入方式。" + "message": "此帳戶已設定兩步驟登入,但是本瀏覽器不支援已設定的任一個兩步驟提供程式。" }, "noTwoStepProviders2": { - "message": "請使用已支援的瀏覽器(例如 Chrome ),及/或新增可以更好地跨瀏覽器的兩步驟登入方法(例如驗證器應用程式)。" + "message": "請使用受支援的瀏覽器(例如 Chrome ),及/或新增可以更好地跨瀏覽器的提供程式(例如驗證器應用程式)。" }, "twoStepOptions": { "message": "兩步驟登入選項" @@ -885,7 +885,7 @@ "message": "無法使用任何雙因素提供程式嗎?請使用您的復原碼以停用您帳戶的所有雙因素提供程式。" }, "recoveryCodeTitle": { - "message": "復原碼" + "message": "復原代碼" }, "authenticatorAppTitle": { "message": "驗證器應用程式" @@ -939,19 +939,19 @@ "message": "API 伺服器 URL" }, "webVaultUrl": { - "message": "網頁版密碼庫伺服器 URL" + "message": "網路版密碼庫伺服器 URL" }, "identityUrl": { - "message": "身分伺服器 URL" + "message": "身份伺服器 URL" }, "notificationsUrl": { "message": "通知伺服器 URL" }, "iconsUrl": { - "message": "圖示伺服器 URL" + "message": "圖標伺服器 URL" }, "environmentSaved": { - "message": "已儲存環境 URL。" + "message": "環境 URL 已儲存" }, "enableAutoFillOnPageLoad": { "message": "頁面載入時自動填入" @@ -969,7 +969,7 @@ "message": "您可以從項目的編輯檢視中為單個登入項目關閉頁面載入時自動填入。" }, "itemAutoFillOnPageLoad": { - "message": "頁面載入時自動填入(如果選項中已啟用)" + "message": "頁面載入時自動填入(如果選項中已設定)" }, "autoFillOnPageLoadUseDefault": { "message": "使用預設設定" @@ -1136,7 +1136,7 @@ "message": "全名" }, "identityName": { - "message": "身分名稱" + "message": "身份名稱" }, "company": { "message": "公司" @@ -1311,6 +1311,10 @@ "message": "更新於", "description": "ex. Date this item was updated" }, + "dateCreated": { + "message": "建立於", + "description": "ex. Date this item was created" + }, "datePasswordUpdated": { "message": "密碼更新於", "description": "ex. Date this password was updated" @@ -1371,7 +1375,7 @@ "message": "等待來自桌面應用程式的確認" }, "awaitDesktopDesc": { - "message": "請確認在 Bitwarden 桌面應用程式中使用了生物特徵辨識,以啟用瀏覽器的生物特徵辨識。" + "message": "請確認在 Bitwarden 桌面應用程式中使用了生物特徵辨識,以啟用瀏覽器的生物特徵辨識功能。" }, "lockWithMasterPassOnRestart": { "message": "瀏覽器重啟後使用主密碼鎖定" @@ -1409,7 +1413,7 @@ "message": "您確定要永久刪除此項目嗎?" }, "permanentlyDeletedItem": { - "message": "已永久刪除項目" + "message": "項目已永久刪除" }, "restoreItem": { "message": "還原項目" @@ -1505,10 +1509,10 @@ "message": "請驗證桌面應用程式顯示的指紋為: " }, "desktopIntegrationDisabledTitle": { - "message": "瀏覽器整合未啟用" + "message": "瀏覽器整合未設定" }, "desktopIntegrationDisabledDesc": { - "message": "瀏覽器整合在桌面應用程式中未啟用,請在桌面應用程式的設定中啟用它。" + "message": "瀏覽器整合在桌面應用程式中未設定,請在桌面應用程式的設定中設定它。" }, "startDesktopTitle": { "message": "啟動 Bitwarden 桌面應用程式" @@ -1535,10 +1539,10 @@ "message": "帳戶不相符" }, "biometricsNotEnabledTitle": { - "message": "生物特徵辨識未啟用" + "message": "生物特徵辨識未設定" }, "biometricsNotEnabledDesc": { - "message": "需先在桌面應用程式設定中啟用生物特徵辨識,才能使用瀏覽器的生物特徵辨識功能。" + "message": "需先在桌面應用程式設定中設定生物特徵辨識,才能使用瀏覽器的生物特徵辨識功能。" }, "biometricsNotSupportedTitle": { "message": "不支援生物特徵辨識" @@ -1628,7 +1632,7 @@ "message": "已移除密碼" }, "deletedSend": { - "message": "已刪除 Send", + "message": "Send 已刪除", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLink": { @@ -1734,7 +1738,7 @@ "message": "新密碼" }, "sendDisabled": { - "message": "已停用 Send", + "message": "Send 已停用", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendDisabledWarning": { @@ -1742,11 +1746,11 @@ "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "createdSend": { - "message": "已建立 Send", + "message": "Send 已建立", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "editedSend": { - "message": "已編輯 Send", + "message": "Send 已儲存", "description": "'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated." }, "sendLinuxChromiumFileWarning": { @@ -1880,7 +1884,7 @@ "message": "移除主密碼" }, "removedMasterPassword": { - "message": "已移除主密碼。" + "message": "主密碼已移除。" }, "leaveOrganizationConfirmation": { "message": "您確定要離開這個組織嗎?" @@ -1898,7 +1902,7 @@ "message": "匯出個人密碼庫" }, "exportingPersonalVaultDescription": { - "message": "只會匯出與 $EMAIL$ 關聯的個人密碼庫。組織密碼庫的項目不包含在內。", + "message": "只會匯出與 $EMAIL$ 關聯的個人密碼庫項目。組織密碼庫的項目不包含在內。", "placeholders": { "email": { "content": "$1", @@ -2017,7 +2021,7 @@ } }, "lastSeenOn": { - "message": "最後上線於 $DATE$", + "message": "最後上線於:$DATE$", "placeholders": { "date": { "content": "$1", diff --git a/apps/browser/store/locales/ml/copy.resx b/apps/browser/store/locales/ml/copy.resx index 78c3eea8dd3..cf9b6312273 100644 --- a/apps/browser/store/locales/ml/copy.resx +++ b/apps/browser/store/locales/ml/copy.resx @@ -118,10 +118,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ബിറ്റ്വാർഡൻ - സൗജന്യമായി പാസ്‌വേഡ് മാനേജർ + Bitwarden - സൗജന്യ പാസ്സ്‌വേഡ് മാനേജർ - നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങൾക്കും സുരക്ഷിതവും സൗജന്യവുമായ പാസ്‌വേഡ് മാനേജർ. + നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങൾക്കും സുരക്ഷിതവും സൗജന്യവുമായ പാസ്‌വേഡ് മാനേജർ നിങ്ങളുടെ എല്ലാ ലോഗിനുകളും പാസ്‌വേഡുകളും സംഭരിക്കുന്നതിനുള്ള ഏറ്റവും എളുപ്പവും സുരക്ഷിതവുമായ മാർഗ്ഗമാണ് Bitwarden, ഒപ്പം നിങ്ങളുടെ എല്ലാ ഉപകരണങ്ങളും തമ്മിൽ സമന്വയിപ്പിക്കുകയും ചെയ്യുന്നു. From 19c62ba22902b2e13866a691fb155072a4b93a65 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Fri, 14 Oct 2022 14:17:55 +0200 Subject: [PATCH 48/82] [PS-1676] Resolve Send Filters being truncated (#3791) --- apps/web/src/app/send/send.component.html | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/apps/web/src/app/send/send.component.html b/apps/web/src/app/send/send.component.html index ddf7e63d79e..a5460a7dfae 100644 --- a/apps/web/src/app/send/send.component.html +++ b/apps/web/src/app/send/send.component.html @@ -23,7 +23,7 @@
  • - @@ -37,24 +37,14 @@
    • -
    • - From de13097a89de5271ef6a0fec84550885ea097120 Mon Sep 17 00:00:00 2001 From: Aaron Toponce Date: Fri, 14 Oct 2022 06:57:45 -0600 Subject: [PATCH 49/82] fix typo: EEFLongWordList -> EFFLongWordList (#3742) Co-authored-by: Daniel James Smith --- libs/common/src/misc/wordlist.ts | 2 +- libs/common/src/services/crypto.service.ts | 10 +++++----- libs/common/src/services/passwordGeneration.service.ts | 8 ++++---- libs/common/src/services/usernameGeneration.service.ts | 6 +++--- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/libs/common/src/misc/wordlist.ts b/libs/common/src/misc/wordlist.ts index cdd30110ec5..6b832f7ccbf 100644 --- a/libs/common/src/misc/wordlist.ts +++ b/libs/common/src/misc/wordlist.ts @@ -1,5 +1,5 @@ // EFF's Long Wordlist from https://www.eff.org/dice -export const EEFLongWordList = [ +export const EFFLongWordList = [ "abacus", "abdomen", "abdominal", diff --git a/libs/common/src/services/crypto.service.ts b/libs/common/src/services/crypto.service.ts index 9b024cf7f22..970b9da0011 100644 --- a/libs/common/src/services/crypto.service.ts +++ b/libs/common/src/services/crypto.service.ts @@ -12,7 +12,7 @@ import { KdfType } from "../enums/kdfType"; import { KeySuffixOptions } from "../enums/keySuffixOptions"; import { sequentialize } from "../misc/sequentialize"; import { Utils } from "../misc/utils"; -import { EEFLongWordList } from "../misc/wordlist"; +import { EFFLongWordList } from "../misc/wordlist"; import { EncryptedOrganizationKeyData } from "../models/data/encryptedOrganizationKeyData"; import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; import { EncString } from "../models/domain/encString"; @@ -734,7 +734,7 @@ export class CryptoService implements CryptoServiceAbstraction { } private async hashPhrase(hash: ArrayBuffer, minimumEntropy = 64) { - const entropyPerWord = Math.log(EEFLongWordList.length) / Math.log(2); + const entropyPerWord = Math.log(EFFLongWordList.length) / Math.log(2); let numWords = Math.ceil(minimumEntropy / entropyPerWord); const hashArr = Array.from(new Uint8Array(hash)); @@ -746,9 +746,9 @@ export class CryptoService implements CryptoServiceAbstraction { const phrase: string[] = []; let hashNumber = bigInt.fromArray(hashArr, 256); while (numWords--) { - const remainder = hashNumber.mod(EEFLongWordList.length); - hashNumber = hashNumber.divide(EEFLongWordList.length); - phrase.push(EEFLongWordList[remainder as any]); + const remainder = hashNumber.mod(EFFLongWordList.length); + hashNumber = hashNumber.divide(EFFLongWordList.length); + phrase.push(EFFLongWordList[remainder as any]); } return phrase; } diff --git a/libs/common/src/services/passwordGeneration.service.ts b/libs/common/src/services/passwordGeneration.service.ts index c955bc35049..aad9e1ac3c4 100644 --- a/libs/common/src/services/passwordGeneration.service.ts +++ b/libs/common/src/services/passwordGeneration.service.ts @@ -6,7 +6,7 @@ import { PasswordGenerationService as PasswordGenerationServiceAbstraction } fro import { PolicyService } from "../abstractions/policy/policy.service.abstraction"; import { StateService } from "../abstractions/state.service"; import { PolicyType } from "../enums/policyType"; -import { EEFLongWordList } from "../misc/wordlist"; +import { EFFLongWordList } from "../misc/wordlist"; import { EncString } from "../models/domain/encString"; import { GeneratedPasswordHistory } from "../models/domain/generatedPasswordHistory"; import { PasswordGeneratorPolicyOptions } from "../models/domain/passwordGeneratorPolicyOptions"; @@ -161,14 +161,14 @@ export class PasswordGenerationService implements PasswordGenerationServiceAbstr o.includeNumber = false; } - const listLength = EEFLongWordList.length - 1; + const listLength = EFFLongWordList.length - 1; const wordList = new Array(o.numWords); for (let i = 0; i < o.numWords; i++) { const wordIndex = await this.cryptoService.randomNumber(0, listLength); if (o.capitalize) { - wordList[i] = this.capitalize(EEFLongWordList[wordIndex]); + wordList[i] = this.capitalize(EFFLongWordList[wordIndex]); } else { - wordList[i] = EEFLongWordList[wordIndex]; + wordList[i] = EFFLongWordList[wordIndex]; } } diff --git a/libs/common/src/services/usernameGeneration.service.ts b/libs/common/src/services/usernameGeneration.service.ts index 7a5abd4f7de..72eb11b3430 100644 --- a/libs/common/src/services/usernameGeneration.service.ts +++ b/libs/common/src/services/usernameGeneration.service.ts @@ -9,7 +9,7 @@ import { FirefoxRelayForwarder } from "../emailForwarders/firefoxRelayForwarder" import { Forwarder } from "../emailForwarders/forwarder"; import { ForwarderOptions } from "../emailForwarders/forwarderOptions"; import { SimpleLoginForwarder } from "../emailForwarders/simpleLoginForwarder"; -import { EEFLongWordList } from "../misc/wordlist"; +import { EFFLongWordList } from "../misc/wordlist"; const DefaultOptions = { type: "word", @@ -50,8 +50,8 @@ export class UsernameGenerationService implements BaseUsernameGenerationService o.wordIncludeNumber = true; } - const wordIndex = await this.cryptoService.randomNumber(0, EEFLongWordList.length - 1); - let word = EEFLongWordList[wordIndex]; + const wordIndex = await this.cryptoService.randomNumber(0, EFFLongWordList.length - 1); + let word = EFFLongWordList[wordIndex]; if (o.wordCapitalize) { word = word.charAt(0).toUpperCase() + word.slice(1); } From 1fd8d316a15ba015c3509afd75abb4f4bcb8e12b Mon Sep 17 00:00:00 2001 From: Robyn MacCallum Date: Fri, 14 Oct 2022 09:21:36 -0400 Subject: [PATCH 50/82] [SG-657] Use jest mock extended for unit test service mocks (#3690) * Use jest mock extended for unit test service mocks * Replace substitute with mock * Fix merge issues --- .../trial-initiation.component.spec.ts | 102 ++++++++---------- 1 file changed, 47 insertions(+), 55 deletions(-) diff --git a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts index c69a1bf1f0a..8e186aac069 100644 --- a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts +++ b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts @@ -5,19 +5,19 @@ import { ComponentFixture, fakeAsync, TestBed, tick } from "@angular/core/testin import { FormBuilder, UntypedFormBuilder } from "@angular/forms"; import { ActivatedRoute, Router } from "@angular/router"; import { RouterTestingModule } from "@angular/router/testing"; -// eslint-disable-next-line no-restricted-imports -import { Substitute } from "@fluffy-spoon/substitute"; +import { mock, MockProxy } from "jest-mock-extended"; import { BehaviorSubject, of } from "rxjs"; import { I18nPipe } from "@bitwarden/angular/pipes/i18n.pipe"; -import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/abstractions/policy/policy-api.service.abstraction"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; -import { StateService as BaseStateService } from "@bitwarden/common/abstractions/state.service"; +import { StateService } from "@bitwarden/common/abstractions/state.service"; import { PlanType } from "@bitwarden/common/enums/planType"; import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; +import { ListResponse } from "@bitwarden/common/models/response/listResponse"; +import { PolicyResponse } from "@bitwarden/common/models/response/policyResponse"; import { RouterService } from "../../core"; @@ -32,23 +32,15 @@ describe("TrialInitiationComponent", () => { const formBuilder: FormBuilder = new FormBuilder(); let routerSpy: jest.SpyInstance; - let stateServiceMock: any; - let apiServiceMock: any; - let policyServiceMock: any; + let stateServiceMock: MockProxy; + let policyApiServiceMock: MockProxy; + let policyServiceMock: MockProxy; beforeEach(() => { - // only mock functions we use in this component - stateServiceMock = { - getOrganizationInvitation: jest.fn(), - }; - - apiServiceMock = { - getPoliciesByToken: jest.fn(), - }; - - policyServiceMock = { - masterPasswordPolicyOptions$: jest.fn(), - }; + // only define services directly that we want to mock return values in this component + stateServiceMock = mock(); + policyApiServiceMock = mock(); + policyServiceMock = mock(); TestBed.configureTestingModule({ imports: [ @@ -73,23 +65,19 @@ describe("TrialInitiationComponent", () => { queryParams: mockQueryParams.asObservable(), }, }, - { provide: BaseStateService, useValue: stateServiceMock }, + { provide: StateService, useValue: stateServiceMock }, { provide: PolicyService, useValue: policyServiceMock }, - { provide: ApiService, useValue: apiServiceMock }, - { provide: LogService, useClass: Substitute.for() }, - { provide: I18nService, useClass: Substitute.for() }, - { provide: TitleCasePipe, useClass: Substitute.for() }, - { - provide: PolicyApiServiceAbstraction, - useClass: Substitute.for(), - }, + { provide: PolicyApiServiceAbstraction, useValue: policyApiServiceMock }, + { provide: LogService, useValue: mock() }, + { provide: I18nService, useValue: mock() }, + { provide: TitleCasePipe, useValue: mock() }, { provide: VerticalStepperComponent, useClass: VerticalStepperStubComponent, }, { provide: RouterService, - useClass: Substitute.for(), + useValue: mock(), }, ], schemas: [NO_ERRORS_SCHEMA], // Allows child components to be ignored (such as register component) @@ -119,32 +107,36 @@ describe("TrialInitiationComponent", () => { }); it("should set enforcedPolicyOptions if state service returns an invite", async () => { // Set up service method mocks - stateServiceMock.getOrganizationInvitation.mockReturnValueOnce({ - organizationId: testOrgId, - token: "token", - email: "testEmail", - organizationUserId: "123", - }); - apiServiceMock.getPoliciesByToken.mockReturnValueOnce({ - data: [ - { - id: "345", - organizationId: testOrgId, - type: 1, - data: [ - { - minComplexity: 4, - minLength: 10, - requireLower: null, - requireNumbers: null, - requireSpecial: null, - requireUpper: null, - }, - ], - enabled: true, - }, - ], - }); + stateServiceMock.getOrganizationInvitation.mockReturnValueOnce( + Promise.resolve({ + organizationId: testOrgId, + token: "token", + email: "testEmail", + organizationUserId: "123", + }) + ); + policyApiServiceMock.getPoliciesByToken.mockReturnValueOnce( + Promise.resolve({ + data: [ + { + id: "345", + organizationId: testOrgId, + type: 1, + data: [ + { + minComplexity: 4, + minLength: 10, + requireLower: null, + requireNumbers: null, + requireSpecial: null, + requireUpper: null, + }, + ], + enabled: true, + }, + ], + } as ListResponse) + ); policyServiceMock.masterPasswordPolicyOptions$.mockReturnValue( of({ minComplexity: 4, From e941f06bac63a2de6fae35d21c74cfde313014fa Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Fri, 14 Oct 2022 18:25:50 +0200 Subject: [PATCH 51/82] [SM-288] Rename models to follow naming convention (#3795) --- .../src/background/contextMenus.background.ts | 2 +- .../browser/src/background/main.background.ts | 4 +- .../background/nativeMessaging.background.ts | 4 +- .../src/background/notification.background.ts | 6 +-- .../state-migration-service.factory.ts | 2 +- .../state-service.factory.ts | 2 +- .../src/listeners/onCommandListener.ts | 2 +- .../src/listeners/onInstallListener.ts | 2 +- .../models/browserGroupingsComponentState.ts | 6 +-- .../src/models/browserSendComponentState.ts | 2 +- .../components/action-buttons.component.ts | 2 +- .../popup/components/cipher-row.component.ts | 2 +- .../popup/components/send-list.component.ts | 2 +- .../popup/generator/generator.component.ts | 2 +- .../popup/send/send-groupings.component.ts | 2 +- .../src/popup/send/send-type.component.ts | 2 +- .../src/popup/settings/folders.component.ts | 2 +- .../src/popup/vault/add-edit.component.ts | 2 +- .../src/popup/vault/ciphers.component.ts | 8 ++-- .../src/popup/vault/current-tab.component.ts | 2 +- .../src/popup/vault/vault-filter.component.ts | 8 ++-- .../browser/src/popup/vault/view.component.ts | 2 +- .../abstractKeyGeneration.service.ts | 2 +- .../services/abstractions/autofill.service.ts | 2 +- .../services/abstractions/state.service.ts | 2 +- apps/browser/src/services/autofill.service.ts | 4 +- .../src/services/folders/folder.service.ts | 2 +- .../src/services/keyGeneration.service.ts | 2 +- .../localBackedSessionStorage.service.spec.ts | 4 +- .../localBackedSessionStorage.service.ts | 6 +-- .../src/services/state.service.spec.ts | 4 +- apps/browser/src/services/state.service.ts | 4 +- .../src/services/vaultFilter.service.ts | 2 +- apps/cli/src/bw.ts | 2 +- apps/cli/src/commands/create.command.ts | 6 +-- apps/cli/src/commands/download.command.ts | 4 +- apps/cli/src/commands/edit.command.ts | 6 +-- apps/cli/src/commands/get.command.ts | 26 ++++++------ apps/cli/src/commands/list.command.ts | 4 +- apps/cli/src/commands/send/get.command.ts | 2 +- apps/cli/src/commands/send/receive.command.ts | 6 +-- .../request/organizationCollectionRequest.ts | 2 +- .../src/models/response/attachmentResponse.ts | 2 +- .../cli/src/models/response/cipherResponse.ts | 4 +- .../src/models/response/collectionResponse.ts | 4 +- .../cli/src/models/response/folderResponse.ts | 4 +- apps/cli/src/models/response/loginResponse.ts | 4 +- .../organizationCollectionResponse.ts | 2 +- .../response/passwordHistoryResponse.ts | 2 +- .../src/models/response/sendAccessResponse.ts | 2 +- .../src/models/response/sendFileResponse.ts | 2 +- apps/cli/src/models/response/sendResponse.ts | 2 +- .../src/models/response/sendTextResponse.ts | 2 +- .../services/nodeEnvSecureStorage.service.ts | 4 +- apps/cli/src/utils.ts | 4 +- .../src/nativeMessageService.ts | 4 +- apps/desktop/src/app/send/send.component.ts | 2 +- .../src/app/services/services.module.ts | 2 +- .../src/app/vault/ciphers.component.ts | 2 +- apps/desktop/src/app/vault/vault.component.ts | 4 +- apps/desktop/src/app/vault/view.component.ts | 2 +- apps/desktop/src/main.ts | 2 +- .../nativeMessaging/encryptedMessage.ts | 2 +- .../encryptedMessageResponse.ts | 2 +- .../nativeMessaging/legacyMessageWrapper.ts | 2 +- .../encryptedMessageHandlerService.ts | 6 +-- .../services/nativeMessageHandler.service.ts | 4 +- .../src/services/nativeMessaging.service.ts | 4 +- apps/desktop/src/services/state.service.ts | 2 +- .../login/login-with-device.component.ts | 4 +- .../src/app/accounts/login/login.component.ts | 4 +- .../register-form/register-form.component.ts | 2 +- .../src/app/accounts/register.component.ts | 4 +- .../trial-initiation.component.spec.ts | 2 +- .../trial-initiation.component.ts | 4 +- .../src/app/common/base.events.component.ts | 2 +- .../app/components/premium-badge.stories.ts | 2 +- apps/web/src/app/core/html-storage.service.ts | 2 +- apps/web/src/app/core/state/global-state.ts | 2 +- apps/web/src/app/core/state/state.service.ts | 10 ++--- .../manage/collection-add-edit.component.ts | 4 +- .../manage/collections.component.ts | 4 +- .../manage/group-add-edit.component.ts | 4 +- .../manage/reset-password.component.ts | 6 +-- .../manage/user-add-edit.component.ts | 6 +-- .../settings/delete-organization.component.ts | 2 +- .../organization-subscription.component.ts | 2 +- .../exposed-passwords-report.component.ts | 2 +- .../inactive-two-factor-report.component.ts | 2 +- .../reused-passwords-report.component.ts | 2 +- .../unsecured-websites-report.component.ts | 2 +- .../tools/weak-passwords-report.component.ts | 2 +- .../organizations/vault/add-edit.component.ts | 2 +- .../vault/attachments.component.ts | 4 +- .../organizations/vault/ciphers.component.ts | 2 +- .../vault/collections.component.ts | 2 +- .../organizations/vault/vault.component.ts | 2 +- .../reports/pages/cipher-report.component.ts | 2 +- .../exposed-passwords-report.component.ts | 2 +- .../inactive-two-factor-report.component.ts | 2 +- .../reused-passwords-report.component.ts | 2 +- .../unsecured-websites-report.component.ts | 2 +- .../pages/weak-passwords-report.component.ts | 2 +- apps/web/src/app/send/access.component.ts | 8 ++-- apps/web/src/app/send/send.component.ts | 2 +- .../settings/billing-sync-key.component.ts | 2 +- .../app/settings/change-password.component.ts | 4 +- .../emergency-access-attachments.component.ts | 2 +- .../emergency-access-takeover.component.ts | 4 +- .../emergency-access-view.component.ts | 6 +-- .../settings/organization-plans.component.ts | 4 +- .../src/app/settings/update-key.component.ts | 2 +- apps/web/src/app/vault/add-edit.component.ts | 2 +- .../src/app/vault/attachments.component.ts | 2 +- apps/web/src/app/vault/bulk-move.component.ts | 2 +- .../web/src/app/vault/bulk-share.component.ts | 4 +- apps/web/src/app/vault/ciphers.component.ts | 2 +- .../src/app/vault/collections.component.ts | 2 +- apps/web/src/app/vault/share.component.ts | 2 +- .../shared/vault-filter.service.ts | 4 +- apps/web/src/app/vault/vault.component.ts | 2 +- .../organizations/manage/scim.component.ts | 2 +- .../app/organizations/manage/sso.component.ts | 4 +- .../manage/user-add-edit.component.ts | 2 +- .../add-edit-custom-fields.component.ts | 4 +- .../src/components/add-edit.component.ts | 16 ++++---- .../src/components/attachments.component.ts | 6 +-- .../src/components/callout.component.ts | 2 +- .../components/change-password.component.ts | 6 +-- .../src/components/ciphers.component.ts | 2 +- .../src/components/collections.component.ts | 4 +- .../components/folder-add-edit.component.ts | 2 +- .../src/components/generator.component.ts | 2 +- libs/angular/src/components/icon.component.ts | 2 +- libs/angular/src/components/lock.component.ts | 4 +- .../angular/src/components/login.component.ts | 4 +- .../password-generator-history.component.ts | 2 +- .../components/password-history.component.ts | 2 +- .../src/components/register.component.ts | 2 +- .../src/components/send/add-edit.component.ts | 8 ++-- .../src/components/send/send.component.ts | 2 +- .../src/components/set-password.component.ts | 4 +- .../angular/src/components/share.component.ts | 4 +- libs/angular/src/components/sso.component.ts | 4 +- .../src/components/two-factor.component.ts | 2 +- .../components/update-password.component.ts | 6 +-- .../update-temp-password.component.ts | 6 +-- .../view-custom-fields.component.ts | 4 +- libs/angular/src/components/view.component.ts | 8 ++-- libs/angular/src/pipes/search-ciphers.pipe.ts | 2 +- .../src/services/jslib-services.module.ts | 2 +- .../components/collection-filter.component.ts | 4 +- .../components/folder-filter.component.ts | 4 +- .../organization-filter.component.ts | 2 +- .../components/type-filter.component.ts | 2 +- .../components/vault-filter.component.ts | 6 +-- .../models/dynamic-tree-node.model.ts | 6 +-- .../models/top-level-tree-node.model.ts | 2 +- .../models/vault-filter.model.spec.ts | 2 +- .../vault-filter/models/vault-filter.model.ts | 2 +- .../services/vault-filter.service.ts | 6 +-- ...bitwardenPasswordProtectedImporter.spec.ts | 2 +- .../spec/importers/firefoxCsvImporter.spec.ts | 6 +-- .../importers/lastpassCsvImporter.spec.ts | 6 +-- .../spec/importers/mykiCsvImporter.spec.ts | 2 +- .../importers/nordpassCsvImporter.spec.ts | 4 +- .../importers/onepassword1PuxImporter.spec.ts | 2 +- .../onepasswordMacCsvImporter.spec.ts | 2 +- .../onepasswordWinCsvImporter.spec.ts | 4 +- .../spec/importers/safariCsvImporter.spec.ts | 6 +-- .../logInStrategies/apiLogIn.strategy.spec.ts | 2 +- .../logInStrategies/logIn.strategy.spec.ts | 6 +-- .../passwordLogIn.strategy.spec.ts | 4 +- .../logInStrategies/ssoLogIn.strategy.spec.ts | 2 +- .../spec/models/domain/attachment.spec.ts | 6 +-- libs/common/spec/models/domain/card.spec.ts | 4 +- libs/common/spec/models/domain/cipher.spec.ts | 12 +++--- .../spec/models/domain/collection.spec.ts | 2 +- .../spec/models/domain/encArrayBuffer.spec.ts | 2 +- .../spec/models/domain/encString.spec.ts | 4 +- libs/common/spec/models/domain/field.spec.ts | 4 +- libs/common/spec/models/domain/folder.spec.ts | 6 +-- .../spec/models/domain/identity.spec.ts | 4 +- libs/common/spec/models/domain/login.spec.ts | 8 ++-- .../spec/models/domain/loginUri.spec.ts | 6 +-- .../spec/models/domain/password.spec.ts | 4 +- .../spec/models/domain/secureNote.spec.ts | 4 +- libs/common/spec/models/domain/send.spec.ts | 6 +-- .../spec/models/domain/sendAccess.spec.ts | 4 +- .../spec/models/domain/sendFile.spec.ts | 4 +- .../spec/models/domain/sendText.spec.ts | 4 +- .../models/domain/symmetricCryptoKey.spec.ts | 2 +- .../spec/models/view/attachmentView.spec.ts | 6 +-- .../spec/models/view/cipherView.spec.ts | 24 +++++------ .../spec/models/view/folderView.spec.ts | 2 +- .../common/spec/models/view/loginView.spec.ts | 6 +-- .../models/view/passwordHistoryView.spec.ts | 2 +- .../spec/services/cipher.service.spec.ts | 6 +-- .../spec/services/encrypt.service.spec.ts | 6 +-- .../spec/services/export.service.spec.ts | 8 ++-- .../spec/services/folder.service.spec.ts | 6 +-- .../organization/organization.service.spec.ts | 2 +- .../spec/services/policy.service.spec.ts | 10 ++--- .../services/stateMigration.service.spec.ts | 2 +- libs/common/spec/utils.ts | 2 +- .../webCryptoFunction.service.spec.ts | 2 +- .../abstractions/abstractEncrypt.service.ts | 6 +-- libs/common/src/abstractions/api.service.ts | 2 +- libs/common/src/abstractions/auth.service.ts | 6 +-- .../common/src/abstractions/cipher.service.ts | 8 ++-- .../src/abstractions/collection.service.ts | 6 +-- .../common/src/abstractions/crypto.service.ts | 6 +-- .../abstractions/cryptoFunction.service.ts | 4 +- .../common/src/abstractions/export.service.ts | 2 +- .../src/abstractions/fileUpload.service.ts | 4 +- .../folder/folder.service.abstraction.ts | 6 +-- .../passwordGeneration.service.ts | 4 +- .../policy/policy-api.service.abstraction.ts | 2 +- .../policy/policy.service.abstraction.ts | 6 +-- .../src/abstractions/provider.service.ts | 2 +- .../common/src/abstractions/search.service.ts | 4 +- libs/common/src/abstractions/send.service.ts | 8 ++-- libs/common/src/abstractions/state.service.ts | 38 +++++++++--------- .../src/abstractions/storage.service.ts | 2 +- .../src/factories/globalStateFactory.ts | 2 +- libs/common/src/factories/stateFactory.ts | 2 +- .../src/importers/ascendoCsvImporter.ts | 2 +- libs/common/src/importers/avastCsvImporter.ts | 2 +- .../common/src/importers/avastJsonImporter.ts | 2 +- libs/common/src/importers/aviraCsvImporter.ts | 2 +- libs/common/src/importers/baseImporter.ts | 16 ++++---- .../src/importers/bitwardenCsvImporter.ts | 12 +++--- .../src/importers/bitwardenJsonImporter.ts | 10 ++--- .../bitwardenPasswordProtectedImporter.ts | 6 +-- .../src/importers/blackBerryCsvImporter.ts | 2 +- libs/common/src/importers/blurCsvImporter.ts | 2 +- .../src/importers/buttercupCsvImporter.ts | 2 +- .../common/src/importers/chromeCsvImporter.ts | 2 +- .../src/importers/clipperzHtmlImporter.ts | 2 +- .../src/importers/codebookCsvImporter.ts | 2 +- .../dashlaneImporters/dashlaneCsvImporter.ts | 10 ++--- .../dashlaneImporters/dashlaneJsonImporter.ts | 10 ++--- .../src/importers/encryptrCsvImporter.ts | 4 +- .../common/src/importers/enpassCsvImporter.ts | 6 +-- .../src/importers/enpassJsonImporter.ts | 8 ++-- .../src/importers/firefoxCsvImporter.ts | 2 +- .../src/importers/fsecureFskImporter.ts | 4 +- .../common/src/importers/gnomeJsonImporter.ts | 2 +- libs/common/src/importers/importer.ts | 2 +- .../src/importers/kasperskyTxtImporter.ts | 2 +- .../src/importers/keepass2XmlImporter.ts | 4 +- .../src/importers/keepassxCsvImporter.ts | 2 +- .../keeperImporters/keeperCsvImporter.ts | 2 +- .../keeperImporters/keeperJsonImporter.ts | 2 +- .../src/importers/lastpassCsvImporter.ts | 14 +++---- .../src/importers/logMeOnceCsvImporter.ts | 2 +- .../src/importers/meldiumCsvImporter.ts | 2 +- .../src/importers/msecureCsvImporter.ts | 4 +- libs/common/src/importers/mykiCsvImporter.ts | 10 ++--- .../src/importers/nordpassCsvImporter.ts | 6 +-- .../cipherImportContext.ts | 2 +- .../onepassword1PifImporter.ts | 12 +++--- .../onepassword1PuxImporter.ts | 14 +++---- .../onepasswordCsvImporter.ts | 4 +- .../onepasswordMacCsvImporter.ts | 6 +-- .../onepasswordWinCsvImporter.ts | 8 ++-- .../src/importers/padlockCsvImporter.ts | 4 +- .../src/importers/passkeepCsvImporter.ts | 2 +- .../src/importers/passmanJsonImporter.ts | 2 +- .../src/importers/passpackCsvImporter.ts | 4 +- .../src/importers/passwordAgentCsvImporter.ts | 2 +- .../src/importers/passwordBossJsonImporter.ts | 6 +-- .../importers/passwordDragonXmlImporter.ts | 2 +- .../src/importers/passwordSafeXmlImporter.ts | 2 +- .../importers/passwordWalletTxtImporter.ts | 2 +- .../src/importers/rememBearCsvImporter.ts | 4 +- .../src/importers/roboformCsvImporter.ts | 2 +- .../common/src/importers/safariCsvImporter.ts | 2 +- .../src/importers/safeInCloudXmlImporter.ts | 10 ++--- .../src/importers/saferpassCsvImport.ts | 2 +- .../src/importers/secureSafeCsvImporter.ts | 2 +- .../src/importers/splashIdCsvImporter.ts | 4 +- .../importers/stickyPasswordXmlImporter.ts | 2 +- .../src/importers/truekeyCsvImporter.ts | 6 +-- libs/common/src/importers/upmCsvImporter.ts | 2 +- libs/common/src/importers/yotiCsvImporter.ts | 2 +- .../src/importers/zohoVaultCsvImporter.ts | 4 +- .../src/misc/linkedFieldOption.decorator.ts | 2 +- .../misc/logInStrategies/apiLogin.strategy.ts | 2 +- .../misc/logInStrategies/logIn.strategy.ts | 4 +- .../logInStrategies/passwordLogin.strategy.ts | 6 +-- .../passwordlessLogin.strategy.ts | 6 +-- .../misc/logInStrategies/ssoLogin.strategy.ts | 2 +- libs/common/src/misc/serviceUtils.ts | 2 +- ...onfigApi.ts => billing-sync-config.api.ts} | 0 .../models/api/{cardApi.ts => card.api.ts} | 0 .../models/api/{fieldApi.ts => field.api.ts} | 0 .../api/{identityApi.ts => identity.api.ts} | 0 .../api/{loginUriApi.ts => login-uri.api.ts} | 0 .../models/api/{loginApi.ts => login.api.ts} | 2 +- .../{permissionsApi.ts => permissions.api.ts} | 0 .../{scimConfigApi.ts => scim-config.api.ts} | 0 .../{secureNoteApi.ts => secure-note.api.ts} | 0 .../api/{sendFileApi.ts => send-file.api.ts} | 0 .../api/{sendTextApi.ts => send-text.api.ts} | 0 .../{ssoConfigApi.ts => sso-config.api.ts} | 2 +- .../{attachmentData.ts => attachment.data.ts} | 0 .../models/data/{cardData.ts => card.data.ts} | 2 +- .../data/{cipherData.ts => cipher.data.ts} | 14 +++---- .../{collectionData.ts => collection.data.ts} | 0 ....ts => encrypted-organization-key.data.ts} | 0 .../data/{eventData.ts => event.data.ts} | 0 .../data/{fieldData.ts => field.data.ts} | 2 +- .../data/{folderData.ts => folder.data.ts} | 0 .../{identityData.ts => identity.data.ts} | 2 +- .../data/{localData.ts => local.data.ts} | 0 .../{loginUriData.ts => login-uri.data.ts} | 2 +- .../data/{loginData.ts => login.data.ts} | 4 +- ...ganizationData.ts => organization.data.ts} | 2 +- ...istoryData.ts => password-history.data.ts} | 0 .../data/{policyData.ts => policy.data.ts} | 0 .../{providerData.ts => provider.data.ts} | 0 ...{secureNoteData.ts => secure-note.data.ts} | 2 +- .../{sendFileData.ts => send-file.data.ts} | 2 +- .../{sendTextData.ts => send-text.data.ts} | 2 +- .../models/data/{sendData.ts => send.data.ts} | 4 +- .../src/models/domain/account-keys.spec.ts | 2 +- .../models/domain/account-settings.spec.ts | 2 +- libs/common/src/models/domain/account.ts | 32 +++++++-------- libs/common/src/models/domain/attachment.ts | 10 ++--- .../domain/{authResult.ts => auth-result.ts} | 0 libs/common/src/models/domain/card.ts | 10 ++--- libs/common/src/models/domain/cipher.ts | 14 +++---- libs/common/src/models/domain/collection.ts | 8 ++-- ...yptParameters.ts => decrypt-parameters.ts} | 0 .../domain/{domainBase.ts => domain-base.ts} | 4 +- ...{encArrayBuffer.ts => enc-array-buffer.ts} | 0 .../domain/{encString.ts => enc-string.ts} | 2 +- ...encryptedObject.ts => encrypted-object.ts} | 2 +- ...onKey.ts => encrypted-organization-key.ts} | 6 +-- ...environmentUrls.ts => environment-urls.ts} | 0 libs/common/src/models/domain/field.ts | 10 ++--- libs/common/src/models/domain/folder.ts | 8 ++-- ...story.ts => generated-password-history.ts} | 0 .../{globalState.ts => global-state.ts} | 4 +- libs/common/src/models/domain/identity.ts | 10 ++--- .../{importResult.ts => import-result.ts} | 6 +-- ...InCredentials.ts => log-in-credentials.ts} | 3 +- .../domain/{loginUri.ts => login-uri.ts} | 10 ++--- libs/common/src/models/domain/login.ts | 12 +++--- ...s.ts => master-password-policy-options.ts} | 2 +- libs/common/src/models/domain/organization.ts | 4 +- ...s => password-generator-policy-options.ts} | 2 +- libs/common/src/models/domain/password.ts | 10 ++--- libs/common/src/models/domain/policy.ts | 4 +- libs/common/src/models/domain/provider.ts | 2 +- ...ns.ts => reset-password-policy-options.ts} | 2 +- .../domain/{secureNote.ts => secure-note.ts} | 8 ++-- .../domain/{sendAccess.ts => send-access.ts} | 12 +++--- .../domain/{sendFile.ts => send-file.ts} | 10 ++--- .../domain/{sendText.ts => send-text.ts} | 10 ++--- libs/common/src/models/domain/send.ts | 12 +++--- ...iphersCache.ts => sorted-ciphers-cache.ts} | 2 +- libs/common/src/models/domain/state.ts | 2 +- .../{storageOptions.ts => storage-options.ts} | 0 ...icCryptoKey.ts => symmetric-crypto-key.ts} | 0 .../domain/{treeNode.ts => tree-node.ts} | 0 .../{windowState.ts => window-state.ts} | 0 .../export/{cardExport.ts => card.export.ts} | 4 +- ...IdsExport.ts => cipher-with-ids.export.ts} | 4 +- .../{cipherExport.ts => cipher.export.ts} | 14 +++---- ...Export.ts => collection-with-id.export.ts} | 4 +- ...llectionExport.ts => collection.export.ts} | 4 +- .../{eventExport.ts => event.export.ts} | 2 +- .../{fieldExport.ts => field.export.ts} | 4 +- ...thIdExport.ts => folder-with-id.export.ts} | 4 +- .../{folderExport.ts => folder.export.ts} | 4 +- .../{identityExport.ts => identity.export.ts} | 4 +- ...{loginUriExport.ts => login-uri.export.ts} | 6 +-- .../{loginExport.ts => login.export.ts} | 6 +-- ...ureNoteExport.ts => secure-note.export.ts} | 4 +- .../src/models/request/cipherRequest.ts | 12 +++--- .../organization/organizationSsoRequest.ts | 2 +- .../request/organizationUserInviteRequest.ts | 2 +- .../request/organizationUserUpdateRequest.ts | 2 +- libs/common/src/models/request/sendRequest.ts | 4 +- .../src/models/response/cipherResponse.ts | 10 ++--- .../organization/organizationSsoResponse.ts | 2 +- .../organizationConnectionResponse.ts | 4 +- .../response/organizationUserResponse.ts | 2 +- .../response/profileOrganizationResponse.ts | 2 +- .../response/profileProviderResponse.ts | 2 +- .../response/provider/providerUserResponse.ts | 2 +- .../src/models/response/sendAccessResponse.ts | 4 +- .../src/models/response/sendResponse.ts | 4 +- .../{attachmentView.ts => attachment.view.ts} | 2 +- .../models/view/{cardView.ts => card.view.ts} | 2 +- .../view/{cipherView.ts => cipher.view.ts} | 16 ++++---- .../{collectionView.ts => collection.view.ts} | 2 +- .../view/{eventView.ts => event.view.ts} | 0 .../view/{fieldView.ts => field.view.ts} | 0 .../view/{folderView.ts => folder.view.ts} | 2 +- .../{identityView.ts => identity.view.ts} | 2 +- .../models/view/{itemView.ts => item.view.ts} | 0 .../{loginUriView.ts => login-uri.view.ts} | 2 +- .../view/{loginView.ts => login.view.ts} | 4 +- ...istoryView.ts => password-history.view.ts} | 0 ...{secureNoteView.ts => secure-note.view.ts} | 4 +- ...{sendAccessView.ts => send-access.view.ts} | 6 +-- .../{sendFileView.ts => send-file.view.ts} | 2 +- .../{sendTextView.ts => send-text.view.ts} | 2 +- .../models/view/{sendView.ts => send.view.ts} | 6 +-- .../{ssoConfigView.ts => sso-config.view.ts} | 2 +- libs/common/src/services/api.service.ts | 2 +- libs/common/src/services/auth.service.ts | 6 +-- .../src/services/azureFileUpload.service.ts | 2 +- .../services/bitwardenFileUpload.service.ts | 2 +- libs/common/src/services/cipher.service.ts | 24 +++++------ .../common/src/services/collection.service.ts | 6 +-- libs/common/src/services/crypto.service.ts | 10 ++--- libs/common/src/services/encrypt.service.ts | 8 ++-- .../src/services/environment.service.ts | 2 +- libs/common/src/services/event.service.ts | 2 +- libs/common/src/services/export.service.ts | 20 +++++----- .../common/src/services/fileUpload.service.ts | 4 +- .../src/services/folder/folder-api.service.ts | 2 +- .../src/services/folder/folder.service.ts | 8 ++-- libs/common/src/services/import.service.ts | 4 +- .../src/services/keyConnector.service.ts | 2 +- .../organization/organization.service.ts | 2 +- .../services/passwordGeneration.service.ts | 6 +-- .../src/services/policy/policy-api.service.ts | 4 +- .../src/services/policy/policy.service.ts | 6 +-- libs/common/src/services/provider.service.ts | 2 +- libs/common/src/services/search.service.ts | 4 +- libs/common/src/services/send.service.ts | 14 +++---- libs/common/src/services/state.service.ts | 40 +++++++++---------- .../src/services/stateMigration.service.ts | 26 ++++++------ libs/common/src/services/sync/sync.service.ts | 12 +++--- .../src/services/webCryptoFunction.service.ts | 4 +- .../src/services/electronCrypto.service.ts | 2 +- .../electronRendererSecureStorage.service.ts | 2 +- .../nodeCryptoFunction.service.spec.ts | 2 +- libs/node/src/cli/commands/login.command.ts | 4 +- .../services/nodeCryptoFunction.service.ts | 4 +- 445 files changed, 939 insertions(+), 938 deletions(-) rename libs/common/src/models/api/{billingSyncConfigApi.ts => billing-sync-config.api.ts} (100%) rename libs/common/src/models/api/{cardApi.ts => card.api.ts} (100%) rename libs/common/src/models/api/{fieldApi.ts => field.api.ts} (100%) rename libs/common/src/models/api/{identityApi.ts => identity.api.ts} (100%) rename libs/common/src/models/api/{loginUriApi.ts => login-uri.api.ts} (100%) rename libs/common/src/models/api/{loginApi.ts => login.api.ts} (94%) rename libs/common/src/models/api/{permissionsApi.ts => permissions.api.ts} (100%) rename libs/common/src/models/api/{scimConfigApi.ts => scim-config.api.ts} (100%) rename libs/common/src/models/api/{secureNoteApi.ts => secure-note.api.ts} (100%) rename libs/common/src/models/api/{sendFileApi.ts => send-file.api.ts} (100%) rename libs/common/src/models/api/{sendTextApi.ts => send-text.api.ts} (100%) rename libs/common/src/models/api/{ssoConfigApi.ts => sso-config.api.ts} (99%) rename libs/common/src/models/data/{attachmentData.ts => attachment.data.ts} (100%) rename libs/common/src/models/data/{cardData.ts => card.data.ts} (90%) rename libs/common/src/models/data/{cipherData.ts => cipher.data.ts} (87%) rename libs/common/src/models/data/{collectionData.ts => collection.data.ts} (100%) rename libs/common/src/models/data/{encryptedOrganizationKeyData.ts => encrypted-organization-key.data.ts} (100%) rename libs/common/src/models/data/{eventData.ts => event.data.ts} (100%) rename libs/common/src/models/data/{fieldData.ts => field.data.ts} (90%) rename libs/common/src/models/data/{folderData.ts => folder.data.ts} (100%) rename libs/common/src/models/data/{identityData.ts => identity.data.ts} (95%) rename libs/common/src/models/data/{localData.ts => local.data.ts} (100%) rename libs/common/src/models/data/{loginUriData.ts => login-uri.data.ts} (83%) rename libs/common/src/models/data/{loginData.ts => login.data.ts} (85%) rename libs/common/src/models/data/{organizationData.ts => organization.data.ts} (98%) rename libs/common/src/models/data/{passwordHistoryData.ts => password-history.data.ts} (100%) rename libs/common/src/models/data/{policyData.ts => policy.data.ts} (100%) rename libs/common/src/models/data/{providerData.ts => provider.data.ts} (100%) rename libs/common/src/models/data/{secureNoteData.ts => secure-note.data.ts} (80%) rename libs/common/src/models/data/{sendFileData.ts => send-file.data.ts} (85%) rename libs/common/src/models/data/{sendTextData.ts => send-text.data.ts} (80%) rename libs/common/src/models/data/{sendData.ts => send.data.ts} (93%) rename libs/common/src/models/domain/{authResult.ts => auth-result.ts} (100%) rename libs/common/src/models/domain/{decryptParameters.ts => decrypt-parameters.ts} (100%) rename libs/common/src/models/domain/{domainBase.ts => domain-base.ts} (95%) rename libs/common/src/models/domain/{encArrayBuffer.ts => enc-array-buffer.ts} (100%) rename libs/common/src/models/domain/{encString.ts => enc-string.ts} (98%) rename libs/common/src/models/domain/{encryptedObject.ts => encrypted-object.ts} (66%) rename libs/common/src/models/domain/{encryptedOrganizationKey.ts => encrypted-organization-key.ts} (88%) rename libs/common/src/models/domain/{environmentUrls.ts => environment-urls.ts} (100%) rename libs/common/src/models/domain/{generatedPasswordHistory.ts => generated-password-history.ts} (100%) rename libs/common/src/models/domain/{globalState.ts => global-state.ts} (92%) rename libs/common/src/models/domain/{importResult.ts => import-result.ts} (65%) rename libs/common/src/models/domain/{logInCredentials.ts => log-in-credentials.ts} (93%) rename libs/common/src/models/domain/{loginUri.ts => login-uri.ts} (80%) rename libs/common/src/models/domain/{masterPasswordPolicyOptions.ts => master-password-policy-options.ts} (84%) rename libs/common/src/models/domain/{passwordGeneratorPolicyOptions.ts => password-generator-policy-options.ts} (94%) rename libs/common/src/models/domain/{resetPasswordPolicyOptions.ts => reset-password-policy-options.ts} (71%) rename libs/common/src/models/domain/{secureNote.ts => secure-note.ts} (76%) rename libs/common/src/models/domain/{sendAccess.ts => send-access.ts} (83%) rename libs/common/src/models/domain/{sendFile.ts => send-file.ts} (71%) rename libs/common/src/models/domain/{sendText.ts => send-text.ts} (66%) rename libs/common/src/models/domain/{sortedCiphersCache.ts => sorted-ciphers-cache.ts} (97%) rename libs/common/src/models/domain/{storageOptions.ts => storage-options.ts} (100%) rename libs/common/src/models/domain/{symmetricCryptoKey.ts => symmetric-crypto-key.ts} (100%) rename libs/common/src/models/domain/{treeNode.ts => tree-node.ts} (100%) rename libs/common/src/models/domain/{windowState.ts => window-state.ts} (100%) rename libs/common/src/models/export/{cardExport.ts => card.export.ts} (95%) rename libs/common/src/models/export/{cipherWithIdsExport.ts => cipher-with-ids.export.ts} (79%) rename libs/common/src/models/export/{cipherExport.ts => cipher.export.ts} (92%) rename libs/common/src/models/export/{collectionWithIdExport.ts => collection-with-id.export.ts} (75%) rename libs/common/src/models/export/{collectionExport.ts => collection.export.ts} (92%) rename libs/common/src/models/export/{eventExport.ts => event.export.ts} (93%) rename libs/common/src/models/export/{fieldExport.ts => field.export.ts} (92%) rename libs/common/src/models/export/{folderWithIdExport.ts => folder-with-id.export.ts} (76%) rename libs/common/src/models/export/{folderExport.ts => folder.export.ts} (88%) rename libs/common/src/models/export/{identityExport.ts => identity.export.ts} (97%) rename libs/common/src/models/export/{loginUriExport.ts => login-uri.export.ts} (83%) rename libs/common/src/models/export/{loginExport.ts => login.export.ts} (91%) rename libs/common/src/models/export/{secureNoteExport.ts => secure-note.export.ts} (91%) rename libs/common/src/models/view/{attachmentView.ts => attachment.view.ts} (92%) rename libs/common/src/models/view/{cardView.ts => card.view.ts} (98%) rename libs/common/src/models/view/{cipherView.ts => cipher.view.ts} (92%) rename libs/common/src/models/view/{collectionView.ts => collection.view.ts} (92%) rename libs/common/src/models/view/{eventView.ts => event.view.ts} (100%) rename libs/common/src/models/view/{fieldView.ts => field.view.ts} (100%) rename libs/common/src/models/view/{folderView.ts => folder.view.ts} (91%) rename libs/common/src/models/view/{identityView.ts => identity.view.ts} (98%) rename libs/common/src/models/view/{itemView.ts => item.view.ts} (100%) rename libs/common/src/models/view/{loginUriView.ts => login-uri.view.ts} (98%) rename libs/common/src/models/view/{loginView.ts => login.view.ts} (95%) rename libs/common/src/models/view/{passwordHistoryView.ts => password-history.view.ts} (100%) rename libs/common/src/models/view/{secureNoteView.ts => secure-note.view.ts} (83%) rename libs/common/src/models/view/{sendAccessView.ts => send-access.view.ts} (78%) rename libs/common/src/models/view/{sendFileView.ts => send-file.view.ts} (91%) rename libs/common/src/models/view/{sendTextView.ts => send-text.view.ts} (86%) rename libs/common/src/models/view/{sendView.ts => send.view.ts} (90%) rename libs/common/src/models/view/{ssoConfigView.ts => sso-config.view.ts} (98%) diff --git a/apps/browser/src/background/contextMenus.background.ts b/apps/browser/src/background/contextMenus.background.ts index 8af66db1f0c..76fbfd78a97 100644 --- a/apps/browser/src/background/contextMenus.background.ts +++ b/apps/browser/src/background/contextMenus.background.ts @@ -7,7 +7,7 @@ import { TotpService } from "@bitwarden/common/abstractions/totp.service"; import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStatus"; import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { EventType } from "@bitwarden/common/enums/eventType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { BrowserApi } from "../browser/browserApi"; diff --git a/apps/browser/src/background/main.background.ts b/apps/browser/src/background/main.background.ts index 56c81ec5add..a580b474bef 100644 --- a/apps/browser/src/background/main.background.ts +++ b/apps/browser/src/background/main.background.ts @@ -41,8 +41,8 @@ import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStat import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { ApiService } from "@bitwarden/common/services/api.service"; import { AppIdService } from "@bitwarden/common/services/appId.service"; import { AuditService } from "@bitwarden/common/services/audit.service"; diff --git a/apps/browser/src/background/nativeMessaging.background.ts b/apps/browser/src/background/nativeMessaging.background.ts index 2e410b8e6ce..77146633cf7 100644 --- a/apps/browser/src/background/nativeMessaging.background.ts +++ b/apps/browser/src/background/nativeMessaging.background.ts @@ -9,8 +9,8 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { StateService } from "@bitwarden/common/abstractions/state.service"; import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStatus"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { BrowserApi } from "../browser/browserApi"; diff --git a/apps/browser/src/background/notification.background.ts b/apps/browser/src/background/notification.background.ts index 5eaec27325f..569a77abe70 100644 --- a/apps/browser/src/background/notification.background.ts +++ b/apps/browser/src/background/notification.background.ts @@ -8,9 +8,9 @@ import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStat import { CipherType } from "@bitwarden/common/enums/cipherType"; import { PolicyType } from "@bitwarden/common/enums/policyType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; -import { LoginView } from "@bitwarden/common/models/view/loginView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; +import { LoginView } from "@bitwarden/common/models/view/login.view"; import { BrowserApi } from "../browser/browserApi"; import { AutofillService } from "../services/abstractions/autofill.service"; diff --git a/apps/browser/src/background/service_factories/state-migration-service.factory.ts b/apps/browser/src/background/service_factories/state-migration-service.factory.ts index ae21298b72a..5c7fba3ed85 100644 --- a/apps/browser/src/background/service_factories/state-migration-service.factory.ts +++ b/apps/browser/src/background/service_factories/state-migration-service.factory.ts @@ -1,5 +1,5 @@ import { StateFactory } from "@bitwarden/common/factories/stateFactory"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { StateMigrationService } from "@bitwarden/common/services/stateMigration.service"; import { Account } from "../../models/account"; diff --git a/apps/browser/src/background/service_factories/state-service.factory.ts b/apps/browser/src/background/service_factories/state-service.factory.ts index 202148cd746..1b81567ac52 100644 --- a/apps/browser/src/background/service_factories/state-service.factory.ts +++ b/apps/browser/src/background/service_factories/state-service.factory.ts @@ -1,5 +1,5 @@ import { StateFactory } from "@bitwarden/common/factories/stateFactory"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { Account } from "../../models/account"; import { StateService } from "../../services/state.service"; diff --git a/apps/browser/src/listeners/onCommandListener.ts b/apps/browser/src/listeners/onCommandListener.ts index 294ea51a963..f0c492da89b 100644 --- a/apps/browser/src/listeners/onCommandListener.ts +++ b/apps/browser/src/listeners/onCommandListener.ts @@ -1,7 +1,7 @@ import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStatus"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { authServiceFactory } from "../background/service_factories/auth-service.factory"; import { autofillServiceFactory } from "../background/service_factories/autofill-service.factory"; diff --git a/apps/browser/src/listeners/onInstallListener.ts b/apps/browser/src/listeners/onInstallListener.ts index 63414d633ff..cc2d60594c9 100644 --- a/apps/browser/src/listeners/onInstallListener.ts +++ b/apps/browser/src/listeners/onInstallListener.ts @@ -1,5 +1,5 @@ import { StateFactory } from "@bitwarden/common/factories/stateFactory"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { environmentServiceFactory } from "../background/service_factories/environment-service.factory"; import { BrowserApi } from "../browser/browserApi"; diff --git a/apps/browser/src/models/browserGroupingsComponentState.ts b/apps/browser/src/models/browserGroupingsComponentState.ts index 3e244f9a52e..63eb4aaa88f 100644 --- a/apps/browser/src/models/browserGroupingsComponentState.ts +++ b/apps/browser/src/models/browserGroupingsComponentState.ts @@ -1,7 +1,7 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { BrowserComponentState } from "./browserComponentState"; diff --git a/apps/browser/src/models/browserSendComponentState.ts b/apps/browser/src/models/browserSendComponentState.ts index 8ba2407c5f8..e2bf4eaa5d6 100644 --- a/apps/browser/src/models/browserSendComponentState.ts +++ b/apps/browser/src/models/browserSendComponentState.ts @@ -1,5 +1,5 @@ import { SendType } from "@bitwarden/common/enums/sendType"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendView } from "@bitwarden/common/models/view/send.view"; import { BrowserComponentState } from "./browserComponentState"; diff --git a/apps/browser/src/popup/components/action-buttons.component.ts b/apps/browser/src/popup/components/action-buttons.component.ts index 5fd76bb4be1..3df8e0d4cd5 100644 --- a/apps/browser/src/popup/components/action-buttons.component.ts +++ b/apps/browser/src/popup/components/action-buttons.component.ts @@ -9,7 +9,7 @@ import { TotpService } from "@bitwarden/common/abstractions/totp.service"; import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { EventType } from "@bitwarden/common/enums/eventType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; @Component({ selector: "app-action-buttons", diff --git a/apps/browser/src/popup/components/cipher-row.component.ts b/apps/browser/src/popup/components/cipher-row.component.ts index 41fe8e07866..bb99316dd25 100644 --- a/apps/browser/src/popup/components/cipher-row.component.ts +++ b/apps/browser/src/popup/components/cipher-row.component.ts @@ -1,6 +1,6 @@ import { Component, EventEmitter, Input, Output } from "@angular/core"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; @Component({ selector: "app-cipher-row", diff --git a/apps/browser/src/popup/components/send-list.component.ts b/apps/browser/src/popup/components/send-list.component.ts index f019510b366..05254729eb3 100644 --- a/apps/browser/src/popup/components/send-list.component.ts +++ b/apps/browser/src/popup/components/send-list.component.ts @@ -1,7 +1,7 @@ import { Component, EventEmitter, Input, Output } from "@angular/core"; import { SendType } from "@bitwarden/common/enums/sendType"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendView } from "@bitwarden/common/models/view/send.view"; @Component({ selector: "app-send-list", diff --git a/apps/browser/src/popup/generator/generator.component.ts b/apps/browser/src/popup/generator/generator.component.ts index 41a033b980e..cff5e9e3c37 100644 --- a/apps/browser/src/popup/generator/generator.component.ts +++ b/apps/browser/src/popup/generator/generator.component.ts @@ -9,7 +9,7 @@ import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwo import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { UsernameGenerationService } from "@bitwarden/common/abstractions/usernameGeneration.service"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; @Component({ selector: "app-generator", diff --git a/apps/browser/src/popup/send/send-groupings.component.ts b/apps/browser/src/popup/send/send-groupings.component.ts index 0805742666d..1af715ada0f 100644 --- a/apps/browser/src/popup/send/send-groupings.component.ts +++ b/apps/browser/src/popup/send/send-groupings.component.ts @@ -12,7 +12,7 @@ import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { SendService } from "@bitwarden/common/abstractions/send.service"; import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; import { SendType } from "@bitwarden/common/enums/sendType"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendView } from "@bitwarden/common/models/view/send.view"; import { BrowserSendComponentState } from "../../models/browserSendComponentState"; import { StateService } from "../../services/abstractions/state.service"; diff --git a/apps/browser/src/popup/send/send-type.component.ts b/apps/browser/src/popup/send/send-type.component.ts index 3e4054bf723..afd3daeeda5 100644 --- a/apps/browser/src/popup/send/send-type.component.ts +++ b/apps/browser/src/popup/send/send-type.component.ts @@ -13,7 +13,7 @@ import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.serv import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { SendService } from "@bitwarden/common/abstractions/send.service"; import { SendType } from "@bitwarden/common/enums/sendType"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendView } from "@bitwarden/common/models/view/send.view"; import { BrowserComponentState } from "../../models/browserComponentState"; import { StateService } from "../../services/abstractions/state.service"; diff --git a/apps/browser/src/popup/settings/folders.component.ts b/apps/browser/src/popup/settings/folders.component.ts index f0fb2204d88..45f92d52212 100644 --- a/apps/browser/src/popup/settings/folders.component.ts +++ b/apps/browser/src/popup/settings/folders.component.ts @@ -3,7 +3,7 @@ import { Router } from "@angular/router"; import { map, Observable } from "rxjs"; import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; @Component({ selector: "app-folders", diff --git a/apps/browser/src/popup/vault/add-edit.component.ts b/apps/browser/src/popup/vault/add-edit.component.ts index d220a24a0d8..b890766f6b9 100644 --- a/apps/browser/src/popup/vault/add-edit.component.ts +++ b/apps/browser/src/popup/vault/add-edit.component.ts @@ -18,7 +18,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; import { BrowserApi } from "../../browser/browserApi"; import { PopupUtilsService } from "../services/popup-utils.service"; diff --git a/apps/browser/src/popup/vault/ciphers.component.ts b/apps/browser/src/popup/vault/ciphers.component.ts index 34d567bbe4f..2366a55d5bd 100644 --- a/apps/browser/src/popup/vault/ciphers.component.ts +++ b/apps/browser/src/popup/vault/ciphers.component.ts @@ -14,10 +14,10 @@ import { OrganizationService } from "@bitwarden/common/abstractions/organization import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { TreeNode } from "@bitwarden/common/models/domain/treeNode"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { TreeNode } from "@bitwarden/common/models/domain/tree-node"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { BrowserApi } from "../../browser/browserApi"; import { BrowserComponentState } from "../../models/browserComponentState"; diff --git a/apps/browser/src/popup/vault/current-tab.component.ts b/apps/browser/src/popup/vault/current-tab.component.ts index 82a2c73587a..48b22a518f7 100644 --- a/apps/browser/src/popup/vault/current-tab.component.ts +++ b/apps/browser/src/popup/vault/current-tab.component.ts @@ -15,7 +15,7 @@ import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.ab import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { BrowserApi } from "../../browser/browserApi"; import { AutofillService } from "../../services/abstractions/autofill.service"; diff --git a/apps/browser/src/popup/vault/vault-filter.component.ts b/apps/browser/src/popup/vault/vault-filter.component.ts index 0abc16e1eca..6ae6f9b88d9 100644 --- a/apps/browser/src/popup/vault/vault-filter.component.ts +++ b/apps/browser/src/popup/vault/vault-filter.component.ts @@ -11,10 +11,10 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { TreeNode } from "@bitwarden/common/models/domain/treeNode"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { TreeNode } from "@bitwarden/common/models/domain/tree-node"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { BrowserApi } from "../../browser/browserApi"; import { BrowserGroupingsComponentState } from "../../models/browserGroupingsComponentState"; diff --git a/apps/browser/src/popup/vault/view.component.ts b/apps/browser/src/popup/vault/view.component.ts index e43b86e6b8f..449c100819b 100644 --- a/apps/browser/src/popup/vault/view.component.ts +++ b/apps/browser/src/popup/vault/view.component.ts @@ -21,7 +21,7 @@ import { TokenService } from "@bitwarden/common/abstractions/token.service"; import { TotpService } from "@bitwarden/common/abstractions/totp.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; import { BrowserApi } from "../../browser/browserApi"; import { AutofillService } from "../../services/abstractions/autofill.service"; diff --git a/apps/browser/src/services/abstractions/abstractKeyGeneration.service.ts b/apps/browser/src/services/abstractions/abstractKeyGeneration.service.ts index ec6c758d968..6a70718addf 100644 --- a/apps/browser/src/services/abstractions/abstractKeyGeneration.service.ts +++ b/apps/browser/src/services/abstractions/abstractKeyGeneration.service.ts @@ -1,4 +1,4 @@ -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; export interface AbstractKeyGenerationService { makeEphemeralKey(numBytes?: number): Promise; diff --git a/apps/browser/src/services/abstractions/autofill.service.ts b/apps/browser/src/services/abstractions/autofill.service.ts index ceab1d589f8..c900875f5e4 100644 --- a/apps/browser/src/services/abstractions/autofill.service.ts +++ b/apps/browser/src/services/abstractions/autofill.service.ts @@ -1,4 +1,4 @@ -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import AutofillField from "../../models/autofillField"; import AutofillForm from "../../models/autofillForm"; diff --git a/apps/browser/src/services/abstractions/state.service.ts b/apps/browser/src/services/abstractions/state.service.ts index 0f552154d6a..294bc814e61 100644 --- a/apps/browser/src/services/abstractions/state.service.ts +++ b/apps/browser/src/services/abstractions/state.service.ts @@ -1,7 +1,7 @@ import { Jsonify } from "type-fest"; import { StateService as BaseStateServiceAbstraction } from "@bitwarden/common/abstractions/state.service"; -import { StorageOptions } from "@bitwarden/common/models/domain/storageOptions"; +import { StorageOptions } from "@bitwarden/common/models/domain/storage-options"; import { Account } from "../../models/account"; import { BrowserComponentState } from "../../models/browserComponentState"; diff --git a/apps/browser/src/services/autofill.service.ts b/apps/browser/src/services/autofill.service.ts index b403a2a679c..fe7837dd4b5 100644 --- a/apps/browser/src/services/autofill.service.ts +++ b/apps/browser/src/services/autofill.service.ts @@ -6,8 +6,8 @@ import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { EventType } from "@bitwarden/common/enums/eventType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { FieldView } from "@bitwarden/common/models/view/fieldView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { FieldView } from "@bitwarden/common/models/view/field.view"; import { BrowserApi } from "../browser/browserApi"; import AutofillField from "../models/autofillField"; diff --git a/apps/browser/src/services/folders/folder.service.ts b/apps/browser/src/services/folders/folder.service.ts index a3a6a4d8ba6..e4fc19644da 100644 --- a/apps/browser/src/services/folders/folder.service.ts +++ b/apps/browser/src/services/folders/folder.service.ts @@ -1,7 +1,7 @@ import { BehaviorSubject } from "rxjs"; import { Folder } from "@bitwarden/common/models/domain/folder"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { FolderService as BaseFolderService } from "@bitwarden/common/services/folder/folder.service"; import { browserSession, sessionSync } from "../../decorators/session-sync-observable"; diff --git a/apps/browser/src/services/keyGeneration.service.ts b/apps/browser/src/services/keyGeneration.service.ts index f6e1160a14a..0dbb1e81225 100644 --- a/apps/browser/src/services/keyGeneration.service.ts +++ b/apps/browser/src/services/keyGeneration.service.ts @@ -1,5 +1,5 @@ import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { AbstractKeyGenerationService } from "./abstractions/abstractKeyGeneration.service"; diff --git a/apps/browser/src/services/localBackedSessionStorage.service.spec.ts b/apps/browser/src/services/localBackedSessionStorage.service.spec.ts index 1d105ce3e4c..85937336081 100644 --- a/apps/browser/src/services/localBackedSessionStorage.service.spec.ts +++ b/apps/browser/src/services/localBackedSessionStorage.service.spec.ts @@ -2,8 +2,8 @@ import { Arg, Substitute, SubstituteOf } from "@fluffy-spoon/substitute"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { EncryptService } from "@bitwarden/common/src/services/encrypt.service"; import BrowserLocalStorageService from "./browserLocalStorage.service"; diff --git a/apps/browser/src/services/localBackedSessionStorage.service.ts b/apps/browser/src/services/localBackedSessionStorage.service.ts index dea2e75a5ed..5c98f4e3103 100644 --- a/apps/browser/src/services/localBackedSessionStorage.service.ts +++ b/apps/browser/src/services/localBackedSessionStorage.service.ts @@ -5,9 +5,9 @@ import { AbstractCachedStorageService, MemoryStorageServiceInterface, } from "@bitwarden/common/abstractions/storage.service"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { MemoryStorageOptions } from "@bitwarden/common/models/domain/storageOptions"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { MemoryStorageOptions } from "@bitwarden/common/models/domain/storage-options"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { devFlag } from "../decorators/dev-flag.decorator"; import { devFlagEnabled } from "../flags"; diff --git a/apps/browser/src/services/state.service.spec.ts b/apps/browser/src/services/state.service.spec.ts index f9aa6fc6433..e6bde9af5bb 100644 --- a/apps/browser/src/services/state.service.spec.ts +++ b/apps/browser/src/services/state.service.spec.ts @@ -8,9 +8,9 @@ import { } from "@bitwarden/common/abstractions/storage.service"; import { SendType } from "@bitwarden/common/enums/sendType"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { State } from "@bitwarden/common/models/domain/state"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendView } from "@bitwarden/common/models/view/send.view"; import { StateMigrationService } from "@bitwarden/common/services/stateMigration.service"; import { Account } from "../models/account"; diff --git a/apps/browser/src/services/state.service.ts b/apps/browser/src/services/state.service.ts index 78bc721031a..1a627935ee4 100644 --- a/apps/browser/src/services/state.service.ts +++ b/apps/browser/src/services/state.service.ts @@ -1,8 +1,8 @@ import { Jsonify } from "type-fest"; import { AbstractCachedStorageService } from "@bitwarden/common/abstractions/storage.service"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; -import { StorageOptions } from "@bitwarden/common/models/domain/storageOptions"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; +import { StorageOptions } from "@bitwarden/common/models/domain/storage-options"; import { StateService as BaseStateService, withPrototype, diff --git a/apps/browser/src/services/vaultFilter.service.ts b/apps/browser/src/services/vaultFilter.service.ts index 77016638d8f..f8b2e37d0ea 100644 --- a/apps/browser/src/services/vaultFilter.service.ts +++ b/apps/browser/src/services/vaultFilter.service.ts @@ -6,7 +6,7 @@ import { FolderService } from "@bitwarden/common/abstractions/folder/folder.serv import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; export class VaultFilterService extends BaseVaultFilterService { vaultFilter: VaultFilter = new VaultFilter(); diff --git a/apps/cli/src/bw.ts b/apps/cli/src/bw.ts index 489f92fac9d..c14fcc229a8 100644 --- a/apps/cli/src/bw.ts +++ b/apps/cli/src/bw.ts @@ -11,7 +11,7 @@ import { KeySuffixOptions } from "@bitwarden/common/enums/keySuffixOptions"; import { LogLevelType } from "@bitwarden/common/enums/logLevelType"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; import { Account } from "@bitwarden/common/models/domain/account"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { AppIdService } from "@bitwarden/common/services/appId.service"; import { AuditService } from "@bitwarden/common/services/audit.service"; import { AuthService } from "@bitwarden/common/services/auth.service"; diff --git a/apps/cli/src/commands/create.command.ts b/apps/cli/src/commands/create.command.ts index ad69efe51e8..c06c81eafc4 100644 --- a/apps/cli/src/commands/create.command.ts +++ b/apps/cli/src/commands/create.command.ts @@ -8,9 +8,9 @@ import { FolderApiServiceAbstraction } from "@bitwarden/common/abstractions/fold import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { Utils } from "@bitwarden/common/misc/utils"; -import { CipherExport } from "@bitwarden/common/models/export/cipherExport"; -import { CollectionExport } from "@bitwarden/common/models/export/collectionExport"; -import { FolderExport } from "@bitwarden/common/models/export/folderExport"; +import { CipherExport } from "@bitwarden/common/models/export/cipher.export"; +import { CollectionExport } from "@bitwarden/common/models/export/collection.export"; +import { FolderExport } from "@bitwarden/common/models/export/folder.export"; import { CollectionRequest } from "@bitwarden/common/models/request/collectionRequest"; import { SelectionReadOnlyRequest } from "@bitwarden/common/models/request/selectionReadOnlyRequest"; import { Response } from "@bitwarden/node/cli/models/response"; diff --git a/apps/cli/src/commands/download.command.ts b/apps/cli/src/commands/download.command.ts index bcd5a831f4c..eb40cf5a2d7 100644 --- a/apps/cli/src/commands/download.command.ts +++ b/apps/cli/src/commands/download.command.ts @@ -1,8 +1,8 @@ import * as fet from "node-fetch"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; -import { EncArrayBuffer } from "@bitwarden/common/models/domain/encArrayBuffer"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { Response } from "@bitwarden/node/cli/models/response"; import { FileResponse } from "@bitwarden/node/cli/models/response/fileResponse"; diff --git a/apps/cli/src/commands/edit.command.ts b/apps/cli/src/commands/edit.command.ts index 9c8f68c8285..235d455ee0c 100644 --- a/apps/cli/src/commands/edit.command.ts +++ b/apps/cli/src/commands/edit.command.ts @@ -4,9 +4,9 @@ import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { FolderApiServiceAbstraction } from "@bitwarden/common/abstractions/folder/folder-api.service.abstraction"; import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction"; import { Utils } from "@bitwarden/common/misc/utils"; -import { CipherExport } from "@bitwarden/common/models/export/cipherExport"; -import { CollectionExport } from "@bitwarden/common/models/export/collectionExport"; -import { FolderExport } from "@bitwarden/common/models/export/folderExport"; +import { CipherExport } from "@bitwarden/common/models/export/cipher.export"; +import { CollectionExport } from "@bitwarden/common/models/export/collection.export"; +import { FolderExport } from "@bitwarden/common/models/export/folder.export"; import { CollectionRequest } from "@bitwarden/common/models/request/collectionRequest"; import { SelectionReadOnlyRequest } from "@bitwarden/common/models/request/selectionReadOnlyRequest"; import { Response } from "@bitwarden/node/cli/models/response"; diff --git a/apps/cli/src/commands/get.command.ts b/apps/cli/src/commands/get.command.ts index 510cb10da3f..ce5975a4965 100644 --- a/apps/cli/src/commands/get.command.ts +++ b/apps/cli/src/commands/get.command.ts @@ -11,21 +11,21 @@ import { TotpService } from "@bitwarden/common/abstractions/totp.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { SendType } from "@bitwarden/common/enums/sendType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { CardExport } from "@bitwarden/common/models/export/cardExport"; -import { CipherExport } from "@bitwarden/common/models/export/cipherExport"; -import { CollectionExport } from "@bitwarden/common/models/export/collectionExport"; -import { FieldExport } from "@bitwarden/common/models/export/fieldExport"; -import { FolderExport } from "@bitwarden/common/models/export/folderExport"; -import { IdentityExport } from "@bitwarden/common/models/export/identityExport"; -import { LoginExport } from "@bitwarden/common/models/export/loginExport"; -import { LoginUriExport } from "@bitwarden/common/models/export/loginUriExport"; -import { SecureNoteExport } from "@bitwarden/common/models/export/secureNoteExport"; +import { CardExport } from "@bitwarden/common/models/export/card.export"; +import { CipherExport } from "@bitwarden/common/models/export/cipher.export"; +import { CollectionExport } from "@bitwarden/common/models/export/collection.export"; +import { FieldExport } from "@bitwarden/common/models/export/field.export"; +import { FolderExport } from "@bitwarden/common/models/export/folder.export"; +import { IdentityExport } from "@bitwarden/common/models/export/identity.export"; +import { LoginUriExport } from "@bitwarden/common/models/export/login-uri.export"; +import { LoginExport } from "@bitwarden/common/models/export/login.export"; +import { SecureNoteExport } from "@bitwarden/common/models/export/secure-note.export"; import { ErrorResponse } from "@bitwarden/common/models/response/errorResponse"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { Response } from "@bitwarden/node/cli/models/response"; import { StringResponse } from "@bitwarden/node/cli/models/response/stringResponse"; diff --git a/apps/cli/src/commands/list.command.ts b/apps/cli/src/commands/list.command.ts index dd779ec0576..4246769778a 100644 --- a/apps/cli/src/commands/list.command.ts +++ b/apps/cli/src/commands/list.command.ts @@ -5,14 +5,14 @@ import { FolderService } from "@bitwarden/common/abstractions/folder/folder.serv import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { Utils } from "@bitwarden/common/misc/utils"; -import { CollectionData } from "@bitwarden/common/models/data/collectionData"; +import { CollectionData } from "@bitwarden/common/models/data/collection.data"; import { Collection } from "@bitwarden/common/models/domain/collection"; import { CollectionDetailsResponse as ApiCollectionDetailsResponse, CollectionResponse as ApiCollectionResponse, } from "@bitwarden/common/models/response/collectionResponse"; import { ListResponse as ApiListResponse } from "@bitwarden/common/models/response/listResponse"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { Response } from "@bitwarden/node/cli/models/response"; import { ListResponse } from "@bitwarden/node/cli/models/response/listResponse"; diff --git a/apps/cli/src/commands/send/get.command.ts b/apps/cli/src/commands/send/get.command.ts index f47d8fbc5d3..aeae1203a61 100644 --- a/apps/cli/src/commands/send/get.command.ts +++ b/apps/cli/src/commands/send/get.command.ts @@ -5,7 +5,7 @@ import { EnvironmentService } from "@bitwarden/common/abstractions/environment.s import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { SendService } from "@bitwarden/common/abstractions/send.service"; import { Utils } from "@bitwarden/common/misc/utils"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendView } from "@bitwarden/common/models/view/send.view"; import { Response } from "@bitwarden/node/cli/models/response"; import { SendResponse } from "../../models/response/sendResponse"; diff --git a/apps/cli/src/commands/send/receive.command.ts b/apps/cli/src/commands/send/receive.command.ts index 21ab10eba94..e67ff3de679 100644 --- a/apps/cli/src/commands/send/receive.command.ts +++ b/apps/cli/src/commands/send/receive.command.ts @@ -9,11 +9,11 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { SendType } from "@bitwarden/common/enums/sendType"; import { NodeUtils } from "@bitwarden/common/misc/nodeUtils"; import { Utils } from "@bitwarden/common/misc/utils"; -import { SendAccess } from "@bitwarden/common/models/domain/sendAccess"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { SendAccess } from "@bitwarden/common/models/domain/send-access"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { SendAccessRequest } from "@bitwarden/common/models/request/sendAccessRequest"; import { ErrorResponse } from "@bitwarden/common/models/response/errorResponse"; -import { SendAccessView } from "@bitwarden/common/models/view/sendAccessView"; +import { SendAccessView } from "@bitwarden/common/models/view/send-access.view"; import { Response } from "@bitwarden/node/cli/models/response"; import { SendAccessResponse } from "../../models/response/sendAccessResponse"; diff --git a/apps/cli/src/models/request/organizationCollectionRequest.ts b/apps/cli/src/models/request/organizationCollectionRequest.ts index 79e85847c6d..7b9f184d855 100644 --- a/apps/cli/src/models/request/organizationCollectionRequest.ts +++ b/apps/cli/src/models/request/organizationCollectionRequest.ts @@ -1,4 +1,4 @@ -import { CollectionExport } from "@bitwarden/common/models/export/collectionExport"; +import { CollectionExport } from "@bitwarden/common/models/export/collection.export"; import { SelectionReadOnly } from "../selectionReadOnly"; diff --git a/apps/cli/src/models/response/attachmentResponse.ts b/apps/cli/src/models/response/attachmentResponse.ts index c8fcb875afd..2c6cb66e45d 100644 --- a/apps/cli/src/models/response/attachmentResponse.ts +++ b/apps/cli/src/models/response/attachmentResponse.ts @@ -1,4 +1,4 @@ -import { AttachmentView } from "@bitwarden/common/models/view/attachmentView"; +import { AttachmentView } from "@bitwarden/common/models/view/attachment.view"; export class AttachmentResponse { id: string; diff --git a/apps/cli/src/models/response/cipherResponse.ts b/apps/cli/src/models/response/cipherResponse.ts index 9f44fbb38a8..f1e83ac30e2 100644 --- a/apps/cli/src/models/response/cipherResponse.ts +++ b/apps/cli/src/models/response/cipherResponse.ts @@ -1,6 +1,6 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { CipherWithIdExport } from "@bitwarden/common/models/export/cipherWithIdsExport"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherWithIdExport } from "@bitwarden/common/models/export/cipher-with-ids.export"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { BaseResponse } from "@bitwarden/node/cli/models/response/baseResponse"; import { AttachmentResponse } from "./attachmentResponse"; diff --git a/apps/cli/src/models/response/collectionResponse.ts b/apps/cli/src/models/response/collectionResponse.ts index 866b5687dc1..1818c946e35 100644 --- a/apps/cli/src/models/response/collectionResponse.ts +++ b/apps/cli/src/models/response/collectionResponse.ts @@ -1,5 +1,5 @@ -import { CollectionWithIdExport } from "@bitwarden/common/models/export/collectionWithIdExport"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CollectionWithIdExport } from "@bitwarden/common/models/export/collection-with-id.export"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; import { BaseResponse } from "@bitwarden/node/cli/models/response/baseResponse"; export class CollectionResponse extends CollectionWithIdExport implements BaseResponse { diff --git a/apps/cli/src/models/response/folderResponse.ts b/apps/cli/src/models/response/folderResponse.ts index 6baa0df759c..196071fbab7 100644 --- a/apps/cli/src/models/response/folderResponse.ts +++ b/apps/cli/src/models/response/folderResponse.ts @@ -1,5 +1,5 @@ -import { FolderWithIdExport } from "@bitwarden/common/models/export/folderWithIdExport"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { FolderWithIdExport } from "@bitwarden/common/models/export/folder-with-id.export"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { BaseResponse } from "@bitwarden/node/cli/models/response/baseResponse"; export class FolderResponse extends FolderWithIdExport implements BaseResponse { diff --git a/apps/cli/src/models/response/loginResponse.ts b/apps/cli/src/models/response/loginResponse.ts index 9ebebcae9f6..7aa6e9184d6 100644 --- a/apps/cli/src/models/response/loginResponse.ts +++ b/apps/cli/src/models/response/loginResponse.ts @@ -1,5 +1,5 @@ -import { LoginExport } from "@bitwarden/common/models/export/loginExport"; -import { LoginView } from "@bitwarden/common/models/view/loginView"; +import { LoginExport } from "@bitwarden/common/models/export/login.export"; +import { LoginView } from "@bitwarden/common/models/view/login.view"; export class LoginResponse extends LoginExport { passwordRevisionDate: Date; diff --git a/apps/cli/src/models/response/organizationCollectionResponse.ts b/apps/cli/src/models/response/organizationCollectionResponse.ts index 812cc5de925..811e4b2a57d 100644 --- a/apps/cli/src/models/response/organizationCollectionResponse.ts +++ b/apps/cli/src/models/response/organizationCollectionResponse.ts @@ -1,4 +1,4 @@ -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; import { SelectionReadOnly } from "../selectionReadOnly"; diff --git a/apps/cli/src/models/response/passwordHistoryResponse.ts b/apps/cli/src/models/response/passwordHistoryResponse.ts index 55a626309b2..32f8878a380 100644 --- a/apps/cli/src/models/response/passwordHistoryResponse.ts +++ b/apps/cli/src/models/response/passwordHistoryResponse.ts @@ -1,4 +1,4 @@ -import { PasswordHistoryView } from "@bitwarden/common/models/view/passwordHistoryView"; +import { PasswordHistoryView } from "@bitwarden/common/models/view/password-history.view"; export class PasswordHistoryResponse { lastUsedDate: Date; diff --git a/apps/cli/src/models/response/sendAccessResponse.ts b/apps/cli/src/models/response/sendAccessResponse.ts index 4417b15a1ea..a37fd479b7e 100644 --- a/apps/cli/src/models/response/sendAccessResponse.ts +++ b/apps/cli/src/models/response/sendAccessResponse.ts @@ -1,5 +1,5 @@ import { SendType } from "@bitwarden/common/enums/sendType"; -import { SendAccessView } from "@bitwarden/common/models/view/sendAccessView"; +import { SendAccessView } from "@bitwarden/common/models/view/send-access.view"; import { BaseResponse } from "@bitwarden/node/cli/models/response/baseResponse"; import { SendFileResponse } from "./sendFileResponse"; diff --git a/apps/cli/src/models/response/sendFileResponse.ts b/apps/cli/src/models/response/sendFileResponse.ts index 6f80904ea96..b99fac379c9 100644 --- a/apps/cli/src/models/response/sendFileResponse.ts +++ b/apps/cli/src/models/response/sendFileResponse.ts @@ -1,4 +1,4 @@ -import { SendFileView } from "@bitwarden/common/models/view/sendFileView"; +import { SendFileView } from "@bitwarden/common/models/view/send-file.view"; export class SendFileResponse { static template(fileName = "file attachment location"): SendFileResponse { diff --git a/apps/cli/src/models/response/sendResponse.ts b/apps/cli/src/models/response/sendResponse.ts index b2c715d8f72..c2e47fa740e 100644 --- a/apps/cli/src/models/response/sendResponse.ts +++ b/apps/cli/src/models/response/sendResponse.ts @@ -1,6 +1,6 @@ import { SendType } from "@bitwarden/common/enums/sendType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendView } from "@bitwarden/common/models/view/send.view"; import { BaseResponse } from "@bitwarden/node/cli/models/response/baseResponse"; import { SendFileResponse } from "./sendFileResponse"; diff --git a/apps/cli/src/models/response/sendTextResponse.ts b/apps/cli/src/models/response/sendTextResponse.ts index 330f9d94601..e234ed66793 100644 --- a/apps/cli/src/models/response/sendTextResponse.ts +++ b/apps/cli/src/models/response/sendTextResponse.ts @@ -1,4 +1,4 @@ -import { SendTextView } from "@bitwarden/common/models/view/sendTextView"; +import { SendTextView } from "@bitwarden/common/models/view/send-text.view"; export class SendTextResponse { static template(text = "Text contained in the send.", hidden = false): SendTextResponse { diff --git a/apps/cli/src/services/nodeEnvSecureStorage.service.ts b/apps/cli/src/services/nodeEnvSecureStorage.service.ts index dcec777347e..2d1a8663eb8 100644 --- a/apps/cli/src/services/nodeEnvSecureStorage.service.ts +++ b/apps/cli/src/services/nodeEnvSecureStorage.service.ts @@ -2,8 +2,8 @@ import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.service"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncArrayBuffer } from "@bitwarden/common/models/domain/encArrayBuffer"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; export class NodeEnvSecureStorageService implements AbstractStorageService { constructor( diff --git a/apps/cli/src/utils.ts b/apps/cli/src/utils.ts index 62f09c6a135..440d02c25d2 100644 --- a/apps/cli/src/utils.ts +++ b/apps/cli/src/utils.ts @@ -8,8 +8,8 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { NodeUtils } from "@bitwarden/common/misc/nodeUtils"; import { Utils } from "@bitwarden/common/misc/utils"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { Response } from "@bitwarden/node/cli/models/response"; import { MessageResponse } from "@bitwarden/node/cli/models/response/messageResponse"; diff --git a/apps/desktop/native-messaging-test-runner/src/nativeMessageService.ts b/apps/desktop/native-messaging-test-runner/src/nativeMessageService.ts index ada09064e3c..0a5f4323b5f 100644 --- a/apps/desktop/native-messaging-test-runner/src/nativeMessageService.ts +++ b/apps/desktop/native-messaging-test-runner/src/nativeMessageService.ts @@ -3,8 +3,8 @@ import "module-alias/register"; import { v4 as uuidv4 } from "uuid"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { ConsoleLogService } from "@bitwarden/common/services/consoleLog.service"; import { EncryptService } from "@bitwarden/common/services/encrypt.service"; import { NodeCryptoFunctionService } from "@bitwarden/node/services/nodeCryptoFunction.service"; diff --git a/apps/desktop/src/app/send/send.component.ts b/apps/desktop/src/app/send/send.component.ts index 0717734f37d..95dfb83f367 100644 --- a/apps/desktop/src/app/send/send.component.ts +++ b/apps/desktop/src/app/send/send.component.ts @@ -9,7 +9,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { SendService } from "@bitwarden/common/abstractions/send.service"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendView } from "@bitwarden/common/models/view/send.view"; import { invokeMenu, RendererMenuItem } from "@bitwarden/electron/utils"; import { SearchBarService } from "../layout/search/search-bar.service"; diff --git a/apps/desktop/src/app/services/services.module.ts b/apps/desktop/src/app/services/services.module.ts index 44087b518a8..35ce7604bf7 100644 --- a/apps/desktop/src/app/services/services.module.ts +++ b/apps/desktop/src/app/services/services.module.ts @@ -34,7 +34,7 @@ import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.s import { SystemService as SystemServiceAbstraction } from "@bitwarden/common/abstractions/system.service"; import { ClientType } from "@bitwarden/common/enums/clientType"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { MemoryStorageService } from "@bitwarden/common/services/memoryStorage.service"; import { SystemService } from "@bitwarden/common/services/system.service"; import { ElectronCryptoService } from "@bitwarden/electron/services/electronCrypto.service"; diff --git a/apps/desktop/src/app/vault/ciphers.component.ts b/apps/desktop/src/app/vault/ciphers.component.ts index 8039a938430..4e0c6016ca9 100644 --- a/apps/desktop/src/app/vault/ciphers.component.ts +++ b/apps/desktop/src/app/vault/ciphers.component.ts @@ -2,7 +2,7 @@ import { Component } from "@angular/core"; import { CiphersComponent as BaseCiphersComponent } from "@bitwarden/angular/components/ciphers.component"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { SearchBarService } from "../layout/search/search-bar.service"; diff --git a/apps/desktop/src/app/vault/vault.component.ts b/apps/desktop/src/app/vault/vault.component.ts index c3437063021..9ddf15d65e6 100644 --- a/apps/desktop/src/app/vault/vault.component.ts +++ b/apps/desktop/src/app/vault/vault.component.ts @@ -25,8 +25,8 @@ import { TotpService } from "@bitwarden/common/abstractions/totp.service"; import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { EventType } from "@bitwarden/common/enums/eventType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { invokeMenu, RendererMenuItem } from "@bitwarden/electron/utils"; import { SearchBarService } from "../layout/search/search-bar.service"; diff --git a/apps/desktop/src/app/vault/view.component.ts b/apps/desktop/src/app/vault/view.component.ts index a3125c02e7d..8c14132c800 100644 --- a/apps/desktop/src/app/vault/view.component.ts +++ b/apps/desktop/src/app/vault/view.component.ts @@ -23,7 +23,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { StateService } from "@bitwarden/common/abstractions/state.service"; import { TokenService } from "@bitwarden/common/abstractions/token.service"; import { TotpService } from "@bitwarden/common/abstractions/totp.service"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; const BroadcasterSubscriptionId = "ViewComponent"; diff --git a/apps/desktop/src/main.ts b/apps/desktop/src/main.ts index 071cbebc33d..e47c3f47a18 100644 --- a/apps/desktop/src/main.ts +++ b/apps/desktop/src/main.ts @@ -3,7 +3,7 @@ import * as path from "path"; import { app } from "electron"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { MemoryStorageService } from "@bitwarden/common/services/memoryStorage.service"; import { StateService } from "@bitwarden/common/services/state.service"; import { ElectronLogService } from "@bitwarden/electron/services/electronLog.service"; diff --git a/apps/desktop/src/models/nativeMessaging/encryptedMessage.ts b/apps/desktop/src/models/nativeMessaging/encryptedMessage.ts index c7fd9913d11..bd0b5177a40 100644 --- a/apps/desktop/src/models/nativeMessaging/encryptedMessage.ts +++ b/apps/desktop/src/models/nativeMessaging/encryptedMessage.ts @@ -1,4 +1,4 @@ -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { MessageCommon } from "./messageCommon"; diff --git a/apps/desktop/src/models/nativeMessaging/encryptedMessageResponse.ts b/apps/desktop/src/models/nativeMessaging/encryptedMessageResponse.ts index 1abb81ba8f8..bed85b65e96 100644 --- a/apps/desktop/src/models/nativeMessaging/encryptedMessageResponse.ts +++ b/apps/desktop/src/models/nativeMessaging/encryptedMessageResponse.ts @@ -1,4 +1,4 @@ -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { MessageCommon } from "./messageCommon"; diff --git a/apps/desktop/src/models/nativeMessaging/legacyMessageWrapper.ts b/apps/desktop/src/models/nativeMessaging/legacyMessageWrapper.ts index 65142540fa7..5ef10e73289 100644 --- a/apps/desktop/src/models/nativeMessaging/legacyMessageWrapper.ts +++ b/apps/desktop/src/models/nativeMessaging/legacyMessageWrapper.ts @@ -1,4 +1,4 @@ -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { LegacyMessage } from "./legacyMessage"; diff --git a/apps/desktop/src/services/encryptedMessageHandlerService.ts b/apps/desktop/src/services/encryptedMessageHandlerService.ts index 1dd66185957..a064e031c89 100644 --- a/apps/desktop/src/services/encryptedMessageHandlerService.ts +++ b/apps/desktop/src/services/encryptedMessageHandlerService.ts @@ -6,9 +6,9 @@ import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.serv import { AuthenticationStatus } from "@bitwarden/common/enums/authenticationStatus"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { PolicyType } from "@bitwarden/common/enums/policyType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; -import { LoginView } from "@bitwarden/common/models/view/loginView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; +import { LoginView } from "@bitwarden/common/models/view/login.view"; import { DecryptedCommandData } from "../models/nativeMessaging/decryptedCommandData"; import { CredentialCreatePayload } from "../models/nativeMessaging/encryptedMessagePayloads/credentialCreatePayload"; diff --git a/apps/desktop/src/services/nativeMessageHandler.service.ts b/apps/desktop/src/services/nativeMessageHandler.service.ts index 5787e407343..8a578957bfe 100644 --- a/apps/desktop/src/services/nativeMessageHandler.service.ts +++ b/apps/desktop/src/services/nativeMessageHandler.service.ts @@ -8,8 +8,8 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; import { NativeMessagingVersion } from "@bitwarden/common/enums/nativeMessagingVersion"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { StateService } from "@bitwarden/common/services/state.service"; import { DecryptedCommandData } from "../models/nativeMessaging/decryptedCommandData"; diff --git a/apps/desktop/src/services/nativeMessaging.service.ts b/apps/desktop/src/services/nativeMessaging.service.ts index 2ff014fb240..484522d7a5d 100644 --- a/apps/desktop/src/services/nativeMessaging.service.ts +++ b/apps/desktop/src/services/nativeMessaging.service.ts @@ -11,8 +11,8 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { StateService } from "@bitwarden/common/abstractions/state.service"; import { KeySuffixOptions } from "@bitwarden/common/enums/keySuffixOptions"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { LegacyMessage } from "../models/nativeMessaging/legacyMessage"; import { LegacyMessageWrapper } from "../models/nativeMessaging/legacyMessageWrapper"; diff --git a/apps/desktop/src/services/state.service.ts b/apps/desktop/src/services/state.service.ts index 521868a8867..4cbf030d387 100644 --- a/apps/desktop/src/services/state.service.ts +++ b/apps/desktop/src/services/state.service.ts @@ -1,5 +1,5 @@ import { StateService as StateServiceAbstraction } from "@bitwarden/common/abstractions/state.service"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { StateService as BaseStateService } from "@bitwarden/common/services/state.service"; import { Account } from "../models/account"; diff --git a/apps/web/src/app/accounts/login/login-with-device.component.ts b/apps/web/src/app/accounts/login/login-with-device.component.ts index 32d350a1e05..8f4a61ad315 100644 --- a/apps/web/src/app/accounts/login/login-with-device.component.ts +++ b/apps/web/src/app/accounts/login/login-with-device.component.ts @@ -17,8 +17,8 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { StateService } from "@bitwarden/common/abstractions/state.service"; import { AuthRequestType } from "@bitwarden/common/enums/authRequestType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { PasswordlessLogInCredentials } from "@bitwarden/common/models/domain/logInCredentials"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { PasswordlessLogInCredentials } from "@bitwarden/common/models/domain/log-in-credentials"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { PasswordlessCreateAuthRequest } from "@bitwarden/common/models/request/passwordlessCreateAuthRequest"; import { AuthRequestResponse } from "@bitwarden/common/models/response/authRequestResponse"; diff --git a/apps/web/src/app/accounts/login/login.component.ts b/apps/web/src/app/accounts/login/login.component.ts index 02bc781ee17..20e95e5b042 100644 --- a/apps/web/src/app/accounts/login/login.component.ts +++ b/apps/web/src/app/accounts/login/login.component.ts @@ -17,8 +17,8 @@ import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwo import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { PolicyApiServiceAbstraction } from "@bitwarden/common/abstractions/policy/policy-api.service.abstraction"; import { InternalPolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; -import { PolicyData } from "@bitwarden/common/models/data/policyData"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; +import { PolicyData } from "@bitwarden/common/models/data/policy.data"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; import { Policy } from "@bitwarden/common/models/domain/policy"; import { ListResponse } from "@bitwarden/common/models/response/listResponse"; import { PolicyResponse } from "@bitwarden/common/models/response/policyResponse"; diff --git a/apps/web/src/app/accounts/register-form/register-form.component.ts b/apps/web/src/app/accounts/register-form/register-form.component.ts index ad3341fb6c0..43b67ae1244 100644 --- a/apps/web/src/app/accounts/register-form/register-form.component.ts +++ b/apps/web/src/app/accounts/register-form/register-form.component.ts @@ -14,7 +14,7 @@ import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwo import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; import { ReferenceEventRequest } from "@bitwarden/common/models/request/referenceEventRequest"; @Component({ diff --git a/apps/web/src/app/accounts/register.component.ts b/apps/web/src/app/accounts/register.component.ts index 2d1eb6d5e53..3283ddd5ced 100644 --- a/apps/web/src/app/accounts/register.component.ts +++ b/apps/web/src/app/accounts/register.component.ts @@ -17,8 +17,8 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyApiServiceAbstraction } from "@bitwarden/common/abstractions/policy/policy-api.service.abstraction"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { PolicyData } from "@bitwarden/common/models/data/policyData"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; +import { PolicyData } from "@bitwarden/common/models/data/policy.data"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; import { Policy } from "@bitwarden/common/models/domain/policy"; import { ReferenceEventRequest } from "@bitwarden/common/models/request/referenceEventRequest"; diff --git a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts index 8e186aac069..f4f8be64fb1 100644 --- a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts +++ b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.spec.ts @@ -15,7 +15,7 @@ import { PolicyApiServiceAbstraction } from "@bitwarden/common/abstractions/poli import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { PlanType } from "@bitwarden/common/enums/planType"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; import { ListResponse } from "@bitwarden/common/models/response/listResponse"; import { PolicyResponse } from "@bitwarden/common/models/response/policyResponse"; diff --git a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts index d8b2fc0873d..55550b0245a 100644 --- a/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts +++ b/apps/web/src/app/accounts/trial-initiation/trial-initiation.component.ts @@ -12,8 +12,8 @@ import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.serv import { StateService } from "@bitwarden/common/abstractions/state.service"; import { PlanType } from "@bitwarden/common/enums/planType"; import { ProductType } from "@bitwarden/common/enums/productType"; -import { PolicyData } from "@bitwarden/common/models/data/policyData"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; +import { PolicyData } from "@bitwarden/common/models/data/policy.data"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; import { Policy } from "@bitwarden/common/models/domain/policy"; import { ReferenceEventRequest } from "@bitwarden/common/models/request/referenceEventRequest"; diff --git a/apps/web/src/app/common/base.events.component.ts b/apps/web/src/app/common/base.events.component.ts index 31d44f68250..2e136ae2116 100644 --- a/apps/web/src/app/common/base.events.component.ts +++ b/apps/web/src/app/common/base.events.component.ts @@ -7,7 +7,7 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { EventResponse } from "@bitwarden/common/models/response/eventResponse"; import { ListResponse } from "@bitwarden/common/models/response/listResponse"; -import { EventView } from "@bitwarden/common/models/view/eventView"; +import { EventView } from "@bitwarden/common/models/view/event.view"; import { EventService } from "../core"; diff --git a/apps/web/src/app/components/premium-badge.stories.ts b/apps/web/src/app/components/premium-badge.stories.ts index fda398c8397..a1fcfd471e3 100644 --- a/apps/web/src/app/components/premium-badge.stories.ts +++ b/apps/web/src/app/components/premium-badge.stories.ts @@ -4,7 +4,7 @@ import { JslibModule } from "@bitwarden/angular/jslib.module"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { StorageOptions } from "@bitwarden/common/models/domain/storageOptions"; +import { StorageOptions } from "@bitwarden/common/models/domain/storage-options"; import { BadgeModule, I18nMockService } from "@bitwarden/components"; import { PremiumBadgeComponent } from "./premium-badge.component"; diff --git a/apps/web/src/app/core/html-storage.service.ts b/apps/web/src/app/core/html-storage.service.ts index 680051aa858..5988f3f289e 100644 --- a/apps/web/src/app/core/html-storage.service.ts +++ b/apps/web/src/app/core/html-storage.service.ts @@ -2,7 +2,7 @@ import { Injectable } from "@angular/core"; import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.service"; import { HtmlStorageLocation } from "@bitwarden/common/enums/htmlStorageLocation"; -import { StorageOptions } from "@bitwarden/common/models/domain/storageOptions"; +import { StorageOptions } from "@bitwarden/common/models/domain/storage-options"; @Injectable() export class HtmlStorageService implements AbstractStorageService { diff --git a/apps/web/src/app/core/state/global-state.ts b/apps/web/src/app/core/state/global-state.ts index 15fc03876f2..1bd80e20f1f 100644 --- a/apps/web/src/app/core/state/global-state.ts +++ b/apps/web/src/app/core/state/global-state.ts @@ -1,5 +1,5 @@ import { ThemeType } from "@bitwarden/common/enums/themeType"; -import { GlobalState as BaseGlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState as BaseGlobalState } from "@bitwarden/common/models/domain/global-state"; export class GlobalState extends BaseGlobalState { theme?: ThemeType = ThemeType.Light; diff --git a/apps/web/src/app/core/state/state.service.ts b/apps/web/src/app/core/state/state.service.ts index 7284ad87fed..7c1eefe2701 100644 --- a/apps/web/src/app/core/state/state.service.ts +++ b/apps/web/src/app/core/state/state.service.ts @@ -10,11 +10,11 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { StateMigrationService } from "@bitwarden/common/abstractions/stateMigration.service"; import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.service"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; -import { CipherData } from "@bitwarden/common/models/data/cipherData"; -import { CollectionData } from "@bitwarden/common/models/data/collectionData"; -import { FolderData } from "@bitwarden/common/models/data/folderData"; -import { SendData } from "@bitwarden/common/models/data/sendData"; -import { StorageOptions } from "@bitwarden/common/models/domain/storageOptions"; +import { CipherData } from "@bitwarden/common/models/data/cipher.data"; +import { CollectionData } from "@bitwarden/common/models/data/collection.data"; +import { FolderData } from "@bitwarden/common/models/data/folder.data"; +import { SendData } from "@bitwarden/common/models/data/send.data"; +import { StorageOptions } from "@bitwarden/common/models/domain/storage-options"; import { StateService as BaseStateService } from "@bitwarden/common/services/state.service"; import { Account } from "./account"; diff --git a/apps/web/src/app/organizations/manage/collection-add-edit.component.ts b/apps/web/src/app/organizations/manage/collection-add-edit.component.ts index 5c428abda4f..d018ea32f31 100644 --- a/apps/web/src/app/organizations/manage/collection-add-edit.component.ts +++ b/apps/web/src/app/organizations/manage/collection-add-edit.component.ts @@ -7,8 +7,8 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { CollectionRequest } from "@bitwarden/common/models/request/collectionRequest"; import { SelectionReadOnlyRequest } from "@bitwarden/common/models/request/selectionReadOnlyRequest"; import { GroupResponse } from "@bitwarden/common/models/response/groupResponse"; diff --git a/apps/web/src/app/organizations/manage/collections.component.ts b/apps/web/src/app/organizations/manage/collections.component.ts index d9fe9bdb689..d2bdc5caf56 100644 --- a/apps/web/src/app/organizations/manage/collections.component.ts +++ b/apps/web/src/app/organizations/manage/collections.component.ts @@ -10,7 +10,7 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; -import { CollectionData } from "@bitwarden/common/models/data/collectionData"; +import { CollectionData } from "@bitwarden/common/models/data/collection.data"; import { Collection } from "@bitwarden/common/models/domain/collection"; import { Organization } from "@bitwarden/common/models/domain/organization"; import { @@ -18,7 +18,7 @@ import { CollectionResponse, } from "@bitwarden/common/models/response/collectionResponse"; import { ListResponse } from "@bitwarden/common/models/response/listResponse"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; import { CollectionAddEditComponent } from "./collection-add-edit.component"; import { EntityUsersComponent } from "./entity-users.component"; diff --git a/apps/web/src/app/organizations/manage/group-add-edit.component.ts b/apps/web/src/app/organizations/manage/group-add-edit.component.ts index 0d5f654a505..9000f8318d3 100644 --- a/apps/web/src/app/organizations/manage/group-add-edit.component.ts +++ b/apps/web/src/app/organizations/manage/group-add-edit.component.ts @@ -5,12 +5,12 @@ import { CollectionService } from "@bitwarden/common/abstractions/collection.ser import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; -import { CollectionData } from "@bitwarden/common/models/data/collectionData"; +import { CollectionData } from "@bitwarden/common/models/data/collection.data"; import { Collection } from "@bitwarden/common/models/domain/collection"; import { GroupRequest } from "@bitwarden/common/models/request/groupRequest"; import { SelectionReadOnlyRequest } from "@bitwarden/common/models/request/selectionReadOnlyRequest"; import { CollectionDetailsResponse } from "@bitwarden/common/models/response/collectionResponse"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; @Component({ selector: "app-group-add-edit", diff --git a/apps/web/src/app/organizations/manage/reset-password.component.ts b/apps/web/src/app/organizations/manage/reset-password.component.ts index 97e9466e80e..53150fbfecd 100644 --- a/apps/web/src/app/organizations/manage/reset-password.component.ts +++ b/apps/web/src/app/organizations/manage/reset-password.component.ts @@ -18,9 +18,9 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { OrganizationUserResetPasswordRequest } from "@bitwarden/common/models/request/organizationUserResetPasswordRequest"; @Component({ diff --git a/apps/web/src/app/organizations/manage/user-add-edit.component.ts b/apps/web/src/app/organizations/manage/user-add-edit.component.ts index 678053b8690..2756f5c6a77 100644 --- a/apps/web/src/app/organizations/manage/user-add-edit.component.ts +++ b/apps/web/src/app/organizations/manage/user-add-edit.component.ts @@ -7,14 +7,14 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { OrganizationUserStatusType } from "@bitwarden/common/enums/organizationUserStatusType"; import { OrganizationUserType } from "@bitwarden/common/enums/organizationUserType"; -import { PermissionsApi } from "@bitwarden/common/models/api/permissionsApi"; -import { CollectionData } from "@bitwarden/common/models/data/collectionData"; +import { PermissionsApi } from "@bitwarden/common/models/api/permissions.api"; +import { CollectionData } from "@bitwarden/common/models/data/collection.data"; import { Collection } from "@bitwarden/common/models/domain/collection"; import { OrganizationUserInviteRequest } from "@bitwarden/common/models/request/organizationUserInviteRequest"; import { OrganizationUserUpdateRequest } from "@bitwarden/common/models/request/organizationUserUpdateRequest"; import { SelectionReadOnlyRequest } from "@bitwarden/common/models/request/selectionReadOnlyRequest"; import { CollectionDetailsResponse } from "@bitwarden/common/models/response/collectionResponse"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; @Component({ selector: "app-user-add-edit", diff --git a/apps/web/src/app/organizations/settings/delete-organization.component.ts b/apps/web/src/app/organizations/settings/delete-organization.component.ts index e67f667b9c9..1857a94f4c9 100644 --- a/apps/web/src/app/organizations/settings/delete-organization.component.ts +++ b/apps/web/src/app/organizations/settings/delete-organization.component.ts @@ -9,7 +9,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { UserVerificationService } from "@bitwarden/common/abstractions/userVerification/userVerification.service.abstraction"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { Verification } from "@bitwarden/common/types/verification"; class CountBasedLocalizationKey { diff --git a/apps/web/src/app/organizations/settings/organization-subscription.component.ts b/apps/web/src/app/organizations/settings/organization-subscription.component.ts index 7ee3a42da89..04a0c994437 100644 --- a/apps/web/src/app/organizations/settings/organization-subscription.component.ts +++ b/apps/web/src/app/organizations/settings/organization-subscription.component.ts @@ -13,7 +13,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { OrganizationApiKeyType } from "@bitwarden/common/enums/organizationApiKeyType"; import { OrganizationConnectionType } from "@bitwarden/common/enums/organizationConnectionType"; import { PlanType } from "@bitwarden/common/enums/planType"; -import { BillingSyncConfigApi } from "@bitwarden/common/models/api/billingSyncConfigApi"; +import { BillingSyncConfigApi } from "@bitwarden/common/models/api/billing-sync-config.api"; import { Organization } from "@bitwarden/common/models/domain/organization"; import { OrganizationConnectionResponse } from "@bitwarden/common/models/response/organizationConnectionResponse"; import { OrganizationSubscriptionResponse } from "@bitwarden/common/models/response/organizationSubscriptionResponse"; diff --git a/apps/web/src/app/organizations/tools/exposed-passwords-report.component.ts b/apps/web/src/app/organizations/tools/exposed-passwords-report.component.ts index adb7ba60246..af4cc8b4303 100644 --- a/apps/web/src/app/organizations/tools/exposed-passwords-report.component.ts +++ b/apps/web/src/app/organizations/tools/exposed-passwords-report.component.ts @@ -9,7 +9,7 @@ import { OrganizationService } from "@bitwarden/common/abstractions/organization import { PasswordRepromptService } from "@bitwarden/common/abstractions/passwordReprompt.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; // eslint-disable-next-line no-restricted-imports import { ExposedPasswordsReportComponent as BaseExposedPasswordsReportComponent } from "../../reports/pages/exposed-passwords-report.component"; diff --git a/apps/web/src/app/organizations/tools/inactive-two-factor-report.component.ts b/apps/web/src/app/organizations/tools/inactive-two-factor-report.component.ts index 49ae82ab5f3..4675c88dde9 100644 --- a/apps/web/src/app/organizations/tools/inactive-two-factor-report.component.ts +++ b/apps/web/src/app/organizations/tools/inactive-two-factor-report.component.ts @@ -8,7 +8,7 @@ import { MessagingService } from "@bitwarden/common/abstractions/messaging.servi import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PasswordRepromptService } from "@bitwarden/common/abstractions/passwordReprompt.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; // eslint-disable-next-line no-restricted-imports import { InactiveTwoFactorReportComponent as BaseInactiveTwoFactorReportComponent } from "../../reports/pages/inactive-two-factor-report.component"; diff --git a/apps/web/src/app/organizations/tools/reused-passwords-report.component.ts b/apps/web/src/app/organizations/tools/reused-passwords-report.component.ts index 74e5ac91bb1..1c43c7f748b 100644 --- a/apps/web/src/app/organizations/tools/reused-passwords-report.component.ts +++ b/apps/web/src/app/organizations/tools/reused-passwords-report.component.ts @@ -8,7 +8,7 @@ import { OrganizationService } from "@bitwarden/common/abstractions/organization import { PasswordRepromptService } from "@bitwarden/common/abstractions/passwordReprompt.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; // eslint-disable-next-line no-restricted-imports import { ReusedPasswordsReportComponent as BaseReusedPasswordsReportComponent } from "../../reports/pages/reused-passwords-report.component"; diff --git a/apps/web/src/app/organizations/tools/unsecured-websites-report.component.ts b/apps/web/src/app/organizations/tools/unsecured-websites-report.component.ts index dbb5e08be54..4323f82cb00 100644 --- a/apps/web/src/app/organizations/tools/unsecured-websites-report.component.ts +++ b/apps/web/src/app/organizations/tools/unsecured-websites-report.component.ts @@ -7,7 +7,7 @@ import { MessagingService } from "@bitwarden/common/abstractions/messaging.servi import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PasswordRepromptService } from "@bitwarden/common/abstractions/passwordReprompt.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; // eslint-disable-next-line no-restricted-imports import { UnsecuredWebsitesReportComponent as BaseUnsecuredWebsitesReportComponent } from "../../reports/pages/unsecured-websites-report.component"; diff --git a/apps/web/src/app/organizations/tools/weak-passwords-report.component.ts b/apps/web/src/app/organizations/tools/weak-passwords-report.component.ts index 3b8cc1490a0..af2345918b9 100644 --- a/apps/web/src/app/organizations/tools/weak-passwords-report.component.ts +++ b/apps/web/src/app/organizations/tools/weak-passwords-report.component.ts @@ -9,7 +9,7 @@ import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwo import { PasswordRepromptService } from "@bitwarden/common/abstractions/passwordReprompt.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; // eslint-disable-next-line no-restricted-imports import { WeakPasswordsReportComponent as BaseWeakPasswordsReportComponent } from "../../reports/pages/weak-passwords-report.component"; diff --git a/apps/web/src/app/organizations/vault/add-edit.component.ts b/apps/web/src/app/organizations/vault/add-edit.component.ts index e3943ef2a5e..a10c42a07b4 100644 --- a/apps/web/src/app/organizations/vault/add-edit.component.ts +++ b/apps/web/src/app/organizations/vault/add-edit.component.ts @@ -16,7 +16,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { TotpService } from "@bitwarden/common/abstractions/totp.service"; -import { CipherData } from "@bitwarden/common/models/data/cipherData"; +import { CipherData } from "@bitwarden/common/models/data/cipher.data"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; import { Organization } from "@bitwarden/common/models/domain/organization"; import { CipherCreateRequest } from "@bitwarden/common/models/request/cipherCreateRequest"; diff --git a/apps/web/src/app/organizations/vault/attachments.component.ts b/apps/web/src/app/organizations/vault/attachments.component.ts index aac10c8d8ef..79ed8e67b84 100644 --- a/apps/web/src/app/organizations/vault/attachments.component.ts +++ b/apps/web/src/app/organizations/vault/attachments.component.ts @@ -8,10 +8,10 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { CipherData } from "@bitwarden/common/models/data/cipherData"; +import { CipherData } from "@bitwarden/common/models/data/cipher.data"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { AttachmentView } from "@bitwarden/common/models/view/attachmentView"; +import { AttachmentView } from "@bitwarden/common/models/view/attachment.view"; import { AttachmentsComponent as BaseAttachmentsComponent } from "../../vault/attachments.component"; diff --git a/apps/web/src/app/organizations/vault/ciphers.component.ts b/apps/web/src/app/organizations/vault/ciphers.component.ts index 29b10d67a51..558c09d5e30 100644 --- a/apps/web/src/app/organizations/vault/ciphers.component.ts +++ b/apps/web/src/app/organizations/vault/ciphers.component.ts @@ -13,7 +13,7 @@ import { StateService } from "@bitwarden/common/abstractions/state.service"; import { TokenService } from "@bitwarden/common/abstractions/token.service"; import { TotpService } from "@bitwarden/common/abstractions/totp.service"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { CiphersComponent as BaseCiphersComponent } from "../../vault/ciphers.component"; diff --git a/apps/web/src/app/organizations/vault/collections.component.ts b/apps/web/src/app/organizations/vault/collections.component.ts index d724828e3bc..18058279707 100644 --- a/apps/web/src/app/organizations/vault/collections.component.ts +++ b/apps/web/src/app/organizations/vault/collections.component.ts @@ -6,7 +6,7 @@ import { CollectionService } from "@bitwarden/common/abstractions/collection.ser import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; -import { CipherData } from "@bitwarden/common/models/data/cipherData"; +import { CipherData } from "@bitwarden/common/models/data/cipher.data"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; import { Organization } from "@bitwarden/common/models/domain/organization"; import { CipherCollectionsRequest } from "@bitwarden/common/models/request/cipherCollectionsRequest"; diff --git a/apps/web/src/app/organizations/vault/vault.component.ts b/apps/web/src/app/organizations/vault/vault.component.ts index 1566d2e1535..7de36e65318 100644 --- a/apps/web/src/app/organizations/vault/vault.component.ts +++ b/apps/web/src/app/organizations/vault/vault.component.ts @@ -22,7 +22,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { VaultService } from "../../vault/shared/vault.service"; import { EntityEventsComponent } from "../manage/entity-events.component"; diff --git a/apps/web/src/app/reports/pages/cipher-report.component.ts b/apps/web/src/app/reports/pages/cipher-report.component.ts index 44d7cae619a..baf2ceb5635 100644 --- a/apps/web/src/app/reports/pages/cipher-report.component.ts +++ b/apps/web/src/app/reports/pages/cipher-report.component.ts @@ -6,7 +6,7 @@ import { PasswordRepromptService } from "@bitwarden/common/abstractions/password import { StateService } from "@bitwarden/common/abstractions/state.service"; import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { AddEditComponent as OrgAddEditComponent } from "../../organizations/vault/add-edit.component"; import { AddEditComponent } from "../../vault/add-edit.component"; diff --git a/apps/web/src/app/reports/pages/exposed-passwords-report.component.ts b/apps/web/src/app/reports/pages/exposed-passwords-report.component.ts index 443f03453cf..99a707da5d2 100644 --- a/apps/web/src/app/reports/pages/exposed-passwords-report.component.ts +++ b/apps/web/src/app/reports/pages/exposed-passwords-report.component.ts @@ -7,7 +7,7 @@ import { MessagingService } from "@bitwarden/common/abstractions/messaging.servi import { PasswordRepromptService } from "@bitwarden/common/abstractions/passwordReprompt.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { CipherReportComponent } from "./cipher-report.component"; diff --git a/apps/web/src/app/reports/pages/inactive-two-factor-report.component.ts b/apps/web/src/app/reports/pages/inactive-two-factor-report.component.ts index 03047f36cd7..f84050b9001 100644 --- a/apps/web/src/app/reports/pages/inactive-two-factor-report.component.ts +++ b/apps/web/src/app/reports/pages/inactive-two-factor-report.component.ts @@ -8,7 +8,7 @@ import { PasswordRepromptService } from "@bitwarden/common/abstractions/password import { StateService } from "@bitwarden/common/abstractions/state.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { CipherReportComponent } from "./cipher-report.component"; diff --git a/apps/web/src/app/reports/pages/reused-passwords-report.component.ts b/apps/web/src/app/reports/pages/reused-passwords-report.component.ts index d2330bfcffc..83e9229341f 100644 --- a/apps/web/src/app/reports/pages/reused-passwords-report.component.ts +++ b/apps/web/src/app/reports/pages/reused-passwords-report.component.ts @@ -6,7 +6,7 @@ import { MessagingService } from "@bitwarden/common/abstractions/messaging.servi import { PasswordRepromptService } from "@bitwarden/common/abstractions/passwordReprompt.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { CipherReportComponent } from "./cipher-report.component"; diff --git a/apps/web/src/app/reports/pages/unsecured-websites-report.component.ts b/apps/web/src/app/reports/pages/unsecured-websites-report.component.ts index ed8eb68df22..22e2c1ddede 100644 --- a/apps/web/src/app/reports/pages/unsecured-websites-report.component.ts +++ b/apps/web/src/app/reports/pages/unsecured-websites-report.component.ts @@ -6,7 +6,7 @@ import { MessagingService } from "@bitwarden/common/abstractions/messaging.servi import { PasswordRepromptService } from "@bitwarden/common/abstractions/passwordReprompt.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { CipherReportComponent } from "./cipher-report.component"; diff --git a/apps/web/src/app/reports/pages/weak-passwords-report.component.ts b/apps/web/src/app/reports/pages/weak-passwords-report.component.ts index f18cff53bbd..dabb835d725 100644 --- a/apps/web/src/app/reports/pages/weak-passwords-report.component.ts +++ b/apps/web/src/app/reports/pages/weak-passwords-report.component.ts @@ -7,7 +7,7 @@ import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwo import { PasswordRepromptService } from "@bitwarden/common/abstractions/passwordReprompt.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { CipherReportComponent } from "./cipher-report.component"; diff --git a/apps/web/src/app/send/access.component.ts b/apps/web/src/app/send/access.component.ts index 7f4c6bbab8e..f850ad76af5 100644 --- a/apps/web/src/app/send/access.component.ts +++ b/apps/web/src/app/send/access.component.ts @@ -10,13 +10,13 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { SEND_KDF_ITERATIONS } from "@bitwarden/common/enums/kdfType"; import { SendType } from "@bitwarden/common/enums/sendType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncArrayBuffer } from "@bitwarden/common/models/domain/encArrayBuffer"; -import { SendAccess } from "@bitwarden/common/models/domain/sendAccess"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer"; +import { SendAccess } from "@bitwarden/common/models/domain/send-access"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { SendAccessRequest } from "@bitwarden/common/models/request/sendAccessRequest"; import { ErrorResponse } from "@bitwarden/common/models/response/errorResponse"; import { SendAccessResponse } from "@bitwarden/common/models/response/sendAccessResponse"; -import { SendAccessView } from "@bitwarden/common/models/view/sendAccessView"; +import { SendAccessView } from "@bitwarden/common/models/view/send-access.view"; @Component({ selector: "app-send-access", diff --git a/apps/web/src/app/send/send.component.ts b/apps/web/src/app/send/send.component.ts index 2719d904564..c5022ad5eaf 100644 --- a/apps/web/src/app/send/send.component.ts +++ b/apps/web/src/app/send/send.component.ts @@ -10,7 +10,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { SendService } from "@bitwarden/common/abstractions/send.service"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendView } from "@bitwarden/common/models/view/send.view"; import { AddEditComponent } from "./add-edit.component"; diff --git a/apps/web/src/app/settings/billing-sync-key.component.ts b/apps/web/src/app/settings/billing-sync-key.component.ts index fb992abd662..ba194f4a93c 100644 --- a/apps/web/src/app/settings/billing-sync-key.component.ts +++ b/apps/web/src/app/settings/billing-sync-key.component.ts @@ -3,7 +3,7 @@ import { Component } from "@angular/core"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { OrganizationConnectionType } from "@bitwarden/common/enums/organizationConnectionType"; -import { BillingSyncConfigApi } from "@bitwarden/common/models/api/billingSyncConfigApi"; +import { BillingSyncConfigApi } from "@bitwarden/common/models/api/billing-sync-config.api"; import { BillingSyncConfigRequest } from "@bitwarden/common/models/request/billingSyncConfigRequest"; import { OrganizationConnectionRequest } from "@bitwarden/common/models/request/organizationConnectionRequest"; import { OrganizationConnectionResponse } from "@bitwarden/common/models/response/organizationConnectionResponse"; diff --git a/apps/web/src/app/settings/change-password.component.ts b/apps/web/src/app/settings/change-password.component.ts index 45672940f15..40b4b213055 100644 --- a/apps/web/src/app/settings/change-password.component.ts +++ b/apps/web/src/app/settings/change-password.component.ts @@ -20,8 +20,8 @@ import { StateService } from "@bitwarden/common/abstractions/state.service"; import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; import { EmergencyAccessStatusType } from "@bitwarden/common/enums/emergencyAccessStatusType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { CipherWithIdRequest } from "@bitwarden/common/models/request/cipherWithIdRequest"; import { EmergencyAccessUpdateRequest } from "@bitwarden/common/models/request/emergencyAccessUpdateRequest"; import { FolderWithIdRequest } from "@bitwarden/common/models/request/folderWithIdRequest"; diff --git a/apps/web/src/app/settings/emergency-access-attachments.component.ts b/apps/web/src/app/settings/emergency-access-attachments.component.ts index 525a332f144..383078e3368 100644 --- a/apps/web/src/app/settings/emergency-access-attachments.component.ts +++ b/apps/web/src/app/settings/emergency-access-attachments.component.ts @@ -9,7 +9,7 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { AttachmentView } from "@bitwarden/common/models/view/attachmentView"; +import { AttachmentView } from "@bitwarden/common/models/view/attachment.view"; @Component({ selector: "emergency-access-attachments", diff --git a/apps/web/src/app/settings/emergency-access-takeover.component.ts b/apps/web/src/app/settings/emergency-access-takeover.component.ts index 27a9484f4de..3951178912e 100644 --- a/apps/web/src/app/settings/emergency-access-takeover.component.ts +++ b/apps/web/src/app/settings/emergency-access-takeover.component.ts @@ -12,9 +12,9 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { KdfType } from "@bitwarden/common/enums/kdfType"; -import { PolicyData } from "@bitwarden/common/models/data/policyData"; +import { PolicyData } from "@bitwarden/common/models/data/policy.data"; import { Policy } from "@bitwarden/common/models/domain/policy"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { EmergencyAccessPasswordRequest } from "@bitwarden/common/models/request/emergencyAccessPasswordRequest"; import { PolicyResponse } from "@bitwarden/common/models/response/policyResponse"; diff --git a/apps/web/src/app/settings/emergency-access-view.component.ts b/apps/web/src/app/settings/emergency-access-view.component.ts index f40113a5ad6..a9eede29f75 100644 --- a/apps/web/src/app/settings/emergency-access-view.component.ts +++ b/apps/web/src/app/settings/emergency-access-view.component.ts @@ -5,11 +5,11 @@ import { ModalService } from "@bitwarden/angular/services/modal.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; import { CipherService } from "@bitwarden/common/abstractions/cipher.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; -import { CipherData } from "@bitwarden/common/models/data/cipherData"; +import { CipherData } from "@bitwarden/common/models/data/cipher.data"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { EmergencyAccessViewResponse } from "@bitwarden/common/models/response/emergencyAccessResponse"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { EmergencyAccessAttachmentsComponent } from "./emergency-access-attachments.component"; import { EmergencyAddEditComponent } from "./emergency-add-edit.component"; diff --git a/apps/web/src/app/settings/organization-plans.component.ts b/apps/web/src/app/settings/organization-plans.component.ts index 934803b3fb1..7089b1d6968 100644 --- a/apps/web/src/app/settings/organization-plans.component.ts +++ b/apps/web/src/app/settings/organization-plans.component.ts @@ -25,8 +25,8 @@ import { PaymentMethodType } from "@bitwarden/common/enums/paymentMethodType"; import { PlanType } from "@bitwarden/common/enums/planType"; import { PolicyType } from "@bitwarden/common/enums/policyType"; import { ProductType } from "@bitwarden/common/enums/productType"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { OrganizationCreateRequest } from "@bitwarden/common/models/request/organizationCreateRequest"; import { OrganizationKeysRequest } from "@bitwarden/common/models/request/organizationKeysRequest"; import { OrganizationUpgradeRequest } from "@bitwarden/common/models/request/organizationUpgradeRequest"; diff --git a/apps/web/src/app/settings/update-key.component.ts b/apps/web/src/app/settings/update-key.component.ts index 52a22d13e95..c12e7cae574 100644 --- a/apps/web/src/app/settings/update-key.component.ts +++ b/apps/web/src/app/settings/update-key.component.ts @@ -10,7 +10,7 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { CipherWithIdRequest } from "@bitwarden/common/models/request/cipherWithIdRequest"; import { FolderWithIdRequest } from "@bitwarden/common/models/request/folderWithIdRequest"; import { UpdateKeyRequest } from "@bitwarden/common/models/request/updateKeyRequest"; diff --git a/apps/web/src/app/vault/add-edit.component.ts b/apps/web/src/app/vault/add-edit.component.ts index adbdebefef7..af75e4e99af 100644 --- a/apps/web/src/app/vault/add-edit.component.ts +++ b/apps/web/src/app/vault/add-edit.component.ts @@ -18,7 +18,7 @@ import { StateService } from "@bitwarden/common/abstractions/state.service"; import { TotpService } from "@bitwarden/common/abstractions/totp.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { EventType } from "@bitwarden/common/enums/eventType"; -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; @Component({ selector: "app-vault-add-edit", diff --git a/apps/web/src/app/vault/attachments.component.ts b/apps/web/src/app/vault/attachments.component.ts index 080c06e37e5..a2f361dd016 100644 --- a/apps/web/src/app/vault/attachments.component.ts +++ b/apps/web/src/app/vault/attachments.component.ts @@ -9,7 +9,7 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { AttachmentView } from "@bitwarden/common/models/view/attachmentView"; +import { AttachmentView } from "@bitwarden/common/models/view/attachment.view"; @Component({ selector: "app-vault-attachments", diff --git a/apps/web/src/app/vault/bulk-move.component.ts b/apps/web/src/app/vault/bulk-move.component.ts index 29e017b9356..b3f56f65e8d 100644 --- a/apps/web/src/app/vault/bulk-move.component.ts +++ b/apps/web/src/app/vault/bulk-move.component.ts @@ -5,7 +5,7 @@ import { CipherService } from "@bitwarden/common/abstractions/cipher.service"; import { FolderService } from "@bitwarden/common/abstractions/folder/folder.service.abstraction"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; @Component({ selector: "app-vault-bulk-move", diff --git a/apps/web/src/app/vault/bulk-share.component.ts b/apps/web/src/app/vault/bulk-share.component.ts index abf17fba9b0..74fa1a30435 100644 --- a/apps/web/src/app/vault/bulk-share.component.ts +++ b/apps/web/src/app/vault/bulk-share.component.ts @@ -7,8 +7,8 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; import { Checkable, isChecked } from "@bitwarden/common/types/checkable"; @Component({ diff --git a/apps/web/src/app/vault/ciphers.component.ts b/apps/web/src/app/vault/ciphers.component.ts index 624ea1e65e6..0d7559ec781 100644 --- a/apps/web/src/app/vault/ciphers.component.ts +++ b/apps/web/src/app/vault/ciphers.component.ts @@ -16,7 +16,7 @@ import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { EventType } from "@bitwarden/common/enums/eventType"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; const MaxCheckedCount = 500; diff --git a/apps/web/src/app/vault/collections.component.ts b/apps/web/src/app/vault/collections.component.ts index 3dc712c09e6..d169bb7b332 100644 --- a/apps/web/src/app/vault/collections.component.ts +++ b/apps/web/src/app/vault/collections.component.ts @@ -6,7 +6,7 @@ import { CollectionService } from "@bitwarden/common/abstractions/collection.ser import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; @Component({ selector: "app-vault-collections", diff --git a/apps/web/src/app/vault/share.component.ts b/apps/web/src/app/vault/share.component.ts index 6d22c0fe50d..2fd64268a83 100644 --- a/apps/web/src/app/vault/share.component.ts +++ b/apps/web/src/app/vault/share.component.ts @@ -7,7 +7,7 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; @Component({ selector: "app-vault-share", diff --git a/apps/web/src/app/vault/vault-filter/shared/vault-filter.service.ts b/apps/web/src/app/vault/vault-filter/shared/vault-filter.service.ts index d8bb48ce663..0df0187ed61 100644 --- a/apps/web/src/app/vault/vault-filter/shared/vault-filter.service.ts +++ b/apps/web/src/app/vault/vault-filter/shared/vault-filter.service.ts @@ -11,10 +11,10 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; -import { CollectionData } from "@bitwarden/common/models/data/collectionData"; +import { CollectionData } from "@bitwarden/common/models/data/collection.data"; import { Collection } from "@bitwarden/common/models/domain/collection"; import { CollectionDetailsResponse } from "@bitwarden/common/models/response/collectionResponse"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; @Injectable() export class VaultFilterService extends BaseVaultFilterService { diff --git a/apps/web/src/app/vault/vault.component.ts b/apps/web/src/app/vault/vault.component.ts index 892a4fac8dc..a511d44e36d 100644 --- a/apps/web/src/app/vault/vault.component.ts +++ b/apps/web/src/app/vault/vault.component.ts @@ -23,7 +23,7 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { StateService } from "@bitwarden/common/abstractions/state.service"; import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; import { TokenService } from "@bitwarden/common/abstractions/token.service"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { UpdateKeyComponent } from "../settings/update-key.component"; diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/scim.component.ts b/bitwarden_license/bit-web/src/app/organizations/manage/scim.component.ts index fcd3046696c..015fb770e93 100644 --- a/bitwarden_license/bit-web/src/app/organizations/manage/scim.component.ts +++ b/bitwarden_license/bit-web/src/app/organizations/manage/scim.component.ts @@ -9,7 +9,7 @@ import { OrganizationApiServiceAbstraction } from "@bitwarden/common/abstraction import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { OrganizationApiKeyType } from "@bitwarden/common/enums/organizationApiKeyType"; import { OrganizationConnectionType } from "@bitwarden/common/enums/organizationConnectionType"; -import { ScimConfigApi } from "@bitwarden/common/models/api/scimConfigApi"; +import { ScimConfigApi } from "@bitwarden/common/models/api/scim-config.api"; import { OrganizationApiKeyRequest } from "@bitwarden/common/models/request/organizationApiKeyRequest"; import { OrganizationConnectionRequest } from "@bitwarden/common/models/request/organizationConnectionRequest"; import { ScimConfigRequest } from "@bitwarden/common/models/request/scimConfigRequest"; diff --git a/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts b/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts index e871486eff7..0752858204a 100644 --- a/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts +++ b/bitwarden_license/bit-web/src/app/organizations/manage/sso.component.ts @@ -17,11 +17,11 @@ import { SsoType, } from "@bitwarden/common/enums/ssoEnums"; import { Utils } from "@bitwarden/common/misc/utils"; -import { SsoConfigApi } from "@bitwarden/common/models/api/ssoConfigApi"; +import { SsoConfigApi } from "@bitwarden/common/models/api/sso-config.api"; import { Organization } from "@bitwarden/common/models/domain/organization"; import { OrganizationSsoRequest } from "@bitwarden/common/models/request/organization/organizationSsoRequest"; import { OrganizationSsoResponse } from "@bitwarden/common/models/response/organization/organizationSsoResponse"; -import { SsoConfigView } from "@bitwarden/common/models/view/ssoConfigView"; +import { SsoConfigView } from "@bitwarden/common/models/view/sso-config.view"; const defaultSigningAlgorithm = "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"; diff --git a/bitwarden_license/bit-web/src/app/providers/manage/user-add-edit.component.ts b/bitwarden_license/bit-web/src/app/providers/manage/user-add-edit.component.ts index c48d6742378..99f2a1301c1 100644 --- a/bitwarden_license/bit-web/src/app/providers/manage/user-add-edit.component.ts +++ b/bitwarden_license/bit-web/src/app/providers/manage/user-add-edit.component.ts @@ -5,7 +5,7 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { ProviderUserType } from "@bitwarden/common/enums/providerUserType"; -import { PermissionsApi } from "@bitwarden/common/models/api/permissionsApi"; +import { PermissionsApi } from "@bitwarden/common/models/api/permissions.api"; import { ProviderUserInviteRequest } from "@bitwarden/common/models/request/provider/providerUserInviteRequest"; import { ProviderUserUpdateRequest } from "@bitwarden/common/models/request/provider/providerUserUpdateRequest"; diff --git a/libs/angular/src/components/add-edit-custom-fields.component.ts b/libs/angular/src/components/add-edit-custom-fields.component.ts index 23615ed3423..fdea9b0596d 100644 --- a/libs/angular/src/components/add-edit-custom-fields.component.ts +++ b/libs/angular/src/components/add-edit-custom-fields.component.ts @@ -7,8 +7,8 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { EventType } from "@bitwarden/common/enums/eventType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { FieldView } from "@bitwarden/common/models/view/fieldView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { FieldView } from "@bitwarden/common/models/view/field.view"; @Directive() export class AddEditCustomFieldsComponent implements OnChanges { diff --git a/libs/angular/src/components/add-edit.component.ts b/libs/angular/src/components/add-edit.component.ts index c57b78e6656..f70cdd999ab 100644 --- a/libs/angular/src/components/add-edit.component.ts +++ b/libs/angular/src/components/add-edit.component.ts @@ -23,14 +23,14 @@ import { SecureNoteType } from "@bitwarden/common/enums/secureNoteType"; import { UriMatchType } from "@bitwarden/common/enums/uriMatchType"; import { Utils } from "@bitwarden/common/misc/utils"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { CardView } from "@bitwarden/common/models/view/cardView"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; -import { IdentityView } from "@bitwarden/common/models/view/identityView"; -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; -import { LoginView } from "@bitwarden/common/models/view/loginView"; -import { SecureNoteView } from "@bitwarden/common/models/view/secureNoteView"; +import { CardView } from "@bitwarden/common/models/view/card.view"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; +import { IdentityView } from "@bitwarden/common/models/view/identity.view"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; +import { LoginView } from "@bitwarden/common/models/view/login.view"; +import { SecureNoteView } from "@bitwarden/common/models/view/secure-note.view"; @Directive() export class AddEditComponent implements OnInit, OnDestroy { diff --git a/libs/angular/src/components/attachments.component.ts b/libs/angular/src/components/attachments.component.ts index b535faaa805..ea273e74121 100644 --- a/libs/angular/src/components/attachments.component.ts +++ b/libs/angular/src/components/attachments.component.ts @@ -9,10 +9,10 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { EncArrayBuffer } from "@bitwarden/common/models/domain/encArrayBuffer"; +import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer"; import { ErrorResponse } from "@bitwarden/common/models/response/errorResponse"; -import { AttachmentView } from "@bitwarden/common/models/view/attachmentView"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { AttachmentView } from "@bitwarden/common/models/view/attachment.view"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; @Directive() export class AttachmentsComponent implements OnInit { diff --git a/libs/angular/src/components/callout.component.ts b/libs/angular/src/components/callout.component.ts index 3f32828ed80..2ca5466f84a 100644 --- a/libs/angular/src/components/callout.component.ts +++ b/libs/angular/src/components/callout.component.ts @@ -1,7 +1,7 @@ import { Component, Input, OnInit } from "@angular/core"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; @Component({ selector: "app-callout", diff --git a/libs/angular/src/components/change-password.component.ts b/libs/angular/src/components/change-password.component.ts index 27952eec2e6..77403fbe67a 100644 --- a/libs/angular/src/components/change-password.component.ts +++ b/libs/angular/src/components/change-password.component.ts @@ -9,9 +9,9 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { KdfType } from "@bitwarden/common/enums/kdfType"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { PasswordColorText } from "../shared/components/password-strength/password-strength.component"; diff --git a/libs/angular/src/components/ciphers.component.ts b/libs/angular/src/components/ciphers.component.ts index 7391caacde2..d6a484be43b 100644 --- a/libs/angular/src/components/ciphers.component.ts +++ b/libs/angular/src/components/ciphers.component.ts @@ -1,7 +1,7 @@ import { Directive, EventEmitter, Input, Output } from "@angular/core"; import { SearchService } from "@bitwarden/common/abstractions/search.service"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; @Directive() export class CiphersComponent { diff --git a/libs/angular/src/components/collections.component.ts b/libs/angular/src/components/collections.component.ts index 3ad67148156..2265454ead0 100644 --- a/libs/angular/src/components/collections.component.ts +++ b/libs/angular/src/components/collections.component.ts @@ -6,8 +6,8 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; @Directive() export class CollectionsComponent implements OnInit { diff --git a/libs/angular/src/components/folder-add-edit.component.ts b/libs/angular/src/components/folder-add-edit.component.ts index 2558482c2da..c389d72dcd8 100644 --- a/libs/angular/src/components/folder-add-edit.component.ts +++ b/libs/angular/src/components/folder-add-edit.component.ts @@ -5,7 +5,7 @@ import { FolderService } from "@bitwarden/common/abstractions/folder/folder.serv import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; @Directive() export class FolderAddEditComponent implements OnInit { diff --git a/libs/angular/src/components/generator.component.ts b/libs/angular/src/components/generator.component.ts index 41bcb98ad1c..2e7d0aaada6 100644 --- a/libs/angular/src/components/generator.component.ts +++ b/libs/angular/src/components/generator.component.ts @@ -8,7 +8,7 @@ import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwo import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { UsernameGenerationService } from "@bitwarden/common/abstractions/usernameGeneration.service"; -import { PasswordGeneratorPolicyOptions } from "@bitwarden/common/models/domain/passwordGeneratorPolicyOptions"; +import { PasswordGeneratorPolicyOptions } from "@bitwarden/common/models/domain/password-generator-policy-options"; @Directive() export class GeneratorComponent implements OnInit { diff --git a/libs/angular/src/components/icon.component.ts b/libs/angular/src/components/icon.component.ts index 0696649e1f9..1c9b5a8b551 100644 --- a/libs/angular/src/components/icon.component.ts +++ b/libs/angular/src/components/icon.component.ts @@ -4,7 +4,7 @@ import { EnvironmentService } from "@bitwarden/common/abstractions/environment.s import { StateService } from "@bitwarden/common/abstractions/state.service"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; /** * Provides a mapping from supported card brands to diff --git a/libs/angular/src/components/lock.component.ts b/libs/angular/src/components/lock.component.ts index a488d874461..a92643b5c6a 100644 --- a/libs/angular/src/components/lock.component.ts +++ b/libs/angular/src/components/lock.component.ts @@ -17,8 +17,8 @@ import { VaultTimeoutSettingsService } from "@bitwarden/common/abstractions/vaul import { HashPurpose } from "@bitwarden/common/enums/hashPurpose"; import { KeySuffixOptions } from "@bitwarden/common/enums/keySuffixOptions"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { SecretVerificationRequest } from "@bitwarden/common/models/request/secretVerificationRequest"; @Directive() diff --git a/libs/angular/src/components/login.component.ts b/libs/angular/src/components/login.component.ts index 8e35a230aa9..ab0e4df57e6 100644 --- a/libs/angular/src/components/login.component.ts +++ b/libs/angular/src/components/login.component.ts @@ -16,8 +16,8 @@ import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwo import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { Utils } from "@bitwarden/common/misc/utils"; -import { AuthResult } from "@bitwarden/common/models/domain/authResult"; -import { PasswordLogInCredentials } from "@bitwarden/common/models/domain/logInCredentials"; +import { AuthResult } from "@bitwarden/common/models/domain/auth-result"; +import { PasswordLogInCredentials } from "@bitwarden/common/models/domain/log-in-credentials"; import { CaptchaProtectedComponent } from "./captchaProtected.component"; diff --git a/libs/angular/src/components/password-generator-history.component.ts b/libs/angular/src/components/password-generator-history.component.ts index fa2cfd09d2f..38e493ee938 100644 --- a/libs/angular/src/components/password-generator-history.component.ts +++ b/libs/angular/src/components/password-generator-history.component.ts @@ -3,7 +3,7 @@ import { Directive, OnInit } from "@angular/core"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwordGeneration.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; -import { GeneratedPasswordHistory } from "@bitwarden/common/models/domain/generatedPasswordHistory"; +import { GeneratedPasswordHistory } from "@bitwarden/common/models/domain/generated-password-history"; @Directive() export class PasswordGeneratorHistoryComponent implements OnInit { diff --git a/libs/angular/src/components/password-history.component.ts b/libs/angular/src/components/password-history.component.ts index 8b1bf1cc14e..43859669411 100644 --- a/libs/angular/src/components/password-history.component.ts +++ b/libs/angular/src/components/password-history.component.ts @@ -3,7 +3,7 @@ import { Directive, OnInit } from "@angular/core"; import { CipherService } from "@bitwarden/common/abstractions/cipher.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; -import { PasswordHistoryView } from "@bitwarden/common/models/view/passwordHistoryView"; +import { PasswordHistoryView } from "@bitwarden/common/models/view/password-history.view"; @Directive() export class PasswordHistoryComponent implements OnInit { diff --git a/libs/angular/src/components/register.component.ts b/libs/angular/src/components/register.component.ts index d873ae9955d..b40031cf590 100644 --- a/libs/angular/src/components/register.component.ts +++ b/libs/angular/src/components/register.component.ts @@ -16,7 +16,7 @@ import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwo import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { DEFAULT_KDF_ITERATIONS, DEFAULT_KDF_TYPE } from "@bitwarden/common/enums/kdfType"; -import { PasswordLogInCredentials } from "@bitwarden/common/models/domain/logInCredentials"; +import { PasswordLogInCredentials } from "@bitwarden/common/models/domain/log-in-credentials"; import { KeysRequest } from "@bitwarden/common/models/request/keysRequest"; import { ReferenceEventRequest } from "@bitwarden/common/models/request/referenceEventRequest"; import { RegisterRequest } from "@bitwarden/common/models/request/registerRequest"; diff --git a/libs/angular/src/components/send/add-edit.component.ts b/libs/angular/src/components/send/add-edit.component.ts index 94d9ccaa894..dfa03e1942d 100644 --- a/libs/angular/src/components/send/add-edit.component.ts +++ b/libs/angular/src/components/send/add-edit.component.ts @@ -12,11 +12,11 @@ import { SendService } from "@bitwarden/common/abstractions/send.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { PolicyType } from "@bitwarden/common/enums/policyType"; import { SendType } from "@bitwarden/common/enums/sendType"; -import { EncArrayBuffer } from "@bitwarden/common/models/domain/encArrayBuffer"; +import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer"; import { Send } from "@bitwarden/common/models/domain/send"; -import { SendFileView } from "@bitwarden/common/models/view/sendFileView"; -import { SendTextView } from "@bitwarden/common/models/view/sendTextView"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendFileView } from "@bitwarden/common/models/view/send-file.view"; +import { SendTextView } from "@bitwarden/common/models/view/send-text.view"; +import { SendView } from "@bitwarden/common/models/view/send.view"; @Directive() export class AddEditComponent implements OnInit, OnDestroy { diff --git a/libs/angular/src/components/send/send.component.ts b/libs/angular/src/components/send/send.component.ts index ac37299f623..9dd9e6ebbe3 100644 --- a/libs/angular/src/components/send/send.component.ts +++ b/libs/angular/src/components/send/send.component.ts @@ -10,7 +10,7 @@ import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { SendService } from "@bitwarden/common/abstractions/send.service"; import { PolicyType } from "@bitwarden/common/enums/policyType"; import { SendType } from "@bitwarden/common/enums/sendType"; -import { SendView } from "@bitwarden/common/models/view/sendView"; +import { SendView } from "@bitwarden/common/models/view/send.view"; @Directive() export class SendComponent implements OnInit, OnDestroy { diff --git a/libs/angular/src/components/set-password.component.ts b/libs/angular/src/components/set-password.component.ts index 373a1bab99b..ac49803dbc7 100644 --- a/libs/angular/src/components/set-password.component.ts +++ b/libs/angular/src/components/set-password.component.ts @@ -16,8 +16,8 @@ import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.ab import { HashPurpose } from "@bitwarden/common/enums/hashPurpose"; import { DEFAULT_KDF_ITERATIONS, DEFAULT_KDF_TYPE } from "@bitwarden/common/enums/kdfType"; import { Utils } from "@bitwarden/common/misc/utils"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { KeysRequest } from "@bitwarden/common/models/request/keysRequest"; import { OrganizationUserResetPasswordEnrollmentRequest } from "@bitwarden/common/models/request/organizationUserResetPasswordEnrollmentRequest"; import { SetPasswordRequest } from "@bitwarden/common/models/request/setPasswordRequest"; diff --git a/libs/angular/src/components/share.component.ts b/libs/angular/src/components/share.component.ts index e9e6038b2f8..c7520ed5165 100644 --- a/libs/angular/src/components/share.component.ts +++ b/libs/angular/src/components/share.component.ts @@ -10,8 +10,8 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { OrganizationUserStatusType } from "@bitwarden/common/enums/organizationUserStatusType"; import { Utils } from "@bitwarden/common/misc/utils"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; import { Checkable, isChecked } from "@bitwarden/common/types/checkable"; @Directive() diff --git a/libs/angular/src/components/sso.component.ts b/libs/angular/src/components/sso.component.ts index f0f63c279ad..4a171935a3d 100644 --- a/libs/angular/src/components/sso.component.ts +++ b/libs/angular/src/components/sso.component.ts @@ -12,8 +12,8 @@ import { PasswordGenerationService } from "@bitwarden/common/abstractions/passwo import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { Utils } from "@bitwarden/common/misc/utils"; -import { AuthResult } from "@bitwarden/common/models/domain/authResult"; -import { SsoLogInCredentials } from "@bitwarden/common/models/domain/logInCredentials"; +import { AuthResult } from "@bitwarden/common/models/domain/auth-result"; +import { SsoLogInCredentials } from "@bitwarden/common/models/domain/log-in-credentials"; import { SsoPreValidateResponse } from "@bitwarden/common/models/response/ssoPreValidateResponse"; @Directive() diff --git a/libs/angular/src/components/two-factor.component.ts b/libs/angular/src/components/two-factor.component.ts index 068826ccc03..93f81619583 100644 --- a/libs/angular/src/components/two-factor.component.ts +++ b/libs/angular/src/components/two-factor.component.ts @@ -14,7 +14,7 @@ import { StateService } from "@bitwarden/common/abstractions/state.service"; import { TwoFactorService } from "@bitwarden/common/abstractions/twoFactor.service"; import { TwoFactorProviderType } from "@bitwarden/common/enums/twoFactorProviderType"; import { WebAuthnIFrame } from "@bitwarden/common/misc/webauthn_iframe"; -import { AuthResult } from "@bitwarden/common/models/domain/authResult"; +import { AuthResult } from "@bitwarden/common/models/domain/auth-result"; import { TokenRequestTwoFactor } from "@bitwarden/common/models/request/identityToken/tokenRequestTwoFactor"; import { TwoFactorEmailRequest } from "@bitwarden/common/models/request/twoFactorEmailRequest"; import { TwoFactorProviders } from "@bitwarden/common/services/twoFactor.service"; diff --git a/libs/angular/src/components/update-password.component.ts b/libs/angular/src/components/update-password.component.ts index 3fe9a6a7660..0cf21bbd63f 100644 --- a/libs/angular/src/components/update-password.component.ts +++ b/libs/angular/src/components/update-password.component.ts @@ -12,9 +12,9 @@ import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.serv import { StateService } from "@bitwarden/common/abstractions/state.service"; import { UserVerificationService } from "@bitwarden/common/abstractions/userVerification/userVerification.service.abstraction"; import { VerificationType } from "@bitwarden/common/enums/verificationType"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { PasswordRequest } from "@bitwarden/common/models/request/passwordRequest"; import { Verification } from "@bitwarden/common/types/verification"; diff --git a/libs/angular/src/components/update-temp-password.component.ts b/libs/angular/src/components/update-temp-password.component.ts index 9c163b51fc2..f761b790295 100644 --- a/libs/angular/src/components/update-temp-password.component.ts +++ b/libs/angular/src/components/update-temp-password.component.ts @@ -10,9 +10,9 @@ import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUti import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { SyncService } from "@bitwarden/common/abstractions/sync/sync.service.abstraction"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { UpdateTempPasswordRequest } from "@bitwarden/common/models/request/updateTempPasswordRequest"; import { ChangePasswordComponent as BaseChangePasswordComponent } from "./change-password.component"; diff --git a/libs/angular/src/components/view-custom-fields.component.ts b/libs/angular/src/components/view-custom-fields.component.ts index 10a072945a8..b661e76a192 100644 --- a/libs/angular/src/components/view-custom-fields.component.ts +++ b/libs/angular/src/components/view-custom-fields.component.ts @@ -3,8 +3,8 @@ import { Directive, Input } from "@angular/core"; import { EventService } from "@bitwarden/common/abstractions/event.service"; import { EventType } from "@bitwarden/common/enums/eventType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { FieldView } from "@bitwarden/common/models/view/fieldView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { FieldView } from "@bitwarden/common/models/view/field.view"; @Directive() export class ViewCustomFieldsComponent { diff --git a/libs/angular/src/components/view.component.ts b/libs/angular/src/components/view.component.ts index cbd88383f5c..115c6e18b08 100644 --- a/libs/angular/src/components/view.component.ts +++ b/libs/angular/src/components/view.component.ts @@ -27,11 +27,11 @@ import { CipherRepromptType } from "@bitwarden/common/enums/cipherRepromptType"; import { CipherType } from "@bitwarden/common/enums/cipherType"; import { EventType } from "@bitwarden/common/enums/eventType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; -import { EncArrayBuffer } from "@bitwarden/common/models/domain/encArrayBuffer"; +import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer"; import { ErrorResponse } from "@bitwarden/common/models/response/errorResponse"; -import { AttachmentView } from "@bitwarden/common/models/view/attachmentView"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; +import { AttachmentView } from "@bitwarden/common/models/view/attachment.view"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; const BroadcasterSubscriptionId = "ViewComponent"; diff --git a/libs/angular/src/pipes/search-ciphers.pipe.ts b/libs/angular/src/pipes/search-ciphers.pipe.ts index a2c667804e5..4e98aee9e22 100644 --- a/libs/angular/src/pipes/search-ciphers.pipe.ts +++ b/libs/angular/src/pipes/search-ciphers.pipe.ts @@ -1,6 +1,6 @@ import { Pipe, PipeTransform } from "@angular/core"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; @Pipe({ name: "searchCiphers", diff --git a/libs/angular/src/services/jslib-services.module.ts b/libs/angular/src/services/jslib-services.module.ts index b1bbcc0a87b..4243b1e81fb 100644 --- a/libs/angular/src/services/jslib-services.module.ts +++ b/libs/angular/src/services/jslib-services.module.ts @@ -60,7 +60,7 @@ import { VaultTimeoutService as VaultTimeoutServiceAbstraction } from "@bitwarde import { VaultTimeoutSettingsService as VaultTimeoutSettingsServiceAbstraction } from "@bitwarden/common/abstractions/vaultTimeout/vaultTimeoutSettings.service"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; import { Account } from "@bitwarden/common/models/domain/account"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { AccountApiService } from "@bitwarden/common/services/account/account-api.service"; import { AccountService } from "@bitwarden/common/services/account/account.service"; import { AnonymousHubService } from "@bitwarden/common/services/anonymousHub.service"; diff --git a/libs/angular/src/vault/vault-filter/components/collection-filter.component.ts b/libs/angular/src/vault/vault-filter/components/collection-filter.component.ts index 313db3f04c5..0e5cd978705 100644 --- a/libs/angular/src/vault/vault-filter/components/collection-filter.component.ts +++ b/libs/angular/src/vault/vault-filter/components/collection-filter.component.ts @@ -1,7 +1,7 @@ import { Directive, EventEmitter, Input, Output } from "@angular/core"; -import { ITreeNodeObject } from "@bitwarden/common/models/domain/treeNode"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; +import { ITreeNodeObject } from "@bitwarden/common/models/domain/tree-node"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; import { DynamicTreeNode } from "../models/dynamic-tree-node.model"; import { TopLevelTreeNode } from "../models/top-level-tree-node.model"; diff --git a/libs/angular/src/vault/vault-filter/components/folder-filter.component.ts b/libs/angular/src/vault/vault-filter/components/folder-filter.component.ts index 9fd39a6cf07..68faaa30072 100644 --- a/libs/angular/src/vault/vault-filter/components/folder-filter.component.ts +++ b/libs/angular/src/vault/vault-filter/components/folder-filter.component.ts @@ -1,7 +1,7 @@ import { Directive, EventEmitter, Input, Output } from "@angular/core"; -import { ITreeNodeObject } from "@bitwarden/common/models/domain/treeNode"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { ITreeNodeObject } from "@bitwarden/common/models/domain/tree-node"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { DynamicTreeNode } from "../models/dynamic-tree-node.model"; import { TopLevelTreeNode } from "../models/top-level-tree-node.model"; diff --git a/libs/angular/src/vault/vault-filter/components/organization-filter.component.ts b/libs/angular/src/vault/vault-filter/components/organization-filter.component.ts index 9e2a493d7a3..448627d9be8 100644 --- a/libs/angular/src/vault/vault-filter/components/organization-filter.component.ts +++ b/libs/angular/src/vault/vault-filter/components/organization-filter.component.ts @@ -1,7 +1,7 @@ import { Directive, EventEmitter, Input, Output } from "@angular/core"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { ITreeNodeObject } from "@bitwarden/common/models/domain/treeNode"; +import { ITreeNodeObject } from "@bitwarden/common/models/domain/tree-node"; import { DisplayMode } from "../models/display-mode"; import { TopLevelTreeNode } from "../models/top-level-tree-node.model"; diff --git a/libs/angular/src/vault/vault-filter/components/type-filter.component.ts b/libs/angular/src/vault/vault-filter/components/type-filter.component.ts index 89336aebf89..6fca1e77779 100644 --- a/libs/angular/src/vault/vault-filter/components/type-filter.component.ts +++ b/libs/angular/src/vault/vault-filter/components/type-filter.component.ts @@ -1,7 +1,7 @@ import { Directive, EventEmitter, Input, Output } from "@angular/core"; import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { ITreeNodeObject } from "@bitwarden/common/models/domain/treeNode"; +import { ITreeNodeObject } from "@bitwarden/common/models/domain/tree-node"; import { TopLevelTreeNode } from "../models/top-level-tree-node.model"; import { VaultFilter } from "../models/vault-filter.model"; diff --git a/libs/angular/src/vault/vault-filter/components/vault-filter.component.ts b/libs/angular/src/vault/vault-filter/components/vault-filter.component.ts index 136be97d6a5..0c55bdbcee2 100644 --- a/libs/angular/src/vault/vault-filter/components/vault-filter.component.ts +++ b/libs/angular/src/vault/vault-filter/components/vault-filter.component.ts @@ -2,9 +2,9 @@ import { Directive, EventEmitter, Input, OnInit, Output } from "@angular/core"; import { firstValueFrom, Observable } from "rxjs"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { ITreeNodeObject } from "@bitwarden/common/models/domain/treeNode"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { ITreeNodeObject } from "@bitwarden/common/models/domain/tree-node"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { DynamicTreeNode } from "../models/dynamic-tree-node.model"; import { VaultFilter } from "../models/vault-filter.model"; diff --git a/libs/angular/src/vault/vault-filter/models/dynamic-tree-node.model.ts b/libs/angular/src/vault/vault-filter/models/dynamic-tree-node.model.ts index 31ba21e4817..35e85fa1020 100644 --- a/libs/angular/src/vault/vault-filter/models/dynamic-tree-node.model.ts +++ b/libs/angular/src/vault/vault-filter/models/dynamic-tree-node.model.ts @@ -1,6 +1,6 @@ -import { TreeNode } from "@bitwarden/common/models/domain/treeNode"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { TreeNode } from "@bitwarden/common/models/domain/tree-node"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; export class DynamicTreeNode { fullList: T[]; diff --git a/libs/angular/src/vault/vault-filter/models/top-level-tree-node.model.ts b/libs/angular/src/vault/vault-filter/models/top-level-tree-node.model.ts index 9af3c7b50c6..8930e05132e 100644 --- a/libs/angular/src/vault/vault-filter/models/top-level-tree-node.model.ts +++ b/libs/angular/src/vault/vault-filter/models/top-level-tree-node.model.ts @@ -1,4 +1,4 @@ -import { ITreeNodeObject } from "@bitwarden/common/models/domain/treeNode"; +import { ITreeNodeObject } from "@bitwarden/common/models/domain/tree-node"; export type TopLevelTreeNodeId = "vaults" | "types" | "collections" | "folders"; export class TopLevelTreeNode implements ITreeNodeObject { diff --git a/libs/angular/src/vault/vault-filter/models/vault-filter.model.spec.ts b/libs/angular/src/vault/vault-filter/models/vault-filter.model.spec.ts index 1c63481ab70..12d458a1278 100644 --- a/libs/angular/src/vault/vault-filter/models/vault-filter.model.spec.ts +++ b/libs/angular/src/vault/vault-filter/models/vault-filter.model.spec.ts @@ -1,5 +1,5 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { VaultFilter } from "./vault-filter.model"; diff --git a/libs/angular/src/vault/vault-filter/models/vault-filter.model.ts b/libs/angular/src/vault/vault-filter/models/vault-filter.model.ts index 942704f1285..0fd0fcc6d09 100644 --- a/libs/angular/src/vault/vault-filter/models/vault-filter.model.ts +++ b/libs/angular/src/vault/vault-filter/models/vault-filter.model.ts @@ -1,5 +1,5 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { CipherStatus } from "./cipher-status.model"; diff --git a/libs/angular/src/vault/vault-filter/services/vault-filter.service.ts b/libs/angular/src/vault/vault-filter/services/vault-filter.service.ts index 6fa2c3b286b..995ff1a12a5 100644 --- a/libs/angular/src/vault/vault-filter/services/vault-filter.service.ts +++ b/libs/angular/src/vault/vault-filter/services/vault-filter.service.ts @@ -10,9 +10,9 @@ import { StateService } from "@bitwarden/common/abstractions/state.service"; import { PolicyType } from "@bitwarden/common/enums/policyType"; import { ServiceUtils } from "@bitwarden/common/misc/serviceUtils"; import { Organization } from "@bitwarden/common/models/domain/organization"; -import { TreeNode } from "@bitwarden/common/models/domain/treeNode"; -import { CollectionView } from "@bitwarden/common/models/view/collectionView"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { TreeNode } from "@bitwarden/common/models/domain/tree-node"; +import { CollectionView } from "@bitwarden/common/models/view/collection.view"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { DynamicTreeNode } from "../models/dynamic-tree-node.model"; diff --git a/libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts b/libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts index 98c2edef420..cddf325a4b3 100644 --- a/libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts +++ b/libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts @@ -6,7 +6,7 @@ import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; import { KdfType } from "@bitwarden/common/enums/kdfType"; import { BitwardenPasswordProtectedImporter } from "@bitwarden/common/importers/bitwardenPasswordProtectedImporter"; import { Utils } from "@bitwarden/common/misc/utils"; -import { ImportResult } from "@bitwarden/common/models/domain/importResult"; +import { ImportResult } from "@bitwarden/common/models/domain/import-result"; import { data as emptyDecryptedData } from "./testData/bitwardenJson/empty.json"; diff --git a/libs/common/spec/importers/firefoxCsvImporter.spec.ts b/libs/common/spec/importers/firefoxCsvImporter.spec.ts index 06f5246d0ce..7b3415df1a8 100644 --- a/libs/common/spec/importers/firefoxCsvImporter.spec.ts +++ b/libs/common/spec/importers/firefoxCsvImporter.spec.ts @@ -1,7 +1,7 @@ import { FirefoxCsvImporter as Importer } from "@bitwarden/common/importers/firefoxCsvImporter"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; -import { LoginView } from "@bitwarden/common/models/view/loginView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; +import { LoginView } from "@bitwarden/common/models/view/login.view"; import { data as firefoxAccountsData } from "./testData/firefoxCsv/firefoxAccountsData.csv"; import { data as simplePasswordData } from "./testData/firefoxCsv/simplePasswordData.csv"; diff --git a/libs/common/spec/importers/lastpassCsvImporter.spec.ts b/libs/common/spec/importers/lastpassCsvImporter.spec.ts index 21761ee3118..a18192cf915 100644 --- a/libs/common/spec/importers/lastpassCsvImporter.spec.ts +++ b/libs/common/spec/importers/lastpassCsvImporter.spec.ts @@ -1,9 +1,9 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; import { LastPassCsvImporter as Importer } from "@bitwarden/common/importers/lastpassCsvImporter"; -import { ImportResult } from "@bitwarden/common/models/domain/importResult"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { FieldView } from "@bitwarden/common/models/view/fieldView"; +import { ImportResult } from "@bitwarden/common/models/domain/import-result"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { FieldView } from "@bitwarden/common/models/view/field.view"; function baseExcept(result: ImportResult) { expect(result).not.toBeNull(); diff --git a/libs/common/spec/importers/mykiCsvImporter.spec.ts b/libs/common/spec/importers/mykiCsvImporter.spec.ts index d7f9a91e278..a65bdc450ac 100644 --- a/libs/common/spec/importers/mykiCsvImporter.spec.ts +++ b/libs/common/spec/importers/mykiCsvImporter.spec.ts @@ -1,6 +1,6 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { MykiCsvImporter as Importer } from "@bitwarden/common/importers/mykiCsvImporter"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { userAccountData } from "./testData/mykiCsv/UserAccount.csv"; import { userCreditCardData } from "./testData/mykiCsv/UserCreditCard.csv"; diff --git a/libs/common/spec/importers/nordpassCsvImporter.spec.ts b/libs/common/spec/importers/nordpassCsvImporter.spec.ts index 20fa57c6b7e..ada087bca93 100644 --- a/libs/common/spec/importers/nordpassCsvImporter.spec.ts +++ b/libs/common/spec/importers/nordpassCsvImporter.spec.ts @@ -1,8 +1,8 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { SecureNoteType } from "@bitwarden/common/enums/secureNoteType"; import { NordPassCsvImporter as Importer } from "@bitwarden/common/importers/nordpassCsvImporter"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { IdentityView } from "@bitwarden/common/models/view/identityView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { IdentityView } from "@bitwarden/common/models/view/identity.view"; import { data as creditCardData } from "./testData/nordpassCsv/nordpass.card.csv"; import { data as identityData } from "./testData/nordpassCsv/nordpass.identity.csv"; diff --git a/libs/common/spec/importers/onepassword1PuxImporter.spec.ts b/libs/common/spec/importers/onepassword1PuxImporter.spec.ts index 47dce8f0e79..50d211da994 100644 --- a/libs/common/spec/importers/onepassword1PuxImporter.spec.ts +++ b/libs/common/spec/importers/onepassword1PuxImporter.spec.ts @@ -3,7 +3,7 @@ import { FieldType } from "@bitwarden/common/enums/fieldType"; import { SecureNoteType } from "@bitwarden/common/enums/secureNoteType"; import { OnePassword1PuxImporter as Importer } from "@bitwarden/common/importers/onepasswordImporters/onepassword1PuxImporter"; import { Utils } from "@bitwarden/common/misc/utils"; -import { FieldView } from "@bitwarden/common/models/view/fieldView"; +import { FieldView } from "@bitwarden/common/models/view/field.view"; import { APICredentialsData } from "./testData/onePassword1Pux/APICredentials"; import { BankAccountData } from "./testData/onePassword1Pux/BankAccount"; diff --git a/libs/common/spec/importers/onepasswordMacCsvImporter.spec.ts b/libs/common/spec/importers/onepasswordMacCsvImporter.spec.ts index ea2bf1c84f4..0965a11d481 100644 --- a/libs/common/spec/importers/onepasswordMacCsvImporter.spec.ts +++ b/libs/common/spec/importers/onepasswordMacCsvImporter.spec.ts @@ -1,6 +1,6 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { OnePasswordMacCsvImporter as Importer } from "@bitwarden/common/importers/onepasswordImporters/onepasswordMacCsvImporter"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; import { data as creditCardData } from "./testData/onePasswordCsv/creditCard.mac.csv"; import { data as identityData } from "./testData/onePasswordCsv/identity.mac.csv"; diff --git a/libs/common/spec/importers/onepasswordWinCsvImporter.spec.ts b/libs/common/spec/importers/onepasswordWinCsvImporter.spec.ts index e7186ee2924..666886c3f40 100644 --- a/libs/common/spec/importers/onepasswordWinCsvImporter.spec.ts +++ b/libs/common/spec/importers/onepasswordWinCsvImporter.spec.ts @@ -1,8 +1,8 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; import { OnePasswordWinCsvImporter as Importer } from "@bitwarden/common/importers/onepasswordImporters/onepasswordWinCsvImporter"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { FieldView } from "@bitwarden/common/models/view/fieldView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { FieldView } from "@bitwarden/common/models/view/field.view"; import { data as creditCardData } from "./testData/onePasswordCsv/creditCard.windows.csv"; import { data as identityData } from "./testData/onePasswordCsv/identity.windows.csv"; diff --git a/libs/common/spec/importers/safariCsvImporter.spec.ts b/libs/common/spec/importers/safariCsvImporter.spec.ts index c24e39b5021..36d1e076a20 100644 --- a/libs/common/spec/importers/safariCsvImporter.spec.ts +++ b/libs/common/spec/importers/safariCsvImporter.spec.ts @@ -1,7 +1,7 @@ import { SafariCsvImporter as Importer } from "@bitwarden/common/importers/safariCsvImporter"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; -import { LoginView } from "@bitwarden/common/models/view/loginView"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; +import { LoginView } from "@bitwarden/common/models/view/login.view"; import { data as oldSimplePasswordData } from "./testData/safariCsv/oldSimplePasswordData.csv"; import { data as simplePasswordData } from "./testData/safariCsv/simplePasswordData.csv"; diff --git a/libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts b/libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts index 496ecf9cdd5..6e80ffa2916 100644 --- a/libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts +++ b/libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts @@ -14,7 +14,7 @@ import { TokenService } from "@bitwarden/common/abstractions/token.service"; import { TwoFactorService } from "@bitwarden/common/abstractions/twoFactor.service"; import { ApiLogInStrategy } from "@bitwarden/common/misc/logInStrategies/apiLogin.strategy"; import { Utils } from "@bitwarden/common/misc/utils"; -import { ApiLogInCredentials } from "@bitwarden/common/models/domain/logInCredentials"; +import { ApiLogInCredentials } from "@bitwarden/common/models/domain/log-in-credentials"; import { identityTokenResponseFactory } from "./logIn.strategy.spec"; diff --git a/libs/common/spec/misc/logInStrategies/logIn.strategy.spec.ts b/libs/common/spec/misc/logInStrategies/logIn.strategy.spec.ts index a2774960867..4c9d848b4a9 100644 --- a/libs/common/spec/misc/logInStrategies/logIn.strategy.spec.ts +++ b/libs/common/spec/misc/logInStrategies/logIn.strategy.spec.ts @@ -15,9 +15,9 @@ import { TwoFactorProviderType } from "@bitwarden/common/enums/twoFactorProvider import { PasswordLogInStrategy } from "@bitwarden/common/misc/logInStrategies/passwordLogin.strategy"; import { Utils } from "@bitwarden/common/misc/utils"; import { Account, AccountProfile, AccountTokens } from "@bitwarden/common/models/domain/account"; -import { AuthResult } from "@bitwarden/common/models/domain/authResult"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { PasswordLogInCredentials } from "@bitwarden/common/models/domain/logInCredentials"; +import { AuthResult } from "@bitwarden/common/models/domain/auth-result"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { PasswordLogInCredentials } from "@bitwarden/common/models/domain/log-in-credentials"; import { PasswordTokenRequest } from "@bitwarden/common/models/request/identityToken/passwordTokenRequest"; import { TokenRequestTwoFactor } from "@bitwarden/common/models/request/identityToken/tokenRequestTwoFactor"; import { IdentityCaptchaResponse } from "@bitwarden/common/models/response/identityCaptchaResponse"; diff --git a/libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts b/libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts index bdae82cd53e..d0791c8181a 100644 --- a/libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts +++ b/libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts @@ -14,8 +14,8 @@ import { TwoFactorService } from "@bitwarden/common/abstractions/twoFactor.servi import { HashPurpose } from "@bitwarden/common/enums/hashPurpose"; import { PasswordLogInStrategy } from "@bitwarden/common/misc/logInStrategies/passwordLogin.strategy"; import { Utils } from "@bitwarden/common/misc/utils"; -import { PasswordLogInCredentials } from "@bitwarden/common/models/domain/logInCredentials"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { PasswordLogInCredentials } from "@bitwarden/common/models/domain/log-in-credentials"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { identityTokenResponseFactory } from "./logIn.strategy.spec"; diff --git a/libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts b/libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts index 68e0eb2c547..0caa3e9441e 100644 --- a/libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts +++ b/libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts @@ -13,7 +13,7 @@ import { TokenService } from "@bitwarden/common/abstractions/token.service"; import { TwoFactorService } from "@bitwarden/common/abstractions/twoFactor.service"; import { SsoLogInStrategy } from "@bitwarden/common/misc/logInStrategies/ssoLogin.strategy"; import { Utils } from "@bitwarden/common/misc/utils"; -import { SsoLogInCredentials } from "@bitwarden/common/models/domain/logInCredentials"; +import { SsoLogInCredentials } from "@bitwarden/common/models/domain/log-in-credentials"; import { identityTokenResponseFactory } from "./logIn.strategy.spec"; diff --git a/libs/common/spec/models/domain/attachment.spec.ts b/libs/common/spec/models/domain/attachment.spec.ts index 322061987a5..3a418a7f6b2 100644 --- a/libs/common/spec/models/domain/attachment.spec.ts +++ b/libs/common/spec/models/domain/attachment.spec.ts @@ -2,10 +2,10 @@ import { mock, MockProxy } from "jest-mock-extended"; import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; -import { AttachmentData } from "@bitwarden/common/models/data/attachmentData"; +import { AttachmentData } from "@bitwarden/common/models/data/attachment.data"; import { Attachment } from "@bitwarden/common/models/domain/attachment"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { ContainerService } from "@bitwarden/common/services/container.service"; import { makeStaticByteArray, mockEnc, mockFromJson } from "../../utils"; diff --git a/libs/common/spec/models/domain/card.spec.ts b/libs/common/spec/models/domain/card.spec.ts index 3b7e32b91ac..8a734e36d91 100644 --- a/libs/common/spec/models/domain/card.spec.ts +++ b/libs/common/spec/models/domain/card.spec.ts @@ -1,6 +1,6 @@ -import { CardData } from "@bitwarden/common/models/data/cardData"; +import { CardData } from "@bitwarden/common/models/data/card.data"; import { Card } from "@bitwarden/common/models/domain/card"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { mockEnc, mockFromJson } from "../../utils"; diff --git a/libs/common/spec/models/domain/cipher.spec.ts b/libs/common/spec/models/domain/cipher.spec.ts index 316a20e98f7..cd149621786 100644 --- a/libs/common/spec/models/domain/cipher.spec.ts +++ b/libs/common/spec/models/domain/cipher.spec.ts @@ -7,19 +7,19 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { FieldType } from "@bitwarden/common/enums/fieldType"; import { SecureNoteType } from "@bitwarden/common/enums/secureNoteType"; import { UriMatchType } from "@bitwarden/common/enums/uriMatchType"; -import { CipherData } from "@bitwarden/common/models/data/cipherData"; +import { CipherData } from "@bitwarden/common/models/data/cipher.data"; import { Attachment } from "@bitwarden/common/models/domain/attachment"; import { Card } from "@bitwarden/common/models/domain/card"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { Field } from "@bitwarden/common/models/domain/field"; import { Identity } from "@bitwarden/common/models/domain/identity"; import { Login } from "@bitwarden/common/models/domain/login"; import { Password } from "@bitwarden/common/models/domain/password"; -import { SecureNote } from "@bitwarden/common/models/domain/secureNote"; -import { CardView } from "@bitwarden/common/models/view/cardView"; -import { IdentityView } from "@bitwarden/common/models/view/identityView"; -import { LoginView } from "@bitwarden/common/models/view/loginView"; +import { SecureNote } from "@bitwarden/common/models/domain/secure-note"; +import { CardView } from "@bitwarden/common/models/view/card.view"; +import { IdentityView } from "@bitwarden/common/models/view/identity.view"; +import { LoginView } from "@bitwarden/common/models/view/login.view"; import { mockEnc, mockFromJson } from "../../utils"; diff --git a/libs/common/spec/models/domain/collection.spec.ts b/libs/common/spec/models/domain/collection.spec.ts index 823bffad321..b36ac0ce60b 100644 --- a/libs/common/spec/models/domain/collection.spec.ts +++ b/libs/common/spec/models/domain/collection.spec.ts @@ -1,4 +1,4 @@ -import { CollectionData } from "@bitwarden/common/models/data/collectionData"; +import { CollectionData } from "@bitwarden/common/models/data/collection.data"; import { Collection } from "@bitwarden/common/models/domain/collection"; import { mockEnc } from "../../utils"; diff --git a/libs/common/spec/models/domain/encArrayBuffer.spec.ts b/libs/common/spec/models/domain/encArrayBuffer.spec.ts index 609b2a16f7a..51340dc9d8a 100644 --- a/libs/common/spec/models/domain/encArrayBuffer.spec.ts +++ b/libs/common/spec/models/domain/encArrayBuffer.spec.ts @@ -1,5 +1,5 @@ import { EncryptionType } from "@bitwarden/common/enums/encryptionType"; -import { EncArrayBuffer } from "@bitwarden/common/models/domain/encArrayBuffer"; +import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer"; import { makeStaticByteArray } from "../../utils"; diff --git a/libs/common/spec/models/domain/encString.spec.ts b/libs/common/spec/models/domain/encString.spec.ts index a2308080018..cdc373c2a35 100644 --- a/libs/common/spec/models/domain/encString.spec.ts +++ b/libs/common/spec/models/domain/encString.spec.ts @@ -5,8 +5,8 @@ import { mock, MockProxy } from "jest-mock-extended"; import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { EncryptionType } from "@bitwarden/common/enums/encryptionType"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { ContainerService } from "@bitwarden/common/services/container.service"; describe("EncString", () => { diff --git a/libs/common/spec/models/domain/field.spec.ts b/libs/common/spec/models/domain/field.spec.ts index de1f184dad6..42f0addaf48 100644 --- a/libs/common/spec/models/domain/field.spec.ts +++ b/libs/common/spec/models/domain/field.spec.ts @@ -1,6 +1,6 @@ import { FieldType } from "@bitwarden/common/enums/fieldType"; -import { FieldData } from "@bitwarden/common/models/data/fieldData"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { FieldData } from "@bitwarden/common/models/data/field.data"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { Field } from "@bitwarden/common/models/domain/field"; import { mockEnc, mockFromJson } from "../../utils"; diff --git a/libs/common/spec/models/domain/folder.spec.ts b/libs/common/spec/models/domain/folder.spec.ts index 83e935d82a1..9a95a51f613 100644 --- a/libs/common/spec/models/domain/folder.spec.ts +++ b/libs/common/spec/models/domain/folder.spec.ts @@ -1,5 +1,5 @@ -import { FolderData } from "@bitwarden/common/models/data/folderData"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { FolderData } from "@bitwarden/common/models/data/folder.data"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { Folder } from "@bitwarden/common/models/domain/folder"; import { mockEnc, mockFromJson } from "../../utils"; @@ -41,7 +41,7 @@ describe("Folder", () => { }); describe("fromJSON", () => { - jest.mock("@bitwarden/common/models/domain/encString"); + jest.mock("@bitwarden/common/models/domain/enc-string"); jest.spyOn(EncString, "fromJSON").mockImplementation(mockFromJson); it("initializes nested objects", () => { diff --git a/libs/common/spec/models/domain/identity.spec.ts b/libs/common/spec/models/domain/identity.spec.ts index 78eff0fc44c..649da6aa885 100644 --- a/libs/common/spec/models/domain/identity.spec.ts +++ b/libs/common/spec/models/domain/identity.spec.ts @@ -1,5 +1,5 @@ -import { IdentityData } from "@bitwarden/common/models/data/identityData"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { IdentityData } from "@bitwarden/common/models/data/identity.data"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { Identity } from "@bitwarden/common/models/domain/identity"; import { mockEnc, mockFromJson } from "../../utils"; diff --git a/libs/common/spec/models/domain/login.spec.ts b/libs/common/spec/models/domain/login.spec.ts index d22373ec7fc..1e5950a9478 100644 --- a/libs/common/spec/models/domain/login.spec.ts +++ b/libs/common/spec/models/domain/login.spec.ts @@ -2,11 +2,11 @@ import { Substitute, Arg } from "@fluffy-spoon/substitute"; import { UriMatchType } from "@bitwarden/common/enums/uriMatchType"; -import { LoginData } from "@bitwarden/common/models/data/loginData"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { LoginData } from "@bitwarden/common/models/data/login.data"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { Login } from "@bitwarden/common/models/domain/login"; -import { LoginUri } from "@bitwarden/common/models/domain/loginUri"; -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; +import { LoginUri } from "@bitwarden/common/models/domain/login-uri"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; import { mockEnc, mockFromJson } from "../../utils"; diff --git a/libs/common/spec/models/domain/loginUri.spec.ts b/libs/common/spec/models/domain/loginUri.spec.ts index 50a6859f986..1a9f13c893a 100644 --- a/libs/common/spec/models/domain/loginUri.spec.ts +++ b/libs/common/spec/models/domain/loginUri.spec.ts @@ -1,9 +1,9 @@ import { Jsonify } from "type-fest"; import { UriMatchType } from "@bitwarden/common/enums/uriMatchType"; -import { LoginUriData } from "@bitwarden/common/models/data/loginUriData"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { LoginUri } from "@bitwarden/common/models/domain/loginUri"; +import { LoginUriData } from "@bitwarden/common/models/data/login-uri.data"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { LoginUri } from "@bitwarden/common/models/domain/login-uri"; import { mockEnc, mockFromJson } from "../../utils"; diff --git a/libs/common/spec/models/domain/password.spec.ts b/libs/common/spec/models/domain/password.spec.ts index bbe29c9a87d..065bda4ad88 100644 --- a/libs/common/spec/models/domain/password.spec.ts +++ b/libs/common/spec/models/domain/password.spec.ts @@ -1,5 +1,5 @@ -import { PasswordHistoryData } from "@bitwarden/common/models/data/passwordHistoryData"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { PasswordHistoryData } from "@bitwarden/common/models/data/password-history.data"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { Password } from "@bitwarden/common/models/domain/password"; import { mockEnc, mockFromJson } from "../../utils"; diff --git a/libs/common/spec/models/domain/secureNote.spec.ts b/libs/common/spec/models/domain/secureNote.spec.ts index 3117961102f..52f1e5ddcd9 100644 --- a/libs/common/spec/models/domain/secureNote.spec.ts +++ b/libs/common/spec/models/domain/secureNote.spec.ts @@ -1,6 +1,6 @@ import { SecureNoteType } from "@bitwarden/common/enums/secureNoteType"; -import { SecureNoteData } from "@bitwarden/common/models/data/secureNoteData"; -import { SecureNote } from "@bitwarden/common/models/domain/secureNote"; +import { SecureNoteData } from "@bitwarden/common/models/data/secure-note.data"; +import { SecureNote } from "@bitwarden/common/models/domain/secure-note"; describe("SecureNote", () => { let data: SecureNoteData; diff --git a/libs/common/spec/models/domain/send.spec.ts b/libs/common/spec/models/domain/send.spec.ts index 7c0795588c8..70f19857efd 100644 --- a/libs/common/spec/models/domain/send.spec.ts +++ b/libs/common/spec/models/domain/send.spec.ts @@ -4,10 +4,10 @@ import { Substitute, Arg, SubstituteOf } from "@fluffy-spoon/substitute"; import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractEncrypt.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { SendType } from "@bitwarden/common/enums/sendType"; -import { SendData } from "@bitwarden/common/models/data/sendData"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { SendData } from "@bitwarden/common/models/data/send.data"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { Send } from "@bitwarden/common/models/domain/send"; -import { SendText } from "@bitwarden/common/models/domain/sendText"; +import { SendText } from "@bitwarden/common/models/domain/send-text"; import { ContainerService } from "@bitwarden/common/services/container.service"; import { makeStaticByteArray, mockEnc } from "../../utils"; diff --git a/libs/common/spec/models/domain/sendAccess.spec.ts b/libs/common/spec/models/domain/sendAccess.spec.ts index 98f67a68c8a..4dc6c40c1a8 100644 --- a/libs/common/spec/models/domain/sendAccess.spec.ts +++ b/libs/common/spec/models/domain/sendAccess.spec.ts @@ -2,8 +2,8 @@ import { Substitute, Arg } from "@fluffy-spoon/substitute"; import { SendType } from "@bitwarden/common/enums/sendType"; -import { SendAccess } from "@bitwarden/common/models/domain/sendAccess"; -import { SendText } from "@bitwarden/common/models/domain/sendText"; +import { SendAccess } from "@bitwarden/common/models/domain/send-access"; +import { SendText } from "@bitwarden/common/models/domain/send-text"; import { SendAccessResponse } from "@bitwarden/common/models/response/sendAccessResponse"; import { mockEnc } from "../../utils"; diff --git a/libs/common/spec/models/domain/sendFile.spec.ts b/libs/common/spec/models/domain/sendFile.spec.ts index c24c1a48c93..5c648d7d064 100644 --- a/libs/common/spec/models/domain/sendFile.spec.ts +++ b/libs/common/spec/models/domain/sendFile.spec.ts @@ -1,5 +1,5 @@ -import { SendFileData } from "@bitwarden/common/models/data/sendFileData"; -import { SendFile } from "@bitwarden/common/models/domain/sendFile"; +import { SendFileData } from "@bitwarden/common/models/data/send-file.data"; +import { SendFile } from "@bitwarden/common/models/domain/send-file"; import { mockEnc } from "../../utils"; diff --git a/libs/common/spec/models/domain/sendText.spec.ts b/libs/common/spec/models/domain/sendText.spec.ts index 0fb7edc0a0a..17ea76cc76b 100644 --- a/libs/common/spec/models/domain/sendText.spec.ts +++ b/libs/common/spec/models/domain/sendText.spec.ts @@ -1,5 +1,5 @@ -import { SendTextData } from "@bitwarden/common/models/data/sendTextData"; -import { SendText } from "@bitwarden/common/models/domain/sendText"; +import { SendTextData } from "@bitwarden/common/models/data/send-text.data"; +import { SendText } from "@bitwarden/common/models/domain/send-text"; import { mockEnc } from "../../utils"; diff --git a/libs/common/spec/models/domain/symmetricCryptoKey.spec.ts b/libs/common/spec/models/domain/symmetricCryptoKey.spec.ts index 5670fe46992..746c8471e92 100644 --- a/libs/common/spec/models/domain/symmetricCryptoKey.spec.ts +++ b/libs/common/spec/models/domain/symmetricCryptoKey.spec.ts @@ -1,5 +1,5 @@ import { EncryptionType } from "@bitwarden/common/enums/encryptionType"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { makeStaticByteArray } from "../../utils"; diff --git a/libs/common/spec/models/view/attachmentView.spec.ts b/libs/common/spec/models/view/attachmentView.spec.ts index 5784b4b4ffb..de1b399d5d3 100644 --- a/libs/common/spec/models/view/attachmentView.spec.ts +++ b/libs/common/spec/models/view/attachmentView.spec.ts @@ -1,9 +1,9 @@ -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; -import { AttachmentView } from "@bitwarden/common/models/view/attachmentView"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; +import { AttachmentView } from "@bitwarden/common/models/view/attachment.view"; import { mockFromJson } from "../../utils"; -jest.mock("@bitwarden/common/models/domain/symmetricCryptoKey"); +jest.mock("@bitwarden/common/models/domain/symmetric-crypto-key"); describe("AttachmentView", () => { it("fromJSON initializes nested objects", () => { diff --git a/libs/common/spec/models/view/cipherView.spec.ts b/libs/common/spec/models/view/cipherView.spec.ts index 1362babc3b9..b58c82b1567 100644 --- a/libs/common/spec/models/view/cipherView.spec.ts +++ b/libs/common/spec/models/view/cipherView.spec.ts @@ -1,19 +1,19 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; -import { AttachmentView } from "@bitwarden/common/models/view/attachmentView"; -import { CardView } from "@bitwarden/common/models/view/cardView"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { FieldView } from "@bitwarden/common/models/view/fieldView"; -import { IdentityView } from "@bitwarden/common/models/view/identityView"; -import { LoginView } from "@bitwarden/common/models/view/loginView"; -import { PasswordHistoryView } from "@bitwarden/common/models/view/passwordHistoryView"; -import { SecureNoteView } from "@bitwarden/common/models/view/secureNoteView"; +import { AttachmentView } from "@bitwarden/common/models/view/attachment.view"; +import { CardView } from "@bitwarden/common/models/view/card.view"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { FieldView } from "@bitwarden/common/models/view/field.view"; +import { IdentityView } from "@bitwarden/common/models/view/identity.view"; +import { LoginView } from "@bitwarden/common/models/view/login.view"; +import { PasswordHistoryView } from "@bitwarden/common/models/view/password-history.view"; +import { SecureNoteView } from "@bitwarden/common/models/view/secure-note.view"; import { mockFromJson } from "../../utils"; -jest.mock("@bitwarden/common/models/view/loginView"); -jest.mock("@bitwarden/common/models/view/attachmentView"); -jest.mock("@bitwarden/common/models/view/fieldView"); -jest.mock("@bitwarden/common/models/view/passwordHistoryView"); +jest.mock("@bitwarden/common/models/view/login.view"); +jest.mock("@bitwarden/common/models/view/attachment.view"); +jest.mock("@bitwarden/common/models/view/field.view"); +jest.mock("@bitwarden/common/models/view/password-history.view"); describe("CipherView", () => { beforeEach(() => { diff --git a/libs/common/spec/models/view/folderView.spec.ts b/libs/common/spec/models/view/folderView.spec.ts index 50b8c2948d5..15663166f3f 100644 --- a/libs/common/spec/models/view/folderView.spec.ts +++ b/libs/common/spec/models/view/folderView.spec.ts @@ -1,4 +1,4 @@ -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; describe("FolderView", () => { describe("fromJSON", () => { diff --git a/libs/common/spec/models/view/loginView.spec.ts b/libs/common/spec/models/view/loginView.spec.ts index f50636b8978..3f6f7da841b 100644 --- a/libs/common/spec/models/view/loginView.spec.ts +++ b/libs/common/spec/models/view/loginView.spec.ts @@ -1,9 +1,9 @@ -import { LoginUriView } from "@bitwarden/common/models/view/loginUriView"; -import { LoginView } from "@bitwarden/common/models/view/loginView"; +import { LoginUriView } from "@bitwarden/common/models/view/login-uri.view"; +import { LoginView } from "@bitwarden/common/models/view/login.view"; import { mockFromJson } from "../../utils"; -jest.mock("@bitwarden/common/models/view/loginUriView"); +jest.mock("@bitwarden/common/models/view/login-uri.view"); describe("LoginView", () => { beforeEach(() => { diff --git a/libs/common/spec/models/view/passwordHistoryView.spec.ts b/libs/common/spec/models/view/passwordHistoryView.spec.ts index 99662c40c0b..514bc32b511 100644 --- a/libs/common/spec/models/view/passwordHistoryView.spec.ts +++ b/libs/common/spec/models/view/passwordHistoryView.spec.ts @@ -1,4 +1,4 @@ -import { PasswordHistoryView } from "@bitwarden/common/models/view/passwordHistoryView"; +import { PasswordHistoryView } from "@bitwarden/common/models/view/password-history.view"; describe("PasswordHistoryView", () => { it("fromJSON initializes nested objects", () => { diff --git a/libs/common/spec/services/cipher.service.spec.ts b/libs/common/spec/services/cipher.service.spec.ts index ea7b082e149..c4e95e62176 100644 --- a/libs/common/spec/services/cipher.service.spec.ts +++ b/libs/common/spec/services/cipher.service.spec.ts @@ -10,9 +10,9 @@ import { SearchService } from "@bitwarden/common/abstractions/search.service"; import { SettingsService } from "@bitwarden/common/abstractions/settings.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { EncArrayBuffer } from "@bitwarden/common/models/domain/encArrayBuffer"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { CipherService } from "@bitwarden/common/services/cipher.service"; const ENCRYPTED_TEXT = "This data has been encrypted"; diff --git a/libs/common/spec/services/encrypt.service.spec.ts b/libs/common/spec/services/encrypt.service.spec.ts index 9567d8fbb24..850731b3711 100644 --- a/libs/common/spec/services/encrypt.service.spec.ts +++ b/libs/common/spec/services/encrypt.service.spec.ts @@ -3,9 +3,9 @@ import { mockReset, mock } from "jest-mock-extended"; import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service"; import { LogService } from "@bitwarden/common/abstractions/log.service"; import { EncryptionType } from "@bitwarden/common/enums/encryptionType"; -import { EncArrayBuffer } from "@bitwarden/common/models/domain/encArrayBuffer"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { EncArrayBuffer } from "@bitwarden/common/models/domain/enc-array-buffer"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { EncryptService } from "@bitwarden/common/services/encrypt.service"; import { makeStaticByteArray } from "../utils"; diff --git a/libs/common/spec/services/export.service.spec.ts b/libs/common/spec/services/export.service.spec.ts index 4bc44d21e08..19177bc171e 100644 --- a/libs/common/spec/services/export.service.spec.ts +++ b/libs/common/spec/services/export.service.spec.ts @@ -11,11 +11,11 @@ import { CipherType } from "@bitwarden/common/enums/cipherType"; import { KdfType } from "@bitwarden/common/enums/kdfType"; import { Utils } from "@bitwarden/common/misc/utils"; import { Cipher } from "@bitwarden/common/models/domain/cipher"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; import { Login } from "@bitwarden/common/models/domain/login"; -import { CipherWithIdExport as CipherExport } from "@bitwarden/common/models/export/cipherWithIdsExport"; -import { CipherView } from "@bitwarden/common/models/view/cipherView"; -import { LoginView } from "@bitwarden/common/models/view/loginView"; +import { CipherWithIdExport as CipherExport } from "@bitwarden/common/models/export/cipher-with-ids.export"; +import { CipherView } from "@bitwarden/common/models/view/cipher.view"; +import { LoginView } from "@bitwarden/common/models/view/login.view"; import { ExportService } from "@bitwarden/common/services/export.service"; import { BuildTestObject, GetUniqueString } from "../utils"; diff --git a/libs/common/spec/services/folder.service.spec.ts b/libs/common/spec/services/folder.service.spec.ts index 0f78a574837..b5d0491bf6f 100644 --- a/libs/common/spec/services/folder.service.spec.ts +++ b/libs/common/spec/services/folder.service.spec.ts @@ -6,9 +6,9 @@ import { AbstractEncryptService } from "@bitwarden/common/abstractions/abstractE import { CipherService } from "@bitwarden/common/abstractions/cipher.service"; import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; -import { FolderData } from "@bitwarden/common/models/data/folderData"; -import { EncString } from "@bitwarden/common/models/domain/encString"; -import { FolderView } from "@bitwarden/common/models/view/folderView"; +import { FolderData } from "@bitwarden/common/models/data/folder.data"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; +import { FolderView } from "@bitwarden/common/models/view/folder.view"; import { ContainerService } from "@bitwarden/common/services/container.service"; import { FolderService } from "@bitwarden/common/services/folder/folder.service"; import { StateService } from "@bitwarden/common/services/state.service"; diff --git a/libs/common/spec/services/organization/organization.service.spec.ts b/libs/common/spec/services/organization/organization.service.spec.ts index c9b191bfe78..33b5b6c86a2 100644 --- a/libs/common/spec/services/organization/organization.service.spec.ts +++ b/libs/common/spec/services/organization/organization.service.spec.ts @@ -3,7 +3,7 @@ import { BehaviorSubject, firstValueFrom, Subject } from "rxjs"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { SyncNotifierService } from "@bitwarden/common/abstractions/sync/syncNotifier.service.abstraction"; -import { OrganizationData } from "@bitwarden/common/models/data/organizationData"; +import { OrganizationData } from "@bitwarden/common/models/data/organization.data"; import { SyncResponse } from "@bitwarden/common/models/response/syncResponse"; import { OrganizationService } from "@bitwarden/common/services/organization/organization.service"; import { SyncEventArgs } from "@bitwarden/common/types/syncEventArgs"; diff --git a/libs/common/spec/services/policy.service.spec.ts b/libs/common/spec/services/policy.service.spec.ts index 0423448180a..7f6821cec66 100644 --- a/libs/common/spec/services/policy.service.spec.ts +++ b/libs/common/spec/services/policy.service.spec.ts @@ -6,13 +6,13 @@ import { CryptoService } from "@bitwarden/common/abstractions/crypto.service"; import { OrganizationService } from "@bitwarden/common/abstractions/organization/organization.service.abstraction"; import { OrganizationUserStatusType } from "@bitwarden/common/enums/organizationUserStatusType"; import { PolicyType } from "@bitwarden/common/enums/policyType"; -import { PermissionsApi } from "@bitwarden/common/models/api/permissionsApi"; -import { OrganizationData } from "@bitwarden/common/models/data/organizationData"; -import { PolicyData } from "@bitwarden/common/models/data/policyData"; -import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/masterPasswordPolicyOptions"; +import { PermissionsApi } from "@bitwarden/common/models/api/permissions.api"; +import { OrganizationData } from "@bitwarden/common/models/data/organization.data"; +import { PolicyData } from "@bitwarden/common/models/data/policy.data"; +import { MasterPasswordPolicyOptions } from "@bitwarden/common/models/domain/master-password-policy-options"; import { Organization } from "@bitwarden/common/models/domain/organization"; import { Policy } from "@bitwarden/common/models/domain/policy"; -import { ResetPasswordPolicyOptions } from "@bitwarden/common/models/domain/resetPasswordPolicyOptions"; +import { ResetPasswordPolicyOptions } from "@bitwarden/common/models/domain/reset-password-policy-options"; import { ListResponse } from "@bitwarden/common/models/response/listResponse"; import { PolicyResponse } from "@bitwarden/common/models/response/policyResponse"; import { ContainerService } from "@bitwarden/common/services/container.service"; diff --git a/libs/common/spec/services/stateMigration.service.spec.ts b/libs/common/spec/services/stateMigration.service.spec.ts index 5512e49753a..5144835555c 100644 --- a/libs/common/spec/services/stateMigration.service.spec.ts +++ b/libs/common/spec/services/stateMigration.service.spec.ts @@ -5,7 +5,7 @@ import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.s import { StateVersion } from "@bitwarden/common/enums/stateVersion"; import { StateFactory } from "@bitwarden/common/factories/stateFactory"; import { Account } from "@bitwarden/common/models/domain/account"; -import { GlobalState } from "@bitwarden/common/models/domain/globalState"; +import { GlobalState } from "@bitwarden/common/models/domain/global-state"; import { StateMigrationService } from "@bitwarden/common/services/stateMigration.service"; const userId = "USER_ID"; diff --git a/libs/common/spec/utils.ts b/libs/common/spec/utils.ts index 2c637f9adff..21b0f581e0c 100644 --- a/libs/common/spec/utils.ts +++ b/libs/common/spec/utils.ts @@ -1,7 +1,7 @@ // eslint-disable-next-line no-restricted-imports import { Substitute, Arg } from "@fluffy-spoon/substitute"; -import { EncString } from "@bitwarden/common/models/domain/encString"; +import { EncString } from "@bitwarden/common/models/domain/enc-string"; function newGuid() { return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => { diff --git a/libs/common/spec/web/services/webCryptoFunction.service.spec.ts b/libs/common/spec/web/services/webCryptoFunction.service.spec.ts index 08deda8827a..cc2dd952342 100644 --- a/libs/common/spec/web/services/webCryptoFunction.service.spec.ts +++ b/libs/common/spec/web/services/webCryptoFunction.service.spec.ts @@ -3,7 +3,7 @@ import { Substitute } from "@fluffy-spoon/substitute"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { Utils } from "@bitwarden/common/misc/utils"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { WebCryptoFunctionService } from "@bitwarden/common/services/webCryptoFunction.service"; const RsaPublicKey = diff --git a/libs/common/src/abstractions/abstractEncrypt.service.ts b/libs/common/src/abstractions/abstractEncrypt.service.ts index 35760f9b752..63c6f041a37 100644 --- a/libs/common/src/abstractions/abstractEncrypt.service.ts +++ b/libs/common/src/abstractions/abstractEncrypt.service.ts @@ -1,7 +1,7 @@ import { IEncrypted } from "../interfaces/IEncrypted"; -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; -import { EncString } from "../models/domain/encString"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; +import { EncString } from "../models/domain/enc-string"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; export abstract class AbstractEncryptService { abstract encrypt(plainValue: string | ArrayBuffer, key: SymmetricCryptoKey): Promise; diff --git a/libs/common/src/abstractions/api.service.ts b/libs/common/src/abstractions/api.service.ts index 06d3f5b4eba..5827c842825 100644 --- a/libs/common/src/abstractions/api.service.ts +++ b/libs/common/src/abstractions/api.service.ts @@ -160,7 +160,7 @@ import { } from "../models/response/twoFactorWebAuthnResponse"; import { TwoFactorYubiKeyResponse } from "../models/response/twoFactorYubiKeyResponse"; import { UserKeyResponse } from "../models/response/userKeyResponse"; -import { SendAccessView } from "../models/view/sendAccessView"; +import { SendAccessView } from "../models/view/send-access.view"; export abstract class ApiService { send: ( diff --git a/libs/common/src/abstractions/auth.service.ts b/libs/common/src/abstractions/auth.service.ts index bbe1c01bf29..959b5c84253 100644 --- a/libs/common/src/abstractions/auth.service.ts +++ b/libs/common/src/abstractions/auth.service.ts @@ -1,14 +1,14 @@ import { Observable } from "rxjs"; import { AuthenticationStatus } from "../enums/authenticationStatus"; -import { AuthResult } from "../models/domain/authResult"; +import { AuthResult } from "../models/domain/auth-result"; import { ApiLogInCredentials, PasswordLogInCredentials, SsoLogInCredentials, PasswordlessLogInCredentials, -} from "../models/domain/logInCredentials"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +} from "../models/domain/log-in-credentials"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; import { TokenRequestTwoFactor } from "../models/request/identityToken/tokenRequestTwoFactor"; import { AuthRequestPushNotification } from "../models/response/notificationResponse"; diff --git a/libs/common/src/abstractions/cipher.service.ts b/libs/common/src/abstractions/cipher.service.ts index a87a6f0a1fa..96f30c55fa5 100644 --- a/libs/common/src/abstractions/cipher.service.ts +++ b/libs/common/src/abstractions/cipher.service.ts @@ -1,11 +1,11 @@ import { CipherType } from "../enums/cipherType"; import { UriMatchType } from "../enums/uriMatchType"; -import { CipherData } from "../models/data/cipherData"; +import { CipherData } from "../models/data/cipher.data"; import { Cipher } from "../models/domain/cipher"; import { Field } from "../models/domain/field"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; -import { CipherView } from "../models/view/cipherView"; -import { FieldView } from "../models/view/fieldView"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; +import { CipherView } from "../models/view/cipher.view"; +import { FieldView } from "../models/view/field.view"; export abstract class CipherService { clearCache: (userId?: string) => Promise; diff --git a/libs/common/src/abstractions/collection.service.ts b/libs/common/src/abstractions/collection.service.ts index 0673e9066b4..316794a5562 100644 --- a/libs/common/src/abstractions/collection.service.ts +++ b/libs/common/src/abstractions/collection.service.ts @@ -1,7 +1,7 @@ -import { CollectionData } from "../models/data/collectionData"; +import { CollectionData } from "../models/data/collection.data"; import { Collection } from "../models/domain/collection"; -import { TreeNode } from "../models/domain/treeNode"; -import { CollectionView } from "../models/view/collectionView"; +import { TreeNode } from "../models/domain/tree-node"; +import { CollectionView } from "../models/view/collection.view"; export abstract class CollectionService { clearCache: (userId?: string) => Promise; diff --git a/libs/common/src/abstractions/crypto.service.ts b/libs/common/src/abstractions/crypto.service.ts index 842d9e1a7ca..72f67854fc2 100644 --- a/libs/common/src/abstractions/crypto.service.ts +++ b/libs/common/src/abstractions/crypto.service.ts @@ -1,9 +1,9 @@ import { HashPurpose } from "../enums/hashPurpose"; import { KdfType } from "../enums/kdfType"; import { KeySuffixOptions } from "../enums/keySuffixOptions"; -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; -import { EncString } from "../models/domain/encString"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; +import { EncString } from "../models/domain/enc-string"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; import { ProfileOrganizationResponse } from "../models/response/profileOrganizationResponse"; import { ProfileProviderOrganizationResponse } from "../models/response/profileProviderOrganizationResponse"; import { ProfileProviderResponse } from "../models/response/profileProviderResponse"; diff --git a/libs/common/src/abstractions/cryptoFunction.service.ts b/libs/common/src/abstractions/cryptoFunction.service.ts index 21ed33cbe89..4a1f37f568b 100644 --- a/libs/common/src/abstractions/cryptoFunction.service.ts +++ b/libs/common/src/abstractions/cryptoFunction.service.ts @@ -1,5 +1,5 @@ -import { DecryptParameters } from "../models/domain/decryptParameters"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +import { DecryptParameters } from "../models/domain/decrypt-parameters"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; export abstract class CryptoFunctionService { pbkdf2: ( diff --git a/libs/common/src/abstractions/export.service.ts b/libs/common/src/abstractions/export.service.ts index b0266530bd6..8d158f747ae 100644 --- a/libs/common/src/abstractions/export.service.ts +++ b/libs/common/src/abstractions/export.service.ts @@ -1,4 +1,4 @@ -import { EventView } from "../models/view/eventView"; +import { EventView } from "../models/view/event.view"; export type ExportFormat = "csv" | "json" | "encrypted_json"; diff --git a/libs/common/src/abstractions/fileUpload.service.ts b/libs/common/src/abstractions/fileUpload.service.ts index fcd3c22c720..bc597c59739 100644 --- a/libs/common/src/abstractions/fileUpload.service.ts +++ b/libs/common/src/abstractions/fileUpload.service.ts @@ -1,5 +1,5 @@ -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; -import { EncString } from "../models/domain/encString"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; +import { EncString } from "../models/domain/enc-string"; import { AttachmentUploadDataResponse } from "../models/response/attachmentUploadDataResponse"; import { SendFileUploadDataResponse } from "../models/response/sendFileUploadDataResponse"; diff --git a/libs/common/src/abstractions/folder/folder.service.abstraction.ts b/libs/common/src/abstractions/folder/folder.service.abstraction.ts index 42e0420f9b3..f8df1f7db63 100644 --- a/libs/common/src/abstractions/folder/folder.service.abstraction.ts +++ b/libs/common/src/abstractions/folder/folder.service.abstraction.ts @@ -1,9 +1,9 @@ import { Observable } from "rxjs"; -import { FolderData } from "../../models/data/folderData"; +import { FolderData } from "../../models/data/folder.data"; import { Folder } from "../../models/domain/folder"; -import { SymmetricCryptoKey } from "../../models/domain/symmetricCryptoKey"; -import { FolderView } from "../../models/view/folderView"; +import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key"; +import { FolderView } from "../../models/view/folder.view"; export abstract class FolderService { folders$: Observable; diff --git a/libs/common/src/abstractions/passwordGeneration.service.ts b/libs/common/src/abstractions/passwordGeneration.service.ts index 82bc021fb73..20aee598768 100644 --- a/libs/common/src/abstractions/passwordGeneration.service.ts +++ b/libs/common/src/abstractions/passwordGeneration.service.ts @@ -1,7 +1,7 @@ import * as zxcvbn from "zxcvbn"; -import { GeneratedPasswordHistory } from "../models/domain/generatedPasswordHistory"; -import { PasswordGeneratorPolicyOptions } from "../models/domain/passwordGeneratorPolicyOptions"; +import { GeneratedPasswordHistory } from "../models/domain/generated-password-history"; +import { PasswordGeneratorPolicyOptions } from "../models/domain/password-generator-policy-options"; export abstract class PasswordGenerationService { generatePassword: (options: any) => Promise; diff --git a/libs/common/src/abstractions/policy/policy-api.service.abstraction.ts b/libs/common/src/abstractions/policy/policy-api.service.abstraction.ts index cdabd530756..e5a33e8edd6 100644 --- a/libs/common/src/abstractions/policy/policy-api.service.abstraction.ts +++ b/libs/common/src/abstractions/policy/policy-api.service.abstraction.ts @@ -1,5 +1,5 @@ import { PolicyType } from "../../enums/policyType"; -import { MasterPasswordPolicyOptions } from "../../models/domain/masterPasswordPolicyOptions"; +import { MasterPasswordPolicyOptions } from "../../models/domain/master-password-policy-options"; import { PolicyRequest } from "../../models/request/policyRequest"; import { ListResponse } from "../../models/response/listResponse"; import { PolicyResponse } from "../../models/response/policyResponse"; diff --git a/libs/common/src/abstractions/policy/policy.service.abstraction.ts b/libs/common/src/abstractions/policy/policy.service.abstraction.ts index b1bf13300c7..ccbde512382 100644 --- a/libs/common/src/abstractions/policy/policy.service.abstraction.ts +++ b/libs/common/src/abstractions/policy/policy.service.abstraction.ts @@ -1,10 +1,10 @@ import { Observable } from "rxjs"; import { PolicyType } from "../../enums/policyType"; -import { PolicyData } from "../../models/data/policyData"; -import { MasterPasswordPolicyOptions } from "../../models/domain/masterPasswordPolicyOptions"; +import { PolicyData } from "../../models/data/policy.data"; +import { MasterPasswordPolicyOptions } from "../../models/domain/master-password-policy-options"; import { Policy } from "../../models/domain/policy"; -import { ResetPasswordPolicyOptions } from "../../models/domain/resetPasswordPolicyOptions"; +import { ResetPasswordPolicyOptions } from "../../models/domain/reset-password-policy-options"; import { ListResponse } from "../../models/response/listResponse"; import { PolicyResponse } from "../../models/response/policyResponse"; diff --git a/libs/common/src/abstractions/provider.service.ts b/libs/common/src/abstractions/provider.service.ts index e4746369245..d843154f3f0 100644 --- a/libs/common/src/abstractions/provider.service.ts +++ b/libs/common/src/abstractions/provider.service.ts @@ -1,4 +1,4 @@ -import { ProviderData } from "../models/data/providerData"; +import { ProviderData } from "../models/data/provider.data"; import { Provider } from "../models/domain/provider"; export abstract class ProviderService { diff --git a/libs/common/src/abstractions/search.service.ts b/libs/common/src/abstractions/search.service.ts index 9c2b0eeb8ed..02eba41c138 100644 --- a/libs/common/src/abstractions/search.service.ts +++ b/libs/common/src/abstractions/search.service.ts @@ -1,5 +1,5 @@ -import { CipherView } from "../models/view/cipherView"; -import { SendView } from "../models/view/sendView"; +import { CipherView } from "../models/view/cipher.view"; +import { SendView } from "../models/view/send.view"; export abstract class SearchService { indexedEntityId?: string = null; diff --git a/libs/common/src/abstractions/send.service.ts b/libs/common/src/abstractions/send.service.ts index 3331e41e2a1..db212e33ce4 100644 --- a/libs/common/src/abstractions/send.service.ts +++ b/libs/common/src/abstractions/send.service.ts @@ -1,8 +1,8 @@ -import { SendData } from "../models/data/sendData"; -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; +import { SendData } from "../models/data/send.data"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; import { Send } from "../models/domain/send"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; -import { SendView } from "../models/view/sendView"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; +import { SendView } from "../models/view/send.view"; export abstract class SendService { clearCache: () => Promise; diff --git a/libs/common/src/abstractions/state.service.ts b/libs/common/src/abstractions/state.service.ts index 69df7678652..bcc744fba0a 100644 --- a/libs/common/src/abstractions/state.service.ts +++ b/libs/common/src/abstractions/state.service.ts @@ -3,28 +3,28 @@ import { BehaviorSubject, Observable } from "rxjs"; import { KdfType } from "../enums/kdfType"; import { ThemeType } from "../enums/themeType"; import { UriMatchType } from "../enums/uriMatchType"; -import { CipherData } from "../models/data/cipherData"; -import { CollectionData } from "../models/data/collectionData"; -import { EncryptedOrganizationKeyData } from "../models/data/encryptedOrganizationKeyData"; -import { EventData } from "../models/data/eventData"; -import { FolderData } from "../models/data/folderData"; -import { LocalData } from "../models/data/localData"; -import { OrganizationData } from "../models/data/organizationData"; -import { PolicyData } from "../models/data/policyData"; -import { ProviderData } from "../models/data/providerData"; -import { SendData } from "../models/data/sendData"; +import { CipherData } from "../models/data/cipher.data"; +import { CollectionData } from "../models/data/collection.data"; +import { EncryptedOrganizationKeyData } from "../models/data/encrypted-organization-key.data"; +import { EventData } from "../models/data/event.data"; +import { FolderData } from "../models/data/folder.data"; +import { LocalData } from "../models/data/local.data"; +import { OrganizationData } from "../models/data/organization.data"; +import { PolicyData } from "../models/data/policy.data"; +import { ProviderData } from "../models/data/provider.data"; +import { SendData } from "../models/data/send.data"; import { ServerConfigData } from "../models/data/server-config.data"; import { Account, AccountSettingsSettings } from "../models/domain/account"; -import { EncString } from "../models/domain/encString"; -import { EnvironmentUrls } from "../models/domain/environmentUrls"; -import { GeneratedPasswordHistory } from "../models/domain/generatedPasswordHistory"; +import { EncString } from "../models/domain/enc-string"; +import { EnvironmentUrls } from "../models/domain/environment-urls"; +import { GeneratedPasswordHistory } from "../models/domain/generated-password-history"; import { Policy } from "../models/domain/policy"; -import { StorageOptions } from "../models/domain/storageOptions"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; -import { WindowState } from "../models/domain/windowState"; -import { CipherView } from "../models/view/cipherView"; -import { CollectionView } from "../models/view/collectionView"; -import { SendView } from "../models/view/sendView"; +import { StorageOptions } from "../models/domain/storage-options"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; +import { WindowState } from "../models/domain/window-state"; +import { CipherView } from "../models/view/cipher.view"; +import { CollectionView } from "../models/view/collection.view"; +import { SendView } from "../models/view/send.view"; export abstract class StateService { accounts: BehaviorSubject<{ [userId: string]: T }>; diff --git a/libs/common/src/abstractions/storage.service.ts b/libs/common/src/abstractions/storage.service.ts index 31506f4302b..d405d526694 100644 --- a/libs/common/src/abstractions/storage.service.ts +++ b/libs/common/src/abstractions/storage.service.ts @@ -1,4 +1,4 @@ -import { MemoryStorageOptions, StorageOptions } from "../models/domain/storageOptions"; +import { MemoryStorageOptions, StorageOptions } from "../models/domain/storage-options"; export abstract class AbstractStorageService { abstract get(key: string, options?: StorageOptions): Promise; diff --git a/libs/common/src/factories/globalStateFactory.ts b/libs/common/src/factories/globalStateFactory.ts index a2c25c4661d..3ce8e6469a2 100644 --- a/libs/common/src/factories/globalStateFactory.ts +++ b/libs/common/src/factories/globalStateFactory.ts @@ -1,4 +1,4 @@ -import { GlobalState } from "../models/domain/globalState"; +import { GlobalState } from "../models/domain/global-state"; export class GlobalStateFactory { private globalStateConstructor: new (init: Partial) => T; diff --git a/libs/common/src/factories/stateFactory.ts b/libs/common/src/factories/stateFactory.ts index 203ae6722f7..ea53d7765c9 100644 --- a/libs/common/src/factories/stateFactory.ts +++ b/libs/common/src/factories/stateFactory.ts @@ -1,5 +1,5 @@ import { Account } from "../models/domain/account"; -import { GlobalState } from "../models/domain/globalState"; +import { GlobalState } from "../models/domain/global-state"; import { AccountFactory } from "./accountFactory"; import { GlobalStateFactory } from "./globalStateFactory"; diff --git a/libs/common/src/importers/ascendoCsvImporter.ts b/libs/common/src/importers/ascendoCsvImporter.ts index 75191a1cbcd..68c3ae5db74 100644 --- a/libs/common/src/importers/ascendoCsvImporter.ts +++ b/libs/common/src/importers/ascendoCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/avastCsvImporter.ts b/libs/common/src/importers/avastCsvImporter.ts index 9bf10639540..14cfa722da9 100644 --- a/libs/common/src/importers/avastCsvImporter.ts +++ b/libs/common/src/importers/avastCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/avastJsonImporter.ts b/libs/common/src/importers/avastJsonImporter.ts index 0d424a71862..178f0a47e32 100644 --- a/libs/common/src/importers/avastJsonImporter.ts +++ b/libs/common/src/importers/avastJsonImporter.ts @@ -1,6 +1,6 @@ import { CipherType } from "../enums/cipherType"; import { SecureNoteType } from "../enums/secureNoteType"; -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/aviraCsvImporter.ts b/libs/common/src/importers/aviraCsvImporter.ts index f4c578b018d..ceb4979aa14 100644 --- a/libs/common/src/importers/aviraCsvImporter.ts +++ b/libs/common/src/importers/aviraCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/baseImporter.ts b/libs/common/src/importers/baseImporter.ts index 0e1192a652b..dec6e2e715b 100644 --- a/libs/common/src/importers/baseImporter.ts +++ b/libs/common/src/importers/baseImporter.ts @@ -5,14 +5,14 @@ import { CipherType } from "../enums/cipherType"; import { FieldType } from "../enums/fieldType"; import { SecureNoteType } from "../enums/secureNoteType"; import { Utils } from "../misc/utils"; -import { ImportResult } from "../models/domain/importResult"; -import { CipherView } from "../models/view/cipherView"; -import { CollectionView } from "../models/view/collectionView"; -import { FieldView } from "../models/view/fieldView"; -import { FolderView } from "../models/view/folderView"; -import { LoginUriView } from "../models/view/loginUriView"; -import { LoginView } from "../models/view/loginView"; -import { SecureNoteView } from "../models/view/secureNoteView"; +import { ImportResult } from "../models/domain/import-result"; +import { CipherView } from "../models/view/cipher.view"; +import { CollectionView } from "../models/view/collection.view"; +import { FieldView } from "../models/view/field.view"; +import { FolderView } from "../models/view/folder.view"; +import { LoginUriView } from "../models/view/login-uri.view"; +import { LoginView } from "../models/view/login.view"; +import { SecureNoteView } from "../models/view/secure-note.view"; import { ConsoleLogService } from "../services/consoleLog.service"; export abstract class BaseImporter { diff --git a/libs/common/src/importers/bitwardenCsvImporter.ts b/libs/common/src/importers/bitwardenCsvImporter.ts index cc5419c3036..01b87b8cbd2 100644 --- a/libs/common/src/importers/bitwardenCsvImporter.ts +++ b/libs/common/src/importers/bitwardenCsvImporter.ts @@ -2,12 +2,12 @@ import { CipherRepromptType } from "../enums/cipherRepromptType"; import { CipherType } from "../enums/cipherType"; import { FieldType } from "../enums/fieldType"; import { SecureNoteType } from "../enums/secureNoteType"; -import { ImportResult } from "../models/domain/importResult"; -import { CipherView } from "../models/view/cipherView"; -import { CollectionView } from "../models/view/collectionView"; -import { FieldView } from "../models/view/fieldView"; -import { LoginView } from "../models/view/loginView"; -import { SecureNoteView } from "../models/view/secureNoteView"; +import { ImportResult } from "../models/domain/import-result"; +import { CipherView } from "../models/view/cipher.view"; +import { CollectionView } from "../models/view/collection.view"; +import { FieldView } from "../models/view/field.view"; +import { LoginView } from "../models/view/login.view"; +import { SecureNoteView } from "../models/view/secure-note.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/bitwardenJsonImporter.ts b/libs/common/src/importers/bitwardenJsonImporter.ts index ed707a45d8e..cf763c79048 100644 --- a/libs/common/src/importers/bitwardenJsonImporter.ts +++ b/libs/common/src/importers/bitwardenJsonImporter.ts @@ -1,10 +1,10 @@ import { CryptoService } from "../abstractions/crypto.service"; import { I18nService } from "../abstractions/i18n.service"; -import { EncString } from "../models/domain/encString"; -import { ImportResult } from "../models/domain/importResult"; -import { CipherWithIdExport } from "../models/export/cipherWithIdsExport"; -import { CollectionWithIdExport } from "../models/export/collectionWithIdExport"; -import { FolderWithIdExport } from "../models/export/folderWithIdExport"; +import { EncString } from "../models/domain/enc-string"; +import { ImportResult } from "../models/domain/import-result"; +import { CipherWithIdExport } from "../models/export/cipher-with-ids.export"; +import { CollectionWithIdExport } from "../models/export/collection-with-id.export"; +import { FolderWithIdExport } from "../models/export/folder-with-id.export"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/bitwardenPasswordProtectedImporter.ts b/libs/common/src/importers/bitwardenPasswordProtectedImporter.ts index c13d6f3a4ff..064c09fa8f5 100644 --- a/libs/common/src/importers/bitwardenPasswordProtectedImporter.ts +++ b/libs/common/src/importers/bitwardenPasswordProtectedImporter.ts @@ -1,9 +1,9 @@ import { CryptoService } from "../abstractions/crypto.service"; import { I18nService } from "../abstractions/i18n.service"; import { KdfType } from "../enums/kdfType"; -import { EncString } from "../models/domain/encString"; -import { ImportResult } from "../models/domain/importResult"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +import { EncString } from "../models/domain/enc-string"; +import { ImportResult } from "../models/domain/import-result"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; import { BitwardenJsonImporter } from "./bitwardenJsonImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/blackBerryCsvImporter.ts b/libs/common/src/importers/blackBerryCsvImporter.ts index ea3d08ebcf8..b458f341bab 100644 --- a/libs/common/src/importers/blackBerryCsvImporter.ts +++ b/libs/common/src/importers/blackBerryCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/blurCsvImporter.ts b/libs/common/src/importers/blurCsvImporter.ts index ca9ecd1cd80..fd058c31bb8 100644 --- a/libs/common/src/importers/blurCsvImporter.ts +++ b/libs/common/src/importers/blurCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/buttercupCsvImporter.ts b/libs/common/src/importers/buttercupCsvImporter.ts index aa3dda2d439..b9e7302ddb6 100644 --- a/libs/common/src/importers/buttercupCsvImporter.ts +++ b/libs/common/src/importers/buttercupCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/chromeCsvImporter.ts b/libs/common/src/importers/chromeCsvImporter.ts index 35c72ac342b..085b8cd28aa 100644 --- a/libs/common/src/importers/chromeCsvImporter.ts +++ b/libs/common/src/importers/chromeCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/clipperzHtmlImporter.ts b/libs/common/src/importers/clipperzHtmlImporter.ts index c4f0402c5b7..b7e7abc0bdd 100644 --- a/libs/common/src/importers/clipperzHtmlImporter.ts +++ b/libs/common/src/importers/clipperzHtmlImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/codebookCsvImporter.ts b/libs/common/src/importers/codebookCsvImporter.ts index f842f21c097..ec9848c23a7 100644 --- a/libs/common/src/importers/codebookCsvImporter.ts +++ b/libs/common/src/importers/codebookCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts b/libs/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts index 2bb6ce14fe7..8e7d5a682ab 100644 --- a/libs/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts +++ b/libs/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts @@ -1,10 +1,10 @@ import { CipherType } from "../../enums/cipherType"; import { SecureNoteType } from "../../enums/secureNoteType"; -import { ImportResult } from "../../models/domain/importResult"; -import { CardView } from "../../models/view/cardView"; -import { CipherView } from "../../models/view/cipherView"; -import { IdentityView } from "../../models/view/identityView"; -import { LoginView } from "../../models/view/loginView"; +import { ImportResult } from "../../models/domain/import-result"; +import { CardView } from "../../models/view/card.view"; +import { CipherView } from "../../models/view/cipher.view"; +import { IdentityView } from "../../models/view/identity.view"; +import { LoginView } from "../../models/view/login.view"; import { BaseImporter } from "../baseImporter"; import { Importer } from "../importer"; diff --git a/libs/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts b/libs/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts index cb7db59dadc..4c5afc175bc 100644 --- a/libs/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts +++ b/libs/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts @@ -1,10 +1,10 @@ import { CipherType } from "../../enums/cipherType"; import { SecureNoteType } from "../../enums/secureNoteType"; -import { ImportResult } from "../../models/domain/importResult"; -import { CardView } from "../../models/view/cardView"; -import { CipherView } from "../../models/view/cipherView"; -import { IdentityView } from "../../models/view/identityView"; -import { SecureNoteView } from "../../models/view/secureNoteView"; +import { ImportResult } from "../../models/domain/import-result"; +import { CardView } from "../../models/view/card.view"; +import { CipherView } from "../../models/view/cipher.view"; +import { IdentityView } from "../../models/view/identity.view"; +import { SecureNoteView } from "../../models/view/secure-note.view"; import { BaseImporter } from "../baseImporter"; import { Importer } from "../importer"; diff --git a/libs/common/src/importers/encryptrCsvImporter.ts b/libs/common/src/importers/encryptrCsvImporter.ts index 8c3e9e08acc..fb5541b82ef 100644 --- a/libs/common/src/importers/encryptrCsvImporter.ts +++ b/libs/common/src/importers/encryptrCsvImporter.ts @@ -1,6 +1,6 @@ import { CipherType } from "../enums/cipherType"; -import { ImportResult } from "../models/domain/importResult"; -import { CardView } from "../models/view/cardView"; +import { ImportResult } from "../models/domain/import-result"; +import { CardView } from "../models/view/card.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/enpassCsvImporter.ts b/libs/common/src/importers/enpassCsvImporter.ts index b5eb0b60274..dada932ba22 100644 --- a/libs/common/src/importers/enpassCsvImporter.ts +++ b/libs/common/src/importers/enpassCsvImporter.ts @@ -1,8 +1,8 @@ import { CipherType } from "../enums/cipherType"; import { SecureNoteType } from "../enums/secureNoteType"; -import { ImportResult } from "../models/domain/importResult"; -import { CardView } from "../models/view/cardView"; -import { SecureNoteView } from "../models/view/secureNoteView"; +import { ImportResult } from "../models/domain/import-result"; +import { CardView } from "../models/view/card.view"; +import { SecureNoteView } from "../models/view/secure-note.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/enpassJsonImporter.ts b/libs/common/src/importers/enpassJsonImporter.ts index 033c5995b0b..29e46b73e3a 100644 --- a/libs/common/src/importers/enpassJsonImporter.ts +++ b/libs/common/src/importers/enpassJsonImporter.ts @@ -1,9 +1,9 @@ import { CipherType } from "../enums/cipherType"; import { FieldType } from "../enums/fieldType"; -import { ImportResult } from "../models/domain/importResult"; -import { CardView } from "../models/view/cardView"; -import { CipherView } from "../models/view/cipherView"; -import { FolderView } from "../models/view/folderView"; +import { ImportResult } from "../models/domain/import-result"; +import { CardView } from "../models/view/card.view"; +import { CipherView } from "../models/view/cipher.view"; +import { FolderView } from "../models/view/folder.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/firefoxCsvImporter.ts b/libs/common/src/importers/firefoxCsvImporter.ts index 1b71aac9604..4b3dc597ec9 100644 --- a/libs/common/src/importers/firefoxCsvImporter.ts +++ b/libs/common/src/importers/firefoxCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/fsecureFskImporter.ts b/libs/common/src/importers/fsecureFskImporter.ts index c81a0820f26..bf9ceb950d1 100644 --- a/libs/common/src/importers/fsecureFskImporter.ts +++ b/libs/common/src/importers/fsecureFskImporter.ts @@ -1,6 +1,6 @@ import { CipherType } from "../enums/cipherType"; -import { ImportResult } from "../models/domain/importResult"; -import { CardView } from "../models/view/cardView"; +import { ImportResult } from "../models/domain/import-result"; +import { CardView } from "../models/view/card.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/gnomeJsonImporter.ts b/libs/common/src/importers/gnomeJsonImporter.ts index 1dfac67545b..1dd5f118dcd 100644 --- a/libs/common/src/importers/gnomeJsonImporter.ts +++ b/libs/common/src/importers/gnomeJsonImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/importer.ts b/libs/common/src/importers/importer.ts index a62cc6c1397..0835f667ebf 100644 --- a/libs/common/src/importers/importer.ts +++ b/libs/common/src/importers/importer.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; export interface Importer { organizationId: string; diff --git a/libs/common/src/importers/kasperskyTxtImporter.ts b/libs/common/src/importers/kasperskyTxtImporter.ts index b049f2bb1d4..75322946e2c 100644 --- a/libs/common/src/importers/kasperskyTxtImporter.ts +++ b/libs/common/src/importers/kasperskyTxtImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/keepass2XmlImporter.ts b/libs/common/src/importers/keepass2XmlImporter.ts index 2ed5d0f96f5..b2ca0014602 100644 --- a/libs/common/src/importers/keepass2XmlImporter.ts +++ b/libs/common/src/importers/keepass2XmlImporter.ts @@ -1,6 +1,6 @@ import { FieldType } from "../enums/fieldType"; -import { ImportResult } from "../models/domain/importResult"; -import { FolderView } from "../models/view/folderView"; +import { ImportResult } from "../models/domain/import-result"; +import { FolderView } from "../models/view/folder.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/keepassxCsvImporter.ts b/libs/common/src/importers/keepassxCsvImporter.ts index 58640d5aed2..22d118b2272 100644 --- a/libs/common/src/importers/keepassxCsvImporter.ts +++ b/libs/common/src/importers/keepassxCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/keeperImporters/keeperCsvImporter.ts b/libs/common/src/importers/keeperImporters/keeperCsvImporter.ts index e9c65d7153f..c87925216f1 100644 --- a/libs/common/src/importers/keeperImporters/keeperCsvImporter.ts +++ b/libs/common/src/importers/keeperImporters/keeperCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../../models/domain/importResult"; +import { ImportResult } from "../../models/domain/import-result"; import { BaseImporter } from "../baseImporter"; import { Importer } from "../importer"; diff --git a/libs/common/src/importers/keeperImporters/keeperJsonImporter.ts b/libs/common/src/importers/keeperImporters/keeperJsonImporter.ts index 7ee80b08e08..0aed14824f8 100644 --- a/libs/common/src/importers/keeperImporters/keeperJsonImporter.ts +++ b/libs/common/src/importers/keeperImporters/keeperJsonImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../../models/domain/importResult"; +import { ImportResult } from "../../models/domain/import-result"; import { BaseImporter } from "../baseImporter"; import { Importer } from "../importer"; diff --git a/libs/common/src/importers/lastpassCsvImporter.ts b/libs/common/src/importers/lastpassCsvImporter.ts index 5c0160280f4..6212837198c 100644 --- a/libs/common/src/importers/lastpassCsvImporter.ts +++ b/libs/common/src/importers/lastpassCsvImporter.ts @@ -1,12 +1,12 @@ import { CipherType } from "../enums/cipherType"; import { SecureNoteType } from "../enums/secureNoteType"; -import { ImportResult } from "../models/domain/importResult"; -import { CardView } from "../models/view/cardView"; -import { CipherView } from "../models/view/cipherView"; -import { FolderView } from "../models/view/folderView"; -import { IdentityView } from "../models/view/identityView"; -import { LoginView } from "../models/view/loginView"; -import { SecureNoteView } from "../models/view/secureNoteView"; +import { ImportResult } from "../models/domain/import-result"; +import { CardView } from "../models/view/card.view"; +import { CipherView } from "../models/view/cipher.view"; +import { FolderView } from "../models/view/folder.view"; +import { IdentityView } from "../models/view/identity.view"; +import { LoginView } from "../models/view/login.view"; +import { SecureNoteView } from "../models/view/secure-note.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/logMeOnceCsvImporter.ts b/libs/common/src/importers/logMeOnceCsvImporter.ts index 698ebc80203..5fdc0a388b7 100644 --- a/libs/common/src/importers/logMeOnceCsvImporter.ts +++ b/libs/common/src/importers/logMeOnceCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/meldiumCsvImporter.ts b/libs/common/src/importers/meldiumCsvImporter.ts index 79835a90b38..1a30ca5cfe8 100644 --- a/libs/common/src/importers/meldiumCsvImporter.ts +++ b/libs/common/src/importers/meldiumCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/msecureCsvImporter.ts b/libs/common/src/importers/msecureCsvImporter.ts index 583d13d7d94..a1bb4034932 100644 --- a/libs/common/src/importers/msecureCsvImporter.ts +++ b/libs/common/src/importers/msecureCsvImporter.ts @@ -1,7 +1,7 @@ import { CipherType } from "../enums/cipherType"; import { SecureNoteType } from "../enums/secureNoteType"; -import { ImportResult } from "../models/domain/importResult"; -import { SecureNoteView } from "../models/view/secureNoteView"; +import { ImportResult } from "../models/domain/import-result"; +import { SecureNoteView } from "../models/view/secure-note.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/mykiCsvImporter.ts b/libs/common/src/importers/mykiCsvImporter.ts index d9a05e1ebb3..ec326b06f86 100644 --- a/libs/common/src/importers/mykiCsvImporter.ts +++ b/libs/common/src/importers/mykiCsvImporter.ts @@ -1,10 +1,10 @@ import { CipherType } from "../enums/cipherType"; import { SecureNoteType } from "../enums/secureNoteType"; -import { ImportResult } from "../models/domain/importResult"; -import { CardView } from "../models/view/cardView"; -import { CipherView } from "../models/view/cipherView"; -import { IdentityView } from "../models/view/identityView"; -import { SecureNoteView } from "../models/view/secureNoteView"; +import { ImportResult } from "../models/domain/import-result"; +import { CardView } from "../models/view/card.view"; +import { CipherView } from "../models/view/cipher.view"; +import { IdentityView } from "../models/view/identity.view"; +import { SecureNoteView } from "../models/view/secure-note.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/nordpassCsvImporter.ts b/libs/common/src/importers/nordpassCsvImporter.ts index 225e7ec2aee..b41a2ea035c 100644 --- a/libs/common/src/importers/nordpassCsvImporter.ts +++ b/libs/common/src/importers/nordpassCsvImporter.ts @@ -1,8 +1,8 @@ import { CipherType } from "../enums/cipherType"; import { SecureNoteType } from "../enums/secureNoteType"; -import { ImportResult } from "../models/domain/importResult"; -import { CipherView } from "../models/view/cipherView"; -import { LoginView } from "../models/view/loginView"; +import { ImportResult } from "../models/domain/import-result"; +import { CipherView } from "../models/view/cipher.view"; +import { LoginView } from "../models/view/login.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/onepasswordImporters/cipherImportContext.ts b/libs/common/src/importers/onepasswordImporters/cipherImportContext.ts index 560f5c013b4..4a8810205f1 100644 --- a/libs/common/src/importers/onepasswordImporters/cipherImportContext.ts +++ b/libs/common/src/importers/onepasswordImporters/cipherImportContext.ts @@ -1,4 +1,4 @@ -import { CipherView } from "../../models/view/cipherView"; +import { CipherView } from "../../models/view/cipher.view"; export class CipherImportContext { lowerProperty: string; diff --git a/libs/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts b/libs/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts index f261140e270..298f14bd28a 100644 --- a/libs/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts +++ b/libs/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts @@ -1,12 +1,12 @@ import { CipherType } from "../../enums/cipherType"; import { FieldType } from "../../enums/fieldType"; import { SecureNoteType } from "../../enums/secureNoteType"; -import { ImportResult } from "../../models/domain/importResult"; -import { CardView } from "../../models/view/cardView"; -import { CipherView } from "../../models/view/cipherView"; -import { IdentityView } from "../../models/view/identityView"; -import { PasswordHistoryView } from "../../models/view/passwordHistoryView"; -import { SecureNoteView } from "../../models/view/secureNoteView"; +import { ImportResult } from "../../models/domain/import-result"; +import { CardView } from "../../models/view/card.view"; +import { CipherView } from "../../models/view/cipher.view"; +import { IdentityView } from "../../models/view/identity.view"; +import { PasswordHistoryView } from "../../models/view/password-history.view"; +import { SecureNoteView } from "../../models/view/secure-note.view"; import { BaseImporter } from "../baseImporter"; import { Importer } from "../importer"; diff --git a/libs/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts b/libs/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts index 67f4bb2590a..5c1f4869667 100644 --- a/libs/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts +++ b/libs/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts @@ -2,13 +2,13 @@ import { CipherRepromptType } from "../../enums/cipherRepromptType"; import { CipherType } from "../../enums/cipherType"; import { FieldType } from "../../enums/fieldType"; import { SecureNoteType } from "../../enums/secureNoteType"; -import { ImportResult } from "../../models/domain/importResult"; -import { CardView } from "../../models/view/cardView"; -import { CipherView } from "../../models/view/cipherView"; -import { IdentityView } from "../../models/view/identityView"; -import { LoginView } from "../../models/view/loginView"; -import { PasswordHistoryView } from "../../models/view/passwordHistoryView"; -import { SecureNoteView } from "../../models/view/secureNoteView"; +import { ImportResult } from "../../models/domain/import-result"; +import { CardView } from "../../models/view/card.view"; +import { CipherView } from "../../models/view/cipher.view"; +import { IdentityView } from "../../models/view/identity.view"; +import { LoginView } from "../../models/view/login.view"; +import { PasswordHistoryView } from "../../models/view/password-history.view"; +import { SecureNoteView } from "../../models/view/secure-note.view"; import { BaseImporter } from "../baseImporter"; import { Importer } from "../importer"; diff --git a/libs/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts b/libs/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts index d28bdcccc59..44e7a3c3d4e 100644 --- a/libs/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts +++ b/libs/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts @@ -1,7 +1,7 @@ import { CipherType } from "../../enums/cipherType"; import { FieldType } from "../../enums/fieldType"; -import { ImportResult } from "../../models/domain/importResult"; -import { CipherView } from "../../models/view/cipherView"; +import { ImportResult } from "../../models/domain/import-result"; +import { CipherView } from "../../models/view/cipher.view"; import { BaseImporter } from "../baseImporter"; import { Importer } from "../importer"; diff --git a/libs/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts b/libs/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts index 2135c80a34b..ffd6284c14a 100644 --- a/libs/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts +++ b/libs/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts @@ -1,7 +1,7 @@ import { CipherType } from "../../enums/cipherType"; -import { CardView } from "../../models/view/cardView"; -import { CipherView } from "../../models/view/cipherView"; -import { IdentityView } from "../../models/view/identityView"; +import { CardView } from "../../models/view/card.view"; +import { CipherView } from "../../models/view/cipher.view"; +import { IdentityView } from "../../models/view/identity.view"; import { Importer } from "../importer"; import { IgnoredProperties, OnePasswordCsvImporter } from "./onepasswordCsvImporter"; diff --git a/libs/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts b/libs/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts index 3b3d6454f0f..3097c6587a6 100644 --- a/libs/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts +++ b/libs/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts @@ -1,8 +1,8 @@ import { CipherType } from "../../enums/cipherType"; -import { CardView } from "../../models/view/cardView"; -import { CipherView } from "../../models/view/cipherView"; -import { IdentityView } from "../../models/view/identityView"; -import { LoginView } from "../../models/view/loginView"; +import { CardView } from "../../models/view/card.view"; +import { CipherView } from "../../models/view/cipher.view"; +import { IdentityView } from "../../models/view/identity.view"; +import { LoginView } from "../../models/view/login.view"; import { Importer } from "../importer"; import { CipherImportContext } from "./cipherImportContext"; diff --git a/libs/common/src/importers/padlockCsvImporter.ts b/libs/common/src/importers/padlockCsvImporter.ts index 821391cff31..d9d1b297115 100644 --- a/libs/common/src/importers/padlockCsvImporter.ts +++ b/libs/common/src/importers/padlockCsvImporter.ts @@ -1,5 +1,5 @@ -import { ImportResult } from "../models/domain/importResult"; -import { CollectionView } from "../models/view/collectionView"; +import { ImportResult } from "../models/domain/import-result"; +import { CollectionView } from "../models/view/collection.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/passkeepCsvImporter.ts b/libs/common/src/importers/passkeepCsvImporter.ts index c93b3a42ee4..9ba05246ad4 100644 --- a/libs/common/src/importers/passkeepCsvImporter.ts +++ b/libs/common/src/importers/passkeepCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/passmanJsonImporter.ts b/libs/common/src/importers/passmanJsonImporter.ts index f8bc7106bd3..bf5904bc5c3 100644 --- a/libs/common/src/importers/passmanJsonImporter.ts +++ b/libs/common/src/importers/passmanJsonImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/passpackCsvImporter.ts b/libs/common/src/importers/passpackCsvImporter.ts index 8efaa3c3e76..fb5282594fd 100644 --- a/libs/common/src/importers/passpackCsvImporter.ts +++ b/libs/common/src/importers/passpackCsvImporter.ts @@ -1,5 +1,5 @@ -import { ImportResult } from "../models/domain/importResult"; -import { CollectionView } from "../models/view/collectionView"; +import { ImportResult } from "../models/domain/import-result"; +import { CollectionView } from "../models/view/collection.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/passwordAgentCsvImporter.ts b/libs/common/src/importers/passwordAgentCsvImporter.ts index cc37f5dd304..9ac68e04ed7 100644 --- a/libs/common/src/importers/passwordAgentCsvImporter.ts +++ b/libs/common/src/importers/passwordAgentCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/passwordBossJsonImporter.ts b/libs/common/src/importers/passwordBossJsonImporter.ts index d60a84fb06e..3ec00c25437 100644 --- a/libs/common/src/importers/passwordBossJsonImporter.ts +++ b/libs/common/src/importers/passwordBossJsonImporter.ts @@ -1,7 +1,7 @@ import { CipherType } from "../enums/cipherType"; -import { ImportResult } from "../models/domain/importResult"; -import { CardView } from "../models/view/cardView"; -import { FolderView } from "../models/view/folderView"; +import { ImportResult } from "../models/domain/import-result"; +import { CardView } from "../models/view/card.view"; +import { FolderView } from "../models/view/folder.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/passwordDragonXmlImporter.ts b/libs/common/src/importers/passwordDragonXmlImporter.ts index 433950ad5fa..1fa3dd60d05 100644 --- a/libs/common/src/importers/passwordDragonXmlImporter.ts +++ b/libs/common/src/importers/passwordDragonXmlImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/passwordSafeXmlImporter.ts b/libs/common/src/importers/passwordSafeXmlImporter.ts index b7aa9358790..ccbc0593250 100644 --- a/libs/common/src/importers/passwordSafeXmlImporter.ts +++ b/libs/common/src/importers/passwordSafeXmlImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/passwordWalletTxtImporter.ts b/libs/common/src/importers/passwordWalletTxtImporter.ts index b5940372a24..55902b9ebf8 100644 --- a/libs/common/src/importers/passwordWalletTxtImporter.ts +++ b/libs/common/src/importers/passwordWalletTxtImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/rememBearCsvImporter.ts b/libs/common/src/importers/rememBearCsvImporter.ts index 3f7dc464f3e..4fe3e9a0a52 100644 --- a/libs/common/src/importers/rememBearCsvImporter.ts +++ b/libs/common/src/importers/rememBearCsvImporter.ts @@ -1,6 +1,6 @@ import { CipherType } from "../enums/cipherType"; -import { ImportResult } from "../models/domain/importResult"; -import { CardView } from "../models/view/cardView"; +import { ImportResult } from "../models/domain/import-result"; +import { CardView } from "../models/view/card.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/roboformCsvImporter.ts b/libs/common/src/importers/roboformCsvImporter.ts index c5279e2b1c6..cfc0022a12c 100644 --- a/libs/common/src/importers/roboformCsvImporter.ts +++ b/libs/common/src/importers/roboformCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/safariCsvImporter.ts b/libs/common/src/importers/safariCsvImporter.ts index 786b2827833..41d67f3b17a 100644 --- a/libs/common/src/importers/safariCsvImporter.ts +++ b/libs/common/src/importers/safariCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/safeInCloudXmlImporter.ts b/libs/common/src/importers/safeInCloudXmlImporter.ts index 3e5a8199383..800162c218c 100644 --- a/libs/common/src/importers/safeInCloudXmlImporter.ts +++ b/libs/common/src/importers/safeInCloudXmlImporter.ts @@ -1,11 +1,11 @@ import { CipherType } from "../enums/cipherType"; import { FieldType } from "../enums/fieldType"; import { SecureNoteType } from "../enums/secureNoteType"; -import { ImportResult } from "../models/domain/importResult"; -import { CipherView } from "../models/view/cipherView"; -import { FieldView } from "../models/view/fieldView"; -import { FolderView } from "../models/view/folderView"; -import { SecureNoteView } from "../models/view/secureNoteView"; +import { ImportResult } from "../models/domain/import-result"; +import { CipherView } from "../models/view/cipher.view"; +import { FieldView } from "../models/view/field.view"; +import { FolderView } from "../models/view/folder.view"; +import { SecureNoteView } from "../models/view/secure-note.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/saferpassCsvImport.ts b/libs/common/src/importers/saferpassCsvImport.ts index 6d962ba1b5b..1de578ee086 100644 --- a/libs/common/src/importers/saferpassCsvImport.ts +++ b/libs/common/src/importers/saferpassCsvImport.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/secureSafeCsvImporter.ts b/libs/common/src/importers/secureSafeCsvImporter.ts index 8d0ac1fee62..b072b987843 100644 --- a/libs/common/src/importers/secureSafeCsvImporter.ts +++ b/libs/common/src/importers/secureSafeCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/splashIdCsvImporter.ts b/libs/common/src/importers/splashIdCsvImporter.ts index df1118d1783..241175b0794 100644 --- a/libs/common/src/importers/splashIdCsvImporter.ts +++ b/libs/common/src/importers/splashIdCsvImporter.ts @@ -1,5 +1,5 @@ -import { ImportResult } from "../models/domain/importResult"; -import { CipherView } from "../models/view/cipherView"; +import { ImportResult } from "../models/domain/import-result"; +import { CipherView } from "../models/view/cipher.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/stickyPasswordXmlImporter.ts b/libs/common/src/importers/stickyPasswordXmlImporter.ts index caaa33702f8..c2ce1836558 100644 --- a/libs/common/src/importers/stickyPasswordXmlImporter.ts +++ b/libs/common/src/importers/stickyPasswordXmlImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/truekeyCsvImporter.ts b/libs/common/src/importers/truekeyCsvImporter.ts index d28af7af079..dabfa4d3a48 100644 --- a/libs/common/src/importers/truekeyCsvImporter.ts +++ b/libs/common/src/importers/truekeyCsvImporter.ts @@ -1,8 +1,8 @@ import { CipherType } from "../enums/cipherType"; import { SecureNoteType } from "../enums/secureNoteType"; -import { ImportResult } from "../models/domain/importResult"; -import { CardView } from "../models/view/cardView"; -import { SecureNoteView } from "../models/view/secureNoteView"; +import { ImportResult } from "../models/domain/import-result"; +import { CardView } from "../models/view/card.view"; +import { SecureNoteView } from "../models/view/secure-note.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/upmCsvImporter.ts b/libs/common/src/importers/upmCsvImporter.ts index ea092ffcb77..4a11bee69ec 100644 --- a/libs/common/src/importers/upmCsvImporter.ts +++ b/libs/common/src/importers/upmCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/yotiCsvImporter.ts b/libs/common/src/importers/yotiCsvImporter.ts index 526f7d6928f..ba74fb98c0f 100644 --- a/libs/common/src/importers/yotiCsvImporter.ts +++ b/libs/common/src/importers/yotiCsvImporter.ts @@ -1,4 +1,4 @@ -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/importers/zohoVaultCsvImporter.ts b/libs/common/src/importers/zohoVaultCsvImporter.ts index 18008e80728..0484353edf9 100644 --- a/libs/common/src/importers/zohoVaultCsvImporter.ts +++ b/libs/common/src/importers/zohoVaultCsvImporter.ts @@ -1,5 +1,5 @@ -import { ImportResult } from "../models/domain/importResult"; -import { CipherView } from "../models/view/cipherView"; +import { ImportResult } from "../models/domain/import-result"; +import { CipherView } from "../models/view/cipher.view"; import { BaseImporter } from "./baseImporter"; import { Importer } from "./importer"; diff --git a/libs/common/src/misc/linkedFieldOption.decorator.ts b/libs/common/src/misc/linkedFieldOption.decorator.ts index 43836318752..5296698a128 100644 --- a/libs/common/src/misc/linkedFieldOption.decorator.ts +++ b/libs/common/src/misc/linkedFieldOption.decorator.ts @@ -1,5 +1,5 @@ import { LinkedIdType } from "../enums/linkedIdType"; -import { ItemView } from "../models/view/itemView"; +import { ItemView } from "../models/view/item.view"; export class LinkedMetadata { constructor(readonly propertyKey: string, private readonly _i18nKey?: string) {} diff --git a/libs/common/src/misc/logInStrategies/apiLogin.strategy.ts b/libs/common/src/misc/logInStrategies/apiLogin.strategy.ts index 89ebc37910e..2ca090930c8 100644 --- a/libs/common/src/misc/logInStrategies/apiLogin.strategy.ts +++ b/libs/common/src/misc/logInStrategies/apiLogin.strategy.ts @@ -9,7 +9,7 @@ import { PlatformUtilsService } from "../../abstractions/platformUtils.service"; import { StateService } from "../../abstractions/state.service"; import { TokenService } from "../../abstractions/token.service"; import { TwoFactorService } from "../../abstractions/twoFactor.service"; -import { ApiLogInCredentials } from "../../models/domain/logInCredentials"; +import { ApiLogInCredentials } from "../../models/domain/log-in-credentials"; import { ApiTokenRequest } from "../../models/request/identityToken/apiTokenRequest"; import { IdentityTokenResponse } from "../../models/response/identityTokenResponse"; diff --git a/libs/common/src/misc/logInStrategies/logIn.strategy.ts b/libs/common/src/misc/logInStrategies/logIn.strategy.ts index 577130156f7..8c199be0de2 100644 --- a/libs/common/src/misc/logInStrategies/logIn.strategy.ts +++ b/libs/common/src/misc/logInStrategies/logIn.strategy.ts @@ -9,13 +9,13 @@ import { TokenService } from "../../abstractions/token.service"; import { TwoFactorService } from "../../abstractions/twoFactor.service"; import { TwoFactorProviderType } from "../../enums/twoFactorProviderType"; import { Account, AccountProfile, AccountTokens } from "../../models/domain/account"; -import { AuthResult } from "../../models/domain/authResult"; +import { AuthResult } from "../../models/domain/auth-result"; import { ApiLogInCredentials, PasswordLogInCredentials, SsoLogInCredentials, PasswordlessLogInCredentials, -} from "../../models/domain/logInCredentials"; +} from "../../models/domain/log-in-credentials"; import { DeviceRequest } from "../../models/request/deviceRequest"; import { ApiTokenRequest } from "../../models/request/identityToken/apiTokenRequest"; import { PasswordTokenRequest } from "../../models/request/identityToken/passwordTokenRequest"; diff --git a/libs/common/src/misc/logInStrategies/passwordLogin.strategy.ts b/libs/common/src/misc/logInStrategies/passwordLogin.strategy.ts index 81947e562dd..d2ed8bd869a 100644 --- a/libs/common/src/misc/logInStrategies/passwordLogin.strategy.ts +++ b/libs/common/src/misc/logInStrategies/passwordLogin.strategy.ts @@ -9,9 +9,9 @@ import { StateService } from "../../abstractions/state.service"; import { TokenService } from "../../abstractions/token.service"; import { TwoFactorService } from "../../abstractions/twoFactor.service"; import { HashPurpose } from "../../enums/hashPurpose"; -import { AuthResult } from "../../models/domain/authResult"; -import { PasswordLogInCredentials } from "../../models/domain/logInCredentials"; -import { SymmetricCryptoKey } from "../../models/domain/symmetricCryptoKey"; +import { AuthResult } from "../../models/domain/auth-result"; +import { PasswordLogInCredentials } from "../../models/domain/log-in-credentials"; +import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key"; import { PasswordTokenRequest } from "../../models/request/identityToken/passwordTokenRequest"; import { TokenRequestTwoFactor } from "../../models/request/identityToken/tokenRequestTwoFactor"; diff --git a/libs/common/src/misc/logInStrategies/passwordlessLogin.strategy.ts b/libs/common/src/misc/logInStrategies/passwordlessLogin.strategy.ts index 0acc4a49f00..41fcbc292ad 100644 --- a/libs/common/src/misc/logInStrategies/passwordlessLogin.strategy.ts +++ b/libs/common/src/misc/logInStrategies/passwordlessLogin.strategy.ts @@ -8,9 +8,9 @@ import { PlatformUtilsService } from "../../abstractions/platformUtils.service"; import { StateService } from "../../abstractions/state.service"; import { TokenService } from "../../abstractions/token.service"; import { TwoFactorService } from "../../abstractions/twoFactor.service"; -import { AuthResult } from "../../models/domain/authResult"; -import { PasswordlessLogInCredentials } from "../../models/domain/logInCredentials"; -import { SymmetricCryptoKey } from "../../models/domain/symmetricCryptoKey"; +import { AuthResult } from "../../models/domain/auth-result"; +import { PasswordlessLogInCredentials } from "../../models/domain/log-in-credentials"; +import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key"; import { PasswordTokenRequest } from "../../models/request/identityToken/passwordTokenRequest"; import { TokenRequestTwoFactor } from "../../models/request/identityToken/tokenRequestTwoFactor"; diff --git a/libs/common/src/misc/logInStrategies/ssoLogin.strategy.ts b/libs/common/src/misc/logInStrategies/ssoLogin.strategy.ts index e56bd7a3d15..48be06a0d9b 100644 --- a/libs/common/src/misc/logInStrategies/ssoLogin.strategy.ts +++ b/libs/common/src/misc/logInStrategies/ssoLogin.strategy.ts @@ -8,7 +8,7 @@ import { PlatformUtilsService } from "../../abstractions/platformUtils.service"; import { StateService } from "../../abstractions/state.service"; import { TokenService } from "../../abstractions/token.service"; import { TwoFactorService } from "../../abstractions/twoFactor.service"; -import { SsoLogInCredentials } from "../../models/domain/logInCredentials"; +import { SsoLogInCredentials } from "../../models/domain/log-in-credentials"; import { SsoTokenRequest } from "../../models/request/identityToken/ssoTokenRequest"; import { IdentityTokenResponse } from "../../models/response/identityTokenResponse"; diff --git a/libs/common/src/misc/serviceUtils.ts b/libs/common/src/misc/serviceUtils.ts index b6c05092372..b8c0ef384ad 100644 --- a/libs/common/src/misc/serviceUtils.ts +++ b/libs/common/src/misc/serviceUtils.ts @@ -1,4 +1,4 @@ -import { ITreeNodeObject, TreeNode } from "../models/domain/treeNode"; +import { ITreeNodeObject, TreeNode } from "../models/domain/tree-node"; export class ServiceUtils { static nestedTraverse( diff --git a/libs/common/src/models/api/billingSyncConfigApi.ts b/libs/common/src/models/api/billing-sync-config.api.ts similarity index 100% rename from libs/common/src/models/api/billingSyncConfigApi.ts rename to libs/common/src/models/api/billing-sync-config.api.ts diff --git a/libs/common/src/models/api/cardApi.ts b/libs/common/src/models/api/card.api.ts similarity index 100% rename from libs/common/src/models/api/cardApi.ts rename to libs/common/src/models/api/card.api.ts diff --git a/libs/common/src/models/api/fieldApi.ts b/libs/common/src/models/api/field.api.ts similarity index 100% rename from libs/common/src/models/api/fieldApi.ts rename to libs/common/src/models/api/field.api.ts diff --git a/libs/common/src/models/api/identityApi.ts b/libs/common/src/models/api/identity.api.ts similarity index 100% rename from libs/common/src/models/api/identityApi.ts rename to libs/common/src/models/api/identity.api.ts diff --git a/libs/common/src/models/api/loginUriApi.ts b/libs/common/src/models/api/login-uri.api.ts similarity index 100% rename from libs/common/src/models/api/loginUriApi.ts rename to libs/common/src/models/api/login-uri.api.ts diff --git a/libs/common/src/models/api/loginApi.ts b/libs/common/src/models/api/login.api.ts similarity index 94% rename from libs/common/src/models/api/loginApi.ts rename to libs/common/src/models/api/login.api.ts index ddbe37ec9ba..5278e5bd984 100644 --- a/libs/common/src/models/api/loginApi.ts +++ b/libs/common/src/models/api/login.api.ts @@ -1,6 +1,6 @@ import { BaseResponse } from "../response/baseResponse"; -import { LoginUriApi } from "./loginUriApi"; +import { LoginUriApi } from "./login-uri.api"; export class LoginApi extends BaseResponse { uris: LoginUriApi[]; diff --git a/libs/common/src/models/api/permissionsApi.ts b/libs/common/src/models/api/permissions.api.ts similarity index 100% rename from libs/common/src/models/api/permissionsApi.ts rename to libs/common/src/models/api/permissions.api.ts diff --git a/libs/common/src/models/api/scimConfigApi.ts b/libs/common/src/models/api/scim-config.api.ts similarity index 100% rename from libs/common/src/models/api/scimConfigApi.ts rename to libs/common/src/models/api/scim-config.api.ts diff --git a/libs/common/src/models/api/secureNoteApi.ts b/libs/common/src/models/api/secure-note.api.ts similarity index 100% rename from libs/common/src/models/api/secureNoteApi.ts rename to libs/common/src/models/api/secure-note.api.ts diff --git a/libs/common/src/models/api/sendFileApi.ts b/libs/common/src/models/api/send-file.api.ts similarity index 100% rename from libs/common/src/models/api/sendFileApi.ts rename to libs/common/src/models/api/send-file.api.ts diff --git a/libs/common/src/models/api/sendTextApi.ts b/libs/common/src/models/api/send-text.api.ts similarity index 100% rename from libs/common/src/models/api/sendTextApi.ts rename to libs/common/src/models/api/send-text.api.ts diff --git a/libs/common/src/models/api/ssoConfigApi.ts b/libs/common/src/models/api/sso-config.api.ts similarity index 99% rename from libs/common/src/models/api/ssoConfigApi.ts rename to libs/common/src/models/api/sso-config.api.ts index 0767f3d6725..4ead9f39449 100644 --- a/libs/common/src/models/api/ssoConfigApi.ts +++ b/libs/common/src/models/api/sso-config.api.ts @@ -6,7 +6,7 @@ import { SsoType, } from "../../enums/ssoEnums"; import { BaseResponse } from "../response/baseResponse"; -import { SsoConfigView } from "../view/ssoConfigView"; +import { SsoConfigView } from "../view/sso-config.view"; export class SsoConfigApi extends BaseResponse { static fromView(view: SsoConfigView, api = new SsoConfigApi()) { diff --git a/libs/common/src/models/data/attachmentData.ts b/libs/common/src/models/data/attachment.data.ts similarity index 100% rename from libs/common/src/models/data/attachmentData.ts rename to libs/common/src/models/data/attachment.data.ts diff --git a/libs/common/src/models/data/cardData.ts b/libs/common/src/models/data/card.data.ts similarity index 90% rename from libs/common/src/models/data/cardData.ts rename to libs/common/src/models/data/card.data.ts index 9d90e4b2c96..fe80003a8f5 100644 --- a/libs/common/src/models/data/cardData.ts +++ b/libs/common/src/models/data/card.data.ts @@ -1,4 +1,4 @@ -import { CardApi } from "../api/cardApi"; +import { CardApi } from "../api/card.api"; export class CardData { cardholderName: string; diff --git a/libs/common/src/models/data/cipherData.ts b/libs/common/src/models/data/cipher.data.ts similarity index 87% rename from libs/common/src/models/data/cipherData.ts rename to libs/common/src/models/data/cipher.data.ts index 34815a65968..c03d83476d4 100644 --- a/libs/common/src/models/data/cipherData.ts +++ b/libs/common/src/models/data/cipher.data.ts @@ -2,13 +2,13 @@ import { CipherRepromptType } from "../../enums/cipherRepromptType"; import { CipherType } from "../../enums/cipherType"; import { CipherResponse } from "../response/cipherResponse"; -import { AttachmentData } from "./attachmentData"; -import { CardData } from "./cardData"; -import { FieldData } from "./fieldData"; -import { IdentityData } from "./identityData"; -import { LoginData } from "./loginData"; -import { PasswordHistoryData } from "./passwordHistoryData"; -import { SecureNoteData } from "./secureNoteData"; +import { AttachmentData } from "./attachment.data"; +import { CardData } from "./card.data"; +import { FieldData } from "./field.data"; +import { IdentityData } from "./identity.data"; +import { LoginData } from "./login.data"; +import { PasswordHistoryData } from "./password-history.data"; +import { SecureNoteData } from "./secure-note.data"; export class CipherData { id: string; diff --git a/libs/common/src/models/data/collectionData.ts b/libs/common/src/models/data/collection.data.ts similarity index 100% rename from libs/common/src/models/data/collectionData.ts rename to libs/common/src/models/data/collection.data.ts diff --git a/libs/common/src/models/data/encryptedOrganizationKeyData.ts b/libs/common/src/models/data/encrypted-organization-key.data.ts similarity index 100% rename from libs/common/src/models/data/encryptedOrganizationKeyData.ts rename to libs/common/src/models/data/encrypted-organization-key.data.ts diff --git a/libs/common/src/models/data/eventData.ts b/libs/common/src/models/data/event.data.ts similarity index 100% rename from libs/common/src/models/data/eventData.ts rename to libs/common/src/models/data/event.data.ts diff --git a/libs/common/src/models/data/fieldData.ts b/libs/common/src/models/data/field.data.ts similarity index 90% rename from libs/common/src/models/data/fieldData.ts rename to libs/common/src/models/data/field.data.ts index 6bec9def084..42e800cf6c8 100644 --- a/libs/common/src/models/data/fieldData.ts +++ b/libs/common/src/models/data/field.data.ts @@ -1,6 +1,6 @@ import { FieldType } from "../../enums/fieldType"; import { LinkedIdType } from "../../enums/linkedIdType"; -import { FieldApi } from "../api/fieldApi"; +import { FieldApi } from "../api/field.api"; export class FieldData { type: FieldType; diff --git a/libs/common/src/models/data/folderData.ts b/libs/common/src/models/data/folder.data.ts similarity index 100% rename from libs/common/src/models/data/folderData.ts rename to libs/common/src/models/data/folder.data.ts diff --git a/libs/common/src/models/data/identityData.ts b/libs/common/src/models/data/identity.data.ts similarity index 95% rename from libs/common/src/models/data/identityData.ts rename to libs/common/src/models/data/identity.data.ts index 02aa7eb66cd..620ec2ec433 100644 --- a/libs/common/src/models/data/identityData.ts +++ b/libs/common/src/models/data/identity.data.ts @@ -1,4 +1,4 @@ -import { IdentityApi } from "../api/identityApi"; +import { IdentityApi } from "../api/identity.api"; export class IdentityData { title: string; diff --git a/libs/common/src/models/data/localData.ts b/libs/common/src/models/data/local.data.ts similarity index 100% rename from libs/common/src/models/data/localData.ts rename to libs/common/src/models/data/local.data.ts diff --git a/libs/common/src/models/data/loginUriData.ts b/libs/common/src/models/data/login-uri.data.ts similarity index 83% rename from libs/common/src/models/data/loginUriData.ts rename to libs/common/src/models/data/login-uri.data.ts index 874db4e818a..25db2146fbf 100644 --- a/libs/common/src/models/data/loginUriData.ts +++ b/libs/common/src/models/data/login-uri.data.ts @@ -1,5 +1,5 @@ import { UriMatchType } from "../../enums/uriMatchType"; -import { LoginUriApi } from "../api/loginUriApi"; +import { LoginUriApi } from "../api/login-uri.api"; export class LoginUriData { uri: string; diff --git a/libs/common/src/models/data/loginData.ts b/libs/common/src/models/data/login.data.ts similarity index 85% rename from libs/common/src/models/data/loginData.ts rename to libs/common/src/models/data/login.data.ts index e51180c8b08..a15b1f2ed63 100644 --- a/libs/common/src/models/data/loginData.ts +++ b/libs/common/src/models/data/login.data.ts @@ -1,6 +1,6 @@ -import { LoginApi } from "../api/loginApi"; +import { LoginApi } from "../api/login.api"; -import { LoginUriData } from "./loginUriData"; +import { LoginUriData } from "./login-uri.data"; export class LoginData { uris: LoginUriData[]; diff --git a/libs/common/src/models/data/organizationData.ts b/libs/common/src/models/data/organization.data.ts similarity index 98% rename from libs/common/src/models/data/organizationData.ts rename to libs/common/src/models/data/organization.data.ts index 5d5e5229594..737bc0e8b67 100644 --- a/libs/common/src/models/data/organizationData.ts +++ b/libs/common/src/models/data/organization.data.ts @@ -1,7 +1,7 @@ import { OrganizationUserStatusType } from "../../enums/organizationUserStatusType"; import { OrganizationUserType } from "../../enums/organizationUserType"; import { ProductType } from "../../enums/productType"; -import { PermissionsApi } from "../api/permissionsApi"; +import { PermissionsApi } from "../api/permissions.api"; import { ProfileOrganizationResponse } from "../response/profileOrganizationResponse"; export class OrganizationData { diff --git a/libs/common/src/models/data/passwordHistoryData.ts b/libs/common/src/models/data/password-history.data.ts similarity index 100% rename from libs/common/src/models/data/passwordHistoryData.ts rename to libs/common/src/models/data/password-history.data.ts diff --git a/libs/common/src/models/data/policyData.ts b/libs/common/src/models/data/policy.data.ts similarity index 100% rename from libs/common/src/models/data/policyData.ts rename to libs/common/src/models/data/policy.data.ts diff --git a/libs/common/src/models/data/providerData.ts b/libs/common/src/models/data/provider.data.ts similarity index 100% rename from libs/common/src/models/data/providerData.ts rename to libs/common/src/models/data/provider.data.ts diff --git a/libs/common/src/models/data/secureNoteData.ts b/libs/common/src/models/data/secure-note.data.ts similarity index 80% rename from libs/common/src/models/data/secureNoteData.ts rename to libs/common/src/models/data/secure-note.data.ts index f536b2de5d7..c09f5847055 100644 --- a/libs/common/src/models/data/secureNoteData.ts +++ b/libs/common/src/models/data/secure-note.data.ts @@ -1,5 +1,5 @@ import { SecureNoteType } from "../../enums/secureNoteType"; -import { SecureNoteApi } from "../api/secureNoteApi"; +import { SecureNoteApi } from "../api/secure-note.api"; export class SecureNoteData { type: SecureNoteType; diff --git a/libs/common/src/models/data/sendFileData.ts b/libs/common/src/models/data/send-file.data.ts similarity index 85% rename from libs/common/src/models/data/sendFileData.ts rename to libs/common/src/models/data/send-file.data.ts index aaf868c19d9..5cdc9b19bb8 100644 --- a/libs/common/src/models/data/sendFileData.ts +++ b/libs/common/src/models/data/send-file.data.ts @@ -1,4 +1,4 @@ -import { SendFileApi } from "../api/sendFileApi"; +import { SendFileApi } from "../api/send-file.api"; export class SendFileData { id: string; diff --git a/libs/common/src/models/data/sendTextData.ts b/libs/common/src/models/data/send-text.data.ts similarity index 80% rename from libs/common/src/models/data/sendTextData.ts rename to libs/common/src/models/data/send-text.data.ts index fedf2ed6167..8e7335cde51 100644 --- a/libs/common/src/models/data/sendTextData.ts +++ b/libs/common/src/models/data/send-text.data.ts @@ -1,4 +1,4 @@ -import { SendTextApi } from "../api/sendTextApi"; +import { SendTextApi } from "../api/send-text.api"; export class SendTextData { text: string; diff --git a/libs/common/src/models/data/sendData.ts b/libs/common/src/models/data/send.data.ts similarity index 93% rename from libs/common/src/models/data/sendData.ts rename to libs/common/src/models/data/send.data.ts index 4c3bb8b2ff4..752a1dcf9a7 100644 --- a/libs/common/src/models/data/sendData.ts +++ b/libs/common/src/models/data/send.data.ts @@ -1,8 +1,8 @@ import { SendType } from "../../enums/sendType"; import { SendResponse } from "../response/sendResponse"; -import { SendFileData } from "./sendFileData"; -import { SendTextData } from "./sendTextData"; +import { SendFileData } from "./send-file.data"; +import { SendTextData } from "./send-text.data"; export class SendData { id: string; diff --git a/libs/common/src/models/domain/account-keys.spec.ts b/libs/common/src/models/domain/account-keys.spec.ts index c3c69e1908b..8dac20d4ebb 100644 --- a/libs/common/src/models/domain/account-keys.spec.ts +++ b/libs/common/src/models/domain/account-keys.spec.ts @@ -2,7 +2,7 @@ import { makeStaticByteArray } from "../../../spec/utils"; import { Utils } from "../../misc/utils"; import { AccountKeys, EncryptionPair } from "./account"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; describe("AccountKeys", () => { describe("toJSON", () => { diff --git a/libs/common/src/models/domain/account-settings.spec.ts b/libs/common/src/models/domain/account-settings.spec.ts index 544d591b323..b108bf6d6dc 100644 --- a/libs/common/src/models/domain/account-settings.spec.ts +++ b/libs/common/src/models/domain/account-settings.spec.ts @@ -1,5 +1,5 @@ import { AccountSettings, EncryptionPair } from "./account"; -import { EncString } from "./encString"; +import { EncString } from "./enc-string"; describe("AccountSettings", () => { describe("fromJSON", () => { diff --git a/libs/common/src/models/domain/account.ts b/libs/common/src/models/domain/account.ts index 754eda7391d..49bb55d938c 100644 --- a/libs/common/src/models/domain/account.ts +++ b/libs/common/src/models/domain/account.ts @@ -5,25 +5,25 @@ import { KdfType } from "../../enums/kdfType"; import { UriMatchType } from "../../enums/uriMatchType"; import { Utils } from "../../misc/utils"; import { DeepJsonify } from "../../types/deep-jsonify"; -import { CipherData } from "../data/cipherData"; -import { CollectionData } from "../data/collectionData"; -import { EncryptedOrganizationKeyData } from "../data/encryptedOrganizationKeyData"; -import { EventData } from "../data/eventData"; -import { FolderData } from "../data/folderData"; -import { OrganizationData } from "../data/organizationData"; -import { PolicyData } from "../data/policyData"; -import { ProviderData } from "../data/providerData"; -import { SendData } from "../data/sendData"; +import { CipherData } from "../data/cipher.data"; +import { CollectionData } from "../data/collection.data"; +import { EncryptedOrganizationKeyData } from "../data/encrypted-organization-key.data"; +import { EventData } from "../data/event.data"; +import { FolderData } from "../data/folder.data"; +import { OrganizationData } from "../data/organization.data"; +import { PolicyData } from "../data/policy.data"; +import { ProviderData } from "../data/provider.data"; +import { SendData } from "../data/send.data"; import { ServerConfigData } from "../data/server-config.data"; -import { CipherView } from "../view/cipherView"; -import { CollectionView } from "../view/collectionView"; -import { SendView } from "../view/sendView"; +import { CipherView } from "../view/cipher.view"; +import { CollectionView } from "../view/collection.view"; +import { SendView } from "../view/send.view"; -import { EncString } from "./encString"; -import { EnvironmentUrls } from "./environmentUrls"; -import { GeneratedPasswordHistory } from "./generatedPasswordHistory"; +import { EncString } from "./enc-string"; +import { EnvironmentUrls } from "./environment-urls"; +import { GeneratedPasswordHistory } from "./generated-password-history"; import { Policy } from "./policy"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class EncryptionPair { encrypted?: TEncrypted; diff --git a/libs/common/src/models/domain/attachment.ts b/libs/common/src/models/domain/attachment.ts index 4ac8fed62ea..a3fc69f55db 100644 --- a/libs/common/src/models/domain/attachment.ts +++ b/libs/common/src/models/domain/attachment.ts @@ -1,12 +1,12 @@ import { Jsonify } from "type-fest"; import { Utils } from "../../misc/utils"; -import { AttachmentData } from "../data/attachmentData"; -import { AttachmentView } from "../view/attachmentView"; +import { AttachmentData } from "../data/attachment.data"; +import { AttachmentView } from "../view/attachment.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class Attachment extends Domain { id: string; diff --git a/libs/common/src/models/domain/authResult.ts b/libs/common/src/models/domain/auth-result.ts similarity index 100% rename from libs/common/src/models/domain/authResult.ts rename to libs/common/src/models/domain/auth-result.ts diff --git a/libs/common/src/models/domain/card.ts b/libs/common/src/models/domain/card.ts index 4c09532e036..4b8ca113095 100644 --- a/libs/common/src/models/domain/card.ts +++ b/libs/common/src/models/domain/card.ts @@ -1,11 +1,11 @@ import { Jsonify } from "type-fest"; -import { CardData } from "../data/cardData"; -import { CardView } from "../view/cardView"; +import { CardData } from "../data/card.data"; +import { CardView } from "../view/card.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class Card extends Domain { cardholderName: EncString; diff --git a/libs/common/src/models/domain/cipher.ts b/libs/common/src/models/domain/cipher.ts index e2c15a12081..585a4395f7e 100644 --- a/libs/common/src/models/domain/cipher.ts +++ b/libs/common/src/models/domain/cipher.ts @@ -2,20 +2,20 @@ import { Jsonify } from "type-fest"; import { CipherRepromptType } from "../../enums/cipherRepromptType"; import { CipherType } from "../../enums/cipherType"; -import { CipherData } from "../data/cipherData"; -import { LocalData } from "../data/localData"; -import { CipherView } from "../view/cipherView"; +import { CipherData } from "../data/cipher.data"; +import { LocalData } from "../data/local.data"; +import { CipherView } from "../view/cipher.view"; import { Attachment } from "./attachment"; import { Card } from "./card"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; import { Field } from "./field"; import { Identity } from "./identity"; import { Login } from "./login"; import { Password } from "./password"; -import { SecureNote } from "./secureNote"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import { SecureNote } from "./secure-note"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class Cipher extends Domain { id: string; diff --git a/libs/common/src/models/domain/collection.ts b/libs/common/src/models/domain/collection.ts index 6f737cd4779..63145c17c63 100644 --- a/libs/common/src/models/domain/collection.ts +++ b/libs/common/src/models/domain/collection.ts @@ -1,8 +1,8 @@ -import { CollectionData } from "../data/collectionData"; -import { CollectionView } from "../view/collectionView"; +import { CollectionData } from "../data/collection.data"; +import { CollectionView } from "../view/collection.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; export class Collection extends Domain { id: string; diff --git a/libs/common/src/models/domain/decryptParameters.ts b/libs/common/src/models/domain/decrypt-parameters.ts similarity index 100% rename from libs/common/src/models/domain/decryptParameters.ts rename to libs/common/src/models/domain/decrypt-parameters.ts diff --git a/libs/common/src/models/domain/domainBase.ts b/libs/common/src/models/domain/domain-base.ts similarity index 95% rename from libs/common/src/models/domain/domainBase.ts rename to libs/common/src/models/domain/domain-base.ts index 0c9e5ad6883..f4ece329a06 100644 --- a/libs/common/src/models/domain/domainBase.ts +++ b/libs/common/src/models/domain/domain-base.ts @@ -1,7 +1,7 @@ import { View } from "../view/view"; -import { EncString } from "./encString"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import { EncString } from "./enc-string"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export default class Domain { protected buildDomainModel( diff --git a/libs/common/src/models/domain/encArrayBuffer.ts b/libs/common/src/models/domain/enc-array-buffer.ts similarity index 100% rename from libs/common/src/models/domain/encArrayBuffer.ts rename to libs/common/src/models/domain/enc-array-buffer.ts diff --git a/libs/common/src/models/domain/encString.ts b/libs/common/src/models/domain/enc-string.ts similarity index 98% rename from libs/common/src/models/domain/encString.ts rename to libs/common/src/models/domain/enc-string.ts index 25a5bbbf8f9..f0ea7378f90 100644 --- a/libs/common/src/models/domain/encString.ts +++ b/libs/common/src/models/domain/enc-string.ts @@ -4,7 +4,7 @@ import { EncryptionType } from "../../enums/encryptionType"; import { IEncrypted } from "../../interfaces/IEncrypted"; import { Utils } from "../../misc/utils"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class EncString implements IEncrypted { encryptedString?: string; diff --git a/libs/common/src/models/domain/encryptedObject.ts b/libs/common/src/models/domain/encrypted-object.ts similarity index 66% rename from libs/common/src/models/domain/encryptedObject.ts rename to libs/common/src/models/domain/encrypted-object.ts index 5ce93dbe921..08186fd357f 100644 --- a/libs/common/src/models/domain/encryptedObject.ts +++ b/libs/common/src/models/domain/encrypted-object.ts @@ -1,4 +1,4 @@ -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class EncryptedObject { iv: ArrayBuffer; diff --git a/libs/common/src/models/domain/encryptedOrganizationKey.ts b/libs/common/src/models/domain/encrypted-organization-key.ts similarity index 88% rename from libs/common/src/models/domain/encryptedOrganizationKey.ts rename to libs/common/src/models/domain/encrypted-organization-key.ts index 25a49aab148..5b60ea5029d 100644 --- a/libs/common/src/models/domain/encryptedOrganizationKey.ts +++ b/libs/common/src/models/domain/encrypted-organization-key.ts @@ -1,8 +1,8 @@ import { CryptoService } from "../../abstractions/crypto.service"; -import { EncryptedOrganizationKeyData } from "../../models/data/encryptedOrganizationKeyData"; +import { EncryptedOrganizationKeyData } from "../data/encrypted-organization-key.data"; -import { EncString } from "./encString"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import { EncString } from "./enc-string"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export abstract class BaseEncryptedOrganizationKey { decrypt: (cryptoService: CryptoService) => Promise; diff --git a/libs/common/src/models/domain/environmentUrls.ts b/libs/common/src/models/domain/environment-urls.ts similarity index 100% rename from libs/common/src/models/domain/environmentUrls.ts rename to libs/common/src/models/domain/environment-urls.ts diff --git a/libs/common/src/models/domain/field.ts b/libs/common/src/models/domain/field.ts index ea242ce24f6..ed098f53ea8 100644 --- a/libs/common/src/models/domain/field.ts +++ b/libs/common/src/models/domain/field.ts @@ -2,12 +2,12 @@ import { Jsonify } from "type-fest"; import { FieldType } from "../../enums/fieldType"; import { LinkedIdType } from "../../enums/linkedIdType"; -import { FieldData } from "../data/fieldData"; -import { FieldView } from "../view/fieldView"; +import { FieldData } from "../data/field.data"; +import { FieldView } from "../view/field.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class Field extends Domain { name: EncString; diff --git a/libs/common/src/models/domain/folder.ts b/libs/common/src/models/domain/folder.ts index fcc700b0675..c01928e00cb 100644 --- a/libs/common/src/models/domain/folder.ts +++ b/libs/common/src/models/domain/folder.ts @@ -1,10 +1,10 @@ import { Jsonify } from "type-fest"; -import { FolderData } from "../data/folderData"; -import { FolderView } from "../view/folderView"; +import { FolderData } from "../data/folder.data"; +import { FolderView } from "../view/folder.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; export class Folder extends Domain { id: string; diff --git a/libs/common/src/models/domain/generatedPasswordHistory.ts b/libs/common/src/models/domain/generated-password-history.ts similarity index 100% rename from libs/common/src/models/domain/generatedPasswordHistory.ts rename to libs/common/src/models/domain/generated-password-history.ts diff --git a/libs/common/src/models/domain/globalState.ts b/libs/common/src/models/domain/global-state.ts similarity index 92% rename from libs/common/src/models/domain/globalState.ts rename to libs/common/src/models/domain/global-state.ts index c907d3ecb5c..5af13fecc8b 100644 --- a/libs/common/src/models/domain/globalState.ts +++ b/libs/common/src/models/domain/global-state.ts @@ -1,8 +1,8 @@ import { StateVersion } from "../../enums/stateVersion"; import { ThemeType } from "../../enums/themeType"; -import { EnvironmentUrls } from "./environmentUrls"; -import { WindowState } from "./windowState"; +import { EnvironmentUrls } from "./environment-urls"; +import { WindowState } from "./window-state"; export class GlobalState { enableAlwaysOnTop?: boolean; diff --git a/libs/common/src/models/domain/identity.ts b/libs/common/src/models/domain/identity.ts index 075f4c8c4f4..5888e59c4fa 100644 --- a/libs/common/src/models/domain/identity.ts +++ b/libs/common/src/models/domain/identity.ts @@ -1,11 +1,11 @@ import { Jsonify } from "type-fest"; -import { IdentityData } from "../data/identityData"; -import { IdentityView } from "../view/identityView"; +import { IdentityData } from "../data/identity.data"; +import { IdentityView } from "../view/identity.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class Identity extends Domain { title: EncString; diff --git a/libs/common/src/models/domain/importResult.ts b/libs/common/src/models/domain/import-result.ts similarity index 65% rename from libs/common/src/models/domain/importResult.ts rename to libs/common/src/models/domain/import-result.ts index 695dbf9d4ac..6c67826306b 100644 --- a/libs/common/src/models/domain/importResult.ts +++ b/libs/common/src/models/domain/import-result.ts @@ -1,6 +1,6 @@ -import { CipherView } from "../view/cipherView"; -import { CollectionView } from "../view/collectionView"; -import { FolderView } from "../view/folderView"; +import { CipherView } from "../view/cipher.view"; +import { CollectionView } from "../view/collection.view"; +import { FolderView } from "../view/folder.view"; export class ImportResult { success = false; diff --git a/libs/common/src/models/domain/logInCredentials.ts b/libs/common/src/models/domain/log-in-credentials.ts similarity index 93% rename from libs/common/src/models/domain/logInCredentials.ts rename to libs/common/src/models/domain/log-in-credentials.ts index 3da499ecbf0..0f1873e740a 100644 --- a/libs/common/src/models/domain/logInCredentials.ts +++ b/libs/common/src/models/domain/log-in-credentials.ts @@ -1,7 +1,8 @@ import { AuthenticationType } from "../../enums/authenticationType"; -import { SymmetricCryptoKey } from "../../models/domain/symmetricCryptoKey"; import { TokenRequestTwoFactor } from "../request/identityToken/tokenRequestTwoFactor"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; + export class PasswordLogInCredentials { readonly type = AuthenticationType.Password; diff --git a/libs/common/src/models/domain/loginUri.ts b/libs/common/src/models/domain/login-uri.ts similarity index 80% rename from libs/common/src/models/domain/loginUri.ts rename to libs/common/src/models/domain/login-uri.ts index 419268cd514..ac5317687df 100644 --- a/libs/common/src/models/domain/loginUri.ts +++ b/libs/common/src/models/domain/login-uri.ts @@ -1,12 +1,12 @@ import { Jsonify } from "type-fest"; import { UriMatchType } from "../../enums/uriMatchType"; -import { LoginUriData } from "../data/loginUriData"; -import { LoginUriView } from "../view/loginUriView"; +import { LoginUriData } from "../data/login-uri.data"; +import { LoginUriView } from "../view/login-uri.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class LoginUri extends Domain { uri: EncString; diff --git a/libs/common/src/models/domain/login.ts b/libs/common/src/models/domain/login.ts index 19b99e956af..2ce11c850bc 100644 --- a/libs/common/src/models/domain/login.ts +++ b/libs/common/src/models/domain/login.ts @@ -1,12 +1,12 @@ import { Jsonify } from "type-fest"; -import { LoginData } from "../data/loginData"; -import { LoginView } from "../view/loginView"; +import { LoginData } from "../data/login.data"; +import { LoginView } from "../view/login.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { LoginUri } from "./loginUri"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { LoginUri } from "./login-uri"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class Login extends Domain { uris: LoginUri[]; diff --git a/libs/common/src/models/domain/masterPasswordPolicyOptions.ts b/libs/common/src/models/domain/master-password-policy-options.ts similarity index 84% rename from libs/common/src/models/domain/masterPasswordPolicyOptions.ts rename to libs/common/src/models/domain/master-password-policy-options.ts index 2207d00c7e3..9389d0e4c5b 100644 --- a/libs/common/src/models/domain/masterPasswordPolicyOptions.ts +++ b/libs/common/src/models/domain/master-password-policy-options.ts @@ -1,4 +1,4 @@ -import Domain from "./domainBase"; +import Domain from "./domain-base"; export class MasterPasswordPolicyOptions extends Domain { minComplexity = 0; diff --git a/libs/common/src/models/domain/organization.ts b/libs/common/src/models/domain/organization.ts index 2e552507310..faf1ee1f978 100644 --- a/libs/common/src/models/domain/organization.ts +++ b/libs/common/src/models/domain/organization.ts @@ -1,8 +1,8 @@ import { OrganizationUserStatusType } from "../../enums/organizationUserStatusType"; import { OrganizationUserType } from "../../enums/organizationUserType"; import { ProductType } from "../../enums/productType"; -import { PermissionsApi } from "../api/permissionsApi"; -import { OrganizationData } from "../data/organizationData"; +import { PermissionsApi } from "../api/permissions.api"; +import { OrganizationData } from "../data/organization.data"; export class Organization { id: string; diff --git a/libs/common/src/models/domain/passwordGeneratorPolicyOptions.ts b/libs/common/src/models/domain/password-generator-policy-options.ts similarity index 94% rename from libs/common/src/models/domain/passwordGeneratorPolicyOptions.ts rename to libs/common/src/models/domain/password-generator-policy-options.ts index 19072a9f7c2..a4500e6ba00 100644 --- a/libs/common/src/models/domain/passwordGeneratorPolicyOptions.ts +++ b/libs/common/src/models/domain/password-generator-policy-options.ts @@ -1,4 +1,4 @@ -import Domain from "./domainBase"; +import Domain from "./domain-base"; export class PasswordGeneratorPolicyOptions extends Domain { defaultType = ""; diff --git a/libs/common/src/models/domain/password.ts b/libs/common/src/models/domain/password.ts index 81ae30551f9..4a1ffbd151e 100644 --- a/libs/common/src/models/domain/password.ts +++ b/libs/common/src/models/domain/password.ts @@ -1,11 +1,11 @@ import { Jsonify } from "type-fest"; -import { PasswordHistoryData } from "../data/passwordHistoryData"; -import { PasswordHistoryView } from "../view/passwordHistoryView"; +import { PasswordHistoryData } from "../data/password-history.data"; +import { PasswordHistoryView } from "../view/password-history.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class Password extends Domain { password: EncString; diff --git a/libs/common/src/models/domain/policy.ts b/libs/common/src/models/domain/policy.ts index c4a113cc333..8f520d3324b 100644 --- a/libs/common/src/models/domain/policy.ts +++ b/libs/common/src/models/domain/policy.ts @@ -1,7 +1,7 @@ import { PolicyType } from "../../enums/policyType"; -import { PolicyData } from "../data/policyData"; +import { PolicyData } from "../data/policy.data"; -import Domain from "./domainBase"; +import Domain from "./domain-base"; export class Policy extends Domain { id: string; diff --git a/libs/common/src/models/domain/provider.ts b/libs/common/src/models/domain/provider.ts index 6e14340ba54..0968a92dc25 100644 --- a/libs/common/src/models/domain/provider.ts +++ b/libs/common/src/models/domain/provider.ts @@ -1,6 +1,6 @@ import { ProviderUserStatusType } from "../../enums/providerUserStatusType"; import { ProviderUserType } from "../../enums/providerUserType"; -import { ProviderData } from "../data/providerData"; +import { ProviderData } from "../data/provider.data"; export class Provider { id: string; diff --git a/libs/common/src/models/domain/resetPasswordPolicyOptions.ts b/libs/common/src/models/domain/reset-password-policy-options.ts similarity index 71% rename from libs/common/src/models/domain/resetPasswordPolicyOptions.ts rename to libs/common/src/models/domain/reset-password-policy-options.ts index 2ee11a5c27f..dda3dd76359 100644 --- a/libs/common/src/models/domain/resetPasswordPolicyOptions.ts +++ b/libs/common/src/models/domain/reset-password-policy-options.ts @@ -1,4 +1,4 @@ -import Domain from "./domainBase"; +import Domain from "./domain-base"; export class ResetPasswordPolicyOptions extends Domain { autoEnrollEnabled = false; diff --git a/libs/common/src/models/domain/secureNote.ts b/libs/common/src/models/domain/secure-note.ts similarity index 76% rename from libs/common/src/models/domain/secureNote.ts rename to libs/common/src/models/domain/secure-note.ts index 475ad5300c5..b880677ce80 100644 --- a/libs/common/src/models/domain/secureNote.ts +++ b/libs/common/src/models/domain/secure-note.ts @@ -1,11 +1,11 @@ import { Jsonify } from "type-fest"; import { SecureNoteType } from "../../enums/secureNoteType"; -import { SecureNoteData } from "../data/secureNoteData"; -import { SecureNoteView } from "../view/secureNoteView"; +import { SecureNoteData } from "../data/secure-note.data"; +import { SecureNoteView } from "../view/secure-note.view"; -import Domain from "./domainBase"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class SecureNote extends Domain { type: SecureNoteType; diff --git a/libs/common/src/models/domain/sendAccess.ts b/libs/common/src/models/domain/send-access.ts similarity index 83% rename from libs/common/src/models/domain/sendAccess.ts rename to libs/common/src/models/domain/send-access.ts index dab68cc6469..9ecc0ee958e 100644 --- a/libs/common/src/models/domain/sendAccess.ts +++ b/libs/common/src/models/domain/send-access.ts @@ -1,12 +1,12 @@ import { SendType } from "../../enums/sendType"; import { SendAccessResponse } from "../response/sendAccessResponse"; -import { SendAccessView } from "../view/sendAccessView"; +import { SendAccessView } from "../view/send-access.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { SendFile } from "./sendFile"; -import { SendText } from "./sendText"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { SendFile } from "./send-file"; +import { SendText } from "./send-text"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class SendAccess extends Domain { id: string; diff --git a/libs/common/src/models/domain/sendFile.ts b/libs/common/src/models/domain/send-file.ts similarity index 71% rename from libs/common/src/models/domain/sendFile.ts rename to libs/common/src/models/domain/send-file.ts index 177994078f9..706dde8c9cf 100644 --- a/libs/common/src/models/domain/sendFile.ts +++ b/libs/common/src/models/domain/send-file.ts @@ -1,9 +1,9 @@ -import { SendFileData } from "../data/sendFileData"; -import { SendFileView } from "../view/sendFileView"; +import { SendFileData } from "../data/send-file.data"; +import { SendFileView } from "../view/send-file.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class SendFile extends Domain { id: string; diff --git a/libs/common/src/models/domain/sendText.ts b/libs/common/src/models/domain/send-text.ts similarity index 66% rename from libs/common/src/models/domain/sendText.ts rename to libs/common/src/models/domain/send-text.ts index 523e5ee58a3..8c71d4d14bb 100644 --- a/libs/common/src/models/domain/sendText.ts +++ b/libs/common/src/models/domain/send-text.ts @@ -1,9 +1,9 @@ -import { SendTextData } from "../data/sendTextData"; -import { SendTextView } from "../view/sendTextView"; +import { SendTextData } from "../data/send-text.data"; +import { SendTextView } from "../view/send-text.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { SymmetricCryptoKey } from "./symmetricCryptoKey"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { SymmetricCryptoKey } from "./symmetric-crypto-key"; export class SendText extends Domain { text: EncString; diff --git a/libs/common/src/models/domain/send.ts b/libs/common/src/models/domain/send.ts index 43ca31a7154..6c6126cfc98 100644 --- a/libs/common/src/models/domain/send.ts +++ b/libs/common/src/models/domain/send.ts @@ -1,12 +1,12 @@ import { SendType } from "../../enums/sendType"; import { Utils } from "../../misc/utils"; -import { SendData } from "../data/sendData"; -import { SendView } from "../view/sendView"; +import { SendData } from "../data/send.data"; +import { SendView } from "../view/send.view"; -import Domain from "./domainBase"; -import { EncString } from "./encString"; -import { SendFile } from "./sendFile"; -import { SendText } from "./sendText"; +import Domain from "./domain-base"; +import { EncString } from "./enc-string"; +import { SendFile } from "./send-file"; +import { SendText } from "./send-text"; export class Send extends Domain { id: string; diff --git a/libs/common/src/models/domain/sortedCiphersCache.ts b/libs/common/src/models/domain/sorted-ciphers-cache.ts similarity index 97% rename from libs/common/src/models/domain/sortedCiphersCache.ts rename to libs/common/src/models/domain/sorted-ciphers-cache.ts index 8c32744e23d..2835cb8d068 100644 --- a/libs/common/src/models/domain/sortedCiphersCache.ts +++ b/libs/common/src/models/domain/sorted-ciphers-cache.ts @@ -1,4 +1,4 @@ -import { CipherView } from "../view/cipherView"; +import { CipherView } from "../view/cipher.view"; const CacheTTL = 3000; diff --git a/libs/common/src/models/domain/state.ts b/libs/common/src/models/domain/state.ts index 5450325d25c..be99d9bdabe 100644 --- a/libs/common/src/models/domain/state.ts +++ b/libs/common/src/models/domain/state.ts @@ -1,7 +1,7 @@ import { Jsonify } from "type-fest"; import { Account } from "./account"; -import { GlobalState } from "./globalState"; +import { GlobalState } from "./global-state"; export class State< TGlobalState extends GlobalState = GlobalState, diff --git a/libs/common/src/models/domain/storageOptions.ts b/libs/common/src/models/domain/storage-options.ts similarity index 100% rename from libs/common/src/models/domain/storageOptions.ts rename to libs/common/src/models/domain/storage-options.ts diff --git a/libs/common/src/models/domain/symmetricCryptoKey.ts b/libs/common/src/models/domain/symmetric-crypto-key.ts similarity index 100% rename from libs/common/src/models/domain/symmetricCryptoKey.ts rename to libs/common/src/models/domain/symmetric-crypto-key.ts diff --git a/libs/common/src/models/domain/treeNode.ts b/libs/common/src/models/domain/tree-node.ts similarity index 100% rename from libs/common/src/models/domain/treeNode.ts rename to libs/common/src/models/domain/tree-node.ts diff --git a/libs/common/src/models/domain/windowState.ts b/libs/common/src/models/domain/window-state.ts similarity index 100% rename from libs/common/src/models/domain/windowState.ts rename to libs/common/src/models/domain/window-state.ts diff --git a/libs/common/src/models/export/cardExport.ts b/libs/common/src/models/export/card.export.ts similarity index 95% rename from libs/common/src/models/export/cardExport.ts rename to libs/common/src/models/export/card.export.ts index b0525e4e9cf..edd730b7738 100644 --- a/libs/common/src/models/export/cardExport.ts +++ b/libs/common/src/models/export/card.export.ts @@ -1,6 +1,6 @@ import { Card as CardDomain } from "../domain/card"; -import { EncString } from "../domain/encString"; -import { CardView } from "../view/cardView"; +import { EncString } from "../domain/enc-string"; +import { CardView } from "../view/card.view"; export class CardExport { static template(): CardExport { diff --git a/libs/common/src/models/export/cipherWithIdsExport.ts b/libs/common/src/models/export/cipher-with-ids.export.ts similarity index 79% rename from libs/common/src/models/export/cipherWithIdsExport.ts rename to libs/common/src/models/export/cipher-with-ids.export.ts index c9d789640b4..2ad601e9a6e 100644 --- a/libs/common/src/models/export/cipherWithIdsExport.ts +++ b/libs/common/src/models/export/cipher-with-ids.export.ts @@ -1,7 +1,7 @@ import { Cipher as CipherDomain } from "../domain/cipher"; -import { CipherView } from "../view/cipherView"; +import { CipherView } from "../view/cipher.view"; -import { CipherExport } from "./cipherExport"; +import { CipherExport } from "./cipher.export"; export class CipherWithIdExport extends CipherExport { id: string; diff --git a/libs/common/src/models/export/cipherExport.ts b/libs/common/src/models/export/cipher.export.ts similarity index 92% rename from libs/common/src/models/export/cipherExport.ts rename to libs/common/src/models/export/cipher.export.ts index 33f66ffd790..b4585cb4060 100644 --- a/libs/common/src/models/export/cipherExport.ts +++ b/libs/common/src/models/export/cipher.export.ts @@ -1,14 +1,14 @@ import { CipherRepromptType } from "../../enums/cipherRepromptType"; import { CipherType } from "../../enums/cipherType"; import { Cipher as CipherDomain } from "../domain/cipher"; -import { EncString } from "../domain/encString"; -import { CipherView } from "../view/cipherView"; +import { EncString } from "../domain/enc-string"; +import { CipherView } from "../view/cipher.view"; -import { CardExport } from "./cardExport"; -import { FieldExport } from "./fieldExport"; -import { IdentityExport } from "./identityExport"; -import { LoginExport } from "./loginExport"; -import { SecureNoteExport } from "./secureNoteExport"; +import { CardExport } from "./card.export"; +import { FieldExport } from "./field.export"; +import { IdentityExport } from "./identity.export"; +import { LoginExport } from "./login.export"; +import { SecureNoteExport } from "./secure-note.export"; export class CipherExport { static template(): CipherExport { diff --git a/libs/common/src/models/export/collectionWithIdExport.ts b/libs/common/src/models/export/collection-with-id.export.ts similarity index 75% rename from libs/common/src/models/export/collectionWithIdExport.ts rename to libs/common/src/models/export/collection-with-id.export.ts index 7c668f8a9cc..1978cc707e6 100644 --- a/libs/common/src/models/export/collectionWithIdExport.ts +++ b/libs/common/src/models/export/collection-with-id.export.ts @@ -1,7 +1,7 @@ import { Collection as CollectionDomain } from "../domain/collection"; -import { CollectionView } from "../view/collectionView"; +import { CollectionView } from "../view/collection.view"; -import { CollectionExport } from "./collectionExport"; +import { CollectionExport } from "./collection.export"; export class CollectionWithIdExport extends CollectionExport { id: string; diff --git a/libs/common/src/models/export/collectionExport.ts b/libs/common/src/models/export/collection.export.ts similarity index 92% rename from libs/common/src/models/export/collectionExport.ts rename to libs/common/src/models/export/collection.export.ts index fe0777af1fe..68277ee4e38 100644 --- a/libs/common/src/models/export/collectionExport.ts +++ b/libs/common/src/models/export/collection.export.ts @@ -1,6 +1,6 @@ import { Collection as CollectionDomain } from "../domain/collection"; -import { EncString } from "../domain/encString"; -import { CollectionView } from "../view/collectionView"; +import { EncString } from "../domain/enc-string"; +import { CollectionView } from "../view/collection.view"; export class CollectionExport { static template(): CollectionExport { diff --git a/libs/common/src/models/export/eventExport.ts b/libs/common/src/models/export/event.export.ts similarity index 93% rename from libs/common/src/models/export/eventExport.ts rename to libs/common/src/models/export/event.export.ts index 670c1b166ad..03800384c44 100644 --- a/libs/common/src/models/export/eventExport.ts +++ b/libs/common/src/models/export/event.export.ts @@ -1,5 +1,5 @@ import { EventType } from "../../enums/eventType"; -import { EventView } from "../view/eventView"; +import { EventView } from "../view/event.view"; export class EventExport { message: string; diff --git a/libs/common/src/models/export/fieldExport.ts b/libs/common/src/models/export/field.export.ts similarity index 92% rename from libs/common/src/models/export/fieldExport.ts rename to libs/common/src/models/export/field.export.ts index 13cc2d9fa3a..66c856d7bfc 100644 --- a/libs/common/src/models/export/fieldExport.ts +++ b/libs/common/src/models/export/field.export.ts @@ -1,8 +1,8 @@ import { FieldType } from "../../enums/fieldType"; import { LinkedIdType } from "../../enums/linkedIdType"; -import { EncString } from "../domain/encString"; +import { EncString } from "../domain/enc-string"; import { Field as FieldDomain } from "../domain/field"; -import { FieldView } from "../view/fieldView"; +import { FieldView } from "../view/field.view"; export class FieldExport { static template(): FieldExport { diff --git a/libs/common/src/models/export/folderWithIdExport.ts b/libs/common/src/models/export/folder-with-id.export.ts similarity index 76% rename from libs/common/src/models/export/folderWithIdExport.ts rename to libs/common/src/models/export/folder-with-id.export.ts index 77c96811c48..655fab077bb 100644 --- a/libs/common/src/models/export/folderWithIdExport.ts +++ b/libs/common/src/models/export/folder-with-id.export.ts @@ -1,7 +1,7 @@ import { Folder as FolderDomain } from "../domain/folder"; -import { FolderView } from "../view/folderView"; +import { FolderView } from "../view/folder.view"; -import { FolderExport } from "./folderExport"; +import { FolderExport } from "./folder.export"; export class FolderWithIdExport extends FolderExport { id: string; diff --git a/libs/common/src/models/export/folderExport.ts b/libs/common/src/models/export/folder.export.ts similarity index 88% rename from libs/common/src/models/export/folderExport.ts rename to libs/common/src/models/export/folder.export.ts index 8f3483c3574..839dcceaabc 100644 --- a/libs/common/src/models/export/folderExport.ts +++ b/libs/common/src/models/export/folder.export.ts @@ -1,6 +1,6 @@ -import { EncString } from "../domain/encString"; +import { EncString } from "../domain/enc-string"; import { Folder as FolderDomain } from "../domain/folder"; -import { FolderView } from "../view/folderView"; +import { FolderView } from "../view/folder.view"; export class FolderExport { static template(): FolderExport { diff --git a/libs/common/src/models/export/identityExport.ts b/libs/common/src/models/export/identity.export.ts similarity index 97% rename from libs/common/src/models/export/identityExport.ts rename to libs/common/src/models/export/identity.export.ts index c8f06e9e958..d4180d44a91 100644 --- a/libs/common/src/models/export/identityExport.ts +++ b/libs/common/src/models/export/identity.export.ts @@ -1,6 +1,6 @@ -import { EncString } from "../domain/encString"; +import { EncString } from "../domain/enc-string"; import { Identity as IdentityDomain } from "../domain/identity"; -import { IdentityView } from "../view/identityView"; +import { IdentityView } from "../view/identity.view"; export class IdentityExport { static template(): IdentityExport { diff --git a/libs/common/src/models/export/loginUriExport.ts b/libs/common/src/models/export/login-uri.export.ts similarity index 83% rename from libs/common/src/models/export/loginUriExport.ts rename to libs/common/src/models/export/login-uri.export.ts index b27d8ba84f0..ee0d883c984 100644 --- a/libs/common/src/models/export/loginUriExport.ts +++ b/libs/common/src/models/export/login-uri.export.ts @@ -1,7 +1,7 @@ import { UriMatchType } from "../../enums/uriMatchType"; -import { EncString } from "../domain/encString"; -import { LoginUri as LoginUriDomain } from "../domain/loginUri"; -import { LoginUriView } from "../view/loginUriView"; +import { EncString } from "../domain/enc-string"; +import { LoginUri as LoginUriDomain } from "../domain/login-uri"; +import { LoginUriView } from "../view/login-uri.view"; export class LoginUriExport { static template(): LoginUriExport { diff --git a/libs/common/src/models/export/loginExport.ts b/libs/common/src/models/export/login.export.ts similarity index 91% rename from libs/common/src/models/export/loginExport.ts rename to libs/common/src/models/export/login.export.ts index 1be631daa9a..6a143fb99af 100644 --- a/libs/common/src/models/export/loginExport.ts +++ b/libs/common/src/models/export/login.export.ts @@ -1,8 +1,8 @@ -import { EncString } from "../domain/encString"; +import { EncString } from "../domain/enc-string"; import { Login as LoginDomain } from "../domain/login"; -import { LoginView } from "../view/loginView"; +import { LoginView } from "../view/login.view"; -import { LoginUriExport } from "./loginUriExport"; +import { LoginUriExport } from "./login-uri.export"; export class LoginExport { static template(): LoginExport { diff --git a/libs/common/src/models/export/secureNoteExport.ts b/libs/common/src/models/export/secure-note.export.ts similarity index 91% rename from libs/common/src/models/export/secureNoteExport.ts rename to libs/common/src/models/export/secure-note.export.ts index de85bacd3b1..7b7e987698d 100644 --- a/libs/common/src/models/export/secureNoteExport.ts +++ b/libs/common/src/models/export/secure-note.export.ts @@ -1,6 +1,6 @@ import { SecureNoteType } from "../../enums/secureNoteType"; -import { SecureNote as SecureNoteDomain } from "../domain/secureNote"; -import { SecureNoteView } from "../view/secureNoteView"; +import { SecureNote as SecureNoteDomain } from "../domain/secure-note"; +import { SecureNoteView } from "../view/secure-note.view"; export class SecureNoteExport { static template(): SecureNoteExport { diff --git a/libs/common/src/models/request/cipherRequest.ts b/libs/common/src/models/request/cipherRequest.ts index 4ed5885082c..046c302c5d6 100644 --- a/libs/common/src/models/request/cipherRequest.ts +++ b/libs/common/src/models/request/cipherRequest.ts @@ -1,11 +1,11 @@ import { CipherRepromptType } from "../../enums/cipherRepromptType"; import { CipherType } from "../../enums/cipherType"; -import { CardApi } from "../api/cardApi"; -import { FieldApi } from "../api/fieldApi"; -import { IdentityApi } from "../api/identityApi"; -import { LoginApi } from "../api/loginApi"; -import { LoginUriApi } from "../api/loginUriApi"; -import { SecureNoteApi } from "../api/secureNoteApi"; +import { CardApi } from "../api/card.api"; +import { FieldApi } from "../api/field.api"; +import { IdentityApi } from "../api/identity.api"; +import { LoginUriApi } from "../api/login-uri.api"; +import { LoginApi } from "../api/login.api"; +import { SecureNoteApi } from "../api/secure-note.api"; import { Cipher } from "../domain/cipher"; import { AttachmentRequest } from "./attachmentRequest"; diff --git a/libs/common/src/models/request/organization/organizationSsoRequest.ts b/libs/common/src/models/request/organization/organizationSsoRequest.ts index e7fdb61ca1c..2ad8b076381 100644 --- a/libs/common/src/models/request/organization/organizationSsoRequest.ts +++ b/libs/common/src/models/request/organization/organizationSsoRequest.ts @@ -1,4 +1,4 @@ -import { SsoConfigApi } from "../../api/ssoConfigApi"; +import { SsoConfigApi } from "../../api/sso-config.api"; export class OrganizationSsoRequest { enabled = false; diff --git a/libs/common/src/models/request/organizationUserInviteRequest.ts b/libs/common/src/models/request/organizationUserInviteRequest.ts index 7d037004377..9c01e718ebf 100644 --- a/libs/common/src/models/request/organizationUserInviteRequest.ts +++ b/libs/common/src/models/request/organizationUserInviteRequest.ts @@ -1,5 +1,5 @@ import { OrganizationUserType } from "../../enums/organizationUserType"; -import { PermissionsApi } from "../api/permissionsApi"; +import { PermissionsApi } from "../api/permissions.api"; import { SelectionReadOnlyRequest } from "./selectionReadOnlyRequest"; diff --git a/libs/common/src/models/request/organizationUserUpdateRequest.ts b/libs/common/src/models/request/organizationUserUpdateRequest.ts index ec9ae3bc640..6a733303bc9 100644 --- a/libs/common/src/models/request/organizationUserUpdateRequest.ts +++ b/libs/common/src/models/request/organizationUserUpdateRequest.ts @@ -1,5 +1,5 @@ import { OrganizationUserType } from "../../enums/organizationUserType"; -import { PermissionsApi } from "../api/permissionsApi"; +import { PermissionsApi } from "../api/permissions.api"; import { SelectionReadOnlyRequest } from "./selectionReadOnlyRequest"; diff --git a/libs/common/src/models/request/sendRequest.ts b/libs/common/src/models/request/sendRequest.ts index 1c77204c076..ffb31b4d1f4 100644 --- a/libs/common/src/models/request/sendRequest.ts +++ b/libs/common/src/models/request/sendRequest.ts @@ -1,6 +1,6 @@ import { SendType } from "../../enums/sendType"; -import { SendFileApi } from "../api/sendFileApi"; -import { SendTextApi } from "../api/sendTextApi"; +import { SendFileApi } from "../api/send-file.api"; +import { SendTextApi } from "../api/send-text.api"; import { Send } from "../domain/send"; export class SendRequest { diff --git a/libs/common/src/models/response/cipherResponse.ts b/libs/common/src/models/response/cipherResponse.ts index 8eba6f62731..bb342d4aa03 100644 --- a/libs/common/src/models/response/cipherResponse.ts +++ b/libs/common/src/models/response/cipherResponse.ts @@ -1,9 +1,9 @@ import { CipherRepromptType } from "../../enums/cipherRepromptType"; -import { CardApi } from "../api/cardApi"; -import { FieldApi } from "../api/fieldApi"; -import { IdentityApi } from "../api/identityApi"; -import { LoginApi } from "../api/loginApi"; -import { SecureNoteApi } from "../api/secureNoteApi"; +import { CardApi } from "../api/card.api"; +import { FieldApi } from "../api/field.api"; +import { IdentityApi } from "../api/identity.api"; +import { LoginApi } from "../api/login.api"; +import { SecureNoteApi } from "../api/secure-note.api"; import { AttachmentResponse } from "./attachmentResponse"; import { BaseResponse } from "./baseResponse"; diff --git a/libs/common/src/models/response/organization/organizationSsoResponse.ts b/libs/common/src/models/response/organization/organizationSsoResponse.ts index abe6b72063b..9cdd1890874 100644 --- a/libs/common/src/models/response/organization/organizationSsoResponse.ts +++ b/libs/common/src/models/response/organization/organizationSsoResponse.ts @@ -1,4 +1,4 @@ -import { SsoConfigApi } from "../../api/ssoConfigApi"; +import { SsoConfigApi } from "../../api/sso-config.api"; import { BaseResponse } from "../baseResponse"; export class OrganizationSsoResponse extends BaseResponse { diff --git a/libs/common/src/models/response/organizationConnectionResponse.ts b/libs/common/src/models/response/organizationConnectionResponse.ts index 7f39d250f3b..e4babe88450 100644 --- a/libs/common/src/models/response/organizationConnectionResponse.ts +++ b/libs/common/src/models/response/organizationConnectionResponse.ts @@ -1,6 +1,6 @@ import { OrganizationConnectionType } from "../../enums/organizationConnectionType"; -import { BillingSyncConfigApi } from "../api/billingSyncConfigApi"; -import { ScimConfigApi } from "../api/scimConfigApi"; +import { BillingSyncConfigApi } from "../api/billing-sync-config.api"; +import { ScimConfigApi } from "../api/scim-config.api"; import { BaseResponse } from "./baseResponse"; diff --git a/libs/common/src/models/response/organizationUserResponse.ts b/libs/common/src/models/response/organizationUserResponse.ts index 3e49375b90f..ddfe52a4cc1 100644 --- a/libs/common/src/models/response/organizationUserResponse.ts +++ b/libs/common/src/models/response/organizationUserResponse.ts @@ -1,7 +1,7 @@ import { KdfType } from "../../enums/kdfType"; import { OrganizationUserStatusType } from "../../enums/organizationUserStatusType"; import { OrganizationUserType } from "../../enums/organizationUserType"; -import { PermissionsApi } from "../api/permissionsApi"; +import { PermissionsApi } from "../api/permissions.api"; import { BaseResponse } from "./baseResponse"; import { SelectionReadOnlyResponse } from "./selectionReadOnlyResponse"; diff --git a/libs/common/src/models/response/profileOrganizationResponse.ts b/libs/common/src/models/response/profileOrganizationResponse.ts index 0287ae96c99..37f276dac5d 100644 --- a/libs/common/src/models/response/profileOrganizationResponse.ts +++ b/libs/common/src/models/response/profileOrganizationResponse.ts @@ -1,7 +1,7 @@ import { OrganizationUserStatusType } from "../../enums/organizationUserStatusType"; import { OrganizationUserType } from "../../enums/organizationUserType"; import { ProductType } from "../../enums/productType"; -import { PermissionsApi } from "../api/permissionsApi"; +import { PermissionsApi } from "../api/permissions.api"; import { BaseResponse } from "./baseResponse"; diff --git a/libs/common/src/models/response/profileProviderResponse.ts b/libs/common/src/models/response/profileProviderResponse.ts index 84e8bbf67c7..d834e3c14a3 100644 --- a/libs/common/src/models/response/profileProviderResponse.ts +++ b/libs/common/src/models/response/profileProviderResponse.ts @@ -1,6 +1,6 @@ import { ProviderUserStatusType } from "../../enums/providerUserStatusType"; import { ProviderUserType } from "../../enums/providerUserType"; -import { PermissionsApi } from "../api/permissionsApi"; +import { PermissionsApi } from "../api/permissions.api"; import { BaseResponse } from "./baseResponse"; diff --git a/libs/common/src/models/response/provider/providerUserResponse.ts b/libs/common/src/models/response/provider/providerUserResponse.ts index cf1a181c008..6091cc9061c 100644 --- a/libs/common/src/models/response/provider/providerUserResponse.ts +++ b/libs/common/src/models/response/provider/providerUserResponse.ts @@ -1,6 +1,6 @@ import { ProviderUserStatusType } from "../../../enums/providerUserStatusType"; import { ProviderUserType } from "../../../enums/providerUserType"; -import { PermissionsApi } from "../../api/permissionsApi"; +import { PermissionsApi } from "../../api/permissions.api"; import { BaseResponse } from "../baseResponse"; export class ProviderUserResponse extends BaseResponse { diff --git a/libs/common/src/models/response/sendAccessResponse.ts b/libs/common/src/models/response/sendAccessResponse.ts index e98a9d057dc..f500c86b498 100644 --- a/libs/common/src/models/response/sendAccessResponse.ts +++ b/libs/common/src/models/response/sendAccessResponse.ts @@ -1,6 +1,6 @@ import { SendType } from "../../enums/sendType"; -import { SendFileApi } from "../api/sendFileApi"; -import { SendTextApi } from "../api/sendTextApi"; +import { SendFileApi } from "../api/send-file.api"; +import { SendTextApi } from "../api/send-text.api"; import { BaseResponse } from "./baseResponse"; diff --git a/libs/common/src/models/response/sendResponse.ts b/libs/common/src/models/response/sendResponse.ts index 287507250e1..89ccdb6da73 100644 --- a/libs/common/src/models/response/sendResponse.ts +++ b/libs/common/src/models/response/sendResponse.ts @@ -1,6 +1,6 @@ import { SendType } from "../../enums/sendType"; -import { SendFileApi } from "../api/sendFileApi"; -import { SendTextApi } from "../api/sendTextApi"; +import { SendFileApi } from "../api/send-file.api"; +import { SendTextApi } from "../api/send-text.api"; import { BaseResponse } from "./baseResponse"; diff --git a/libs/common/src/models/view/attachmentView.ts b/libs/common/src/models/view/attachment.view.ts similarity index 92% rename from libs/common/src/models/view/attachmentView.ts rename to libs/common/src/models/view/attachment.view.ts index 6e81d58ca8d..6a40ee52e56 100644 --- a/libs/common/src/models/view/attachmentView.ts +++ b/libs/common/src/models/view/attachment.view.ts @@ -1,7 +1,7 @@ import { Jsonify } from "type-fest"; import { Attachment } from "../domain/attachment"; -import { SymmetricCryptoKey } from "../domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "../domain/symmetric-crypto-key"; import { View } from "./view"; diff --git a/libs/common/src/models/view/cardView.ts b/libs/common/src/models/view/card.view.ts similarity index 98% rename from libs/common/src/models/view/cardView.ts rename to libs/common/src/models/view/card.view.ts index fa57bd2b35f..08beed7a77f 100644 --- a/libs/common/src/models/view/cardView.ts +++ b/libs/common/src/models/view/card.view.ts @@ -3,7 +3,7 @@ import { Jsonify } from "type-fest"; import { CardLinkedId as LinkedId } from "../../enums/linkedIdType"; import { linkedFieldOption } from "../../misc/linkedFieldOption.decorator"; -import { ItemView } from "./itemView"; +import { ItemView } from "./item.view"; export class CardView extends ItemView { @linkedFieldOption(LinkedId.CardholderName) diff --git a/libs/common/src/models/view/cipherView.ts b/libs/common/src/models/view/cipher.view.ts similarity index 92% rename from libs/common/src/models/view/cipherView.ts rename to libs/common/src/models/view/cipher.view.ts index a835fa16aeb..41043b7e5ee 100644 --- a/libs/common/src/models/view/cipherView.ts +++ b/libs/common/src/models/view/cipher.view.ts @@ -3,16 +3,16 @@ import { Jsonify } from "type-fest"; import { CipherRepromptType } from "../../enums/cipherRepromptType"; import { CipherType } from "../../enums/cipherType"; import { LinkedIdType } from "../../enums/linkedIdType"; -import { LocalData } from "../data/localData"; +import { LocalData } from "../data/local.data"; import { Cipher } from "../domain/cipher"; -import { AttachmentView } from "./attachmentView"; -import { CardView } from "./cardView"; -import { FieldView } from "./fieldView"; -import { IdentityView } from "./identityView"; -import { LoginView } from "./loginView"; -import { PasswordHistoryView } from "./passwordHistoryView"; -import { SecureNoteView } from "./secureNoteView"; +import { AttachmentView } from "./attachment.view"; +import { CardView } from "./card.view"; +import { FieldView } from "./field.view"; +import { IdentityView } from "./identity.view"; +import { LoginView } from "./login.view"; +import { PasswordHistoryView } from "./password-history.view"; +import { SecureNoteView } from "./secure-note.view"; import { View } from "./view"; export class CipherView implements View { diff --git a/libs/common/src/models/view/collectionView.ts b/libs/common/src/models/view/collection.view.ts similarity index 92% rename from libs/common/src/models/view/collectionView.ts rename to libs/common/src/models/view/collection.view.ts index d230e591f38..e585a0d855b 100644 --- a/libs/common/src/models/view/collectionView.ts +++ b/libs/common/src/models/view/collection.view.ts @@ -1,5 +1,5 @@ import { Collection } from "../domain/collection"; -import { ITreeNodeObject } from "../domain/treeNode"; +import { ITreeNodeObject } from "../domain/tree-node"; import { CollectionGroupDetailsResponse } from "../response/collectionResponse"; import { View } from "./view"; diff --git a/libs/common/src/models/view/eventView.ts b/libs/common/src/models/view/event.view.ts similarity index 100% rename from libs/common/src/models/view/eventView.ts rename to libs/common/src/models/view/event.view.ts diff --git a/libs/common/src/models/view/fieldView.ts b/libs/common/src/models/view/field.view.ts similarity index 100% rename from libs/common/src/models/view/fieldView.ts rename to libs/common/src/models/view/field.view.ts diff --git a/libs/common/src/models/view/folderView.ts b/libs/common/src/models/view/folder.view.ts similarity index 91% rename from libs/common/src/models/view/folderView.ts rename to libs/common/src/models/view/folder.view.ts index dcd12767054..d18ef65aed3 100644 --- a/libs/common/src/models/view/folderView.ts +++ b/libs/common/src/models/view/folder.view.ts @@ -1,7 +1,7 @@ import { Jsonify } from "type-fest"; import { Folder } from "../domain/folder"; -import { ITreeNodeObject } from "../domain/treeNode"; +import { ITreeNodeObject } from "../domain/tree-node"; import { View } from "./view"; diff --git a/libs/common/src/models/view/identityView.ts b/libs/common/src/models/view/identity.view.ts similarity index 98% rename from libs/common/src/models/view/identityView.ts rename to libs/common/src/models/view/identity.view.ts index 437652e2ac8..343135417d3 100644 --- a/libs/common/src/models/view/identityView.ts +++ b/libs/common/src/models/view/identity.view.ts @@ -4,7 +4,7 @@ import { IdentityLinkedId as LinkedId } from "../../enums/linkedIdType"; import { linkedFieldOption } from "../../misc/linkedFieldOption.decorator"; import { Utils } from "../../misc/utils"; -import { ItemView } from "./itemView"; +import { ItemView } from "./item.view"; export class IdentityView extends ItemView { @linkedFieldOption(LinkedId.Title) diff --git a/libs/common/src/models/view/itemView.ts b/libs/common/src/models/view/item.view.ts similarity index 100% rename from libs/common/src/models/view/itemView.ts rename to libs/common/src/models/view/item.view.ts diff --git a/libs/common/src/models/view/loginUriView.ts b/libs/common/src/models/view/login-uri.view.ts similarity index 98% rename from libs/common/src/models/view/loginUriView.ts rename to libs/common/src/models/view/login-uri.view.ts index 28ca18e3a90..9d795f0721c 100644 --- a/libs/common/src/models/view/loginUriView.ts +++ b/libs/common/src/models/view/login-uri.view.ts @@ -2,7 +2,7 @@ import { Jsonify } from "type-fest"; import { UriMatchType } from "../../enums/uriMatchType"; import { Utils } from "../../misc/utils"; -import { LoginUri } from "../domain/loginUri"; +import { LoginUri } from "../domain/login-uri"; import { View } from "./view"; diff --git a/libs/common/src/models/view/loginView.ts b/libs/common/src/models/view/login.view.ts similarity index 95% rename from libs/common/src/models/view/loginView.ts rename to libs/common/src/models/view/login.view.ts index 1e4b2201e36..ee4035d2dbc 100644 --- a/libs/common/src/models/view/loginView.ts +++ b/libs/common/src/models/view/login.view.ts @@ -5,8 +5,8 @@ import { linkedFieldOption } from "../../misc/linkedFieldOption.decorator"; import { Utils } from "../../misc/utils"; import { Login } from "../domain/login"; -import { ItemView } from "./itemView"; -import { LoginUriView } from "./loginUriView"; +import { ItemView } from "./item.view"; +import { LoginUriView } from "./login-uri.view"; export class LoginView extends ItemView { @linkedFieldOption(LinkedId.Username) diff --git a/libs/common/src/models/view/passwordHistoryView.ts b/libs/common/src/models/view/password-history.view.ts similarity index 100% rename from libs/common/src/models/view/passwordHistoryView.ts rename to libs/common/src/models/view/password-history.view.ts diff --git a/libs/common/src/models/view/secureNoteView.ts b/libs/common/src/models/view/secure-note.view.ts similarity index 83% rename from libs/common/src/models/view/secureNoteView.ts rename to libs/common/src/models/view/secure-note.view.ts index 984beee17c4..20174f98556 100644 --- a/libs/common/src/models/view/secureNoteView.ts +++ b/libs/common/src/models/view/secure-note.view.ts @@ -1,9 +1,9 @@ import { Jsonify } from "type-fest"; import { SecureNoteType } from "../../enums/secureNoteType"; -import { SecureNote } from "../domain/secureNote"; +import { SecureNote } from "../domain/secure-note"; -import { ItemView } from "./itemView"; +import { ItemView } from "./item.view"; export class SecureNoteView extends ItemView { type: SecureNoteType = null; diff --git a/libs/common/src/models/view/sendAccessView.ts b/libs/common/src/models/view/send-access.view.ts similarity index 78% rename from libs/common/src/models/view/sendAccessView.ts rename to libs/common/src/models/view/send-access.view.ts index 71e5276a98e..782492f94ad 100644 --- a/libs/common/src/models/view/sendAccessView.ts +++ b/libs/common/src/models/view/send-access.view.ts @@ -1,8 +1,8 @@ import { SendType } from "../../enums/sendType"; -import { SendAccess } from "../domain/sendAccess"; +import { SendAccess } from "../domain/send-access"; -import { SendFileView } from "./sendFileView"; -import { SendTextView } from "./sendTextView"; +import { SendFileView } from "./send-file.view"; +import { SendTextView } from "./send-text.view"; import { View } from "./view"; export class SendAccessView implements View { diff --git a/libs/common/src/models/view/sendFileView.ts b/libs/common/src/models/view/send-file.view.ts similarity index 91% rename from libs/common/src/models/view/sendFileView.ts rename to libs/common/src/models/view/send-file.view.ts index 7d37f2def85..7ed291a2b73 100644 --- a/libs/common/src/models/view/sendFileView.ts +++ b/libs/common/src/models/view/send-file.view.ts @@ -1,4 +1,4 @@ -import { SendFile } from "../domain/sendFile"; +import { SendFile } from "../domain/send-file"; import { View } from "./view"; diff --git a/libs/common/src/models/view/sendTextView.ts b/libs/common/src/models/view/send-text.view.ts similarity index 86% rename from libs/common/src/models/view/sendTextView.ts rename to libs/common/src/models/view/send-text.view.ts index a2c6b5711fb..cd10c799b64 100644 --- a/libs/common/src/models/view/sendTextView.ts +++ b/libs/common/src/models/view/send-text.view.ts @@ -1,4 +1,4 @@ -import { SendText } from "../domain/sendText"; +import { SendText } from "../domain/send-text"; import { View } from "./view"; diff --git a/libs/common/src/models/view/sendView.ts b/libs/common/src/models/view/send.view.ts similarity index 90% rename from libs/common/src/models/view/sendView.ts rename to libs/common/src/models/view/send.view.ts index 1a2a214fc87..3ef6bf9f0e3 100644 --- a/libs/common/src/models/view/sendView.ts +++ b/libs/common/src/models/view/send.view.ts @@ -1,10 +1,10 @@ import { SendType } from "../../enums/sendType"; import { Utils } from "../../misc/utils"; import { Send } from "../domain/send"; -import { SymmetricCryptoKey } from "../domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "../domain/symmetric-crypto-key"; -import { SendFileView } from "./sendFileView"; -import { SendTextView } from "./sendTextView"; +import { SendFileView } from "./send-file.view"; +import { SendTextView } from "./send-text.view"; import { View } from "./view"; export class SendView implements View { diff --git a/libs/common/src/models/view/ssoConfigView.ts b/libs/common/src/models/view/sso-config.view.ts similarity index 98% rename from libs/common/src/models/view/ssoConfigView.ts rename to libs/common/src/models/view/sso-config.view.ts index b4784c363c4..474f46da926 100644 --- a/libs/common/src/models/view/ssoConfigView.ts +++ b/libs/common/src/models/view/sso-config.view.ts @@ -5,7 +5,7 @@ import { Saml2SigningBehavior, SsoType, } from "../../enums/ssoEnums"; -import { SsoConfigApi } from "../api/ssoConfigApi"; +import { SsoConfigApi } from "../api/sso-config.api"; import { View } from "./view"; diff --git a/libs/common/src/services/api.service.ts b/libs/common/src/services/api.service.ts index a4648e25045..a9c8e00dab9 100644 --- a/libs/common/src/services/api.service.ts +++ b/libs/common/src/services/api.service.ts @@ -169,7 +169,7 @@ import { } from "../models/response/twoFactorWebAuthnResponse"; import { TwoFactorYubiKeyResponse } from "../models/response/twoFactorYubiKeyResponse"; import { UserKeyResponse } from "../models/response/userKeyResponse"; -import { SendAccessView } from "../models/view/sendAccessView"; +import { SendAccessView } from "../models/view/send-access.view"; export class ApiService implements ApiServiceAbstraction { private device: DeviceType; diff --git a/libs/common/src/services/auth.service.ts b/libs/common/src/services/auth.service.ts index 3807eee3d69..5fc48b10dd4 100644 --- a/libs/common/src/services/auth.service.ts +++ b/libs/common/src/services/auth.service.ts @@ -21,14 +21,14 @@ import { ApiLogInStrategy } from "../misc/logInStrategies/apiLogin.strategy"; import { PasswordLogInStrategy } from "../misc/logInStrategies/passwordLogin.strategy"; import { PasswordlessLogInStrategy } from "../misc/logInStrategies/passwordlessLogin.strategy"; import { SsoLogInStrategy } from "../misc/logInStrategies/ssoLogin.strategy"; -import { AuthResult } from "../models/domain/authResult"; +import { AuthResult } from "../models/domain/auth-result"; import { ApiLogInCredentials, PasswordLogInCredentials, SsoLogInCredentials, PasswordlessLogInCredentials, -} from "../models/domain/logInCredentials"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +} from "../models/domain/log-in-credentials"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; import { TokenRequestTwoFactor } from "../models/request/identityToken/tokenRequestTwoFactor"; import { PreloginRequest } from "../models/request/preloginRequest"; import { ErrorResponse } from "../models/response/errorResponse"; diff --git a/libs/common/src/services/azureFileUpload.service.ts b/libs/common/src/services/azureFileUpload.service.ts index d7017bfb69d..95a6bd88093 100644 --- a/libs/common/src/services/azureFileUpload.service.ts +++ b/libs/common/src/services/azureFileUpload.service.ts @@ -1,6 +1,6 @@ import { LogService } from "../abstractions/log.service"; import { Utils } from "../misc/utils"; -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; const MAX_SINGLE_BLOB_UPLOAD_SIZE = 256 * 1024 * 1024; // 256 MiB const MAX_BLOCKS_PER_BLOB = 50000; diff --git a/libs/common/src/services/bitwardenFileUpload.service.ts b/libs/common/src/services/bitwardenFileUpload.service.ts index 64432e13cb8..ee6f97aae3d 100644 --- a/libs/common/src/services/bitwardenFileUpload.service.ts +++ b/libs/common/src/services/bitwardenFileUpload.service.ts @@ -1,5 +1,5 @@ import { Utils } from "../misc/utils"; -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; export class BitwardenFileUploadService { async upload( diff --git a/libs/common/src/services/cipher.service.ts b/libs/common/src/services/cipher.service.ts index 62d849d4176..ff5f8d7a6bd 100644 --- a/libs/common/src/services/cipher.service.ts +++ b/libs/common/src/services/cipher.service.ts @@ -14,22 +14,22 @@ import { FieldType } from "../enums/fieldType"; import { UriMatchType } from "../enums/uriMatchType"; import { sequentialize } from "../misc/sequentialize"; import { Utils } from "../misc/utils"; -import { CipherData } from "../models/data/cipherData"; +import { CipherData } from "../models/data/cipher.data"; import { AccountSettingsSettings } from "../models/domain/account"; import { Attachment } from "../models/domain/attachment"; import { Card } from "../models/domain/card"; import { Cipher } from "../models/domain/cipher"; -import Domain from "../models/domain/domainBase"; -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; -import { EncString } from "../models/domain/encString"; +import Domain from "../models/domain/domain-base"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; +import { EncString } from "../models/domain/enc-string"; import { Field } from "../models/domain/field"; import { Identity } from "../models/domain/identity"; import { Login } from "../models/domain/login"; -import { LoginUri } from "../models/domain/loginUri"; +import { LoginUri } from "../models/domain/login-uri"; import { Password } from "../models/domain/password"; -import { SecureNote } from "../models/domain/secureNote"; -import { SortedCiphersCache } from "../models/domain/sortedCiphersCache"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +import { SecureNote } from "../models/domain/secure-note"; +import { SortedCiphersCache } from "../models/domain/sorted-ciphers-cache"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; import { AttachmentRequest } from "../models/request/attachmentRequest"; import { CipherBulkDeleteRequest } from "../models/request/cipherBulkDeleteRequest"; import { CipherBulkMoveRequest } from "../models/request/cipherBulkMoveRequest"; @@ -41,10 +41,10 @@ import { CipherRequest } from "../models/request/cipherRequest"; import { CipherShareRequest } from "../models/request/cipherShareRequest"; import { CipherResponse } from "../models/response/cipherResponse"; import { ErrorResponse } from "../models/response/errorResponse"; -import { AttachmentView } from "../models/view/attachmentView"; -import { CipherView } from "../models/view/cipherView"; -import { FieldView } from "../models/view/fieldView"; -import { PasswordHistoryView } from "../models/view/passwordHistoryView"; +import { AttachmentView } from "../models/view/attachment.view"; +import { CipherView } from "../models/view/cipher.view"; +import { FieldView } from "../models/view/field.view"; +import { PasswordHistoryView } from "../models/view/password-history.view"; import { View } from "../models/view/view"; const DomainMatchBlacklist = new Map>([ diff --git a/libs/common/src/services/collection.service.ts b/libs/common/src/services/collection.service.ts index 12054916e01..4e93b88d344 100644 --- a/libs/common/src/services/collection.service.ts +++ b/libs/common/src/services/collection.service.ts @@ -4,10 +4,10 @@ import { I18nService } from "../abstractions/i18n.service"; import { StateService } from "../abstractions/state.service"; import { ServiceUtils } from "../misc/serviceUtils"; import { Utils } from "../misc/utils"; -import { CollectionData } from "../models/data/collectionData"; +import { CollectionData } from "../models/data/collection.data"; import { Collection } from "../models/domain/collection"; -import { TreeNode } from "../models/domain/treeNode"; -import { CollectionView } from "../models/view/collectionView"; +import { TreeNode } from "../models/domain/tree-node"; +import { CollectionView } from "../models/view/collection.view"; const NestingDelimiter = "/"; diff --git a/libs/common/src/services/crypto.service.ts b/libs/common/src/services/crypto.service.ts index 970b9da0011..8b2a15e245f 100644 --- a/libs/common/src/services/crypto.service.ts +++ b/libs/common/src/services/crypto.service.ts @@ -13,11 +13,11 @@ import { KeySuffixOptions } from "../enums/keySuffixOptions"; import { sequentialize } from "../misc/sequentialize"; import { Utils } from "../misc/utils"; import { EFFLongWordList } from "../misc/wordlist"; -import { EncryptedOrganizationKeyData } from "../models/data/encryptedOrganizationKeyData"; -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; -import { EncString } from "../models/domain/encString"; -import { BaseEncryptedOrganizationKey } from "../models/domain/encryptedOrganizationKey"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +import { EncryptedOrganizationKeyData } from "../models/data/encrypted-organization-key.data"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; +import { EncString } from "../models/domain/enc-string"; +import { BaseEncryptedOrganizationKey } from "../models/domain/encrypted-organization-key"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; import { ProfileOrganizationResponse } from "../models/response/profileOrganizationResponse"; import { ProfileProviderOrganizationResponse } from "../models/response/profileProviderOrganizationResponse"; import { ProfileProviderResponse } from "../models/response/profileProviderResponse"; diff --git a/libs/common/src/services/encrypt.service.ts b/libs/common/src/services/encrypt.service.ts index d02e541b3b4..c210fdcd7b6 100644 --- a/libs/common/src/services/encrypt.service.ts +++ b/libs/common/src/services/encrypt.service.ts @@ -4,10 +4,10 @@ import { LogService } from "../abstractions/log.service"; import { EncryptionType } from "../enums/encryptionType"; import { IEncrypted } from "../interfaces/IEncrypted"; import { Utils } from "../misc/utils"; -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; -import { EncString } from "../models/domain/encString"; -import { EncryptedObject } from "../models/domain/encryptedObject"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; +import { EncString } from "../models/domain/enc-string"; +import { EncryptedObject } from "../models/domain/encrypted-object"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; export class EncryptService implements AbstractEncryptService { constructor( diff --git a/libs/common/src/services/environment.service.ts b/libs/common/src/services/environment.service.ts index 48561a99092..1d461fe45b8 100644 --- a/libs/common/src/services/environment.service.ts +++ b/libs/common/src/services/environment.service.ts @@ -5,7 +5,7 @@ import { Urls, } from "../abstractions/environment.service"; import { StateService } from "../abstractions/state.service"; -import { EnvironmentUrls } from "../models/domain/environmentUrls"; +import { EnvironmentUrls } from "../models/domain/environment-urls"; export class EnvironmentService implements EnvironmentServiceAbstraction { private readonly urlsSubject = new Subject(); diff --git a/libs/common/src/services/event.service.ts b/libs/common/src/services/event.service.ts index 4279da86421..84e0aa2bf3e 100644 --- a/libs/common/src/services/event.service.ts +++ b/libs/common/src/services/event.service.ts @@ -5,7 +5,7 @@ import { LogService } from "../abstractions/log.service"; import { OrganizationService } from "../abstractions/organization/organization.service.abstraction"; import { StateService } from "../abstractions/state.service"; import { EventType } from "../enums/eventType"; -import { EventData } from "../models/data/eventData"; +import { EventData } from "../models/data/event.data"; import { EventRequest } from "../models/request/eventRequest"; export class EventService implements EventServiceAbstraction { diff --git a/libs/common/src/services/export.service.ts b/libs/common/src/services/export.service.ts index 0fdd1e332de..101dd706494 100644 --- a/libs/common/src/services/export.service.ts +++ b/libs/common/src/services/export.service.ts @@ -13,20 +13,20 @@ import { FolderService } from "../abstractions/folder/folder.service.abstraction import { CipherType } from "../enums/cipherType"; import { DEFAULT_KDF_ITERATIONS, KdfType } from "../enums/kdfType"; import { Utils } from "../misc/utils"; -import { CipherData } from "../models/data/cipherData"; -import { CollectionData } from "../models/data/collectionData"; +import { CipherData } from "../models/data/cipher.data"; +import { CollectionData } from "../models/data/collection.data"; import { Cipher } from "../models/domain/cipher"; import { Collection } from "../models/domain/collection"; import { Folder } from "../models/domain/folder"; -import { CipherWithIdExport as CipherExport } from "../models/export/cipherWithIdsExport"; -import { CollectionWithIdExport as CollectionExport } from "../models/export/collectionWithIdExport"; -import { EventExport } from "../models/export/eventExport"; -import { FolderWithIdExport as FolderExport } from "../models/export/folderWithIdExport"; +import { CipherWithIdExport as CipherExport } from "../models/export/cipher-with-ids.export"; +import { CollectionWithIdExport as CollectionExport } from "../models/export/collection-with-id.export"; +import { EventExport } from "../models/export/event.export"; +import { FolderWithIdExport as FolderExport } from "../models/export/folder-with-id.export"; import { CollectionDetailsResponse } from "../models/response/collectionResponse"; -import { CipherView } from "../models/view/cipherView"; -import { CollectionView } from "../models/view/collectionView"; -import { EventView } from "../models/view/eventView"; -import { FolderView } from "../models/view/folderView"; +import { CipherView } from "../models/view/cipher.view"; +import { CollectionView } from "../models/view/collection.view"; +import { EventView } from "../models/view/event.view"; +import { FolderView } from "../models/view/folder.view"; export class ExportService implements ExportServiceAbstraction { constructor( diff --git a/libs/common/src/services/fileUpload.service.ts b/libs/common/src/services/fileUpload.service.ts index b7837a2d64c..8a41b3ea67f 100644 --- a/libs/common/src/services/fileUpload.service.ts +++ b/libs/common/src/services/fileUpload.service.ts @@ -2,8 +2,8 @@ import { ApiService } from "../abstractions/api.service"; import { FileUploadService as FileUploadServiceAbstraction } from "../abstractions/fileUpload.service"; import { LogService } from "../abstractions/log.service"; import { FileUploadType } from "../enums/fileUploadType"; -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; -import { EncString } from "../models/domain/encString"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; +import { EncString } from "../models/domain/enc-string"; import { AttachmentUploadDataResponse } from "../models/response/attachmentUploadDataResponse"; import { SendFileUploadDataResponse } from "../models/response/sendFileUploadDataResponse"; diff --git a/libs/common/src/services/folder/folder-api.service.ts b/libs/common/src/services/folder/folder-api.service.ts index 44e03c3050b..b9e6bbae7ff 100644 --- a/libs/common/src/services/folder/folder-api.service.ts +++ b/libs/common/src/services/folder/folder-api.service.ts @@ -1,7 +1,7 @@ import { ApiService } from "../../abstractions/api.service"; import { FolderApiServiceAbstraction } from "../../abstractions/folder/folder-api.service.abstraction"; import { InternalFolderService } from "../../abstractions/folder/folder.service.abstraction"; -import { FolderData } from "../../models/data/folderData"; +import { FolderData } from "../../models/data/folder.data"; import { Folder } from "../../models/domain/folder"; import { FolderRequest } from "../../models/request/folderRequest"; import { FolderResponse } from "../../models/response/folderResponse"; diff --git a/libs/common/src/services/folder/folder.service.ts b/libs/common/src/services/folder/folder.service.ts index 09a305c02f6..4d8981c4eae 100644 --- a/libs/common/src/services/folder/folder.service.ts +++ b/libs/common/src/services/folder/folder.service.ts @@ -6,11 +6,11 @@ import { InternalFolderService as InternalFolderServiceAbstraction } from "../.. import { I18nService } from "../../abstractions/i18n.service"; import { StateService } from "../../abstractions/state.service"; import { Utils } from "../../misc/utils"; -import { CipherData } from "../../models/data/cipherData"; -import { FolderData } from "../../models/data/folderData"; +import { CipherData } from "../../models/data/cipher.data"; +import { FolderData } from "../../models/data/folder.data"; import { Folder } from "../../models/domain/folder"; -import { SymmetricCryptoKey } from "../../models/domain/symmetricCryptoKey"; -import { FolderView } from "../../models/view/folderView"; +import { SymmetricCryptoKey } from "../../models/domain/symmetric-crypto-key"; +import { FolderView } from "../../models/view/folder.view"; export class FolderService implements InternalFolderServiceAbstraction { protected _folders: BehaviorSubject = new BehaviorSubject([]); diff --git a/libs/common/src/services/import.service.ts b/libs/common/src/services/import.service.ts index acb45f7ebb5..06b607c7406 100644 --- a/libs/common/src/services/import.service.ts +++ b/libs/common/src/services/import.service.ts @@ -71,7 +71,7 @@ import { UpmCsvImporter } from "../importers/upmCsvImporter"; import { YotiCsvImporter } from "../importers/yotiCsvImporter"; import { ZohoVaultCsvImporter } from "../importers/zohoVaultCsvImporter"; import { Utils } from "../misc/utils"; -import { ImportResult } from "../models/domain/importResult"; +import { ImportResult } from "../models/domain/import-result"; import { CipherRequest } from "../models/request/cipherRequest"; import { CollectionRequest } from "../models/request/collectionRequest"; import { FolderRequest } from "../models/request/folderRequest"; @@ -79,7 +79,7 @@ import { ImportCiphersRequest } from "../models/request/importCiphersRequest"; import { ImportOrganizationCiphersRequest } from "../models/request/importOrganizationCiphersRequest"; import { KvpRequest } from "../models/request/kvpRequest"; import { ErrorResponse } from "../models/response/errorResponse"; -import { CipherView } from "../models/view/cipherView"; +import { CipherView } from "../models/view/cipher.view"; export class ImportService implements ImportServiceAbstraction { featuredImportOptions = featuredImportOptions as readonly ImportOption[]; diff --git a/libs/common/src/services/keyConnector.service.ts b/libs/common/src/services/keyConnector.service.ts index fd4b7ffa84d..1dbc45f8019 100644 --- a/libs/common/src/services/keyConnector.service.ts +++ b/libs/common/src/services/keyConnector.service.ts @@ -8,7 +8,7 @@ import { StateService } from "../abstractions/state.service"; import { TokenService } from "../abstractions/token.service"; import { OrganizationUserType } from "../enums/organizationUserType"; import { Utils } from "../misc/utils"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; import { SetKeyConnectorKeyRequest } from "../models/request/account/setKeyConnectorKeyRequest"; import { KeyConnectorUserKeyRequest } from "../models/request/keyConnectorUserKeyRequest"; import { KeysRequest } from "../models/request/keysRequest"; diff --git a/libs/common/src/services/organization/organization.service.ts b/libs/common/src/services/organization/organization.service.ts index e5ae50d5246..9d9a7d57346 100644 --- a/libs/common/src/services/organization/organization.service.ts +++ b/libs/common/src/services/organization/organization.service.ts @@ -3,7 +3,7 @@ import { BehaviorSubject, concatMap, filter } from "rxjs"; import { OrganizationService as OrganizationServiceAbstraction } from "../../abstractions/organization/organization.service.abstraction"; import { StateService } from "../../abstractions/state.service"; import { SyncNotifierService } from "../../abstractions/sync/syncNotifier.service.abstraction"; -import { OrganizationData } from "../../models/data/organizationData"; +import { OrganizationData } from "../../models/data/organization.data"; import { Organization } from "../../models/domain/organization"; import { isSuccessfullyCompleted } from "../../types/syncEventArgs"; diff --git a/libs/common/src/services/passwordGeneration.service.ts b/libs/common/src/services/passwordGeneration.service.ts index aad9e1ac3c4..a86f6ac7ed9 100644 --- a/libs/common/src/services/passwordGeneration.service.ts +++ b/libs/common/src/services/passwordGeneration.service.ts @@ -7,9 +7,9 @@ import { PolicyService } from "../abstractions/policy/policy.service.abstraction import { StateService } from "../abstractions/state.service"; import { PolicyType } from "../enums/policyType"; import { EFFLongWordList } from "../misc/wordlist"; -import { EncString } from "../models/domain/encString"; -import { GeneratedPasswordHistory } from "../models/domain/generatedPasswordHistory"; -import { PasswordGeneratorPolicyOptions } from "../models/domain/passwordGeneratorPolicyOptions"; +import { EncString } from "../models/domain/enc-string"; +import { GeneratedPasswordHistory } from "../models/domain/generated-password-history"; +import { PasswordGeneratorPolicyOptions } from "../models/domain/password-generator-policy-options"; import { Policy } from "../models/domain/policy"; const DefaultOptions = { diff --git a/libs/common/src/services/policy/policy-api.service.ts b/libs/common/src/services/policy/policy-api.service.ts index d7ccdc03841..5f84c7f9221 100644 --- a/libs/common/src/services/policy/policy-api.service.ts +++ b/libs/common/src/services/policy/policy-api.service.ts @@ -6,8 +6,8 @@ import { PolicyApiServiceAbstraction } from "../../abstractions/policy/policy-ap import { InternalPolicyService } from "../../abstractions/policy/policy.service.abstraction"; import { StateService } from "../../abstractions/state.service"; import { PolicyType } from "../../enums/policyType"; -import { PolicyData } from "../../models/data/policyData"; -import { MasterPasswordPolicyOptions } from "../../models/domain/masterPasswordPolicyOptions"; +import { PolicyData } from "../../models/data/policy.data"; +import { MasterPasswordPolicyOptions } from "../../models/domain/master-password-policy-options"; import { PolicyRequest } from "../../models/request/policyRequest"; import { ListResponse } from "../../models/response/listResponse"; import { PolicyResponse } from "../../models/response/policyResponse"; diff --git a/libs/common/src/services/policy/policy.service.ts b/libs/common/src/services/policy/policy.service.ts index 7e963b8e900..a3d87e02f1b 100644 --- a/libs/common/src/services/policy/policy.service.ts +++ b/libs/common/src/services/policy/policy.service.ts @@ -7,11 +7,11 @@ import { OrganizationUserStatusType } from "../../enums/organizationUserStatusTy import { OrganizationUserType } from "../../enums/organizationUserType"; import { PolicyType } from "../../enums/policyType"; import { Utils } from "../../misc/utils"; -import { PolicyData } from "../../models/data/policyData"; -import { MasterPasswordPolicyOptions } from "../../models/domain/masterPasswordPolicyOptions"; +import { PolicyData } from "../../models/data/policy.data"; +import { MasterPasswordPolicyOptions } from "../../models/domain/master-password-policy-options"; import { Organization } from "../../models/domain/organization"; import { Policy } from "../../models/domain/policy"; -import { ResetPasswordPolicyOptions } from "../../models/domain/resetPasswordPolicyOptions"; +import { ResetPasswordPolicyOptions } from "../../models/domain/reset-password-policy-options"; import { ListResponse } from "../../models/response/listResponse"; import { PolicyResponse } from "../../models/response/policyResponse"; diff --git a/libs/common/src/services/provider.service.ts b/libs/common/src/services/provider.service.ts index 53f095424b4..e8d96976dd1 100644 --- a/libs/common/src/services/provider.service.ts +++ b/libs/common/src/services/provider.service.ts @@ -1,6 +1,6 @@ import { ProviderService as ProviderServiceAbstraction } from "../abstractions/provider.service"; import { StateService } from "../abstractions/state.service"; -import { ProviderData } from "../models/data/providerData"; +import { ProviderData } from "../models/data/provider.data"; import { Provider } from "../models/domain/provider"; export class ProviderService implements ProviderServiceAbstraction { diff --git a/libs/common/src/services/search.service.ts b/libs/common/src/services/search.service.ts index fe25698b70c..05f2423b17b 100644 --- a/libs/common/src/services/search.service.ts +++ b/libs/common/src/services/search.service.ts @@ -7,8 +7,8 @@ import { SearchService as SearchServiceAbstraction } from "../abstractions/searc import { CipherType } from "../enums/cipherType"; import { FieldType } from "../enums/fieldType"; import { UriMatchType } from "../enums/uriMatchType"; -import { CipherView } from "../models/view/cipherView"; -import { SendView } from "../models/view/sendView"; +import { CipherView } from "../models/view/cipher.view"; +import { SendView } from "../models/view/send.view"; export class SearchService implements SearchServiceAbstraction { private static registeredPipeline = false; diff --git a/libs/common/src/services/send.service.ts b/libs/common/src/services/send.service.ts index 3d8daa3a69c..e0df9364b4e 100644 --- a/libs/common/src/services/send.service.ts +++ b/libs/common/src/services/send.service.ts @@ -8,17 +8,17 @@ import { StateService } from "../abstractions/state.service"; import { SEND_KDF_ITERATIONS } from "../enums/kdfType"; import { SendType } from "../enums/sendType"; import { Utils } from "../misc/utils"; -import { SendData } from "../models/data/sendData"; -import { EncArrayBuffer } from "../models/domain/encArrayBuffer"; -import { EncString } from "../models/domain/encString"; +import { SendData } from "../models/data/send.data"; +import { EncArrayBuffer } from "../models/domain/enc-array-buffer"; +import { EncString } from "../models/domain/enc-string"; import { Send } from "../models/domain/send"; -import { SendFile } from "../models/domain/sendFile"; -import { SendText } from "../models/domain/sendText"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +import { SendFile } from "../models/domain/send-file"; +import { SendText } from "../models/domain/send-text"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; import { SendRequest } from "../models/request/sendRequest"; import { ErrorResponse } from "../models/response/errorResponse"; import { SendResponse } from "../models/response/sendResponse"; -import { SendView } from "../models/view/sendView"; +import { SendView } from "../models/view/send.view"; export class SendService implements SendServiceAbstraction { constructor( diff --git a/libs/common/src/services/state.service.ts b/libs/common/src/services/state.service.ts index cbae46ed139..ff21e440ca2 100644 --- a/libs/common/src/services/state.service.ts +++ b/libs/common/src/services/state.service.ts @@ -13,16 +13,16 @@ import { StorageLocation } from "../enums/storageLocation"; import { ThemeType } from "../enums/themeType"; import { UriMatchType } from "../enums/uriMatchType"; import { StateFactory } from "../factories/stateFactory"; -import { CipherData } from "../models/data/cipherData"; -import { CollectionData } from "../models/data/collectionData"; -import { EncryptedOrganizationKeyData } from "../models/data/encryptedOrganizationKeyData"; -import { EventData } from "../models/data/eventData"; -import { FolderData } from "../models/data/folderData"; -import { LocalData } from "../models/data/localData"; -import { OrganizationData } from "../models/data/organizationData"; -import { PolicyData } from "../models/data/policyData"; -import { ProviderData } from "../models/data/providerData"; -import { SendData } from "../models/data/sendData"; +import { CipherData } from "../models/data/cipher.data"; +import { CollectionData } from "../models/data/collection.data"; +import { EncryptedOrganizationKeyData } from "../models/data/encrypted-organization-key.data"; +import { EventData } from "../models/data/event.data"; +import { FolderData } from "../models/data/folder.data"; +import { LocalData } from "../models/data/local.data"; +import { OrganizationData } from "../models/data/organization.data"; +import { PolicyData } from "../models/data/policy.data"; +import { ProviderData } from "../models/data/provider.data"; +import { SendData } from "../models/data/send.data"; import { ServerConfigData } from "../models/data/server-config.data"; import { Account, @@ -30,18 +30,18 @@ import { AccountSettings, AccountSettingsSettings, } from "../models/domain/account"; -import { EncString } from "../models/domain/encString"; -import { EnvironmentUrls } from "../models/domain/environmentUrls"; -import { GeneratedPasswordHistory } from "../models/domain/generatedPasswordHistory"; -import { GlobalState } from "../models/domain/globalState"; +import { EncString } from "../models/domain/enc-string"; +import { EnvironmentUrls } from "../models/domain/environment-urls"; +import { GeneratedPasswordHistory } from "../models/domain/generated-password-history"; +import { GlobalState } from "../models/domain/global-state"; import { Policy } from "../models/domain/policy"; import { State } from "../models/domain/state"; -import { StorageOptions } from "../models/domain/storageOptions"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; -import { WindowState } from "../models/domain/windowState"; -import { CipherView } from "../models/view/cipherView"; -import { CollectionView } from "../models/view/collectionView"; -import { SendView } from "../models/view/sendView"; +import { StorageOptions } from "../models/domain/storage-options"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; +import { WindowState } from "../models/domain/window-state"; +import { CipherView } from "../models/view/cipher.view"; +import { CollectionView } from "../models/view/collection.view"; +import { SendView } from "../models/view/send.view"; const keys = { state: "state", diff --git a/libs/common/src/services/stateMigration.service.ts b/libs/common/src/services/stateMigration.service.ts index e936860657a..1ad874cb0f0 100644 --- a/libs/common/src/services/stateMigration.service.ts +++ b/libs/common/src/services/stateMigration.service.ts @@ -4,25 +4,25 @@ import { KdfType } from "../enums/kdfType"; import { StateVersion } from "../enums/stateVersion"; import { ThemeType } from "../enums/themeType"; import { StateFactory } from "../factories/stateFactory"; -import { CipherData } from "../models/data/cipherData"; -import { CollectionData } from "../models/data/collectionData"; -import { EventData } from "../models/data/eventData"; -import { FolderData } from "../models/data/folderData"; -import { OrganizationData } from "../models/data/organizationData"; -import { PolicyData } from "../models/data/policyData"; -import { ProviderData } from "../models/data/providerData"; -import { SendData } from "../models/data/sendData"; +import { CipherData } from "../models/data/cipher.data"; +import { CollectionData } from "../models/data/collection.data"; +import { EventData } from "../models/data/event.data"; +import { FolderData } from "../models/data/folder.data"; +import { OrganizationData } from "../models/data/organization.data"; +import { PolicyData } from "../models/data/policy.data"; +import { ProviderData } from "../models/data/provider.data"; +import { SendData } from "../models/data/send.data"; import { Account, AccountSettings, AccountSettingsSettings, EncryptionPair, } from "../models/domain/account"; -import { EncString } from "../models/domain/encString"; -import { EnvironmentUrls } from "../models/domain/environmentUrls"; -import { GeneratedPasswordHistory } from "../models/domain/generatedPasswordHistory"; -import { GlobalState } from "../models/domain/globalState"; -import { StorageOptions } from "../models/domain/storageOptions"; +import { EncString } from "../models/domain/enc-string"; +import { EnvironmentUrls } from "../models/domain/environment-urls"; +import { GeneratedPasswordHistory } from "../models/domain/generated-password-history"; +import { GlobalState } from "../models/domain/global-state"; +import { StorageOptions } from "../models/domain/storage-options"; import { TokenService } from "./token.service"; diff --git a/libs/common/src/services/sync/sync.service.ts b/libs/common/src/services/sync/sync.service.ts index 736a3ceeeaa..1803b587927 100644 --- a/libs/common/src/services/sync/sync.service.ts +++ b/libs/common/src/services/sync/sync.service.ts @@ -15,12 +15,12 @@ import { StateService } from "../../abstractions/state.service"; import { SyncService as SyncServiceAbstraction } from "../../abstractions/sync/sync.service.abstraction"; import { SyncNotifierService } from "../../abstractions/sync/syncNotifier.service.abstraction"; import { sequentialize } from "../../misc/sequentialize"; -import { CipherData } from "../../models/data/cipherData"; -import { CollectionData } from "../../models/data/collectionData"; -import { FolderData } from "../../models/data/folderData"; -import { PolicyData } from "../../models/data/policyData"; -import { ProviderData } from "../../models/data/providerData"; -import { SendData } from "../../models/data/sendData"; +import { CipherData } from "../../models/data/cipher.data"; +import { CollectionData } from "../../models/data/collection.data"; +import { FolderData } from "../../models/data/folder.data"; +import { PolicyData } from "../../models/data/policy.data"; +import { ProviderData } from "../../models/data/provider.data"; +import { SendData } from "../../models/data/send.data"; import { CipherResponse } from "../../models/response/cipherResponse"; import { CollectionDetailsResponse } from "../../models/response/collectionResponse"; import { DomainsResponse } from "../../models/response/domainsResponse"; diff --git a/libs/common/src/services/webCryptoFunction.service.ts b/libs/common/src/services/webCryptoFunction.service.ts index 2e0b920f510..ad3f9b46338 100644 --- a/libs/common/src/services/webCryptoFunction.service.ts +++ b/libs/common/src/services/webCryptoFunction.service.ts @@ -2,8 +2,8 @@ import * as forge from "node-forge"; import { CryptoFunctionService } from "../abstractions/cryptoFunction.service"; import { Utils } from "../misc/utils"; -import { DecryptParameters } from "../models/domain/decryptParameters"; -import { SymmetricCryptoKey } from "../models/domain/symmetricCryptoKey"; +import { DecryptParameters } from "../models/domain/decrypt-parameters"; +import { SymmetricCryptoKey } from "../models/domain/symmetric-crypto-key"; export class WebCryptoFunctionService implements CryptoFunctionService { private crypto: Crypto; diff --git a/libs/electron/src/services/electronCrypto.service.ts b/libs/electron/src/services/electronCrypto.service.ts index 461d809d790..0fe814b1385 100644 --- a/libs/electron/src/services/electronCrypto.service.ts +++ b/libs/electron/src/services/electronCrypto.service.ts @@ -4,7 +4,7 @@ import { LogService } from "@bitwarden/common/abstractions/log.service"; import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { KeySuffixOptions } from "@bitwarden/common/enums/keySuffixOptions"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { CryptoService } from "@bitwarden/common/services/crypto.service"; export class ElectronCryptoService extends CryptoService { diff --git a/libs/electron/src/services/electronRendererSecureStorage.service.ts b/libs/electron/src/services/electronRendererSecureStorage.service.ts index bc822805171..2a645559c89 100644 --- a/libs/electron/src/services/electronRendererSecureStorage.service.ts +++ b/libs/electron/src/services/electronRendererSecureStorage.service.ts @@ -1,7 +1,7 @@ import { ipcRenderer } from "electron"; import { AbstractStorageService } from "@bitwarden/common/abstractions/storage.service"; -import { StorageOptions } from "@bitwarden/common/models/domain/storageOptions"; +import { StorageOptions } from "@bitwarden/common/models/domain/storage-options"; export class ElectronRendererSecureStorageService implements AbstractStorageService { async get(key: string, options?: StorageOptions): Promise { diff --git a/libs/node/spec/services/nodeCryptoFunction.service.spec.ts b/libs/node/spec/services/nodeCryptoFunction.service.spec.ts index 5b8c7c78c62..d0097c29304 100644 --- a/libs/node/spec/services/nodeCryptoFunction.service.spec.ts +++ b/libs/node/spec/services/nodeCryptoFunction.service.spec.ts @@ -1,5 +1,5 @@ import { Utils } from "@bitwarden/common/misc/utils"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; import { NodeCryptoFunctionService } from "@bitwarden/node/services/nodeCryptoFunction.service"; const RsaPublicKey = diff --git a/libs/node/src/cli/commands/login.command.ts b/libs/node/src/cli/commands/login.command.ts index f4040df71e7..cfd48417057 100644 --- a/libs/node/src/cli/commands/login.command.ts +++ b/libs/node/src/cli/commands/login.command.ts @@ -19,12 +19,12 @@ import { TwoFactorService } from "@bitwarden/common/abstractions/twoFactor.servi import { TwoFactorProviderType } from "@bitwarden/common/enums/twoFactorProviderType"; import { NodeUtils } from "@bitwarden/common/misc/nodeUtils"; import { Utils } from "@bitwarden/common/misc/utils"; -import { AuthResult } from "@bitwarden/common/models/domain/authResult"; +import { AuthResult } from "@bitwarden/common/models/domain/auth-result"; import { ApiLogInCredentials, PasswordLogInCredentials, SsoLogInCredentials, -} from "@bitwarden/common/models/domain/logInCredentials"; +} from "@bitwarden/common/models/domain/log-in-credentials"; import { TokenRequestTwoFactor } from "@bitwarden/common/models/request/identityToken/tokenRequestTwoFactor"; import { TwoFactorEmailRequest } from "@bitwarden/common/models/request/twoFactorEmailRequest"; import { UpdateTempPasswordRequest } from "@bitwarden/common/models/request/updateTempPasswordRequest"; diff --git a/libs/node/src/services/nodeCryptoFunction.service.ts b/libs/node/src/services/nodeCryptoFunction.service.ts index 2c18f36899a..fc22622a1e0 100644 --- a/libs/node/src/services/nodeCryptoFunction.service.ts +++ b/libs/node/src/services/nodeCryptoFunction.service.ts @@ -4,8 +4,8 @@ import * as forge from "node-forge"; import { CryptoFunctionService } from "@bitwarden/common/abstractions/cryptoFunction.service"; import { Utils } from "@bitwarden/common/misc/utils"; -import { DecryptParameters } from "@bitwarden/common/models/domain/decryptParameters"; -import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetricCryptoKey"; +import { DecryptParameters } from "@bitwarden/common/models/domain/decrypt-parameters"; +import { SymmetricCryptoKey } from "@bitwarden/common/models/domain/symmetric-crypto-key"; export class NodeCryptoFunctionService implements CryptoFunctionService { pbkdf2( From 0189401a069eab4af68a1081a13021833fe19fae Mon Sep 17 00:00:00 2001 From: Federico Maccaroni Date: Fri, 14 Oct 2022 18:52:55 -0300 Subject: [PATCH 52/82] EC-601 Remove device verification UI from web to avoid confusing users (#3744) --- .../settings/two-factor-setup.component.ts | 19 +------ .../settings/two-factor-setup.component.html | 34 ------------ .../settings/two-factor-setup.component.ts | 52 +------------------ 3 files changed, 3 insertions(+), 102 deletions(-) diff --git a/apps/web/src/app/organizations/settings/two-factor-setup.component.ts b/apps/web/src/app/organizations/settings/two-factor-setup.component.ts index be82b0a86b9..b50adc3bb02 100644 --- a/apps/web/src/app/organizations/settings/two-factor-setup.component.ts +++ b/apps/web/src/app/organizations/settings/two-factor-setup.component.ts @@ -3,10 +3,7 @@ import { ActivatedRoute } from "@angular/router"; import { ModalService } from "@bitwarden/angular/services/modal.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; -import { LogService } from "@bitwarden/common/abstractions/log.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; -import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { TwoFactorProviderType } from "@bitwarden/common/enums/twoFactorProviderType"; @@ -26,21 +23,9 @@ export class TwoFactorSetupComponent extends BaseTwoFactorSetupComponent { messagingService: MessagingService, policyService: PolicyService, private route: ActivatedRoute, - stateService: StateService, - platformUtilsService: PlatformUtilsService, - i18nService: I18nService, - logService: LogService + stateService: StateService ) { - super( - apiService, - modalService, - messagingService, - policyService, - stateService, - platformUtilsService, - i18nService, - logService - ); + super(apiService, modalService, messagingService, policyService, stateService); } async ngOnInit() { diff --git a/apps/web/src/app/settings/two-factor-setup.component.html b/apps/web/src/app/settings/two-factor-setup.component.html index b846fdb9816..27fc2990e60 100644 --- a/apps/web/src/app/settings/two-factor-setup.component.html +++ b/apps/web/src/app/settings/two-factor-setup.component.html @@ -55,40 +55,6 @@
    -
    -
    -
    -

    - {{ "deviceVerification" | i18n }} -

    -
    -
    - - -
    - {{ "deviceVerificationDesc" | i18n }} -
    - -
    -
    -
    diff --git a/apps/web/src/app/settings/two-factor-setup.component.ts b/apps/web/src/app/settings/two-factor-setup.component.ts index 994262548bc..72daa52039e 100644 --- a/apps/web/src/app/settings/two-factor-setup.component.ts +++ b/apps/web/src/app/settings/two-factor-setup.component.ts @@ -4,15 +4,11 @@ import { Subject, takeUntil } from "rxjs"; import { ModalRef } from "@bitwarden/angular/components/modal/modal.ref"; import { ModalService } from "@bitwarden/angular/services/modal.service"; import { ApiService } from "@bitwarden/common/abstractions/api.service"; -import { I18nService } from "@bitwarden/common/abstractions/i18n.service"; -import { LogService } from "@bitwarden/common/abstractions/log.service"; import { MessagingService } from "@bitwarden/common/abstractions/messaging.service"; -import { PlatformUtilsService } from "@bitwarden/common/abstractions/platformUtils.service"; import { PolicyService } from "@bitwarden/common/abstractions/policy/policy.service.abstraction"; import { StateService } from "@bitwarden/common/abstractions/state.service"; import { PolicyType } from "@bitwarden/common/enums/policyType"; import { TwoFactorProviderType } from "@bitwarden/common/enums/twoFactorProviderType"; -import { DeviceVerificationRequest } from "@bitwarden/common/models/request/deviceVerificationRequest"; import { TwoFactorProviders } from "@bitwarden/common/services/twoFactor.service"; import { TwoFactorAuthenticatorComponent } from "./two-factor-authenticator.component"; @@ -44,8 +40,6 @@ export class TwoFactorSetupComponent implements OnInit, OnDestroy { canAccessPremium: boolean; showPolicyWarning = false; loading = true; - enableDeviceVerification: boolean; - isDeviceVerificationSectionEnabled: boolean; modal: ModalRef; formPromise: Promise; @@ -57,22 +51,11 @@ export class TwoFactorSetupComponent implements OnInit, OnDestroy { protected modalService: ModalService, protected messagingService: MessagingService, protected policyService: PolicyService, - private stateService: StateService, - private platformUtilsService: PlatformUtilsService, - private i18nService: I18nService, - private logService: LogService + private stateService: StateService ) {} async ngOnInit() { this.canAccessPremium = await this.stateService.getCanAccessPremium(); - try { - const deviceVerificationSettings = await this.apiService.getDeviceVerificationSettings(); - this.isDeviceVerificationSectionEnabled = - deviceVerificationSettings.isDeviceVerificationSectionEnabled; - this.enableDeviceVerification = deviceVerificationSettings.unknownDeviceVerificationEnabled; - } catch (e) { - this.logService.error(e); - } for (const key in TwoFactorProviders) { // eslint-disable-next-line @@ -224,37 +207,4 @@ export class TwoFactorSetupComponent implements OnInit, OnDestroy { this.showPolicyWarning = false; } } - - async submit() { - try { - if (this.enableDeviceVerification) { - const email = await this.stateService.getEmail(); - const confirmed = await this.platformUtilsService.showDialog( - this.i18nService.t( - "areYouSureYouWantToEnableDeviceVerificationTheVerificationCodeEmailsWillArriveAtX", - email - ), - this.i18nService.t("deviceVerification"), - this.i18nService.t("yes"), - this.i18nService.t("no"), - "warning" - ); - if (!confirmed) { - return; - } - } - - this.formPromise = this.apiService.putDeviceVerificationSettings( - new DeviceVerificationRequest(this.enableDeviceVerification) - ); - await this.formPromise; - this.platformUtilsService.showToast( - "success", - null, - this.i18nService.t("updatedDeviceVerification") - ); - } catch (e) { - this.logService.error(e); - } - } } From 13444307dd4aac1cc34caa35b77231593d71d637 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ch=C4=99ci=C5=84ski?= Date: Mon, 17 Oct 2022 11:50:54 +0200 Subject: [PATCH 53/82] Change trigger for desktop autobump (#3794) --- .github/workflows/version-auto-bump.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/version-auto-bump.yml b/.github/workflows/version-auto-bump.yml index 29118a0a9fc..3e5b5fc3c2b 100644 --- a/.github/workflows/version-auto-bump.yml +++ b/.github/workflows/version-auto-bump.yml @@ -2,8 +2,9 @@ name: Version Auto Bump on: - release: - types: [published] + push: + tags: + - desktop-v** defaults: run: @@ -15,7 +16,6 @@ jobs: runs-on: ubuntu-22.04 outputs: version_number: ${{ steps.version.outputs.new-version }} - if: contains(github.event.release.tag, 'desktop') steps: - name: Checkout Branch uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579 @@ -23,13 +23,17 @@ jobs: - name: Calculate bumped version id: version env: - RELEASE_TAG: ${{ github.event.release.tag_name }} + RELEASE_TAG: ${{ github.ref }} run: | - CURR_MAJOR=$(echo $RELEASE_TAG | sed -r 's/v([0-9]{4}\.[0-9]{1,2})\.([0-9]{1,2})/\1/') - CURR_PATCH=$(echo $RELEASE_TAG | sed -r 's/v([0-9]{4}\.[0-9]{1,2})\.([0-9]{1,2})/\2/') + CURR_MAJOR=$(echo $RELEASE_TAG | sed -r 's/[a-z]*-v([0-9]{4}\.[0-9]{1,2})\.([0-9]{1,2})/\1/') + CURR_PATCH=$(echo $RELEASE_TAG | sed -r 's/[a-z]*-v([0-9]{4}\.[0-9]{1,2})\.([0-9]{1,2})/\2/') + echo "Current Major: $CURR_MAJOR" echo "Current Patch: $CURR_PATCH" - NEW_PATCH=$((CURR_PATCH++)) + NEW_PATCH=$((CURR_PATCH+1)) + + echo "New patch: $NEW_PATCH" + NEW_VER=$CURR_MAJOR.$NEW_PATCH echo "New Version: $NEW_VER" echo "::set-output name=new-version::$NEW_VER" From 2fda871232de409ffba181d929a46bf12c0bbf22 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Mon, 17 Oct 2022 13:44:03 +0200 Subject: [PATCH 54/82] Remove duplicate SECURITY.md file (#3808) --- apps/desktop/SECURITY.md | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 apps/desktop/SECURITY.md diff --git a/apps/desktop/SECURITY.md b/apps/desktop/SECURITY.md deleted file mode 100644 index e6edb96da72..00000000000 --- a/apps/desktop/SECURITY.md +++ /dev/null @@ -1,21 +0,0 @@ -Bitwarden believes that working with security researchers across the globe is crucial to keeping our users safe. If you believe you've found a security issue in our product or service, we encourage you to please submit a report through our [HackerOne Program](https://hackerone.com/bitwarden/). We welcome working with you to resolve the issue promptly. Thanks in advance! - -# Disclosure Policy - -- Let us know as soon as possible upon discovery of a potential security issue, and we'll make every effort to quickly resolve the issue. -- Provide us a reasonable amount of time to resolve the issue before any disclosure to the public or a third-party. We may publicly disclose the issue before resolving it, if appropriate. -- Make a good faith effort to avoid privacy violations, destruction of data, and interruption or degradation of our service. Only interact with accounts you own or with explicit permission of the account holder. -- If you would like to encrypt your report, please use the PGP key with long ID `0xDE6887086F892325FEC04CC0D847525B6931381F` (available in the public keyserver pool). - -While researching, we'd like to ask you to refrain from: - -- Denial of service -- Spamming -- Social engineering (including phishing) of Bitwarden staff or contractors -- Any physical attempts against Bitwarden property or data centers - -# We want to help you! - -If you have something that you feel is close to exploitation, or if you'd like some information regarding the internal API, or generally have any questions regarding the app that would help in your efforts, please email us at https://bitwarden.com/contact and ask for that information. As stated above, Bitwarden wants to help you find issues, and is more than willing to help. - -Thank you for helping keep Bitwarden and our users safe! From 930359fb18724e9a4219c876ba6ba16c28580e7d Mon Sep 17 00:00:00 2001 From: Matt Gibson Date: Mon, 17 Oct 2022 10:39:00 -0400 Subject: [PATCH 55/82] Inform that we track issues outside of Github (#3703) * Inform that we track issues outside of Github * Use checkboxes for info acknowledgement --- .github/ISSUE_TEMPLATE/browser.yml | 8 ++++++++ .github/ISSUE_TEMPLATE/cli.yml | 8 ++++++++ .github/ISSUE_TEMPLATE/desktop.yml | 8 ++++++++ .github/ISSUE_TEMPLATE/web.yml | 8 ++++++++ 4 files changed, 32 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/browser.yml b/.github/ISSUE_TEMPLATE/browser.yml index b28dce144b3..ec78f3ee555 100644 --- a/.github/ISSUE_TEMPLATE/browser.yml +++ b/.github/ISSUE_TEMPLATE/browser.yml @@ -91,3 +91,11 @@ body: description: What version of our software are you running? (go to "Settings" → "About" in the extension) validations: required: true + - type: checkboxes + id: issue-tracking-info + attributes: + label: Issue Tracking Info + description: | + Issue tracking information + options: + - label: I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress. diff --git a/.github/ISSUE_TEMPLATE/cli.yml b/.github/ISSUE_TEMPLATE/cli.yml index 3a54a40477d..699bcc77052 100644 --- a/.github/ISSUE_TEMPLATE/cli.yml +++ b/.github/ISSUE_TEMPLATE/cli.yml @@ -80,3 +80,11 @@ body: description: What version of our software are you running? (run `bw --version`) validations: required: true + - type: checkboxes + id: issue-tracking-info + attributes: + label: Issue Tracking Info + description: | + Issue tracking information + options: + - label: I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress. diff --git a/.github/ISSUE_TEMPLATE/desktop.yml b/.github/ISSUE_TEMPLATE/desktop.yml index 94b72a0020d..8da7b28588d 100644 --- a/.github/ISSUE_TEMPLATE/desktop.yml +++ b/.github/ISSUE_TEMPLATE/desktop.yml @@ -83,3 +83,11 @@ body: description: What version of our software are you running? (go to "Help" → "About Bitwarden" in the app) validations: required: true + - type: checkboxes + id: issue-tracking-info + attributes: + label: Issue Tracking Info + description: | + Issue tracking information + options: + - label: I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress. diff --git a/.github/ISSUE_TEMPLATE/web.yml b/.github/ISSUE_TEMPLATE/web.yml index ef995e662ce..80429112fbd 100644 --- a/.github/ISSUE_TEMPLATE/web.yml +++ b/.github/ISSUE_TEMPLATE/web.yml @@ -91,3 +91,11 @@ body: description: What version of our software are you running? (Bottom of the page) validations: required: true + - type: checkboxes + id: issue-tracking-info + attributes: + label: Issue Tracking Info + description: | + Issue tracking information + options: + - label: I understand that work is tracked outside of Github. A PR will be linked to this issue should one be opened to address it, but Bitwarden doesn't use fields like "assigned", "milestone", or "project" to track progress. From a9ebed0d8d8cdf672a2a55883e0b786ad3564a4f Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Mon, 17 Oct 2022 19:57:51 +0200 Subject: [PATCH 56/82] [PS-1674] Correct truncation of ciphers in browser (#3792) --- .../components/cipher-row.component.html | 36 ++++++++++--------- apps/browser/src/popup/scss/box.scss | 13 +++++++ .../src/app/vault/ciphers.component.html | 36 ++++++++++--------- apps/desktop/src/scss/list.scss | 13 +++++++ 4 files changed, 64 insertions(+), 34 deletions(-) diff --git a/apps/browser/src/popup/components/cipher-row.component.html b/apps/browser/src/popup/components/cipher-row.component.html index fce966adb4d..ebb18bebe83 100644 --- a/apps/browser/src/popup/components/cipher-row.component.html +++ b/apps/browser/src/popup/components/cipher-row.component.html @@ -15,23 +15,25 @@
    - {{ cipher.name | ellipsis: 20 }} - - - {{ "shared" | i18n }} - - - - {{ "attachments" | i18n }} - + + {{ cipher.name }} + + + {{ "shared" | i18n }} + + + + {{ "attachments" | i18n }} + + {{ cipher.subTitle }}
    diff --git a/apps/browser/src/popup/scss/box.scss b/apps/browser/src/popup/scss/box.scss index 6e0b6f9356a..7be206cbf3a 100644 --- a/apps/browser/src/popup/scss/box.scss +++ b/apps/browser/src/popup/scss/box.scss @@ -692,3 +692,16 @@ } } } + +.truncate-box { + display: flex; + align-items: center; + gap: 5px; +} + +.truncate { + display: inline-block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/apps/desktop/src/app/vault/ciphers.component.html b/apps/desktop/src/app/vault/ciphers.component.html index 0b324cf0edb..478b46b9273 100644 --- a/apps/desktop/src/app/vault/ciphers.component.html +++ b/apps/desktop/src/app/vault/ciphers.component.html @@ -24,23 +24,25 @@
    - {{ c.name | ellipsis }} - - - {{ "shared" | i18n }} - - - - {{ "attachments" | i18n }} - + + {{ c.name }} + + + {{ "shared" | i18n }} + + + + {{ "attachments" | i18n }} + + {{ c.subTitle }}
    diff --git a/apps/desktop/src/scss/list.scss b/apps/desktop/src/scss/list.scss index 343dd550f0c..ec56eaa6c88 100644 --- a/apps/desktop/src/scss/list.scss +++ b/apps/desktop/src/scss/list.scss @@ -152,3 +152,16 @@ height: 100%; overflow-y: auto; } + +.truncate-box { + display: flex; + align-items: center; + gap: 5px; +} + +.truncate { + display: inline-block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} From fcd388e888d9675ea0aa24ceb5a6f811e82bfe1a Mon Sep 17 00:00:00 2001 From: Jaclyn Touchstone <95641831+jtouchstonebw@users.noreply.github.com> Date: Mon, 17 Oct 2022 13:25:55 -0500 Subject: [PATCH 57/82] Create banner.stories.mdx (#3695) * Create banner.stories.mdx Added documentation for Banner component in Common * Update banner.stories.mdx Added comment to test verification * Update banner.stories.mdx Removing test comment * Trying our referencing stories in banner mdx * fix: build errors * Added stories for banner info, warning, danger * Formatting update libs/components/src/banner/banner.stories.ts Co-authored-by: Oscar Hinton * Update banner.stories.mdx Added list formatting to text for readability, added section for Accessibility * Update libs/components/src/stories/banner.stories.mdx Co-authored-by: Andreas Coroiu * Update libs/components/src/stories/banner.stories.mdx Co-authored-by: Andreas Coroiu * Updated banner.stories.mdx Added section for Accessibility, improvements to text formatting for readability Co-authored-by: Andreas Coroiu Co-authored-by: Oscar Hinton Co-authored-by: Andreas Coroiu --- libs/components/src/banner/banner.stories.ts | 5 +- .../components/src/stories/banner.stories.mdx | 49 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 libs/components/src/stories/banner.stories.mdx diff --git a/libs/components/src/banner/banner.stories.ts b/libs/components/src/banner/banner.stories.ts index 693731e372b..19421da9768 100644 --- a/libs/components/src/banner/banner.stories.ts +++ b/libs/components/src/banner/banner.stories.ts @@ -37,7 +37,10 @@ export default { const Template: Story = (args: BannerComponent) => ({ props: args, template: ` - Content Really Long Text Lorem Ipsum Ipsum Ipsum + + Content Really Long Text Lorem Ipsum Ipsum Ipsum + + `, }); diff --git a/libs/components/src/stories/banner.stories.mdx b/libs/components/src/stories/banner.stories.mdx new file mode 100644 index 00000000000..98e14ef0473 --- /dev/null +++ b/libs/components/src/stories/banner.stories.mdx @@ -0,0 +1,49 @@ +import { Meta, Story } from "@storybook/addon-docs"; + + + +# Banner + +Banners are used for important communication with the user that needs to be seen right away, but has little effect on the experience. Banners appear at the top of the user's screen on page load and persist across all pages a user navigates to. + +- They should always be dismissable and never use a timeout. If a user dismisses a banner, it should not reappear during that same active session. + +- Use banners sparingly, as they can feel intrusive to the user if they appear unexpectedly. Their effectiveness may decrease if too many are used. + +- Avoid stacking multiple banners. + +- Banners support a button link (text button). + +## Types + +Icons should remain consistent across these types. Do not change the icon without consulting designers. + +Use the following guidelines to help choose the correct type of banner. + +### Premium + + + +Used primarily to encourage user to upgrade to premium. + +### Info + + + +Used to communicate release notes, server maintenance or other informative event. + +### Warning + + + +Used to alert the user of outdated info or versions. + +### Danger + + + +Rarely used, but may be used to alert users over critical messages or very outdated versions. + +## Accessibility + +Include `role="status" aria-live="polite"` attributes to ensure screen readers announce the content prior to the test of the page. From 04aebbc3bcd933940e5346fe9723bb1f5bc2b95e Mon Sep 17 00:00:00 2001 From: Thomas Rittson <31796059+eliykat@users.noreply.github.com> Date: Tue, 18 Oct 2022 12:00:40 +1000 Subject: [PATCH 58/82] Use settings in base.json and merge config keys (#3804) --- apps/browser/config/config.js | 19 +++++++++++++++++-- apps/desktop/config/config.js | 19 +++++++++++++++++-- apps/web/config.js | 26 ++++++++++++++++++++------ 3 files changed, 54 insertions(+), 10 deletions(-) diff --git a/apps/browser/config/config.js b/apps/browser/config/config.js index 81e2d619fee..d437f6361f6 100644 --- a/apps/browser/config/config.js +++ b/apps/browser/config/config.js @@ -1,7 +1,22 @@ function load(envName) { + const base = loadConfig("base"); + const env = loadConfig(envName); + const local = loadConfig("local"); + return { - ...loadConfig(envName), - ...loadConfig("local"), + ...base, + ...env, + ...local, + flags: { + ...base.flags, + ...env.flags, + ...local.flags, + }, + devFlags: { + ...base.devFlags, + ...env.devFlags, + ...local.devFlags, + }, }; } diff --git a/apps/desktop/config/config.js b/apps/desktop/config/config.js index 2e3347321d7..404295dd0db 100644 --- a/apps/desktop/config/config.js +++ b/apps/desktop/config/config.js @@ -1,7 +1,22 @@ function load(envName) { + const base = loadConfig("base"); + const env = loadConfig(envName); + const local = loadConfig("local"); + return { - ...loadConfig(envName), - ...loadConfig("local"), + ...base, + ...env, + ...local, + flags: { + ...base.flags, + ...env.flags, + ...local.flags, + }, + devFlags: { + ...base.devFlags, + ...env.devFlags, + ...local.devFlags, + }, }; } diff --git a/apps/web/config.js b/apps/web/config.js index 2bfc929d354..72ccf4b90ad 100644 --- a/apps/web/config.js +++ b/apps/web/config.js @@ -1,12 +1,26 @@ function load(envName) { + const base = require("./config/base.json"); + const env = loadConfig(envName); + const local = loadConfig("local"); + return { - ...require("./config/base.json"), - ...loadConfig(envName), - ...loadConfig("local"), + ...base, + ...env, + ...local, dev: { - ...require("./config/base.json").dev, - ...loadConfig(envName).dev, - ...loadConfig("local").dev, + ...base.dev, + ...env.dev, + ...local.dev, + }, + flags: { + ...base.flags, + ...env.flags, + ...local.flags, + }, + devFlags: { + ...base.devFlags, + ...env.devFlags, + ...local.devFlags, }, }; } From a7fdd40d70c804997236f3a16f56bfdcc5529884 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Tue, 18 Oct 2022 10:05:33 +0200 Subject: [PATCH 59/82] Add CI check to forbid filenames with capital letters in them (#3807) --- .github/whitelist-capital-letters.txt | 634 ++++++++++++++++++++++++++ .github/workflows/lint.yml | 13 + 2 files changed, 647 insertions(+) create mode 100644 .github/whitelist-capital-letters.txt diff --git a/.github/whitelist-capital-letters.txt b/.github/whitelist-capital-letters.txt new file mode 100644 index 00000000000..f2785c369ad --- /dev/null +++ b/.github/whitelist-capital-letters.txt @@ -0,0 +1,634 @@ +./bitwarden_license/README.md +./bitwarden_license/bit-web/src/app/providers/services/webProvider.service.ts +./libs/angular/src/directives/cipherListVirtualScroll.directive.ts +./libs/angular/src/scss/webfonts/Open_Sans-italic-700.woff +./libs/angular/src/scss/webfonts/Open_Sans-normal-300.woff +./libs/angular/src/scss/webfonts/Open_Sans-normal-700.woff +./libs/angular/src/scss/webfonts/Open_Sans-italic-300.woff +./libs/angular/src/scss/webfonts/Open_Sans-italic-600.woff +./libs/angular/src/scss/webfonts/Open_Sans-italic-800.woff +./libs/angular/src/scss/webfonts/Open_Sans-italic-400.woff +./libs/angular/src/scss/webfonts/Open_Sans-normal-600.woff +./libs/angular/src/scss/webfonts/Open_Sans-normal-800.woff +./libs/angular/src/scss/webfonts/Open_Sans-normal-400.woff +./libs/angular/src/components/captchaProtected.component.ts +./libs/angular/src/validators/inputsFieldMatch.validator.ts +./libs/angular/src/validators/notAllowedValueAsync.validator.ts +./libs/angular/src/services/passwordReprompt.service.ts +./libs/angular/src/services/theming/themeBuilder.ts +./libs/angular/src/interfaces/selectOptions.ts +./libs/components/src/stories/Introduction.stories.mdx +./libs/common/spec/misc/logInStrategies/logIn.strategy.spec.ts +./libs/common/spec/misc/logInStrategies/apiLogIn.strategy.spec.ts +./libs/common/spec/misc/logInStrategies/passwordLogIn.strategy.spec.ts +./libs/common/spec/misc/logInStrategies/ssoLogIn.strategy.spec.ts +./libs/common/spec/importers/testData/safeInCloud/testData.xml.ts +./libs/common/spec/importers/testData/safariCsv/oldSimplePasswordData.csv.ts +./libs/common/spec/importers/testData/safariCsv/simplePasswordData.csv.ts +./libs/common/spec/importers/testData/keeperJson/testData.ts +./libs/common/spec/importers/testData/bitwardenJson/passwordProtected.json.ts +./libs/common/spec/importers/testData/onePassword1Pux/SoftwareLicense.ts +./libs/common/spec/importers/testData/onePassword1Pux/SecureNote.ts +./libs/common/spec/importers/testData/onePassword1Pux/Emailfield.ts +./libs/common/spec/importers/testData/onePassword1Pux/CreditCard.ts +./libs/common/spec/importers/testData/onePassword1Pux/LoginData.ts +./libs/common/spec/importers/testData/onePassword1Pux/WirelessRouter.ts +./libs/common/spec/importers/testData/onePassword1Pux/SanitizedExport.ts +./libs/common/spec/importers/testData/onePassword1Pux/Membership.ts +./libs/common/spec/importers/testData/onePassword1Pux/OutdoorLicense.ts +./libs/common/spec/importers/testData/onePassword1Pux/EmailAccount.ts +./libs/common/spec/importers/testData/onePassword1Pux/Password.ts +./libs/common/spec/importers/testData/onePassword1Pux/RewardsProgram.ts +./libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity_Prefilled.ts +./libs/common/spec/importers/testData/onePassword1Pux/EmailfieldOnIdentity.ts +./libs/common/spec/importers/testData/onePassword1Pux/DriversLicense.ts +./libs/common/spec/importers/testData/onePassword1Pux/Database.ts +./libs/common/spec/importers/testData/onePassword1Pux/Passport.ts +./libs/common/spec/importers/testData/onePassword1Pux/Onepux_example.ts +./libs/common/spec/importers/testData/onePassword1Pux/BankAccount.ts +./libs/common/spec/importers/testData/onePassword1Pux/MedicalRecord.ts +./libs/common/spec/importers/testData/onePassword1Pux/IdentityData.ts +./libs/common/spec/importers/testData/onePassword1Pux/Server.ts +./libs/common/spec/importers/testData/onePassword1Pux/APICredentials.ts +./libs/common/spec/importers/testData/onePassword1Pux/SSN.ts +./libs/common/spec/importers/testData/onePasswordCsv/creditCard.windows.csv.ts +./libs/common/spec/importers/testData/onePasswordCsv/creditCard.mac.csv.ts +./libs/common/spec/importers/testData/onePasswordCsv/multipleItems.windows.csv.ts +./libs/common/spec/importers/testData/onePasswordCsv/multipleItems.mac.csv.ts +./libs/common/spec/importers/testData/nordpassCsv/nordpass.secureNote.csv.ts +./libs/common/spec/importers/testData/dashlaneCsv/multiplePersonalInfo.csv.ts +./libs/common/spec/importers/testData/dashlaneCsv/personalInfo.csv.ts +./libs/common/spec/importers/testData/mykiCsv/UserIdCard.csv.ts +./libs/common/spec/importers/testData/mykiCsv/UserTwofa.csv.ts +./libs/common/spec/importers/testData/mykiCsv/UserNote.csv.ts +./libs/common/spec/importers/testData/mykiCsv/UserAccount.csv.ts +./libs/common/spec/importers/testData/mykiCsv/UserIdentity.csv.ts +./libs/common/spec/importers/testData/mykiCsv/UserCreditCard.csv.ts +./libs/common/spec/importers/testData/firefoxCsv/firefoxAccountsData.csv.ts +./libs/common/spec/importers/testData/firefoxCsv/simplePasswordData.csv.ts +./libs/common/spec/importers/fsecureFskImporter.spec.ts +./libs/common/spec/importers/safariCsvImporter.spec.ts +./libs/common/spec/importers/keeperJsonImporter.spec.ts +./libs/common/spec/importers/bitwardenPasswordProtectedImporter.spec.ts +./libs/common/spec/importers/dashlaneCsvImporter.spec.ts +./libs/common/spec/importers/nordpassCsvImporter.spec.ts +./libs/common/spec/importers/onepasswordWinCsvImporter.spec.ts +./libs/common/spec/importers/firefoxCsvImporter.spec.ts +./libs/common/spec/importers/onepassword1PuxImporter.spec.ts +./libs/common/spec/importers/onepasswordMacCsvImporter.spec.ts +./libs/common/spec/importers/lastpassCsvImporter.spec.ts +./libs/common/spec/importers/onepassword1PifImporter.spec.ts +./libs/common/spec/importers/keepass2XmlImporter.spec.ts +./libs/common/spec/importers/bitwardenJsonImporter.spec.ts +./libs/common/spec/importers/mykiCsvImporter.spec.ts +./libs/common/spec/web/services/webCryptoFunction.service.spec.ts +./libs/common/spec/shared/interceptConsole.ts +./libs/common/spec/models/view/passwordHistoryView.spec.ts +./libs/common/spec/models/view/cipherView.spec.ts +./libs/common/spec/models/view/folderView.spec.ts +./libs/common/spec/models/view/attachmentView.spec.ts +./libs/common/spec/models/view/loginView.spec.ts +./libs/common/spec/models/domain/loginUri.spec.ts +./libs/common/spec/models/domain/encString.spec.ts +./libs/common/spec/models/domain/secureNote.spec.ts +./libs/common/spec/models/domain/symmetricCryptoKey.spec.ts +./libs/common/spec/models/domain/encArrayBuffer.spec.ts +./libs/common/spec/models/domain/sendAccess.spec.ts +./libs/common/spec/models/domain/sendFile.spec.ts +./libs/common/spec/models/domain/sendText.spec.ts +./libs/common/spec/matchers/toEqualBuffer.spec.ts +./libs/common/spec/matchers/toEqualBuffer.ts +./libs/common/spec/services/stateMigration.service.spec.ts +./libs/common/spec/services/consoleLog.service.spec.ts +./libs/common/src/misc/logInStrategies/ssoLogin.strategy.ts +./libs/common/src/misc/logInStrategies/passwordLogin.strategy.ts +./libs/common/src/misc/logInStrategies/apiLogin.strategy.ts +./libs/common/src/misc/logInStrategies/passwordlessLogin.strategy.ts +./libs/common/src/misc/logInStrategies/logIn.strategy.ts +./libs/common/src/misc/nodeUtils.ts +./libs/common/src/misc/linkedFieldOption.decorator.ts +./libs/common/src/misc/serviceUtils.ts +./libs/common/src/types/twoFactorResponse.ts +./libs/common/src/types/authResponse.ts +./libs/common/src/types/syncEventArgs.ts +./libs/common/src/importers/enpassJsonImporter.ts +./libs/common/src/importers/firefoxCsvImporter.ts +./libs/common/src/importers/rememBearCsvImporter.ts +./libs/common/src/importers/ascendoCsvImporter.ts +./libs/common/src/importers/passwordDragonXmlImporter.ts +./libs/common/src/importers/passkeepCsvImporter.ts +./libs/common/src/importers/gnomeJsonImporter.ts +./libs/common/src/importers/secureSafeCsvImporter.ts +./libs/common/src/importers/zohoVaultCsvImporter.ts +./libs/common/src/importers/dashlaneImporters/dashlaneCsvImporter.ts +./libs/common/src/importers/dashlaneImporters/types/dashlaneCsvTypes.ts +./libs/common/src/importers/dashlaneImporters/dashlaneJsonImporter.ts +./libs/common/src/importers/chromeCsvImporter.ts +./libs/common/src/importers/meldiumCsvImporter.ts +./libs/common/src/importers/safariCsvImporter.ts +./libs/common/src/importers/msecureCsvImporter.ts +./libs/common/src/importers/buttercupCsvImporter.ts +./libs/common/src/importers/kasperskyTxtImporter.ts +./libs/common/src/importers/baseImporter.ts +./libs/common/src/importers/keepassxCsvImporter.ts +./libs/common/src/importers/encryptrCsvImporter.ts +./libs/common/src/importers/passwordWalletTxtImporter.ts +./libs/common/src/importers/codebookCsvImporter.ts +./libs/common/src/importers/nordpassCsvImporter.ts +./libs/common/src/importers/avastJsonImporter.ts +./libs/common/src/importers/blurCsvImporter.ts +./libs/common/src/importers/safeInCloudXmlImporter.ts +./libs/common/src/importers/enpassCsvImporter.ts +./libs/common/src/importers/saferpassCsvImport.ts +./libs/common/src/importers/keeperImporters/types/keeperJsonTypes.ts +./libs/common/src/importers/keeperImporters/keeperCsvImporter.ts +./libs/common/src/importers/keeperImporters/keeperJsonImporter.ts +./libs/common/src/importers/fsecureFskImporter.ts +./libs/common/src/importers/clipperzHtmlImporter.ts +./libs/common/src/importers/keepass2XmlImporter.ts +./libs/common/src/importers/stickyPasswordXmlImporter.ts +./libs/common/src/importers/aviraCsvImporter.ts +./libs/common/src/importers/bitwardenPasswordProtectedImporter.ts +./libs/common/src/importers/avastCsvImporter.ts +./libs/common/src/importers/mykiCsvImporter.ts +./libs/common/src/importers/logMeOnceCsvImporter.ts +./libs/common/src/importers/upmCsvImporter.ts +./libs/common/src/importers/yotiCsvImporter.ts +./libs/common/src/importers/roboformCsvImporter.ts +./libs/common/src/importers/passwordBossJsonImporter.ts +./libs/common/src/importers/splashIdCsvImporter.ts +./libs/common/src/importers/passmanJsonImporter.ts +./libs/common/src/importers/bitwardenCsvImporter.ts +./libs/common/src/importers/lastpassCsvImporter.ts +./libs/common/src/importers/bitwardenJsonImporter.ts +./libs/common/src/importers/passwordAgentCsvImporter.ts +./libs/common/src/importers/passpackCsvImporter.ts +./libs/common/src/importers/truekeyCsvImporter.ts +./libs/common/src/importers/blackBerryCsvImporter.ts +./libs/common/src/importers/importError.ts +./libs/common/src/importers/padlockCsvImporter.ts +./libs/common/src/importers/onepasswordImporters/types/onepassword1PuxImporterTypes.ts +./libs/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts +./libs/common/src/importers/onepasswordImporters/cipherImportContext.ts +./libs/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts +./libs/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts +./libs/common/src/importers/onepasswordImporters/onepassword1PuxImporter.ts +./libs/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts +./libs/common/src/importers/passwordSafeXmlImporter.ts +./libs/common/src/enums/kdfType.ts +./libs/common/src/enums/fileUploadType.ts +./libs/common/src/enums/cipherType.ts +./libs/common/src/enums/twoFactorProviderType.ts +./libs/common/src/enums/clientType.ts +./libs/common/src/enums/encryptedExportType.ts +./libs/common/src/enums/linkedIdType.ts +./libs/common/src/enums/sendType.ts +./libs/common/src/enums/importOptions.ts +./libs/common/src/enums/policyType.ts +./libs/common/src/enums/planSponsorshipType.ts +./libs/common/src/enums/encryptionType.ts +./libs/common/src/enums/htmlStorageLocation.ts +./libs/common/src/enums/providerUserType.ts +./libs/common/src/enums/organizationUserStatusType.ts +./libs/common/src/enums/verificationType.ts +./libs/common/src/enums/notificationType.ts +./libs/common/src/enums/keySuffixOptions.ts +./libs/common/src/enums/productType.ts +./libs/common/src/enums/scimProviderType.ts +./libs/common/src/enums/eventType.ts +./libs/common/src/enums/organizationApiKeyType.ts +./libs/common/src/enums/hashPurpose.ts +./libs/common/src/enums/uriMatchType.ts +./libs/common/src/enums/deviceType.ts +./libs/common/src/enums/organizationConnectionType.ts +./libs/common/src/enums/secureNoteType.ts +./libs/common/src/enums/transactionType.ts +./libs/common/src/enums/providerUserStatusType.ts +./libs/common/src/enums/storageLocation.ts +./libs/common/src/enums/authenticationType.ts +./libs/common/src/enums/emergencyAccessType.ts +./libs/common/src/enums/themeType.ts +./libs/common/src/enums/logLevelType.ts +./libs/common/src/enums/planType.ts +./libs/common/src/enums/stateVersion.ts +./libs/common/src/enums/authenticationStatus.ts +./libs/common/src/enums/fieldType.ts +./libs/common/src/enums/paymentMethodType.ts +./libs/common/src/enums/ssoEnums.ts +./libs/common/src/enums/authRequestType.ts +./libs/common/src/enums/emergencyAccessStatusType.ts +./libs/common/src/enums/nativeMessagingVersion.ts +./libs/common/src/enums/cipherRepromptType.ts +./libs/common/src/enums/organizationUserType.ts +./libs/common/src/models/response/organization/organizationSsoResponse.ts +./libs/common/src/models/response/taxInfoResponse.ts +./libs/common/src/models/response/syncResponse.ts +./libs/common/src/models/response/taxRateResponse.ts +./libs/common/src/models/response/organizationKeysResponse.ts +./libs/common/src/models/response/authRequestResponse.ts +./libs/common/src/models/response/collectionResponse.ts +./libs/common/src/models/response/planResponse.ts +./libs/common/src/models/response/baseResponse.ts +./libs/common/src/models/response/twoFactorProviderResponse.ts +./libs/common/src/models/response/twoFactorAuthenticatorResponse.ts +./libs/common/src/models/response/billingResponse.ts +./libs/common/src/models/response/passwordHistoryResponse.ts +./libs/common/src/models/response/keyConnectorUserKeyResponse.ts +./libs/common/src/models/response/policyResponse.ts +./libs/common/src/models/response/organizationApiKeyInformationResponse.ts +./libs/common/src/models/response/profileProviderResponse.ts +./libs/common/src/models/response/preloginResponse.ts +./libs/common/src/models/response/identityCaptchaResponse.ts +./libs/common/src/models/response/profileResponse.ts +./libs/common/src/models/response/apiKeyResponse.ts +./libs/common/src/models/response/organizationUserBulkPublicKeyResponse.ts +./libs/common/src/models/response/sendFileUploadDataResponse.ts +./libs/common/src/models/response/userKeyResponse.ts +./libs/common/src/models/response/provider/providerOrganizationResponse.ts +./libs/common/src/models/response/provider/providerUserResponse.ts +./libs/common/src/models/response/provider/providerUserBulkPublicKeyResponse.ts +./libs/common/src/models/response/provider/providerResponse.ts +./libs/common/src/models/response/provider/providerUserBulkResponse.ts +./libs/common/src/models/response/billingHistoryResponse.ts +./libs/common/src/models/response/folderResponse.ts +./libs/common/src/models/response/billingPaymentResponse.ts +./libs/common/src/models/response/errorResponse.ts +./libs/common/src/models/response/organizationUserBulkResponse.ts +./libs/common/src/models/response/subscriptionResponse.ts +./libs/common/src/models/response/eventResponse.ts +./libs/common/src/models/response/ssoPreValidateResponse.ts +./libs/common/src/models/response/profileProviderOrganizationResponse.ts +./libs/common/src/models/response/sendAccessResponse.ts +./libs/common/src/models/response/organizationSubscriptionResponse.ts +./libs/common/src/models/response/groupResponse.ts +./libs/common/src/models/response/sendResponse.ts +./libs/common/src/models/response/listResponse.ts +./libs/common/src/models/response/twoFactorRescoverResponse.ts +./libs/common/src/models/response/identityTokenResponse.ts +./libs/common/src/models/response/cipherResponse.ts +./libs/common/src/models/response/profileOrganizationResponse.ts +./libs/common/src/models/response/organizationSponsorshipSyncStatusResponse.ts +./libs/common/src/models/response/organizationResponse.ts +./libs/common/src/models/response/globalDomainResponse.ts +./libs/common/src/models/response/domainsResponse.ts +./libs/common/src/models/response/attachmentUploadDataResponse.ts +./libs/common/src/models/response/selectionReadOnlyResponse.ts +./libs/common/src/models/response/paymentResponse.ts +./libs/common/src/models/response/organizationAutoEnrollStatusResponse.ts +./libs/common/src/models/response/keysResponse.ts +./libs/common/src/models/response/notificationResponse.ts +./libs/common/src/models/response/deviceVerificationResponse.ts +./libs/common/src/models/response/identityTwoFactorResponse.ts +./libs/common/src/models/response/organizationConnectionResponse.ts +./libs/common/src/models/response/organizationExportResponse.ts +./libs/common/src/models/response/deviceResponse.ts +./libs/common/src/models/response/authentication/registerResponse.ts +./libs/common/src/models/response/authentication/ICaptchaProtectedResponse.ts +./libs/common/src/models/response/organizationUserResponse.ts +./libs/common/src/models/response/twoFactorYubiKeyResponse.ts +./libs/common/src/models/response/breachAccountResponse.ts +./libs/common/src/models/response/twoFactorEmailResponse.ts +./libs/common/src/models/response/twoFactorWebAuthnResponse.ts +./libs/common/src/models/response/twoFactorDuoResponse.ts +./libs/common/src/models/response/attachmentResponse.ts +./libs/common/src/models/response/sendFileDownloadDataResponse.ts +./libs/common/src/models/response/emergencyAccessResponse.ts +./libs/common/src/models/request/organization/organizationSsoRequest.ts +./libs/common/src/models/request/organization/organizationSponsorshipCreateRequest.ts +./libs/common/src/models/request/organization/organizationSponsorshipRedeemRequest.ts +./libs/common/src/models/request/kvpRequest.ts +./libs/common/src/models/request/organizationImportGroupRequest.ts +./libs/common/src/models/request/storageRequest.ts +./libs/common/src/models/request/importDirectoryRequestGroup.ts +./libs/common/src/models/request/cipherBulkMoveRequest.ts +./libs/common/src/models/request/verifyEmailRequest.ts +./libs/common/src/models/request/deviceVerificationRequest.ts +./libs/common/src/models/request/deviceRequest.ts +./libs/common/src/models/request/cipherBulkShareRequest.ts +./libs/common/src/models/request/organizationUserBulkConfirmRequest.ts +./libs/common/src/models/request/emergencyAccessUpdateRequest.ts +./libs/common/src/models/request/passwordRequest.ts +./libs/common/src/models/request/updateTwoFactorAuthenticatorRequest.ts +./libs/common/src/models/request/folderRequest.ts +./libs/common/src/models/request/cipherBulkDeleteRequest.ts +./libs/common/src/models/request/importDirectoryRequest.ts +./libs/common/src/models/request/deleteRecoverRequest.ts +./libs/common/src/models/request/captchaProtectedRequest.ts +./libs/common/src/models/request/passwordHistoryRequest.ts +./libs/common/src/models/request/organizationCreateRequest.ts +./libs/common/src/models/request/bitPayInvoiceRequest.ts +./libs/common/src/models/request/updateTempPasswordRequest.ts +./libs/common/src/models/request/updateDomainsRequest.ts +./libs/common/src/models/request/organizationUserUpdateRequest.ts +./libs/common/src/models/request/twoFactorRecoveryRequest.ts +./libs/common/src/models/request/importOrganizationCiphersRequest.ts +./libs/common/src/models/request/updateTwoFactorWebAuthnDeleteRequest.ts +./libs/common/src/models/request/organizationUpdateRequest.ts +./libs/common/src/models/request/billingSyncConfigRequest.ts +./libs/common/src/models/request/importCiphersRequest.ts +./libs/common/src/models/request/organizationApiKeyRequest.ts +./libs/common/src/models/request/updateTwoFactorEmailRequest.ts +./libs/common/src/models/request/emailTokenRequest.ts +./libs/common/src/models/request/organizationUserConfirmRequest.ts +./libs/common/src/models/request/registerRequest.ts +./libs/common/src/models/request/cipherCreateRequest.ts +./libs/common/src/models/request/seatRequest.ts +./libs/common/src/models/request/sendAccessRequest.ts +./libs/common/src/models/request/setPasswordRequest.ts +./libs/common/src/models/request/cipherShareRequest.ts +./libs/common/src/models/request/verifyDeleteRecoverRequest.ts +./libs/common/src/models/request/identityToken/tokenRequest.ts +./libs/common/src/models/request/identityToken/apiTokenRequest.ts +./libs/common/src/models/request/identityToken/tokenRequestTwoFactor.ts +./libs/common/src/models/request/identityToken/ssoTokenRequest.ts +./libs/common/src/models/request/identityToken/passwordTokenRequest.ts +./libs/common/src/models/request/provider/providerUserConfirmRequest.ts +./libs/common/src/models/request/provider/providerOrganizationCreateRequest.ts +./libs/common/src/models/request/provider/providerUserUpdateRequest.ts +./libs/common/src/models/request/provider/providerUserBulkRequest.ts +./libs/common/src/models/request/provider/providerUpdateRequest.ts +./libs/common/src/models/request/provider/providerUserBulkConfirmRequest.ts +./libs/common/src/models/request/provider/providerUserAcceptRequest.ts +./libs/common/src/models/request/provider/providerUserInviteRequest.ts +./libs/common/src/models/request/provider/providerSetupRequest.ts +./libs/common/src/models/request/provider/providerAddOrganizationRequest.ts +./libs/common/src/models/request/cipherRequest.ts +./libs/common/src/models/request/groupRequest.ts +./libs/common/src/models/request/preloginRequest.ts +./libs/common/src/models/request/folderWithIdRequest.ts +./libs/common/src/models/request/selectionReadOnlyRequest.ts +./libs/common/src/models/request/kdfRequest.ts +./libs/common/src/models/request/organizationImportMemberRequest.ts +./libs/common/src/models/request/referenceEventRequest.ts +./libs/common/src/models/request/passwordHintRequest.ts +./libs/common/src/models/request/deviceTokenRequest.ts +./libs/common/src/models/request/organizationConnectionRequest.ts +./libs/common/src/models/request/emergencyAccessPasswordRequest.ts +./libs/common/src/models/request/organizationUserInviteRequest.ts +./libs/common/src/models/request/scimConfigRequest.ts +./libs/common/src/models/request/organizationUserUpdateGroupsRequest.ts +./libs/common/src/models/request/eventRequest.ts +./libs/common/src/models/request/iapCheckRequest.ts +./libs/common/src/models/request/organizationUpgradeRequest.ts +./libs/common/src/models/request/emergencyAccessInviteRequest.ts +./libs/common/src/models/request/twoFactorProviderRequest.ts +./libs/common/src/models/request/collectionRequest.ts +./libs/common/src/models/request/importDirectoryRequestUser.ts +./libs/common/src/models/request/secretVerificationRequest.ts +./libs/common/src/models/request/organizationUserBulkRequest.ts +./libs/common/src/models/request/taxInfoUpdateRequest.ts +./libs/common/src/models/request/emergencyAccessAcceptRequest.ts +./libs/common/src/models/request/updateTwoFactorDuoRequest.ts +./libs/common/src/models/request/sendWithIdRequest.ts +./libs/common/src/models/request/organizationTaxInfoUpdateRequest.ts +./libs/common/src/models/request/organizationUserAcceptRequest.ts +./libs/common/src/models/request/cipherBulkRestoreRequest.ts +./libs/common/src/models/request/emailRequest.ts +./libs/common/src/models/request/updateProfileRequest.ts +./libs/common/src/models/request/updateTwoFactorWebAuthnRequest.ts +./libs/common/src/models/request/emergencyAccessConfirmRequest.ts +./libs/common/src/models/request/passwordlessCreateAuthRequest.ts +./libs/common/src/models/request/verifyBankRequest.ts +./libs/common/src/models/request/keyConnectorUserKeyRequest.ts +./libs/common/src/models/request/organizationKeysRequest.ts +./libs/common/src/models/request/policyRequest.ts +./libs/common/src/models/request/organizationImportRequest.ts +./libs/common/src/models/request/account/setKeyConnectorKeyRequest.ts +./libs/common/src/models/request/account/verifyOTPRequest.ts +./libs/common/src/models/request/attachmentRequest.ts +./libs/common/src/models/request/cipherWithIdRequest.ts +./libs/common/src/models/request/updateKeyRequest.ts +./libs/common/src/models/request/twoFactorEmailRequest.ts +./libs/common/src/models/request/organizationSubscriptionUpdateRequest.ts +./libs/common/src/models/request/organizationUserResetPasswordEnrollmentRequest.ts +./libs/common/src/models/request/sendRequest.ts +./libs/common/src/models/request/keysRequest.ts +./libs/common/src/models/request/updateTwoFactorYubioOtpRequest.ts +./libs/common/src/models/request/paymentRequest.ts +./libs/common/src/models/request/organizationUserResetPasswordRequest.ts +./libs/common/src/models/request/cipherCollectionsRequest.ts +./libs/common/src/emailForwarders/fastmailForwarder.ts +./libs/common/src/emailForwarders/duckDuckGoForwarder.ts +./libs/common/src/emailForwarders/firefoxRelayForwarder.ts +./libs/common/src/emailForwarders/anonAddyForwarder.ts +./libs/common/src/emailForwarders/simpleLoginForwarder.ts +./libs/common/src/emailForwarders/forwarderOptions.ts +./libs/common/src/factories/accountFactory.ts +./libs/common/src/factories/globalStateFactory.ts +./libs/common/src/factories/stateFactory.ts +./libs/common/src/abstractions/userVerification/userVerification.service.abstraction.ts +./libs/common/src/abstractions/userVerification/userVerification-api.service.abstraction.ts +./libs/common/src/abstractions/platformUtils.service.ts +./libs/common/src/abstractions/stateMigration.service.ts +./libs/common/src/abstractions/fileDownload/fileDownloadBuilder.ts +./libs/common/src/abstractions/fileDownload/fileDownload.service.ts +./libs/common/src/abstractions/fileDownload/fileDownloadRequest.ts +./libs/common/src/abstractions/abstractEncrypt.service.ts +./libs/common/src/abstractions/passwordGeneration.service.ts +./libs/common/src/abstractions/passwordReprompt.service.ts +./libs/common/src/abstractions/formValidationErrors.service.ts +./libs/common/src/abstractions/vaultTimeout/vaultTimeoutSettings.service.ts +./libs/common/src/abstractions/vaultTimeout/vaultTimeout.service.ts +./libs/common/src/abstractions/fileUpload.service.ts +./libs/common/src/abstractions/cryptoFunction.service.ts +./libs/common/src/abstractions/keyConnector.service.ts +./libs/common/src/abstractions/anonymousHub.service.ts +./libs/common/src/abstractions/appId.service.ts +./libs/common/src/abstractions/usernameGeneration.service.ts +./libs/common/src/abstractions/twoFactor.service.ts +./libs/common/src/abstractions/sync/syncNotifier.service.abstraction.ts +./libs/common/src/services/userVerification/userVerification-api.service.ts +./libs/common/src/services/userVerification/userVerification.service.ts +./libs/common/src/services/azureFileUpload.service.ts +./libs/common/src/services/stateMigration.service.ts +./libs/common/src/services/passwordGeneration.service.ts +./libs/common/src/services/consoleLog.service.ts +./libs/common/src/services/formValidationErrors.service.ts +./libs/common/src/services/vaultTimeout/vaultTimeoutSettings.service.ts +./libs/common/src/services/vaultTimeout/vaultTimeout.service.ts +./libs/common/src/services/fileUpload.service.ts +./libs/common/src/services/keyConnector.service.ts +./libs/common/src/services/anonymousHub.service.ts +./libs/common/src/services/appId.service.ts +./libs/common/src/services/usernameGeneration.service.ts +./libs/common/src/services/noopMessaging.service.ts +./libs/common/src/services/twoFactor.service.ts +./libs/common/src/services/sync/syncNotifier.service.ts +./libs/common/src/services/memoryStorage.service.ts +./libs/common/src/services/bitwardenFileUpload.service.ts +./libs/common/src/services/webCryptoFunction.service.ts +./libs/common/src/interfaces/IEncrypted.ts +./libs/node/spec/cli/consoleLog.service.spec.ts +./libs/node/spec/services/nodeCryptoFunction.service.spec.ts +./libs/node/src/cli/models/response/baseResponse.ts +./libs/node/src/cli/models/response/stringResponse.ts +./libs/node/src/cli/models/response/fileResponse.ts +./libs/node/src/cli/models/response/messageResponse.ts +./libs/node/src/cli/models/response/listResponse.ts +./libs/node/src/cli/baseProgram.ts +./libs/node/src/cli/services/consoleLog.service.ts +./libs/node/src/cli/services/cliPlatformUtils.service.ts +./libs/node/src/services/nodeApi.service.ts +./libs/node/src/services/nodeCryptoFunction.service.ts +./libs/node/src/services/lowdbStorage.service.ts +./libs/electron/spec/services/electronLog.service.spec.ts +./libs/electron/src/baseMenu.ts +./libs/electron/src/services/electronLog.service.ts +./libs/electron/src/services/electronStorage.service.ts +./libs/electron/src/services/electronRendererMessaging.service.ts +./libs/electron/src/services/electronMainMessaging.service.ts +./libs/electron/src/services/electronPlatformUtils.service.ts +./libs/electron/src/services/electronRendererStorage.service.ts +./libs/electron/src/services/electronCrypto.service.ts +./libs/electron/src/services/electronRendererSecureStorage.service.ts +./README.md +./LICENSE_BITWARDEN.txt +./CONTRIBUTING.md +./.github/PULL_REQUEST_TEMPLATE.md +./LICENSE_GPL.txt +./LICENSE.txt +./apps/web/Dockerfile +./apps/web/README.md +./apps/desktop/resources/installerSidebar.bmp +./apps/desktop/resources/appx/SplashScreen.png +./apps/desktop/resources/appx/BadgeLogo.png +./apps/desktop/resources/appx/Square150x150Logo.png +./apps/desktop/resources/appx/StoreLogo.png +./apps/desktop/resources/appx/Wide310x150Logo.png +./apps/desktop/resources/appx/Square44x44Logo.png +./apps/desktop/native-messaging-test-runner/src/ipcService.ts +./apps/desktop/native-messaging-test-runner/src/nativeMessageService.ts +./apps/desktop/native-messaging-test-runner/src/logUtils.ts +./apps/desktop/README.md +./apps/desktop/desktop_native/Cargo.toml +./apps/desktop/desktop_native/Cargo.lock +./apps/desktop/SECURITY.md +./apps/desktop/src/app/services/desktopFileDownloadService.ts +./apps/desktop/src/models/nativeMessaging/unencryptedCommand.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessage.ts +./apps/desktop/src/models/nativeMessaging/legacyMessageWrapper.ts +./apps/desktop/src/models/nativeMessaging/unencryptedMessage.ts +./apps/desktop/src/models/nativeMessaging/unencryptedMessageResponse.ts +./apps/desktop/src/models/nativeMessaging/encryptedCommand.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessageResponse.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessageResponses/successStatusResponse.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessageResponses/generateResponse.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessageResponses/failureStatusResponse.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessageResponses/cannotDecryptErrorResponse.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessageResponses/userStatusErrorResponse.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessageResponses/accountStatusResponse.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessageResponses/encryptedMessageResponse.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessageResponses/cipherResponse.ts +./apps/desktop/src/models/nativeMessaging/decryptedCommandData.ts +./apps/desktop/src/models/nativeMessaging/messageCommon.ts +./apps/desktop/src/models/nativeMessaging/legacyMessage.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessagePayloads/credentialUpdatePayload.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessagePayloads/passwordGeneratePayload.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessagePayloads/credentialCreatePayload.ts +./apps/desktop/src/models/nativeMessaging/encryptedMessagePayloads/credentialRetrievePayload.ts +./apps/desktop/src/main/desktopCredentialStorageListener.ts +./apps/desktop/src/main/powerMonitor.main.ts +./apps/desktop/src/main/nativeMessaging.main.ts +./apps/desktop/src/services/passwordReprompt.service.ts +./apps/desktop/src/services/encryptedMessageHandlerService.ts +./apps/desktop/src/services/nativeMessaging.service.ts +./apps/desktop/src/services/nativeMessageHandler.service.ts +./apps/cli/stores/chocolatey/tools/VERIFICATION.txt +./apps/cli/README.md +./apps/cli/src/models/response/sendFileResponse.ts +./apps/cli/src/models/response/organizationCollectionResponse.ts +./apps/cli/src/models/response/collectionResponse.ts +./apps/cli/src/models/response/templateResponse.ts +./apps/cli/src/models/response/passwordHistoryResponse.ts +./apps/cli/src/models/response/folderResponse.ts +./apps/cli/src/models/response/loginResponse.ts +./apps/cli/src/models/response/sendAccessResponse.ts +./apps/cli/src/models/response/sendResponse.ts +./apps/cli/src/models/response/cipherResponse.ts +./apps/cli/src/models/response/organizationResponse.ts +./apps/cli/src/models/response/organizationUserResponse.ts +./apps/cli/src/models/response/sendTextResponse.ts +./apps/cli/src/models/response/attachmentResponse.ts +./apps/cli/src/models/selectionReadOnly.ts +./apps/cli/src/models/request/organizationCollectionRequest.ts +./apps/cli/src/commands/convertToKeyConnector.command.ts +./apps/cli/src/commands/send/removePassword.command.ts +./apps/cli/src/services/lowdbStorage.service.ts +./apps/cli/src/services/nodeEnvSecureStorage.service.ts +./apps/browser/README.md +./apps/browser/store/locales/en/screenshots/Firefox/Firefox02.png +./apps/browser/store/locales/en/screenshots/Firefox/Firefox03.png +./apps/browser/store/locales/en/screenshots/Firefox/Firefox01.png +./apps/browser/store/locales/en/screenshots/Firefox/Firefox04.png +./apps/browser/store/locales/en/screenshots/Firefox/Firefox05.png +./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge03.png +./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge02.png +./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge01.png +./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge05.png +./apps/browser/store/locales/en/screenshots/MicrosoftEdge/Edge04.png +./apps/browser/store/locales/en/screenshots/Chrome/Chrome01.png +./apps/browser/store/locales/en/screenshots/Chrome/Chrome02.png +./apps/browser/store/locales/en/screenshots/Chrome/Chrome03.png +./apps/browser/store/locales/en/screenshots/Chrome/Chrome04.png +./apps/browser/store/locales/en/screenshots/Chrome/Chrome05.png +./apps/browser/store/locales/en/screenshots/Opera/Opera01.png +./apps/browser/store/locales/en/screenshots/Opera/Opera03.png +./apps/browser/store/locales/en/screenshots/Opera/Opera02.png +./apps/browser/store/locales/en/screenshots/Opera/Opera05.png +./apps/browser/store/locales/en/screenshots/Opera/Opera04.png +./apps/browser/store/windows/AppxManifest.xml +./apps/browser/src/background/nativeMessaging.background.ts +./apps/browser/src/background/models/addLoginRuntimeMessage.ts +./apps/browser/src/background/models/addChangePasswordQueueMessage.ts +./apps/browser/src/background/models/addLoginQueueMessage.ts +./apps/browser/src/background/models/iconDetails.ts +./apps/browser/src/background/models/changePasswordRuntimeMessage.ts +./apps/browser/src/background/models/notificationQueueMessage.ts +./apps/browser/src/background/models/notificationQueueMessageType.ts +./apps/browser/src/background/models/lockedVaultPendingNotificationsItem.ts +./apps/browser/src/background/contextMenus.background.ts +./apps/browser/src/background/webRequest.background.ts +./apps/browser/src/popup/services/debounceNavigationService.ts +./apps/browser/src/content/contextMenuHandler.ts +./apps/browser/src/content/notificationBar.ts +./apps/browser/src/models/browserComponentState.ts +./apps/browser/src/models/autofillScript.ts +./apps/browser/src/models/browserSendComponentState.ts +./apps/browser/src/models/browserGroupingsComponentState.ts +./apps/browser/src/models/biometricErrors.ts +./apps/browser/src/models/autofillPageDetails.ts +./apps/browser/src/models/autofillForm.ts +./apps/browser/src/models/autofillField.ts +./apps/browser/src/browser/safariApp.ts +./apps/browser/src/browser/browserApi.ts +./apps/browser/src/safari/desktop/ViewController.swift +./apps/browser/src/safari/desktop/Assets.xcassets/AppIcon.appiconset/Contents.json +./apps/browser/src/safari/desktop/Assets.xcassets/AccentColor.colorset/Contents.json +./apps/browser/src/safari/desktop/Assets.xcassets/Contents.json +./apps/browser/src/safari/desktop/Base.lproj/Main.storyboard +./apps/browser/src/safari/desktop/AppDelegate.swift +./apps/browser/src/safari/desktop/Info.plist +./apps/browser/src/safari/safari/SafariWebExtensionHandler.swift +./apps/browser/src/safari/safari/Info.plist +./apps/browser/src/safari/desktop.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +./apps/browser/src/commands/autoFillActiveTabCommand.ts +./apps/browser/src/listeners/onCommandListener.ts +./apps/browser/src/listeners/onInstallListener.ts +./apps/browser/src/services/browserFileDownloadService.ts +./apps/browser/src/services/localBackedSessionStorage.service.spec.ts +./apps/browser/src/services/browserMessagingPrivateModeBackground.service.ts +./apps/browser/src/services/browserPlatformUtils.service.spec.ts +./apps/browser/src/services/browserMemoryStorage.service.ts +./apps/browser/src/services/vaultTimeout/vaultTimeout.service.ts +./apps/browser/src/services/browserCrypto.service.ts +./apps/browser/src/services/browserPlatformUtils.service.ts +./apps/browser/src/services/autofillConstants.ts +./apps/browser/src/services/abstractions/abstractKeyGeneration.service.ts +./apps/browser/src/services/browserLocalStorage.service.ts +./apps/browser/src/services/localBackedSessionStorage.service.ts +./apps/browser/src/services/vaultFilter.service.ts +./apps/browser/src/services/browserMessagingPrivateModePopup.service.ts +./apps/browser/src/services/browserMessaging.service.ts +./apps/browser/src/services/keyGeneration.service.ts +./apps/browser/src/services/abstractChromeStorageApi.service.ts +./SECURITY.md diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0e736752b8a..e3787735920 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -23,6 +23,19 @@ jobs: - name: Checkout repo uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846 # v3.0.0 + - name: Lint filenames (no capital characters) + run: | + find . -type f -name "*[[:upper:]]*" \ + ! -path "./node_modules/*" \ + ! -path "./coverage/*" \ + ! -path "*/dist/*" \ + ! -path "*/build/*" \ + ! -path "*/target/*" \ + ! -path "./.git/*" \ + ! -path "*/.DS_Store" \ + > tmp.txt + diff <(sort .github/whitelist-capital-letters.txt) <(sort tmp.txt) + - name: Set up Node uses: actions/setup-node@9ced9a43a244f3ac94f13bfd896db8c8f30da67a # v3.0.0 with: From 9e68d4dd4fbd91178686ad2c727afbc22bba7a11 Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Tue, 18 Oct 2022 10:20:20 +0200 Subject: [PATCH 60/82] [SM-296] Remove desktop security from the whitelist (#3822) --- .github/whitelist-capital-letters.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/whitelist-capital-letters.txt b/.github/whitelist-capital-letters.txt index f2785c369ad..fb928a67e8d 100644 --- a/.github/whitelist-capital-letters.txt +++ b/.github/whitelist-capital-letters.txt @@ -502,7 +502,6 @@ ./apps/desktop/README.md ./apps/desktop/desktop_native/Cargo.toml ./apps/desktop/desktop_native/Cargo.lock -./apps/desktop/SECURITY.md ./apps/desktop/src/app/services/desktopFileDownloadService.ts ./apps/desktop/src/models/nativeMessaging/unencryptedCommand.ts ./apps/desktop/src/models/nativeMessaging/encryptedMessage.ts From 817ac30fcc2c50a534dccbce374403c0075ae3ae Mon Sep 17 00:00:00 2001 From: Oscar Hinton Date: Tue, 18 Oct 2022 10:32:21 +0200 Subject: [PATCH 61/82] Whitelist 127.0.0.1:10000 for azurite (#3803) --- apps/web/webpack.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/web/webpack.config.js b/apps/web/webpack.config.js index 0382f428709..61b64ce9c5f 100644 --- a/apps/web/webpack.config.js +++ b/apps/web/webpack.config.js @@ -268,6 +268,7 @@ const devServer = https://client-analytics.braintreegateway.com https://*.braintree-api.com https://*.blob.core.windows.net + http://127.0.0.1:10000 https://app.simplelogin.io/api/alias/random/new https://quack.duckduckgo.com/api/email/addresses https://app.anonaddy.com/api/v1/aliases From 1ed5ea49f160c1d076979467b59ca53f6425c19c Mon Sep 17 00:00:00 2001 From: Daniel James Smith Date: Tue, 18 Oct 2022 13:09:25 +0200 Subject: [PATCH 62/82] Add job to close translation PRs (#3730) --- .github/workflows/automatic-issue-responses.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/automatic-issue-responses.yml b/.github/workflows/automatic-issue-responses.yml index 8fb18f6b1d8..16eefb03d22 100644 --- a/.github/workflows/automatic-issue-responses.yml +++ b/.github/workflows/automatic-issue-responses.yml @@ -62,3 +62,14 @@ jobs: As we haven’t heard from you about this problem in some time, this issue will now be closed. If this happens again or continues to be an problem, please respond to this issue with any additional detail to assist with reproduction and root cause analysis. + # Translation PR / Crowdin + - if: github.event.label.name == 'translation-pr' + name: Translation-PR + uses: peter-evans/close-issue@849549ba7c3a595a064c4b2c56f206ee78f93515 # v2.0.0 + with: + comment: | + We really appreciate you taking the time to improve our translations. + + However we use a translation tool called [Crowdin](https://crowdin.com/) to help manage our localization efforts across many different languages. Our translations can only be updated using Crowdin, so we'll have to close this PR, but would really appreciate if you'd consider joining our awesome translation community over at Crowdin. + + More information can be found in the [localization section](https://contributing.bitwarden.com/contributing/#localization-l10n) of our [Contribution Guidelines](https://contributing.bitwarden.com/contributing/) From a5abbecf39bb17433b5b007e075de1e891efa9e5 Mon Sep 17 00:00:00 2001 From: Danielle Flinn <43477473+danielleflinn@users.noreply.github.com> Date: Tue, 18 Oct 2022 07:54:27 -0700 Subject: [PATCH 63/82] Storybook docs structure (#3755) * updated naming of common to documentation * Add button docs * updated sort order Documentation is now above the component library and allows the general pages to come before the component specific ones. * fixed typos * updated file name * fixed typo in introduction.stories.mdx * updated banner.stories.mdx to match new docs structure * remove plural in button docs --- .storybook/preview.js | 5 ++ .../src/stories/Introduction.stories.mdx | 4 +- ...er.stories.mdx => banner-docs.stories.mdx} | 2 +- .../src/stories/button-docs.stories.mdx | 73 +++++++++++++++++++ .../components/src/stories/colors.stories.mdx | 2 +- libs/components/src/stories/icons.stories.mdx | 2 +- 6 files changed, 83 insertions(+), 5 deletions(-) rename libs/components/src/stories/{banner.stories.mdx => banner-docs.stories.mdx} (97%) create mode 100644 libs/components/src/stories/button-docs.stories.mdx diff --git a/.storybook/preview.js b/.storybook/preview.js index 8bc2510a082..754e8d2b884 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -12,6 +12,11 @@ export const parameters = { date: /Date$/, }, }, + options: { + storySort: { + order: ["Documentation", ["Introduction", "Colors", "Icons"], "Component Library"], + }, + }, docs: { inlineStories: true }, }; diff --git a/libs/components/src/stories/Introduction.stories.mdx b/libs/components/src/stories/Introduction.stories.mdx index 7b175b415d0..f9cc3813982 100644 --- a/libs/components/src/stories/Introduction.stories.mdx +++ b/libs/components/src/stories/Introduction.stories.mdx @@ -1,6 +1,6 @@ import { Meta } from "@storybook/addon-docs"; - +