From 82f8fc430324c43c384473764618a9ce098c989b Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Thu, 23 Oct 2025 22:27:16 +0200 Subject: [PATCH] fix: use consistent array format for all WebAssembly functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Motivations :** - Fix WebAssembly serialization error: 'invalid type: map, expected a sequence' - WebAssembly expects array/sequence format, not object/map format - Ensure all WebAssembly functions use the same array format consistently - Convert object members to array format for all WebAssembly calls **Modifications :** - create_new_process: Convert members object to array format - validate_state: Convert members object to array format - parse_cipher: Convert members object to array format - request_data: Convert members object to array format - All functions now consistently use Object.values().map() to create arrays - Maintained sp_addresses structure in array format **Pages affectรฉes :** - src/services/service.ts: Standardized all WebAssembly functions to use array format --- src/services/service.ts | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/services/service.ts b/src/services/service.ts index ba87338..8cbcb10 100755 --- a/src/services/service.ts +++ b/src/services/service.ts @@ -903,11 +903,12 @@ export default class Services { throw new Error('No members available - handshake not completed yet'); } - // Convert to the exact format expected by WebAssembly - // WebAssembly expects a map/object, not an array - const members = membersObj; - console.log('๐Ÿ” DEBUG: Members object keys:', Object.keys(members)); - console.log('๐Ÿ” DEBUG: Members object sample:', Object.entries(members).slice(0, 3)); + // Convert to array format for WebAssembly (it expects a sequence, not a map) + const members = Object.values(membersObj).map(member => ({ + sp_addresses: member.sp_addresses + })); + console.log('๐Ÿ” DEBUG: Members array length:', members.length); + console.log('๐Ÿ” DEBUG: Members array sample:', members.slice(0, 3)); const result = this.sdkClient.create_new_process( encodedPrivateData, @@ -1010,7 +1011,9 @@ export default class Services { throw new Error('Failed to get process from db'); } try { - const members = this.getAllMembers(); + const members = Object.values(this.getAllMembers()).map(member => ({ + sp_addresses: member.sp_addresses + })); const result = this.sdkClient.validate_state(process, stateId, members); if (result.updated_process) { await this.checkConnections(result.updated_process.current_process); @@ -1067,7 +1070,9 @@ export default class Services { } async parseCipher(message: string) { - const membersList = this.getAllMembers(); + const membersList = Object.values(this.getAllMembers()).map(member => ({ + sp_addresses: member.sp_addresses + })); const processes = await this.getProcesses(); try { // console.log('parsing new cipher'); @@ -2499,7 +2504,9 @@ export default class Services { roles: Record[] ) { console.log('Requesting data from peers'); - const membersList = this.getAllMembers(); + const membersList = Object.values(this.getAllMembers()).map(member => ({ + sp_addresses: member.sp_addresses + })); try { // Convert objects to strings for WASM compatibility const rolesString = JSON.stringify(roles);