mirror of
https://github.com/bitwarden/browser.git
synced 2024-09-28 04:08:47 +02:00
[PM-1877] Spellcheck (#5237)
* Bug fix: "vaule" -> "value" * Bug fix: "aria-descibedby" -> "aria-describedby" * Bug fix: "chararacter" -> "character" * Fix typos in comments * Fix typos in documentation * Fix typo in test description * Fix typos in sample data: "childen" -> "children" * Fix typos in sample data: "pargraphs" -> "paragraphs" * Fixes to test data: "Additinoal", "Informaion" -> "Additional", "Information" * Fix typo in test data: "dolhpin" -> "dolphin" * Fix typo in local variable: "attachement" -> "attachment" * Fix typo in method name: "detachOrganizastion" -> "detachOrganization" * Fix typo in method name: "getNewlyAddedDomians" -> "getNewlyAddedDomains" * Fix typo: "EncyptedMessageResponse" -> "EncryptedMessageResponse" * Fix typo: "miliseconds" -> "milliseconds" * Fix typo: "authResponsePushNotifiction" -> "authResponsePushNotification" * Fix typo: "getPushNotifcationObs" -> "getPushNotificationObs" * Fix typo: "ExpriationDate" -> "ExpirationDate" * Fix typo: "OrganizationUserResetPasswordDetailsReponse" -> "OrganizationUserResetPasswordDetailsResponse" * Fix typo: "DISPLAY_TITLE_ATTRIBUE" -> "DISPLAY_TITLE_ATTRIBUTE" * Fix typo: "credentialretreivalCommandHandler" -> "credentialRetrievalCommandHandler" * Fix typo: "buildLoginCredntials" -> "buildLoginCredentials" * Fix typo: "_mappedCredentialsColums" -> "_mappedCredentialsColumns" * Fix typo: "_mappedPersonalInfoAsIdentiyColumns" -> "_mappedPersonalInfoAsIdentityColumns" * Fix typo in input name: "StroageGbAdjustment" -> "StorageGbAdjustment" * Fix typo in const: "encryptionAlogrithm" -> "encryptionAlgorithm" --------- Co-authored-by: Daniel James Smith <djsmith@web.de>
This commit is contained in:
parent
ab25c69cdf
commit
9f7bf1132b
@ -5,7 +5,7 @@ export function registerAlarms() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates staggered alarms that periodically (1min) raise OnAlarm events. The staggering is calculated based on the numnber of alarms passed in.
|
* Creates staggered alarms that periodically (1min) raise OnAlarm events. The staggering is calculated based on the number of alarms passed in.
|
||||||
* @param numberOfAlarms Number of named alarms, that shall be registered
|
* @param numberOfAlarms Number of named alarms, that shall be registered
|
||||||
* @example
|
* @example
|
||||||
* // alarmsToBeCreated(2) results in 2 alarms separated by 30 seconds
|
* // alarmsToBeCreated(2) results in 2 alarms separated by 30 seconds
|
||||||
|
@ -146,7 +146,7 @@ export class CipherContextMenuHandler {
|
|||||||
const authStatus = await this.authService.getAuthStatus();
|
const authStatus = await this.authService.getAuthStatus();
|
||||||
await MainContextMenuHandler.removeAll();
|
await MainContextMenuHandler.removeAll();
|
||||||
if (authStatus !== AuthenticationStatus.Unlocked) {
|
if (authStatus !== AuthenticationStatus.Unlocked) {
|
||||||
// Should I pass in the auth status or even have two seperate methods for this
|
// Should I pass in the auth status or even have two separate methods for this
|
||||||
// on MainContextMenuHandler
|
// on MainContextMenuHandler
|
||||||
await this.mainContextMenuHandler.noAccess();
|
await this.mainContextMenuHandler.noAccess();
|
||||||
return;
|
return;
|
||||||
|
@ -440,7 +440,7 @@
|
|||||||
|
|
||||||
// get proper page title. maybe they are using the special meta tag?
|
// get proper page title. maybe they are using the special meta tag?
|
||||||
var theTitle = document.querySelector('[data-onepassword-title]')
|
var theTitle = document.querySelector('[data-onepassword-title]')
|
||||||
if (theTitle && theTitle.dataset[DISPLAY_TITLE_ATTRIBUE]) {
|
if (theTitle && theTitle.dataset[DISPLAY_TITLE_ATTRIBUTE]) {
|
||||||
pageDetails.displayTitle = theTitle.dataset.onepasswordTitle;
|
pageDetails.displayTitle = theTitle.dataset.onepasswordTitle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ export default class AutofillField {
|
|||||||
*/
|
*/
|
||||||
"label-top": string;
|
"label-top": string;
|
||||||
/**
|
/**
|
||||||
* The contatenated `innerText` or `textContent` of all elements that are HTML labels for the field
|
* The concatenated `innerText` or `textContent` of all elements that are HTML labels for the field
|
||||||
*/
|
*/
|
||||||
"label-tag": string;
|
"label-tag": string;
|
||||||
/**
|
/**
|
||||||
|
@ -80,7 +80,7 @@ export class ExcludedDomainsComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
async submit() {
|
async submit() {
|
||||||
const savedDomains: { [name: string]: null } = {};
|
const savedDomains: { [name: string]: null } = {};
|
||||||
const newExcludedDomains = this.getNewlyAddedDomians(this.excludedDomains);
|
const newExcludedDomains = this.getNewlyAddedDomains(this.excludedDomains);
|
||||||
for (const domain of this.excludedDomains) {
|
for (const domain of this.excludedDomains) {
|
||||||
const resp = newExcludedDomains.filter((e) => e.uri === domain.uri);
|
const resp = newExcludedDomains.filter((e) => e.uri === domain.uri);
|
||||||
if (resp.length === 0) {
|
if (resp.length === 0) {
|
||||||
@ -109,7 +109,7 @@ export class ExcludedDomainsComponent implements OnInit, OnDestroy {
|
|||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
getNewlyAddedDomians(domain: ExcludedDomain[]): ExcludedDomain[] {
|
getNewlyAddedDomains(domain: ExcludedDomain[]): ExcludedDomain[] {
|
||||||
const result = this.excludedDomains.filter(
|
const result = this.excludedDomains.filter(
|
||||||
(newDomain) =>
|
(newDomain) =>
|
||||||
!this.existingExcludedDomains.some((oldDomain) => newDomain.uri === oldDomain.uri)
|
!this.existingExcludedDomains.some((oldDomain) => newDomain.uri === oldDomain.uri)
|
||||||
|
@ -420,7 +420,7 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService
|
|||||||
autofillCommand = (await browser.commands.getAll()).find(
|
autofillCommand = (await browser.commands.getAll()).find(
|
||||||
(c) => c.name === "autofill_login"
|
(c) => c.name === "autofill_login"
|
||||||
).shortcut;
|
).shortcut;
|
||||||
// Firefox is returing Ctrl instead of Cmd for the modifier key on macOS if
|
// Firefox is returning Ctrl instead of Cmd for the modifier key on macOS if
|
||||||
// the command is the default one set on installation.
|
// the command is the default one set on installation.
|
||||||
if (
|
if (
|
||||||
(await browser.runtime.getPlatformInfo()).os === "mac" &&
|
(await browser.runtime.getPlatformInfo()).os === "mac" &&
|
||||||
|
@ -12,7 +12,7 @@ export default class VaultTimeoutService extends BaseVaultTimeoutService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is a work-around to safari adding an arbitary delay to setTimeout and
|
// This is a work-around to safari adding an arbitrary delay to setTimeout and
|
||||||
// setIntervals. It works by calling the native extension which sleeps for 10s,
|
// setIntervals. It works by calling the native extension which sleeps for 10s,
|
||||||
// efficiently replicating setInterval.
|
// efficiently replicating setInterval.
|
||||||
async checkSafari() {
|
async checkSafari() {
|
||||||
|
@ -94,7 +94,7 @@ export class SendAddEditComponent extends BaseAddEditComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async ngOnInit() {
|
async ngOnInit() {
|
||||||
// File visilibity
|
// File visibility
|
||||||
this.isFirefox = this.platformUtilsService.isFirefox();
|
this.isFirefox = this.platformUtilsService.isFirefox();
|
||||||
this.inPopout = this.popupUtilsService.inPopout(window);
|
this.inPopout = this.popupUtilsService.inPopout(window);
|
||||||
this.inSidebar = this.popupUtilsService.inSidebar(window);
|
this.inSidebar = this.popupUtilsService.inSidebar(window);
|
||||||
|
@ -47,7 +47,7 @@ const { name } = argv;
|
|||||||
const response = await nativeMessageService.credentialCreation(handshakeResponse.sharedKey, {
|
const response = await nativeMessageService.credentialCreation(handshakeResponse.sharedKey, {
|
||||||
name: name,
|
name: name,
|
||||||
userName: "SuperAwesomeUser",
|
userName: "SuperAwesomeUser",
|
||||||
password: "dolhpin",
|
password: "dolphin",
|
||||||
uri: "google.com",
|
uri: "google.com",
|
||||||
userId: activeUser.id,
|
userId: activeUser.id,
|
||||||
} as CredentialCreatePayload);
|
} as CredentialCreatePayload);
|
||||||
|
@ -128,7 +128,7 @@ export default class IPCService {
|
|||||||
this.getSocket().emit("message", message);
|
this.getSocket().emit("message", message);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Since we can not guarentee that a response message will ever be sent, we put a timeout
|
// Since we can not guarantee that a response message will ever be sent, we put a timeout
|
||||||
// on messages
|
// on messages
|
||||||
return race({
|
return race({
|
||||||
promise: deferred.getPromise(),
|
promise: deferred.getPromise(),
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
export const applicationName = "Native Messaging Test Runner";
|
export const applicationName = "Native Messaging Test Runner";
|
||||||
export const encryptionAlogrithm = "sha1";
|
export const encryptionAlgorithm = "sha1";
|
||||||
export const testRsaPublicKey =
|
export const testRsaPublicKey =
|
||||||
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl0Vawl/toXzkEvB82FEtqHP" +
|
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl0Vawl/toXzkEvB82FEtqHP" +
|
||||||
"4xlU2ab/v0crqIfXfIoWF/XXdHGIdrZeilnRXPPJT1B9dTsasttEZNnua/0Rek/cjNDHtzT52irfoZYS7X6HNIfOi54Q+egP" +
|
"4xlU2ab/v0crqIfXfIoWF/XXdHGIdrZeilnRXPPJT1B9dTsasttEZNnua/0Rek/cjNDHtzT52irfoZYS7X6HNIfOi54Q+egP" +
|
||||||
|
@ -161,7 +161,7 @@ export class AccountSwitcherComponent implements OnInit, OnDestroy {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// environmentUrls are stored on disk and must be retrieved seperatly from the in memory state offered from subscribing to accounts
|
// environmentUrls are stored on disk and must be retrieved separately from the in memory state offered from subscribing to accounts
|
||||||
baseAccounts[userId].settings.environmentUrls = await this.stateService.getEnvironmentUrls({
|
baseAccounts[userId].settings.environmentUrls = await this.stateService.getEnvironmentUrls({
|
||||||
userId: userId,
|
userId: userId,
|
||||||
});
|
});
|
||||||
|
@ -44,7 +44,7 @@ export class EncryptedMessageHandlerService {
|
|||||||
return await this.statusCommandHandler();
|
return await this.statusCommandHandler();
|
||||||
}
|
}
|
||||||
case "bw-credential-retrieval": {
|
case "bw-credential-retrieval": {
|
||||||
return await this.credentialretreivalCommandHandler(payload as CredentialRetrievePayload);
|
return await this.credentialRetrievalCommandHandler(payload as CredentialRetrievePayload);
|
||||||
}
|
}
|
||||||
case "bw-credential-create": {
|
case "bw-credential-create": {
|
||||||
return await this.credentialCreateCommandHandler(payload as CredentialCreatePayload);
|
return await this.credentialCreateCommandHandler(payload as CredentialCreatePayload);
|
||||||
@ -100,7 +100,7 @@ export class EncryptedMessageHandlerService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async credentialretreivalCommandHandler(
|
private async credentialRetrievalCommandHandler(
|
||||||
payload: CredentialRetrievePayload
|
payload: CredentialRetrievePayload
|
||||||
): Promise<CipherResponse[] | UserStatusErrorResponse> {
|
): Promise<CipherResponse[] | UserStatusErrorResponse> {
|
||||||
if (payload.uri == null) {
|
if (payload.uri == null) {
|
||||||
|
@ -181,7 +181,7 @@ export class PeopleComponent
|
|||||||
if (response != null) {
|
if (response != null) {
|
||||||
this.organization.hasPublicAndPrivateKeys =
|
this.organization.hasPublicAndPrivateKeys =
|
||||||
response.publicKey != null && response.privateKey != null;
|
response.publicKey != null && response.privateKey != null;
|
||||||
await this.syncService.fullSync(true); // Replace oganizations with new data
|
await this.syncService.fullSync(true); // Replace organizations with new data
|
||||||
} else {
|
} else {
|
||||||
throw new Error(this.i18nService.t("resetPasswordOrgKeysError"));
|
throw new Error(this.i18nService.t("resetPasswordOrgKeysError"));
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ import { WebPlatformUtilsService } from "./web-platform-utils.service";
|
|||||||
{
|
{
|
||||||
provide: SECURE_STORAGE,
|
provide: SECURE_STORAGE,
|
||||||
// TODO: platformUtilsService.isDev has a helper for this, but using that service here results in a circular dependency.
|
// TODO: platformUtilsService.isDev has a helper for this, but using that service here results in a circular dependency.
|
||||||
// We have a tech debt item in the backlog to break up platformUtilsService, but in the meantime simply checking the environement here is less cumbersome.
|
// We have a tech debt item in the backlog to break up platformUtilsService, but in the meantime simply checking the environment here is less cumbersome.
|
||||||
useClass: process.env.NODE_ENV === "development" ? HtmlStorageService : MemoryStorageService,
|
useClass: process.env.NODE_ENV === "development" ? HtmlStorageService : MemoryStorageService,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
id="storageAdjustment"
|
id="storageAdjustment"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
type="number"
|
type="number"
|
||||||
name="StroageGbAdjustment"
|
name="StorageGbAdjustment"
|
||||||
[(ngModel)]="storageAdjustment"
|
[(ngModel)]="storageAdjustment"
|
||||||
min="0"
|
min="0"
|
||||||
max="99"
|
max="99"
|
||||||
|
@ -294,7 +294,7 @@ export class ChangePasswordComponent extends BaseChangePasswordComponent {
|
|||||||
const response = await this.organizationApiService.getKeys(org.id);
|
const response = await this.organizationApiService.getKeys(org.id);
|
||||||
const publicKey = Utils.fromB64ToArray(response?.publicKey);
|
const publicKey = Utils.fromB64ToArray(response?.publicKey);
|
||||||
|
|
||||||
// Re-enroll - encrpyt user's encKey.key with organization public key
|
// Re-enroll - encrypt user's encKey.key with organization public key
|
||||||
const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);
|
const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);
|
||||||
|
|
||||||
// Create/Execute request
|
// Create/Execute request
|
||||||
|
@ -264,14 +264,14 @@ function createCipherView(i: number, deleted = false): CipherView {
|
|||||||
|
|
||||||
if (i === 0) {
|
if (i === 0) {
|
||||||
// Old attachment
|
// Old attachment
|
||||||
const attachement = new AttachmentView();
|
const attachment = new AttachmentView();
|
||||||
view.organizationId = null;
|
view.organizationId = null;
|
||||||
view.collectionIds = [];
|
view.collectionIds = [];
|
||||||
view.attachments = [attachement];
|
view.attachments = [attachment];
|
||||||
} else if (i % 5 === 0) {
|
} else if (i % 5 === 0) {
|
||||||
const attachement = new AttachmentView();
|
const attachment = new AttachmentView();
|
||||||
attachement.key = new SymmetricCryptoKey(new ArrayBuffer(32));
|
attachment.key = new SymmetricCryptoKey(new ArrayBuffer(32));
|
||||||
view.attachments = [attachement];
|
view.attachments = [attachment];
|
||||||
}
|
}
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
|
@ -26,7 +26,7 @@ export class VaultHeaderComponent {
|
|||||||
*/
|
*/
|
||||||
@Input() loading: boolean;
|
@Input() loading: boolean;
|
||||||
|
|
||||||
/** Current active fitler */
|
/** Current active filter */
|
||||||
@Input() filter: RoutedVaultFilterModel;
|
@Input() filter: RoutedVaultFilterModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="btn-col">
|
<div class="btn-col">
|
||||||
<button
|
<button
|
||||||
[attr.aria-descibedby]="'recoveryCodeTitle' | i18n"
|
[attr.aria-describedby]="'recoveryCodeTitle' | i18n"
|
||||||
type="button"
|
type="button"
|
||||||
class="btn btn-outline-secondary btn-sm"
|
class="btn btn-outline-secondary btn-sm"
|
||||||
(click)="recover()"
|
(click)="recover()"
|
||||||
|
@ -165,7 +165,7 @@ export class ClientsComponent implements OnInit {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.actionPromise = this.webProviderService.detachOrganizastion(
|
this.actionPromise = this.webProviderService.detachOrganization(
|
||||||
this.providerId,
|
this.providerId,
|
||||||
organization.id
|
organization.id
|
||||||
);
|
);
|
||||||
|
@ -28,7 +28,7 @@ export class WebProviderService {
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
async detachOrganizastion(providerId: string, organizationId: string): Promise<any> {
|
async detachOrganization(providerId: string, organizationId: string): Promise<any> {
|
||||||
await this.apiService.deleteProviderOrganization(providerId, organizationId);
|
await this.apiService.deleteProviderOrganization(providerId, organizationId);
|
||||||
await this.syncService.fullSync(true);
|
await this.syncService.fullSync(true);
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ export class AccessSelectorComponent implements OnInit {
|
|||||||
static readonly projectIcon = "bwi-collection";
|
static readonly projectIcon = "bwi-collection";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Emits the selected itemss on submit.
|
* Emits the selected items on submit.
|
||||||
*/
|
*/
|
||||||
@Output() onCreateAccessPolicies = new EventEmitter<SelectItemView[]>();
|
@Output() onCreateAccessPolicies = new EventEmitter<SelectItemView[]>();
|
||||||
@Output() onDeleteAccessPolicy = new EventEmitter<AccessSelectorRowView>();
|
@Output() onDeleteAccessPolicy = new EventEmitter<AccessSelectorRowView>();
|
||||||
|
@ -74,7 +74,7 @@ export class LoginWithDeviceComponent
|
|||||||
|
|
||||||
//gets signalR push notification
|
//gets signalR push notification
|
||||||
this.authService
|
this.authService
|
||||||
.getPushNotifcationObs$()
|
.getPushNotificationObs$()
|
||||||
.pipe(takeUntil(this.destroy$))
|
.pipe(takeUntil(this.destroy$))
|
||||||
.subscribe((id) => {
|
.subscribe((id) => {
|
||||||
this.confirmResponse(id);
|
this.confirmResponse(id);
|
||||||
@ -126,7 +126,7 @@ export class LoginWithDeviceComponent
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const credentials = await this.buildLoginCredntials(requestId, response);
|
const credentials = await this.buildLoginCredentials(requestId, response);
|
||||||
const loginResponse = await this.authService.logIn(credentials);
|
const loginResponse = await this.authService.logIn(credentials);
|
||||||
|
|
||||||
if (loginResponse.requiresTwoFactor) {
|
if (loginResponse.requiresTwoFactor) {
|
||||||
@ -189,7 +189,7 @@ export class LoginWithDeviceComponent
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async buildLoginCredntials(
|
private async buildLoginCredentials(
|
||||||
requestId: string,
|
requestId: string,
|
||||||
response: AuthRequestResponse
|
response: AuthRequestResponse
|
||||||
): Promise<PasswordlessLogInCredentials> {
|
): Promise<PasswordlessLogInCredentials> {
|
||||||
|
@ -17,7 +17,7 @@ export class ColorPasswordPipe implements PipeTransform {
|
|||||||
|
|
||||||
protected generateTemplate(
|
protected generateTemplate(
|
||||||
password: string,
|
password: string,
|
||||||
templateGenerator: (chararacter: string, type: string, index?: number) => string
|
templateGenerator: (character: string, type: string, index?: number) => string
|
||||||
) {
|
) {
|
||||||
// Convert to an array to handle cases that stings have special characters, ie: emoji.
|
// Convert to an array to handle cases that stings have special characters, ie: emoji.
|
||||||
const passwordArray = Array.from(password);
|
const passwordArray = Array.from(password);
|
||||||
|
@ -24,7 +24,7 @@ $card-icons-dark: (
|
|||||||
);
|
);
|
||||||
|
|
||||||
.credit-card-icon {
|
.credit-card-icon {
|
||||||
display: block; // Resolves the parent container being slighly to big
|
display: block; // Resolves the parent container being slightly to big
|
||||||
height: 19px;
|
height: 19px;
|
||||||
width: 24px;
|
width: 24px;
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
|
@ -211,7 +211,7 @@ export class GeneratorComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private normalizePasswordOptions() {
|
private normalizePasswordOptions() {
|
||||||
// Application level normalize options depedent on class variables
|
// Application level normalize options dependent on class variables
|
||||||
this.passwordOptions.ambiguous = !this.avoidAmbiguous;
|
this.passwordOptions.ambiguous = !this.avoidAmbiguous;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
|
@ -22,7 +22,7 @@ enum BrowserPath {
|
|||||||
|
|
||||||
enum DateField {
|
enum DateField {
|
||||||
DeletionDate = "deletion",
|
DeletionDate = "deletion",
|
||||||
ExpriationDate = "expiration",
|
ExpirationDate = "expiration",
|
||||||
}
|
}
|
||||||
|
|
||||||
// Value = hours
|
// Value = hours
|
||||||
@ -135,10 +135,10 @@ export class EffluxDatesComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const miliseconds = now.setTime(
|
const milliseconds = now.setTime(
|
||||||
now.getTime() + (this.selectedDeletionDatePreset.value as number) * 60 * 60 * 1000
|
now.getTime() + (this.selectedDeletionDatePreset.value as number) * 60 * 60 * 1000
|
||||||
);
|
);
|
||||||
return new Date(miliseconds).toString();
|
return new Date(milliseconds).toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -166,10 +166,10 @@ export class EffluxDatesComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const miliseconds = now.setTime(
|
const milliseconds = now.setTime(
|
||||||
now.getTime() + (this.selectedExpirationDatePreset.value as number) * 60 * 60 * 1000
|
now.getTime() + (this.selectedExpirationDatePreset.value as number) * 60 * 60 * 1000
|
||||||
);
|
);
|
||||||
return new Date(miliseconds).toString();
|
return new Date(milliseconds).toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -180,7 +180,7 @@ export class EffluxDatesComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get safariExpirationTimePresetOptions() {
|
get safariExpirationTimePresetOptions() {
|
||||||
return this.safariTimePresetOptions(DateField.ExpriationDate);
|
return this.safariTimePresetOptions(DateField.ExpirationDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private get nextWeek(): Date {
|
private get nextWeek(): Date {
|
||||||
@ -285,7 +285,7 @@ export class EffluxDatesComponent implements OnInit {
|
|||||||
|
|
||||||
// loop through each hour on a 12 hour system
|
// loop through each hour on a 12 hour system
|
||||||
for (let h = 1; h <= 12; h++) {
|
for (let h = 1; h <= 12; h++) {
|
||||||
// loop through each minute in the hour using the skip to incriment
|
// loop through each minute in the hour using the skip to increment
|
||||||
for (let m = 0; m < 60; m += minuteIncrementer) {
|
for (let m = 0; m < 60; m += minuteIncrementer) {
|
||||||
// init the final strings that will be added to the lists
|
// init the final strings that will be added to the lists
|
||||||
let hour = h.toString();
|
let hour = h.toString();
|
||||||
@ -333,7 +333,7 @@ export class EffluxDatesComponent implements OnInit {
|
|||||||
|
|
||||||
// determine if an unsupported value already exists on the send & add that to the top of the option list
|
// determine if an unsupported value already exists on the send & add that to the top of the option list
|
||||||
// example: if the Send was created with a different client
|
// example: if the Send was created with a different client
|
||||||
if (field === DateField.ExpriationDate && this.initialExpirationDate != null && this.editMode) {
|
if (field === DateField.ExpirationDate && this.initialExpirationDate != null && this.editMode) {
|
||||||
const previousValue: TimeOption = {
|
const previousValue: TimeOption = {
|
||||||
twelveHour: this.datePipe.transform(this.initialExpirationDate, "hh:mm a"),
|
twelveHour: this.datePipe.transform(this.initialExpirationDate, "hh:mm a"),
|
||||||
twentyFourHour: this.datePipe.transform(this.initialExpirationDate, "HH:mm"),
|
twentyFourHour: this.datePipe.transform(this.initialExpirationDate, "HH:mm"),
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* The inbuilt toEqual() matcher will always return TRUE when provided with 2 ArrayBuffers.
|
* The inbuilt toEqual() matcher will always return TRUE when provided with 2 ArrayBuffers.
|
||||||
* This is because an ArrayBuffer must be wrapped in a new Uint8Array to be accessible.
|
* This is because an ArrayBuffer must be wrapped in a new Uint8Array to be accessible.
|
||||||
* This custom matcher will automatically instantiate a new Uint8Array on the recieved value
|
* This custom matcher will automatically instantiate a new Uint8Array on the received value
|
||||||
* (and optionally, the expected value) and then call toEqual() on the resulting Uint8Arrays.
|
* (and optionally, the expected value) and then call toEqual() on the resulting Uint8Arrays.
|
||||||
*/
|
*/
|
||||||
export const toEqualBuffer: jest.CustomMatcher = function (
|
export const toEqualBuffer: jest.CustomMatcher = function (
|
||||||
|
@ -15,7 +15,7 @@ import {
|
|||||||
OrganizationUserBulkPublicKeyResponse,
|
OrganizationUserBulkPublicKeyResponse,
|
||||||
OrganizationUserBulkResponse,
|
OrganizationUserBulkResponse,
|
||||||
OrganizationUserDetailsResponse,
|
OrganizationUserDetailsResponse,
|
||||||
OrganizationUserResetPasswordDetailsReponse,
|
OrganizationUserResetPasswordDetailsResponse,
|
||||||
OrganizationUserUserDetailsResponse,
|
OrganizationUserUserDetailsResponse,
|
||||||
} from "./responses";
|
} from "./responses";
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ export abstract class OrganizationUserService {
|
|||||||
abstract getOrganizationUserResetPasswordDetails(
|
abstract getOrganizationUserResetPasswordDetails(
|
||||||
organizationId: string,
|
organizationId: string,
|
||||||
id: string
|
id: string
|
||||||
): Promise<OrganizationUserResetPasswordDetailsReponse>;
|
): Promise<OrganizationUserResetPasswordDetailsResponse>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create new organization user invite(s) for the specified organization
|
* Create new organization user invite(s) for the specified organization
|
||||||
|
@ -63,7 +63,7 @@ export class OrganizationUserDetailsResponse extends OrganizationUserResponse {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class OrganizationUserResetPasswordDetailsReponse extends BaseResponse {
|
export class OrganizationUserResetPasswordDetailsResponse extends BaseResponse {
|
||||||
kdf: KdfType;
|
kdf: KdfType;
|
||||||
kdfIterations: number;
|
kdfIterations: number;
|
||||||
kdfMemory?: number;
|
kdfMemory?: number;
|
||||||
|
@ -347,7 +347,7 @@ export abstract class StateService<T extends Account = Account> {
|
|||||||
setTwoFactorToken: (value: string, options?: StorageOptions) => Promise<void>;
|
setTwoFactorToken: (value: string, options?: StorageOptions) => Promise<void>;
|
||||||
getUserId: (options?: StorageOptions) => Promise<string>;
|
getUserId: (options?: StorageOptions) => Promise<string>;
|
||||||
getUsesKeyConnector: (options?: StorageOptions) => Promise<boolean>;
|
getUsesKeyConnector: (options?: StorageOptions) => Promise<boolean>;
|
||||||
setUsesKeyConnector: (vaule: boolean, options?: StorageOptions) => Promise<void>;
|
setUsesKeyConnector: (value: boolean, options?: StorageOptions) => Promise<void>;
|
||||||
getVaultTimeout: (options?: StorageOptions) => Promise<number>;
|
getVaultTimeout: (options?: StorageOptions) => Promise<number>;
|
||||||
setVaultTimeout: (value: number, options?: StorageOptions) => Promise<void>;
|
setVaultTimeout: (value: number, options?: StorageOptions) => Promise<void>;
|
||||||
getVaultTimeoutAction: (options?: StorageOptions) => Promise<string>;
|
getVaultTimeoutAction: (options?: StorageOptions) => Promise<string>;
|
||||||
|
@ -37,11 +37,11 @@ export abstract class AuthService {
|
|||||||
authingWithPassword: () => boolean;
|
authingWithPassword: () => boolean;
|
||||||
authingWithPasswordless: () => boolean;
|
authingWithPasswordless: () => boolean;
|
||||||
getAuthStatus: (userId?: string) => Promise<AuthenticationStatus>;
|
getAuthStatus: (userId?: string) => Promise<AuthenticationStatus>;
|
||||||
authResponsePushNotifiction: (notification: AuthRequestPushNotification) => Promise<any>;
|
authResponsePushNotification: (notification: AuthRequestPushNotification) => Promise<any>;
|
||||||
passwordlessLogin: (
|
passwordlessLogin: (
|
||||||
id: string,
|
id: string,
|
||||||
key: string,
|
key: string,
|
||||||
requestApproved: boolean
|
requestApproved: boolean
|
||||||
) => Promise<AuthRequestResponse>;
|
) => Promise<AuthRequestResponse>;
|
||||||
getPushNotifcationObs$: () => Observable<any>;
|
getPushNotificationObs$: () => Observable<any>;
|
||||||
}
|
}
|
||||||
|
@ -277,11 +277,11 @@ export class AuthService implements AuthServiceAbstraction {
|
|||||||
return this.cryptoService.makeKey(masterPassword, email, kdf, kdfConfig);
|
return this.cryptoService.makeKey(masterPassword, email, kdf, kdfConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
async authResponsePushNotifiction(notification: AuthRequestPushNotification): Promise<any> {
|
async authResponsePushNotification(notification: AuthRequestPushNotification): Promise<any> {
|
||||||
this.pushNotificationSubject.next(notification.id);
|
this.pushNotificationSubject.next(notification.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
getPushNotifcationObs$(): Observable<any> {
|
getPushNotificationObs$(): Observable<any> {
|
||||||
return this.pushNotificationSubject.asObservable();
|
return this.pushNotificationSubject.asObservable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ export class WindowState {
|
|||||||
height?: number;
|
height?: number;
|
||||||
isMaximized?: boolean;
|
isMaximized?: boolean;
|
||||||
// TODO: displayBounds is an Electron.Rectangle.
|
// TODO: displayBounds is an Electron.Rectangle.
|
||||||
// We need to establish some kind of client-specific global state, similiar to the way we already extend a base Account.
|
// We need to establish some kind of client-specific global state, similar to the way we already extend a base Account.
|
||||||
displayBounds: any;
|
displayBounds: any;
|
||||||
x?: number;
|
x?: number;
|
||||||
y?: number;
|
y?: number;
|
||||||
|
@ -53,7 +53,7 @@ export class AnonymousHubService implements AnonymousHubServiceAbstraction {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async ProcessNotification(notification: NotificationResponse) {
|
private async ProcessNotification(notification: NotificationResponse) {
|
||||||
await this.authService.authResponsePushNotifiction(
|
await this.authService.authResponsePushNotification(
|
||||||
notification.payload as AuthRequestPushNotification
|
notification.payload as AuthRequestPushNotification
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ import {
|
|||||||
OrganizationUserBulkPublicKeyResponse,
|
OrganizationUserBulkPublicKeyResponse,
|
||||||
OrganizationUserBulkResponse,
|
OrganizationUserBulkResponse,
|
||||||
OrganizationUserDetailsResponse,
|
OrganizationUserDetailsResponse,
|
||||||
OrganizationUserResetPasswordDetailsReponse,
|
OrganizationUserResetPasswordDetailsResponse,
|
||||||
OrganizationUserUserDetailsResponse,
|
OrganizationUserUserDetailsResponse,
|
||||||
} from "../../abstractions/organization-user/responses";
|
} from "../../abstractions/organization-user/responses";
|
||||||
import { ListResponse } from "../../models/response/list.response";
|
import { ListResponse } from "../../models/response/list.response";
|
||||||
@ -88,7 +88,7 @@ export class OrganizationUserServiceImplementation implements OrganizationUserSe
|
|||||||
async getOrganizationUserResetPasswordDetails(
|
async getOrganizationUserResetPasswordDetails(
|
||||||
organizationId: string,
|
organizationId: string,
|
||||||
id: string
|
id: string
|
||||||
): Promise<OrganizationUserResetPasswordDetailsReponse> {
|
): Promise<OrganizationUserResetPasswordDetailsResponse> {
|
||||||
const r = await this.apiService.send(
|
const r = await this.apiService.send(
|
||||||
"GET",
|
"GET",
|
||||||
"/organizations/" + organizationId + "/users/" + id + "/reset-password-details",
|
"/organizations/" + organizationId + "/users/" + id + "/reset-password-details",
|
||||||
@ -96,7 +96,7 @@ export class OrganizationUserServiceImplementation implements OrganizationUserSe
|
|||||||
true,
|
true,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
return new OrganizationUserResetPasswordDetailsReponse(r);
|
return new OrganizationUserResetPasswordDetailsResponse(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
postOrganizationUserInvite(
|
postOrganizationUserInvite(
|
||||||
|
@ -105,7 +105,7 @@ export class StateService<
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: This should be refactored into AuthService or a similar service,
|
// FIXME: This should be refactored into AuthService or a similar service,
|
||||||
// as checking for the existance of the crypto key is a low level
|
// as checking for the existence of the crypto key is a low level
|
||||||
// implementation detail.
|
// implementation detail.
|
||||||
this.activeAccountUnlockedSubject.next((await this.getCryptoMasterKey()) != null);
|
this.activeAccountUnlockedSubject.next((await this.getCryptoMasterKey()) != null);
|
||||||
})
|
})
|
||||||
@ -1555,7 +1555,7 @@ export class StateService<
|
|||||||
|
|
||||||
async setEnvironmentUrls(value: EnvironmentUrls, options?: StorageOptions): Promise<void> {
|
async setEnvironmentUrls(value: EnvironmentUrls, options?: StorageOptions): Promise<void> {
|
||||||
// Global values are set on each change and the current global settings are passed to any newly authed accounts.
|
// Global values are set on each change and the current global settings are passed to any newly authed accounts.
|
||||||
// This is to allow setting environement values before an account is active, while still allowing individual accounts to have their own environments.
|
// This is to allow setting environment values before an account is active, while still allowing individual accounts to have their own environments.
|
||||||
const globals = await this.getGlobals(
|
const globals = await this.getGlobals(
|
||||||
this.reconcileOptions(options, await this.defaultOnDiskOptions())
|
this.reconcileOptions(options, await this.defaultOnDiskOptions())
|
||||||
);
|
);
|
||||||
|
@ -153,7 +153,7 @@ export class SendApiService implements SendApiServiceAbstraction {
|
|||||||
await this.sendService.upsert(data);
|
await this.sendService.upsert(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send File Upload methoids
|
// Send File Upload methods
|
||||||
|
|
||||||
private async upload(sendData: [Send, EncArrayBuffer]): Promise<SendResponse> {
|
private async upload(sendData: [Send, EncArrayBuffer]): Promise<SendResponse> {
|
||||||
const request = new SendRequest(sendData[0], sendData[1]?.buffer.byteLength);
|
const request = new SendRequest(sendData[0], sendData[1]?.buffer.byteLength);
|
||||||
|
@ -34,7 +34,7 @@ export class BitSubmitDirective implements OnInit, OnDestroy {
|
|||||||
.pipe(
|
.pipe(
|
||||||
filter(() => !this.disabled),
|
filter(() => !this.disabled),
|
||||||
switchMap(() => {
|
switchMap(() => {
|
||||||
// Calling functionToObservable exectues the sync part of the handler
|
// Calling functionToObservable executes the sync part of the handler
|
||||||
// allowing the function to check form validity before it gets disabled.
|
// allowing the function to check form validity before it gets disabled.
|
||||||
const awaitable = functionToObservable(this.handler);
|
const awaitable = functionToObservable(this.handler);
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ const InlineTemplate: Story = (args) => ({
|
|||||||
props: args,
|
props: args,
|
||||||
template: `
|
template: `
|
||||||
<span class="tw-text-main">
|
<span class="tw-text-main">
|
||||||
On the internet pargraphs often contain <a bitLink href="#">inline links</a>, but few know that <button bitLink>buttons</button> can be used for similar purposes.
|
On the internet paragraphs often contain <a bitLink href="#">inline links</a>, but few know that <button bitLink>buttons</button> can be used for similar purposes.
|
||||||
</span>
|
</span>
|
||||||
`,
|
`,
|
||||||
});
|
});
|
||||||
|
@ -145,7 +145,7 @@ $ng-dropdown-shadow: rgb(var(--color-secondary-100)) !default;
|
|||||||
&.ng-select-disabled {
|
&.ng-select-disabled {
|
||||||
> .ng-select-container .ng-value-container .ng-value {
|
> .ng-select-container .ng-value-container .ng-value {
|
||||||
background-color: $ng-select-disabled-text;
|
background-color: $ng-select-disabled-text;
|
||||||
border: 0px solid $ng-select-border; // Removing border on slected value when disabled
|
border: 0px solid $ng-select-border; // Removing border on selected value when disabled
|
||||||
.ng-value-label {
|
.ng-value-label {
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
}
|
}
|
||||||
|
@ -57,18 +57,18 @@ export const Tree: Story<NavGroupComponent> = (args) => ({
|
|||||||
template: `
|
template: `
|
||||||
<bit-nav-group text="Tree example" icon="bwi-collection" [open]="true">
|
<bit-nav-group text="Tree example" icon="bwi-collection" [open]="true">
|
||||||
<bit-nav-group text="Level 1 - with children (empty)" route="#" icon="bwi-collection" variant="tree"></bit-nav-group>
|
<bit-nav-group text="Level 1 - with children (empty)" route="#" icon="bwi-collection" variant="tree"></bit-nav-group>
|
||||||
<bit-nav-item text="Level 1 - no childen" route="#" icon="bwi-collection" variant="tree"></bit-nav-item>
|
<bit-nav-item text="Level 1 - no children" route="#" icon="bwi-collection" variant="tree"></bit-nav-item>
|
||||||
<bit-nav-group text="Level 1 - with children" route="#" icon="bwi-collection" variant="tree" [open]="true">
|
<bit-nav-group text="Level 1 - with children" route="#" icon="bwi-collection" variant="tree" [open]="true">
|
||||||
<bit-nav-group text="Level 2 - with children" route="#" icon="bwi-collection" variant="tree" [open]="true">
|
<bit-nav-group text="Level 2 - with children" route="#" icon="bwi-collection" variant="tree" [open]="true">
|
||||||
<bit-nav-item text="Level 3 - no childen, no icon" route="#" variant="tree"></bit-nav-item>
|
<bit-nav-item text="Level 3 - no children, no icon" route="#" variant="tree"></bit-nav-item>
|
||||||
<bit-nav-group text="Level 3 - with children" route="#" icon="bwi-collection" variant="tree" [open]="true">
|
<bit-nav-group text="Level 3 - with children" route="#" icon="bwi-collection" variant="tree" [open]="true">
|
||||||
<bit-nav-item text="Level 4 - no childen, no icon" route="#" variant="tree"></bit-nav-item>
|
<bit-nav-item text="Level 4 - no children, no icon" route="#" variant="tree"></bit-nav-item>
|
||||||
</bit-nav-group>
|
</bit-nav-group>
|
||||||
</bit-nav-group>
|
</bit-nav-group>
|
||||||
<bit-nav-group text="Level 2 - with children (empty)" route="#" icon="bwi-collection" variant="tree" [open]="true"></bit-nav-group>
|
<bit-nav-group text="Level 2 - with children (empty)" route="#" icon="bwi-collection" variant="tree" [open]="true"></bit-nav-group>
|
||||||
<bit-nav-item text="Level 2 - no childen" route="#" icon="bwi-collection" variant="tree"></bit-nav-item>
|
<bit-nav-item text="Level 2 - no children" route="#" icon="bwi-collection" variant="tree"></bit-nav-item>
|
||||||
</bit-nav-group>
|
</bit-nav-group>
|
||||||
<bit-nav-item text="Level 1 - no childen" route="#" icon="bwi-collection" variant="tree"></bit-nav-item>
|
<bit-nav-item text="Level 1 - no children" route="#" icon="bwi-collection" variant="tree"></bit-nav-item>
|
||||||
</bit-nav-group>
|
</bit-nav-group>
|
||||||
`,
|
`,
|
||||||
});
|
});
|
||||||
|
@ -58,7 +58,7 @@ Both the disabled and loading states use the default state’s color with a 60%
|
|||||||
|
|
||||||
## Block
|
## Block
|
||||||
|
|
||||||
Typically button widths expand with thier text. In some causes though buttons may need to be block where the width is fixed and the text wraps to 2 lines if exceeding the button’s width.
|
Typically button widths expand with their text. In some causes though buttons may need to be block where the width is fixed and the text wraps to 2 lines if exceeding the button’s width.
|
||||||
|
|
||||||
<Story id="component-library-button--block" />
|
<Story id="component-library-button--block" />
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ All tables should have a visible horizontal header and label for each column.
|
|||||||
|
|
||||||
<Story id="component-library-table--default" />
|
<Story id="component-library-table--default" />
|
||||||
|
|
||||||
The below code is the absolute minimum required to create a table. However we stronly advice you to
|
The below code is the absolute minimum required to create a table. However we strongly advise you to
|
||||||
use the `dataSource` input to provide a data source for your table. This allows you to easily sort
|
use the `dataSource` input to provide a data source for your table. This allows you to easily sort
|
||||||
data.
|
data.
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ export class ToggleComponent<TValue> {
|
|||||||
"!tw-mb-0",
|
"!tw-mb-0",
|
||||||
|
|
||||||
// Fix for badge being pushed slightly lower when inside a button.
|
// Fix for badge being pushed slightly lower when inside a button.
|
||||||
// Insipired by bootstrap, which does the same.
|
// Inspired by bootstrap, which does the same.
|
||||||
"[&>[bitBadge]]:tw-relative",
|
"[&>[bitBadge]]:tw-relative",
|
||||||
"[&>[bitBadge]]:tw--top-px",
|
"[&>[bitBadge]]:tw--top-px",
|
||||||
];
|
];
|
||||||
|
@ -172,7 +172,7 @@ describe("VaultExportService", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("exports unecrypted user ciphers", async () => {
|
it("exports unencrypted user ciphers", async () => {
|
||||||
cipherService.getAllDecrypted().resolves(UserCipherViews.slice(0, 1));
|
cipherService.getAllDecrypted().resolves(UserCipherViews.slice(0, 1));
|
||||||
|
|
||||||
const actual = await exportService.getExport("json");
|
const actual = await exportService.getExport("json");
|
||||||
@ -188,7 +188,7 @@ describe("VaultExportService", () => {
|
|||||||
expectEqualCiphers(UserCipherDomains.slice(0, 1), actual);
|
expectEqualCiphers(UserCipherDomains.slice(0, 1), actual);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not unecrypted export trashed user items", async () => {
|
it("does not unencrypted export trashed user items", async () => {
|
||||||
cipherService.getAllDecrypted().resolves(UserCipherViews);
|
cipherService.getAllDecrypted().resolves(UserCipherViews);
|
||||||
|
|
||||||
const actual = await exportService.getExport("json");
|
const actual = await exportService.getExport("json");
|
||||||
|
@ -133,7 +133,7 @@ function expectIdCard(cipher: CipherView) {
|
|||||||
function expectTaxNumber(cipher: CipherView) {
|
function expectTaxNumber(cipher: CipherView) {
|
||||||
expect(cipher.type).toBe(CipherType.Identity);
|
expect(cipher.type).toBe(CipherType.Identity);
|
||||||
expect(cipher.name).toBe("Tax number ID card");
|
expect(cipher.name).toBe("Tax number ID card");
|
||||||
expect(cipher.notes).toBe("Additinoal information text field");
|
expect(cipher.notes).toBe("Additional information text field");
|
||||||
|
|
||||||
expect(cipher.identity.fullName).toBe("Joe M User");
|
expect(cipher.identity.fullName).toBe("Joe M User");
|
||||||
expect(cipher.identity.firstName).toBe("Joe");
|
expect(cipher.identity.firstName).toBe("Joe");
|
||||||
@ -405,7 +405,7 @@ function expectSoftwareLicense(cipher: CipherView) {
|
|||||||
function expectTourVisa(cipher: CipherView) {
|
function expectTourVisa(cipher: CipherView) {
|
||||||
expect(cipher.type).toBe(CipherType.Identity);
|
expect(cipher.type).toBe(CipherType.Identity);
|
||||||
expect(cipher.name).toBe("Tour visa ID card");
|
expect(cipher.name).toBe("Tour visa ID card");
|
||||||
expect(cipher.notes).toBe("Additional Informaion text");
|
expect(cipher.notes).toBe("Additional Information text");
|
||||||
|
|
||||||
expect(cipher.identity.fullName).toBe("Joe M User");
|
expect(cipher.identity.fullName).toBe("Joe M User");
|
||||||
expect(cipher.identity.firstName).toBe("Joe");
|
expect(cipher.identity.firstName).toBe("Joe");
|
||||||
|
@ -4,7 +4,7 @@ Joe User's nickname,active,someTag,Driver's License,123456,Joe M User,02/02/2022
|
|||||||
Passport ID card,active,someTag,Passport,1234567,Joe M User,03/07/2022,03/07/2028,United States,Additional information field
|
Passport ID card,active,someTag,Passport,1234567,Joe M User,03/07/2022,03/07/2028,United States,Additional information field
|
||||||
Social Security ID card,active,someTag,Social Security,123455678,Joe M User,03/07/2022,03/07/2028,United States,Additional information field text
|
Social Security ID card,active,someTag,Social Security,123455678,Joe M User,03/07/2022,03/07/2028,United States,Additional information field text
|
||||||
ID card type ID card,active,someTag,ID Card,1234566,Joe M User,03/07/2022,03/07/2028,United States,Additional Information field text
|
ID card type ID card,active,someTag,ID Card,1234566,Joe M User,03/07/2022,03/07/2028,United States,Additional Information field text
|
||||||
Tax number ID card,active,someTag,Tax Number,12345678,Joe M User,03/07/2022,03/07/2028,United States,Additinoal information text field
|
Tax number ID card,active,someTag,Tax Number,12345678,Joe M User,03/07/2022,03/07/2028,United States,Additional information text field
|
||||||
Bank account ID card,active,someTag,Bank Account,12344556677,Joe M User,03/07/2022,03/07/2028,United States,Additional text information here
|
Bank account ID card,active,someTag,Bank Account,12344556677,Joe M User,03/07/2022,03/07/2028,United States,Additional text information here
|
||||||
Insurance card ID card,active,someTag,Insurance Card,123456677,Joe M User,03/07/2022,03/07/2022,United States,Additional information text goes here
|
Insurance card ID card,active,someTag,Insurance Card,123456677,Joe M User,03/07/2022,03/07/2022,United States,Additional information text goes here
|
||||||
Health card Id card,active,someTag,Health Card,1234670,Joe M User,03/07/2022,03/07/2028,United States,More info
|
Health card Id card,active,someTag,Health Card,1234670,Joe M User,03/07/2022,03/07/2028,United States,More info
|
||||||
@ -13,4 +13,4 @@ Database ID card,active,someTag,Database,12345089u,Joe M User,03/07/2022,03/07/2
|
|||||||
Outdoor license ID card,active,someTag,Outdoor License,123890090,Joe M User,03/07/2022,03/07/2028,United States,Additional info
|
Outdoor license ID card,active,someTag,Outdoor License,123890090,Joe M User,03/07/2022,03/07/2028,United States,Additional info
|
||||||
Reward program Id card,active,someTag,Reward Program,12345890b,Joe M User,03/07/2022,03/07/2028,United States,1234890
|
Reward program Id card,active,someTag,Reward Program,12345890b,Joe M User,03/07/2022,03/07/2028,United States,1234890
|
||||||
Software license ID card,active,someTag,Software License,1234567c,Joe M User,03/07/2022,03/07/2028,United States,"It seems like the fields don't change, which makes it pretty useless that they have so many ID card types."
|
Software license ID card,active,someTag,Software License,1234567c,Joe M User,03/07/2022,03/07/2028,United States,"It seems like the fields don't change, which makes it pretty useless that they have so many ID card types."
|
||||||
Tour visa ID card,active,someTag,Tour Visa,123456lkhj,Joe M User,03/07/2022,03/07/2028,United States,Additional Informaion text`;
|
Tour visa ID card,active,someTag,Tour Visa,123456lkhj,Joe M User,03/07/2022,03/07/2028,United States,Additional Information text`;
|
||||||
|
@ -17,7 +17,7 @@ import {
|
|||||||
SecureNoteRecord,
|
SecureNoteRecord,
|
||||||
} from "./types/dashlane-csv-types";
|
} from "./types/dashlane-csv-types";
|
||||||
|
|
||||||
const _mappedCredentialsColums = new Set([
|
const _mappedCredentialsColumns = new Set([
|
||||||
"title",
|
"title",
|
||||||
"note",
|
"note",
|
||||||
"username",
|
"username",
|
||||||
@ -27,7 +27,7 @@ const _mappedCredentialsColums = new Set([
|
|||||||
"category",
|
"category",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const _mappedPersonalInfoAsIdentiyColumns = new Set([
|
const _mappedPersonalInfoAsIdentityColumns = new Set([
|
||||||
"type",
|
"type",
|
||||||
"title",
|
"title",
|
||||||
"first_name",
|
"first_name",
|
||||||
@ -123,7 +123,7 @@ export class DashlaneCsvImporter extends BaseImporter implements Importer {
|
|||||||
cipher.login.totp = row.otpSecret;
|
cipher.login.totp = row.otpSecret;
|
||||||
cipher.login.uris = this.makeUriArray(row.url);
|
cipher.login.uris = this.makeUriArray(row.url);
|
||||||
|
|
||||||
this.importUnmappedFields(cipher, row, _mappedCredentialsColums);
|
this.importUnmappedFields(cipher, row, _mappedCredentialsColumns);
|
||||||
}
|
}
|
||||||
|
|
||||||
parsePaymentRecord(cipher: CipherView, row: PaymentsRecord) {
|
parsePaymentRecord(cipher: CipherView, row: PaymentsRecord) {
|
||||||
@ -249,7 +249,7 @@ export class DashlaneCsvImporter extends BaseImporter implements Importer {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.importUnmappedFields(cipher, row, _mappedPersonalInfoAsIdentiyColumns);
|
this.importUnmappedFields(cipher, row, _mappedPersonalInfoAsIdentityColumns);
|
||||||
}
|
}
|
||||||
|
|
||||||
parseSecureNoteRecords(cipher: CipherView, row: SecureNoteRecord) {
|
parseSecureNoteRecords(cipher: CipherView, row: SecureNoteRecord) {
|
||||||
|
Loading…
Reference in New Issue
Block a user