From 8af1fd055d4c5cb906e58f68dcbc2669cc4afb9d Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Thu, 23 Oct 2025 21:29:50 +0200 Subject: [PATCH] Fix WebAssembly members parameter type error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Motivations :** - WebAssembly expects array (sequence) but was receiving object (map) for members parameter - Error: 'invalid type: map, expected a sequence at line 1 column 86' **Modifications :** - Convert getAllMembers() object to array using Object.values() before passing to WebAssembly - Fixed in createProcess, createPrdUpdate, createResponsePrd, validateState, parseCipher, parseNewTx, requestData - Added debug logging for members array length **Pages affectΓ©es :** - src/services/service.ts --- src/pages/home/home.ts | 2 +- src/services/service.ts | 26 +++++++++++++++----------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/pages/home/home.ts b/src/pages/home/home.ts index 36026a9..b75b50e 100755 --- a/src/pages/home/home.ts +++ b/src/pages/home/home.ts @@ -583,7 +583,7 @@ async function handleMainPairing(): Promise { } catch (error) { console.error('Pairing failed:', error); - + if (mainStatus) { mainStatus.innerHTML = '⏳ Waiting for user to validate secure key access...'; } diff --git a/src/services/service.ts b/src/services/service.ts index 8d706c7..64bc44d 100755 --- a/src/services/service.ts +++ b/src/services/service.ts @@ -892,10 +892,14 @@ export default class Services { await this.getTokensFromFaucet(); - const members = this.getAllMembers(); - console.log('πŸ” DEBUG: Members for create_new_process:', members); - console.log('πŸ” DEBUG: Members type:', typeof members); - console.log('πŸ” DEBUG: Members keys:', Object.keys(members)); + const membersObj = this.getAllMembers(); + console.log('πŸ” DEBUG: Members for create_new_process:', membersObj); + console.log('πŸ” DEBUG: Members type:', typeof membersObj); + console.log('πŸ” DEBUG: Members keys:', Object.keys(membersObj)); + + // Convert object to array for WebAssembly + const members = Object.values(membersObj); + console.log('πŸ” DEBUG: Members array length:', members.length); const result = this.sdkClient.create_new_process( encodedPrivateData, @@ -944,7 +948,7 @@ export default class Services { encodedPrivateData, roles, encodedPublicData, - this.getAllMembers() + Object.values(this.getAllMembers()) ); if (result.updated_process) { await this.checkConnections(result.updated_process.current_process); @@ -965,7 +969,7 @@ export default class Services { await this.checkConnections(process); } try { - return this.sdkClient.create_update_message(process, stateId, this.getAllMembers()); + return this.sdkClient.create_update_message(process, stateId, Object.values(this.getAllMembers())); } catch (e) { throw new Error(`Failed to create prd update: ${e}`); } @@ -977,7 +981,7 @@ export default class Services { throw new Error('Unknown process'); } try { - return this.sdkClient.create_response_prd(process, stateId, this.getAllMembers()); + return this.sdkClient.create_response_prd(process, stateId, Object.values(this.getAllMembers())); } catch (e) { throw new Error(`Failed to create response prd: ${e}`); } @@ -989,7 +993,7 @@ export default class Services { throw new Error('Failed to get process from db'); } try { - const result = this.sdkClient.validate_state(process, stateId, this.getAllMembers()); + const result = this.sdkClient.validate_state(process, stateId, Object.values(this.getAllMembers())); if (result.updated_process) { await this.checkConnections(result.updated_process.current_process); return result; @@ -1045,7 +1049,7 @@ export default class Services { } async parseCipher(message: string) { - const membersList = this.getAllMembers(); + const membersList = Object.values(this.getAllMembers()); const processes = await this.getProcesses(); try { // console.log('parsing new cipher'); @@ -1076,7 +1080,7 @@ export default class Services { return; } - const membersList = this.getAllMembers(); + const membersList = Object.values(this.getAllMembers()); try { // Does the transaction spend the tip of a process? const prevouts = this.sdkClient.get_prevouts(parsedMsg.transaction); @@ -2475,7 +2479,7 @@ export default class Services { roles: Record[] ) { console.log('Requesting data from peers'); - const membersList = this.getAllMembers(); + const membersList = Object.values(this.getAllMembers()); try { // Convert objects to strings for WASM compatibility const rolesString = JSON.stringify(roles);