89 lines
2.6 KiB
JavaScript
89 lines
2.6 KiB
JavaScript
/**
|
|
* Debug helper for WebAssembly Vault with Rhai scripts
|
|
*/
|
|
|
|
// Helper to try various Rhai scripts for debugging
|
|
export const RHAI_SCRIPTS = {
|
|
// Check if there's an active session
|
|
CHECK_SESSION: `
|
|
let has_session = false;
|
|
let current_keyspace = "";
|
|
|
|
// Try to access functions expected to exist in the vault namespace
|
|
if (isdef(vault) && isdef(vault::has_active_session)) {
|
|
has_session = vault::has_active_session();
|
|
if (has_session && isdef(vault::get_current_keyspace)) {
|
|
current_keyspace = vault::get_current_keyspace();
|
|
}
|
|
}
|
|
|
|
{
|
|
"has_session": has_session,
|
|
"keyspace": current_keyspace,
|
|
"available_functions": [
|
|
isdef(vault::list_keypairs) ? "list_keypairs" : null,
|
|
isdef(vault::add_keypair) ? "add_keypair" : null,
|
|
isdef(vault::has_active_session) ? "has_active_session" : null,
|
|
isdef(vault::get_current_keyspace) ? "get_current_keyspace" : null
|
|
]
|
|
}
|
|
`,
|
|
|
|
// Explicitly get keypairs for the current keyspace using session data
|
|
LIST_KEYPAIRS: `
|
|
let result = {"error": "Not initialized"};
|
|
|
|
if (isdef(vault) && isdef(vault::has_active_session) && vault::has_active_session()) {
|
|
let keyspace = vault::get_current_keyspace();
|
|
|
|
// Try to list the keypairs from the current session
|
|
if (isdef(vault::get_keypairs_from_session)) {
|
|
result = {
|
|
"keyspace": keyspace,
|
|
"keypairs": vault::get_keypairs_from_session()
|
|
};
|
|
} else {
|
|
result = {
|
|
"error": "vault::get_keypairs_from_session is not defined",
|
|
"keyspace": keyspace
|
|
};
|
|
}
|
|
}
|
|
|
|
result
|
|
`,
|
|
|
|
// Use Rhai to inspect the Vault storage directly (for advanced debugging)
|
|
INSPECT_VAULT_STORAGE: `
|
|
let result = {"error": "Not accessible"};
|
|
|
|
if (isdef(vault) && isdef(vault::inspect_storage)) {
|
|
result = vault::inspect_storage();
|
|
}
|
|
|
|
result
|
|
`
|
|
};
|
|
|
|
// Run all debug scripts and collect results
|
|
export async function runDiagnostics(wasmModule) {
|
|
if (!wasmModule || !wasmModule.run_rhai) {
|
|
throw new Error('WebAssembly module not loaded or run_rhai not available');
|
|
}
|
|
|
|
const results = {};
|
|
|
|
for (const [name, script] of Object.entries(RHAI_SCRIPTS)) {
|
|
try {
|
|
console.log(`Running Rhai diagnostic script: ${name}`);
|
|
results[name] = await wasmModule.run_rhai(script);
|
|
console.log(`Result from ${name}:`, results[name]);
|
|
} catch (error) {
|
|
console.error(`Error running script ${name}:`, error);
|
|
results[name] = { error: error.toString() };
|
|
}
|
|
}
|
|
|
|
return results;
|
|
}
|