-
Contrast
+
+
+
+
+
+ Add item
+
+
+ Next
+
+
+ Download complete
+
+
+ `,
+ }),
+ args: {
+ linkType: "primary",
+ },
+};
+
+export const Inactive: Story = {
+ render: (args) => ({
+ props: {
+ ...args,
+ onClick: () => {
+ alert("Button clicked! (This should not appear when disabled)");
+ },
+ },
+ template: /*html*/ `
+
Primary button
+
Links can not be inactive
+
Secondary button
+
+ Contrast button
`,
}),
diff --git a/libs/importer/src/components/importer-providers.ts b/libs/importer/src/components/importer-providers.ts
index 18c148ebe2e..eb7e58e9259 100644
--- a/libs/importer/src/components/importer-providers.ts
+++ b/libs/importer/src/components/importer-providers.ts
@@ -13,6 +13,7 @@ import { ConfigService } from "@bitwarden/common/platform/abstractions/config/co
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
import { LogService } from "@bitwarden/common/platform/abstractions/log.service";
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
+import { SdkService } from "@bitwarden/common/platform/abstractions/sdk/sdk.service";
import { KeyServiceLegacyEncryptorProvider } from "@bitwarden/common/tools/cryptography/key-service-legacy-encryptor-provider";
import { LegacyEncryptorProvider } from "@bitwarden/common/tools/cryptography/legacy-encryptor-provider";
import { ExtensionRegistry } from "@bitwarden/common/tools/extension/extension-registry.abstraction";
@@ -71,6 +72,7 @@ export const ImporterProviders: SafeProvider[] = [
LogService,
PlatformUtilsService,
ConfigService,
+ SdkService,
],
}),
safeProvider({
diff --git a/libs/tools/generator/components/src/generator-services.module.ts b/libs/tools/generator/components/src/generator-services.module.ts
index 935f7dc2d60..39d0dd298a2 100644
--- a/libs/tools/generator/components/src/generator-services.module.ts
+++ b/libs/tools/generator/components/src/generator-services.module.ts
@@ -1,12 +1,10 @@
import { NgModule } from "@angular/core";
-import { from, take } from "rxjs";
import { JslibModule } from "@bitwarden/angular/jslib.module";
import { safeProvider } from "@bitwarden/angular/platform/utils/safe-provider";
import { SafeInjectionToken } from "@bitwarden/angular/services/injection-tokens";
import { ApiService } from "@bitwarden/common/abstractions/api.service";
import { PolicyService } from "@bitwarden/common/admin-console/abstractions/policy/policy.service.abstraction";
-import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum";
import { EncryptService } from "@bitwarden/common/key-management/crypto/abstractions/encrypt.service";
import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service";
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
@@ -126,7 +124,7 @@ export const SYSTEM_SERVICE_PROVIDER = new SafeInjectionToken
(featureFlag = ff));
const metadata = new providers.GeneratorMetadataProvider(
userStateDeps,
system,
Object.values(BuiltIn),
);
- const sdkService = featureFlag ? system.sdk : undefined;
const profile = new providers.GeneratorProfileProvider(userStateDeps, system.policy);
const generator: providers.GeneratorDependencyProvider = {
randomizer: random,
client: new RestClient(api, i18n),
i18nService: i18n,
- sdk: sdkService,
+ sdk: system.sdk,
now: Date.now,
};
diff --git a/libs/tools/generator/core/src/engine/sdk-password-randomizer.ts b/libs/tools/generator/core/src/engine/sdk-password-randomizer.ts
index 03be21eeefb..09c7d62b1ad 100644
--- a/libs/tools/generator/core/src/engine/sdk-password-randomizer.ts
+++ b/libs/tools/generator/core/src/engine/sdk-password-randomizer.ts
@@ -1,3 +1,6 @@
+import { firstValueFrom } from "rxjs";
+
+import { SdkService } from "@bitwarden/common/platform/abstractions/sdk/sdk.service";
import {
BitwardenClient,
PassphraseGeneratorRequest,
@@ -20,11 +23,11 @@ export class SdkPasswordRandomizer
CredentialGenerator
{
/** Instantiates the password randomizer
- * @param client access to SDK client to call upon password/passphrase generation
+ * @param service access to SDK client to call upon password/passphrase generation
* @param currentTime gets the current datetime in epoch time
*/
constructor(
- private client: BitwardenClient,
+ private service: SdkService,
private currentTime: () => number,
) {}
@@ -40,8 +43,9 @@ export class SdkPasswordRandomizer
request: GenerateRequest,
settings: PasswordGenerationOptions | PassphraseGenerationOptions,
) {
+ const sdk: BitwardenClient = await firstValueFrom(this.service.client$);
if (isPasswordGenerationOptions(settings)) {
- const password = await this.client.generator().password(convertPasswordRequest(settings));
+ const password = await sdk.generator().password(convertPasswordRequest(settings));
return new GeneratedCredential(
password,
@@ -51,9 +55,7 @@ export class SdkPasswordRandomizer
request.website,
);
} else if (isPassphraseGenerationOptions(settings)) {
- const passphrase = await this.client
- .generator()
- .passphrase(convertPassphraseRequest(settings));
+ const passphrase = await sdk.generator().passphrase(convertPassphraseRequest(settings));
return new GeneratedCredential(
passphrase,
diff --git a/libs/tools/generator/core/src/metadata/password/eff-word-list.spec.ts b/libs/tools/generator/core/src/metadata/password/eff-word-list.spec.ts
index bdf021c50f3..015cc25a8ec 100644
--- a/libs/tools/generator/core/src/metadata/password/eff-word-list.spec.ts
+++ b/libs/tools/generator/core/src/metadata/password/eff-word-list.spec.ts
@@ -3,7 +3,7 @@ import { mock } from "jest-mock-extended";
import { PolicyType } from "@bitwarden/common/admin-console/enums";
import { Policy } from "@bitwarden/common/admin-console/models/domain/policy";
-import { PasswordRandomizer, SdkPasswordRandomizer } from "../../engine";
+import { SdkPasswordRandomizer } from "../../engine";
import { PassphrasePolicyConstraints } from "../../policies";
import { GeneratorDependencyProvider } from "../../providers";
import { PassphraseGenerationOptions } from "../../types";
@@ -22,16 +22,6 @@ describe("password - eff words generator metadata", () => {
});
});
- describe("engine.create", () => {
- const nonSdkDependencyProvider = mock();
- nonSdkDependencyProvider.sdk = undefined;
- it("returns a password randomizer", () => {
- expect(effPassphrase.engine.create(nonSdkDependencyProvider)).toBeInstanceOf(
- PasswordRandomizer,
- );
- });
- });
-
describe("profiles[account]", () => {
let accountProfile: CoreProfileMetadata | null = null;
beforeEach(() => {
diff --git a/libs/tools/generator/core/src/metadata/password/eff-word-list.ts b/libs/tools/generator/core/src/metadata/password/eff-word-list.ts
index fc96ce46c2b..d6d78c83293 100644
--- a/libs/tools/generator/core/src/metadata/password/eff-word-list.ts
+++ b/libs/tools/generator/core/src/metadata/password/eff-word-list.ts
@@ -3,7 +3,7 @@ import { GENERATOR_DISK } from "@bitwarden/common/platform/state";
import { PublicClassifier } from "@bitwarden/common/tools/public-classifier";
import { ObjectKey } from "@bitwarden/common/tools/state/object-key";
-import { PasswordRandomizer, SdkPasswordRandomizer } from "../../engine";
+import { SdkPasswordRandomizer } from "../../engine";
import { passphraseLeastPrivilege, PassphrasePolicyConstraints } from "../../policies";
import { GeneratorDependencyProvider } from "../../providers";
import { CredentialGenerator, PassphraseGenerationOptions } from "../../types";
@@ -30,9 +30,6 @@ const passphrase: GeneratorMetadata = {
create(
dependencies: GeneratorDependencyProvider,
): CredentialGenerator {
- if (dependencies.sdk == undefined) {
- return new PasswordRandomizer(dependencies.randomizer, dependencies.now);
- }
return new SdkPasswordRandomizer(dependencies.sdk, dependencies.now);
},
},
diff --git a/libs/tools/generator/core/src/metadata/password/random-password.spec.ts b/libs/tools/generator/core/src/metadata/password/random-password.spec.ts
index 9efd5350c21..d066b9f1597 100644
--- a/libs/tools/generator/core/src/metadata/password/random-password.spec.ts
+++ b/libs/tools/generator/core/src/metadata/password/random-password.spec.ts
@@ -3,7 +3,7 @@ import { mock } from "jest-mock-extended";
import { PolicyType } from "@bitwarden/common/admin-console/enums";
import { Policy } from "@bitwarden/common/admin-console/models/domain/policy";
-import { PasswordRandomizer, SdkPasswordRandomizer } from "../../engine";
+import { SdkPasswordRandomizer } from "../../engine";
import { DynamicPasswordPolicyConstraints } from "../../policies";
import { GeneratorDependencyProvider } from "../../providers";
import { PasswordGenerationOptions } from "../../types";
@@ -22,14 +22,6 @@ describe("password - characters generator metadata", () => {
});
});
- describe("engine.create", () => {
- const nonSdkDependencyProvider = mock();
- nonSdkDependencyProvider.sdk = undefined;
- it("returns a password randomizer", () => {
- expect(password.engine.create(nonSdkDependencyProvider)).toBeInstanceOf(PasswordRandomizer);
- });
- });
-
describe("profiles[account]", () => {
let accountProfile: CoreProfileMetadata = null!;
beforeEach(() => {
diff --git a/libs/tools/generator/core/src/metadata/password/random-password.ts b/libs/tools/generator/core/src/metadata/password/random-password.ts
index 721be8dc3f0..d25ea1e8f46 100644
--- a/libs/tools/generator/core/src/metadata/password/random-password.ts
+++ b/libs/tools/generator/core/src/metadata/password/random-password.ts
@@ -3,7 +3,7 @@ import { GENERATOR_DISK } from "@bitwarden/common/platform/state";
import { PublicClassifier } from "@bitwarden/common/tools/public-classifier";
import { deepFreeze } from "@bitwarden/common/tools/util";
-import { PasswordRandomizer, SdkPasswordRandomizer } from "../../engine";
+import { SdkPasswordRandomizer } from "../../engine";
import { DynamicPasswordPolicyConstraints, passwordLeastPrivilege } from "../../policies";
import { GeneratorDependencyProvider } from "../../providers";
import { CredentialGenerator, PasswordGeneratorSettings } from "../../types";
@@ -30,9 +30,6 @@ const password: GeneratorMetadata = deepFreeze({
create(
dependencies: GeneratorDependencyProvider,
): CredentialGenerator {
- if (dependencies.sdk == undefined) {
- return new PasswordRandomizer(dependencies.randomizer, dependencies.now);
- }
return new SdkPasswordRandomizer(dependencies.sdk, dependencies.now);
},
},
diff --git a/libs/tools/generator/core/src/providers/generator-dependency-provider.ts b/libs/tools/generator/core/src/providers/generator-dependency-provider.ts
index a6dbbeaa537..8700bbc8a24 100644
--- a/libs/tools/generator/core/src/providers/generator-dependency-provider.ts
+++ b/libs/tools/generator/core/src/providers/generator-dependency-provider.ts
@@ -1,6 +1,6 @@
import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service";
+import { SdkService } from "@bitwarden/common/platform/abstractions/sdk/sdk.service";
import { RestClient } from "@bitwarden/common/tools/integration/rpc";
-import { BitwardenClient } from "@bitwarden/sdk-internal";
import { Randomizer } from "../abstractions";
@@ -10,6 +10,6 @@ export type GeneratorDependencyProvider = {
// FIXME: introduce `I18nKeyOrLiteral` into forwarder
// structures and remove this dependency
i18nService: I18nService;
- sdk?: BitwardenClient;
+ sdk: SdkService;
now: () => number;
};
diff --git a/libs/tools/generator/core/src/providers/generator-metadata-provider.spec.ts b/libs/tools/generator/core/src/providers/generator-metadata-provider.spec.ts
index 39ff74ad901..f79bb986325 100644
--- a/libs/tools/generator/core/src/providers/generator-metadata-provider.spec.ts
+++ b/libs/tools/generator/core/src/providers/generator-metadata-provider.spec.ts
@@ -5,7 +5,6 @@ import { PolicyService } from "@bitwarden/common/admin-console/abstractions/poli
import { PolicyType } from "@bitwarden/common/admin-console/enums";
import { Policy } from "@bitwarden/common/admin-console/models/domain/policy";
import { Account } from "@bitwarden/common/auth/abstractions/account.service";
-import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service";
import { LegacyEncryptorProvider } from "@bitwarden/common/tools/cryptography/legacy-encryptor-provider";
import { UserEncryptor } from "@bitwarden/common/tools/cryptography/user-encryptor.abstraction";
import {
@@ -96,8 +95,6 @@ const SomePolicyService = mock();
const SomeExtensionService = mock();
-const SomeConfigService = mock;
-
const SomeSdkService = mock;
const ApplicationProvider = {
@@ -110,9 +107,6 @@ const ApplicationProvider = {
/** Event monitoring and diagnostic interfaces */
log: disabledSemanticLoggerProvider,
- /** Feature flag retrieval */
- configService: SomeConfigService,
-
/** SDK access for password generation */
sdk: SomeSdkService,
} as unknown as SystemServiceProvider;
diff --git a/libs/vault/src/cipher-form/abstractions/cipher-form-config.service.ts b/libs/vault/src/cipher-form/abstractions/cipher-form-config.service.ts
index 35d3d8725ff..a4aabbb6f19 100644
--- a/libs/vault/src/cipher-form/abstractions/cipher-form-config.service.ts
+++ b/libs/vault/src/cipher-form/abstractions/cipher-form-config.service.ts
@@ -28,6 +28,7 @@ export type OptionalInitialValues = {
// Credit Card Information
cardholderName?: string;
number?: string;
+ brand?: string;
expMonth?: string;
expYear?: string;
code?: string;
diff --git a/libs/vault/src/cipher-form/components/autofill-options/advanced-uri-option-dialog.component.ts b/libs/vault/src/cipher-form/components/autofill-options/advanced-uri-option-dialog.component.ts
index 3580b1fada8..04545730172 100644
--- a/libs/vault/src/cipher-form/components/autofill-options/advanced-uri-option-dialog.component.ts
+++ b/libs/vault/src/cipher-form/components/autofill-options/advanced-uri-option-dialog.component.ts
@@ -3,13 +3,13 @@ import { Component, inject } from "@angular/core";
import { JslibModule } from "@bitwarden/angular/jslib.module";
import { PlatformUtilsService } from "@bitwarden/common/platform/abstractions/platform-utils.service";
import {
- ButtonLinkDirective,
ButtonModule,
+ CenterPositionStrategy,
DialogModule,
+ DialogRef,
DialogService,
DIALOG_DATA,
- DialogRef,
- CenterPositionStrategy,
+ LinkComponent,
} from "@bitwarden/components";
export type AdvancedUriOptionDialogParams = {
@@ -22,7 +22,7 @@ export type AdvancedUriOptionDialogParams = {
// eslint-disable-next-line @angular-eslint/prefer-on-push-component-change-detection
@Component({
templateUrl: "advanced-uri-option-dialog.component.html",
- imports: [ButtonLinkDirective, ButtonModule, DialogModule, JslibModule],
+ imports: [LinkComponent, ButtonModule, DialogModule, JslibModule],
})
export class AdvancedUriOptionDialogComponent {
constructor(private dialogRef: DialogRef) {}
diff --git a/libs/vault/src/cipher-form/components/card-details-section/card-details-section.component.spec.ts b/libs/vault/src/cipher-form/components/card-details-section/card-details-section.component.spec.ts
index 4b0cd0f5f90..650b4e29fe5 100644
--- a/libs/vault/src/cipher-form/components/card-details-section/card-details-section.component.spec.ts
+++ b/libs/vault/src/cipher-form/components/card-details-section/card-details-section.component.spec.ts
@@ -108,12 +108,17 @@ describe("CardDetailsSectionComponent", () => {
const cardholderName = "Ron Burgundy";
const number = "4242 4242 4242 4242";
const code = "619";
+ const brand = "Maestro";
+ const expMonth = "5";
+ const expYear = "2028";
const cardView = new CardView();
cardView.cardholderName = cardholderName;
cardView.number = number;
cardView.code = code;
- cardView.brand = "Visa";
+ cardView.brand = brand;
+ cardView.expMonth = expMonth;
+ cardView.expYear = expYear;
getInitialCipherView.mockReturnValueOnce({ card: cardView });
@@ -123,7 +128,9 @@ describe("CardDetailsSectionComponent", () => {
cardholderName,
number,
code,
- brand: cardView.brand,
+ brand,
+ expMonth,
+ expYear,
});
});
@@ -154,4 +161,27 @@ describe("CardDetailsSectionComponent", () => {
expect(heading.nativeElement.textContent.trim()).toBe("cardDetails");
});
+
+ it("initializes `cardDetailsForm` from `initialValues` when provided and editing existing cipher", () => {
+ const initialCardholderName = "New Name";
+ const initialBrand = "Amex";
+
+ (cipherFormProvider as any).config = {
+ initialValues: {
+ cardholderName: initialCardholderName,
+ brand: initialBrand,
+ },
+ };
+
+ const existingCard = new CardView();
+ existingCard.cardholderName = "Old Name";
+ existingCard.brand = "Visa";
+
+ getInitialCipherView.mockReturnValueOnce({ card: existingCard });
+
+ component.ngOnInit();
+
+ expect(component.cardDetailsForm.value.cardholderName).toBe(initialCardholderName);
+ expect(component.cardDetailsForm.value.brand).toBe(initialBrand);
+ });
});
diff --git a/libs/vault/src/cipher-form/components/card-details-section/card-details-section.component.ts b/libs/vault/src/cipher-form/components/card-details-section/card-details-section.component.ts
index 5fa8d0af131..056b93b6b99 100644
--- a/libs/vault/src/cipher-form/components/card-details-section/card-details-section.component.ts
+++ b/libs/vault/src/cipher-form/components/card-details-section/card-details-section.component.ts
@@ -158,6 +158,7 @@ export class CardDetailsSectionComponent implements OnInit {
this.cardDetailsForm.patchValue({
cardholderName: this.initialValues?.cardholderName ?? existingCard.cardholderName,
number: this.initialValues?.number ?? existingCard.number,
+ brand: this.initialValues?.brand ?? existingCard.brand,
expMonth: this.initialValues?.expMonth ?? existingCard.expMonth,
expYear: this.initialValues?.expYear ?? existingCard.expYear,
code: this.initialValues?.code ?? existingCard.code,
diff --git a/libs/vault/src/cipher-view/cipher-view.component.html b/libs/vault/src/cipher-view/cipher-view.component.html
index 3d0cc4c4414..05d2ecede72 100644
--- a/libs/vault/src/cipher-view/cipher-view.component.html
+++ b/libs/vault/src/cipher-view/cipher-view.component.html
@@ -12,9 +12,15 @@
-
+
{{ "changeAtRiskPassword" | i18n }}
-
diff --git a/libs/vault/src/cipher-view/cipher-view.component.ts b/libs/vault/src/cipher-view/cipher-view.component.ts
index 26e3f18b542..24713d3f612 100644
--- a/libs/vault/src/cipher-view/cipher-view.component.ts
+++ b/libs/vault/src/cipher-view/cipher-view.component.ts
@@ -30,7 +30,7 @@ import {
CalloutModule,
SearchModule,
TypographyModule,
- AnchorLinkDirective,
+ LinkComponent,
} from "@bitwarden/components";
import { ChangeLoginPasswordService } from "../abstractions/change-login-password.service";
@@ -66,7 +66,7 @@ import { ViewIdentitySectionsComponent } from "./view-identity-sections/view-ide
ViewIdentitySectionsComponent,
LoginCredentialsViewComponent,
AutofillOptionsViewComponent,
- AnchorLinkDirective,
+ LinkComponent,
TypographyModule,
],
})
diff --git a/libs/vault/src/cipher-view/item-details/item-details-v2.component.ts b/libs/vault/src/cipher-view/item-details/item-details-v2.component.ts
index eb0e468fa4f..73e7c2706be 100644
--- a/libs/vault/src/cipher-view/item-details/item-details-v2.component.ts
+++ b/libs/vault/src/cipher-view/item-details/item-details-v2.component.ts
@@ -19,9 +19,9 @@ import { CipherView } from "@bitwarden/common/vault/models/view/cipher.view";
import { FolderView } from "@bitwarden/common/vault/models/view/folder.view";
import {
BadgeModule,
- ButtonLinkDirective,
CardComponent,
FormFieldModule,
+ LinkComponent,
TypographyModule,
} from "@bitwarden/components";
@@ -39,7 +39,7 @@ import { OrgIconDirective } from "../../components/org-icon.directive";
TypographyModule,
OrgIconDirective,
FormFieldModule,
- ButtonLinkDirective,
+ LinkComponent,
BadgeModule,
],
})
diff --git a/libs/vault/src/components/decryption-failure-dialog/decryption-failure-dialog.component.ts b/libs/vault/src/components/decryption-failure-dialog/decryption-failure-dialog.component.ts
index 6b1a0e0d8aa..e829c003c5a 100644
--- a/libs/vault/src/components/decryption-failure-dialog/decryption-failure-dialog.component.ts
+++ b/libs/vault/src/components/decryption-failure-dialog/decryption-failure-dialog.component.ts
@@ -7,7 +7,7 @@ import { CipherId } from "@bitwarden/common/types/guid";
import {
DIALOG_DATA,
DialogRef,
- AnchorLinkDirective,
+ LinkComponent,
AsyncActionsModule,
ButtonModule,
DialogModule,
@@ -32,7 +32,7 @@ export type DecryptionFailureDialogParams = {
JslibModule,
AsyncActionsModule,
ButtonModule,
- AnchorLinkDirective,
+ LinkComponent,
],
})
export class DecryptionFailureDialogComponent {
diff --git a/package-lock.json b/package-lock.json
index 6352675d718..d899e4479d5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23,12 +23,12 @@
"@angular/platform-browser": "20.3.16",
"@angular/platform-browser-dynamic": "20.3.16",
"@angular/router": "20.3.16",
- "@bitwarden/commercial-sdk-internal": "0.2.0-main.506",
- "@bitwarden/sdk-internal": "0.2.0-main.506",
+ "@bitwarden/commercial-sdk-internal": "0.2.0-main.522",
+ "@bitwarden/sdk-internal": "0.2.0-main.522",
"@electron/fuses": "1.8.0",
"@emotion/css": "11.13.5",
"@koa/multer": "4.0.0",
- "@koa/router": "14.0.0",
+ "@koa/router": "15.2.0",
"@microsoft/signalr": "8.0.7",
"@microsoft/signalr-protocol-msgpack": "8.0.7",
"@ng-select/ng-select": "20.7.0",
@@ -104,7 +104,6 @@
"@types/jsdom": "21.1.7",
"@types/koa": "3.0.1",
"@types/koa__multer": "2.0.7",
- "@types/koa__router": "12.0.4",
"@types/koa-bodyparser": "4.3.7",
"@types/koa-json": "2.0.24",
"@types/lowdb": "1.0.15",
@@ -200,7 +199,7 @@
"license": "SEE LICENSE IN LICENSE.txt",
"dependencies": {
"@koa/multer": "4.0.0",
- "@koa/router": "14.0.0",
+ "@koa/router": "15.2.0",
"big-integer": "1.6.52",
"browser-hrtime": "1.1.8",
"chalk": "4.1.2",
@@ -4982,9 +4981,10 @@
"link": true
},
"node_modules/@bitwarden/commercial-sdk-internal": {
- "version": "0.2.0-main.506",
- "resolved": "https://registry.npmjs.org/@bitwarden/commercial-sdk-internal/-/commercial-sdk-internal-0.2.0-main.506.tgz",
- "integrity": "sha512-aRzcxOcj8vXxz0jN3q2xxj26zxBfjg3oRm5QXbWE7zXJ2PGrgxTaePca9pQYYpwgr7iufYMnZcq5dH+qttNEmA==",
+ "version": "0.2.0-main.522",
+ "resolved": "https://registry.npmjs.org/@bitwarden/commercial-sdk-internal/-/commercial-sdk-internal-0.2.0-main.522.tgz",
+ "integrity": "sha512-2wAbg30cGlDhSj14LaK2/ISuT91XPVeNgL/PU+eoxLhAehGKjAXdvZN3PSwFaAuaMbEFzlESvqC1pzzO4p/1zw==",
+ "license": "BITWARDEN SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT",
"dependencies": {
"type-fest": "^4.41.0"
}
@@ -5086,9 +5086,10 @@
"link": true
},
"node_modules/@bitwarden/sdk-internal": {
- "version": "0.2.0-main.506",
- "resolved": "https://registry.npmjs.org/@bitwarden/sdk-internal/-/sdk-internal-0.2.0-main.506.tgz",
- "integrity": "sha512-BbTSU5Acx74Hr32zDj2kV8sbdclyvdIti5t6kXnCvJmA5dZbu+5j5Xw1luS9mGL9Vfi4w3OjVug/TiSxyhwLzQ==",
+ "version": "0.2.0-main.522",
+ "resolved": "https://registry.npmjs.org/@bitwarden/sdk-internal/-/sdk-internal-0.2.0-main.522.tgz",
+ "integrity": "sha512-E+YqqX/FvGF0vGx6sNJfYaMj88C+rVo51fQPMSHoOePdryFcKQSJX706Glv86OMLMXE7Ln5Lua8LJRftlF/EFQ==",
+ "license": "GPL-3.0",
"dependencies": {
"type-fest": "^4.41.0"
}
@@ -8746,18 +8747,46 @@
}
},
"node_modules/@koa/router": {
- "version": "14.0.0",
- "resolved": "https://registry.npmjs.org/@koa/router/-/router-14.0.0.tgz",
- "integrity": "sha512-LBSu5K0qAaaQcXX/0WIB9PGDevyCxxpnc1uq13vV/CgObaVxuis5hKl3Eboq/8gcb6ebnkAStW9NB/Em2eYyFA==",
+ "version": "15.2.0",
+ "resolved": "https://registry.npmjs.org/@koa/router/-/router-15.2.0.tgz",
+ "integrity": "sha512-7YUhq4W83cybfNa4E7JqJpWzoCTSvbnFltkvRaUaUX1ybFzlUoLNY1SqT8XmIAO6nGbFrev+FvJHw4mL+4WhuQ==",
"license": "MIT",
"dependencies": {
- "debug": "^4.4.1",
- "http-errors": "^2.0.0",
+ "debug": "^4.4.3",
+ "http-errors": "^2.0.1",
"koa-compose": "^4.1.0",
- "path-to-regexp": "^8.2.0"
+ "path-to-regexp": "^8.3.0"
},
"engines": {
"node": ">= 20"
+ },
+ "peerDependencies": {
+ "koa": "^2.0.0 || ^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "koa": {
+ "optional": false
+ }
+ }
+ },
+ "node_modules/@koa/router/node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/@leichtgewicht/ip-codec": {
@@ -15735,16 +15764,6 @@
"@types/koa": "*"
}
},
- "node_modules/@types/koa__router": {
- "version": "12.0.4",
- "resolved": "https://registry.npmjs.org/@types/koa__router/-/koa__router-12.0.4.tgz",
- "integrity": "sha512-Y7YBbSmfXZpa/m5UGGzb7XadJIRBRnwNY9cdAojZGp65Cpe5MAP3mOZE7e3bImt8dfKS4UFcR16SLH8L/z7PBw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/koa": "*"
- }
- },
"node_modules/@types/koa-bodyparser": {
"version": "4.3.7",
"resolved": "https://registry.npmjs.org/@types/koa-bodyparser/-/koa-bodyparser-4.3.7.tgz",
@@ -21479,9 +21498,9 @@
}
},
"node_modules/debug": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
@@ -35514,12 +35533,13 @@
}
},
"node_modules/path-to-regexp": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
- "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
+ "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
"license": "MIT",
- "engines": {
- "node": ">=16"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/path-type": {
diff --git a/package.json b/package.json
index 2cc60c08c9d..751c67afcd1 100644
--- a/package.json
+++ b/package.json
@@ -71,7 +71,6 @@
"@types/jsdom": "21.1.7",
"@types/koa": "3.0.1",
"@types/koa__multer": "2.0.7",
- "@types/koa__router": "12.0.4",
"@types/koa-bodyparser": "4.3.7",
"@types/koa-json": "2.0.24",
"@types/lowdb": "1.0.15",
@@ -162,12 +161,12 @@
"@angular/platform-browser": "20.3.16",
"@angular/platform-browser-dynamic": "20.3.16",
"@angular/router": "20.3.16",
- "@bitwarden/commercial-sdk-internal": "0.2.0-main.506",
- "@bitwarden/sdk-internal": "0.2.0-main.506",
+ "@bitwarden/commercial-sdk-internal": "0.2.0-main.522",
+ "@bitwarden/sdk-internal": "0.2.0-main.522",
"@electron/fuses": "1.8.0",
"@emotion/css": "11.13.5",
"@koa/multer": "4.0.0",
- "@koa/router": "14.0.0",
+ "@koa/router": "15.2.0",
"@microsoft/signalr": "8.0.7",
"@microsoft/signalr-protocol-msgpack": "8.0.7",
"@ng-select/ng-select": "20.7.0",