@@ -6,6 +6,7 @@ import { KeyManagerError, KeyManagerErrorCodes } from "./types";
66/**
77 * Factory class to create appropriate key managers based on context
88 */
9+ // biome-ignore lint/complexity/noStaticOnlyClass: Factory pattern with state management requires a class
910export class KeyManagerFactory {
1011 private static hardwareKeyManager : HardwareKeyManager | null = null ;
1112 private static softwareKeyManager : SoftwareKeyManager | null = null ;
@@ -16,18 +17,18 @@ export class KeyManagerFactory {
1617 static async getKeyManager ( config : KeyManagerConfig ) : Promise < KeyManager > {
1718 // If explicitly requesting hardware and not in pre-verification mode
1819 if ( config . useHardware && ! config . preVerificationMode ) {
19- return this . getHardwareKeyManager ( ) ;
20+ return KeyManagerFactory . getHardwareKeyManager ( ) ;
2021 }
2122
2223 // If in pre-verification mode, always use software keys
2324 if ( config . preVerificationMode ) {
2425 console . log ( "Using software key manager for pre-verification mode" ) ;
25- return this . getSoftwareKeyManager ( ) ;
26+ return KeyManagerFactory . getSoftwareKeyManager ( ) ;
2627 }
2728
2829 // Default behavior: try hardware first, fallback to software
2930 try {
30- const hardwareManager = this . getHardwareKeyManager ( ) ;
31+ const hardwareManager = KeyManagerFactory . getHardwareKeyManager ( ) ;
3132 // Test if hardware is available by checking if we can call exists
3233 await hardwareManager . exists ( config . keyId ) ;
3334 console . log ( "Using hardware key manager" ) ;
@@ -36,36 +37,36 @@ export class KeyManagerFactory {
3637 console . log (
3738 "Hardware key manager not available, falling back to software" ,
3839 ) ;
39- return this . getSoftwareKeyManager ( ) ;
40+ return KeyManagerFactory . getSoftwareKeyManager ( ) ;
4041 }
4142 }
4243
4344 /**
4445 * Get hardware key manager instance (singleton)
4546 */
4647 private static getHardwareKeyManager ( ) : HardwareKeyManager {
47- if ( ! this . hardwareKeyManager ) {
48- this . hardwareKeyManager = new HardwareKeyManager ( ) ;
48+ if ( ! KeyManagerFactory . hardwareKeyManager ) {
49+ KeyManagerFactory . hardwareKeyManager = new HardwareKeyManager ( ) ;
4950 }
50- return this . hardwareKeyManager ;
51+ return KeyManagerFactory . hardwareKeyManager ;
5152 }
5253
5354 /**
5455 * Get software key manager instance (singleton)
5556 */
5657 private static getSoftwareKeyManager ( ) : SoftwareKeyManager {
57- if ( ! this . softwareKeyManager ) {
58- this . softwareKeyManager = new SoftwareKeyManager ( ) ;
58+ if ( ! KeyManagerFactory . softwareKeyManager ) {
59+ KeyManagerFactory . softwareKeyManager = new SoftwareKeyManager ( ) ;
5960 }
60- return this . softwareKeyManager ;
61+ return KeyManagerFactory . softwareKeyManager ;
6162 }
6263
6364 /**
6465 * Check if hardware key manager is available
6566 */
6667 static async isHardwareAvailable ( ) : Promise < boolean > {
6768 try {
68- const hardwareManager = this . getHardwareKeyManager ( ) ;
69+ const hardwareManager = KeyManagerFactory . getHardwareKeyManager ( ) ;
6970 // Try to check if a test key exists to verify hardware availability
7071 await hardwareManager . exists ( "test-hardware-check" ) ;
7172 return true ;
@@ -88,14 +89,14 @@ export class KeyManagerFactory {
8889 preVerificationMode : context === "pre-verification" ,
8990 } ;
9091
91- return this . getKeyManager ( config ) ;
92+ return KeyManagerFactory . getKeyManager ( config ) ;
9293 }
9394
9495 /**
9596 * Reset singleton instances (useful for testing)
9697 */
9798 static reset ( ) : void {
98- this . hardwareKeyManager = null ;
99- this . softwareKeyManager = null ;
99+ KeyManagerFactory . hardwareKeyManager = null ;
100+ KeyManagerFactory . softwareKeyManager = null ;
100101 }
101102}
0 commit comments