const fs = require('fs');
const path = require('path');
function testWasmPackage() {
console.log('๐งช Testing Briefcase AI WASM Package\n');
const pkgDir = path.join(__dirname, 'pkg');
const expectedFiles = [
'briefcase_wasm.js',
'briefcase_wasm.d.ts',
'briefcase_wasm_bg.wasm',
'package.json'
];
let allFilesExist = true;
expectedFiles.forEach(file => {
const filepath = path.join(pkgDir, file);
if (fs.existsSync(filepath)) {
console.log(`โ
${file} exists`);
} else {
console.log(`โ ${file} missing`);
allFilesExist = false;
}
});
if (!allFilesExist) {
console.log('โ WASM package incomplete');
return;
}
try {
const packageJson = JSON.parse(fs.readFileSync(path.join(pkgDir, 'package.json'), 'utf8'));
console.log(`โ
Package name: ${packageJson.name}`);
console.log(`โ
Package version: ${packageJson.version}`);
console.log(`โ
Package type: ${packageJson.type || 'commonjs'}`);
} catch (error) {
console.log(`โ Error reading package.json: ${error.message}`);
return;
}
try {
const tsDefContent = fs.readFileSync(path.join(pkgDir, 'briefcase_wasm.d.ts'), 'utf8');
const hasDecisionSnapshot = tsDefContent.includes('JsDecisionSnapshot');
const hasMemoryStorage = tsDefContent.includes('JsMemoryStorage');
const hasVersionFunction = tsDefContent.includes('version()');
const hasTestFunction = tsDefContent.includes('test_functionality');
if (hasDecisionSnapshot) console.log('โ
JsDecisionSnapshot type definitions found');
if (hasMemoryStorage) console.log('โ
JsMemoryStorage type definitions found');
if (hasVersionFunction) console.log('โ
version() function definition found');
if (hasTestFunction) console.log('โ
test_functionality() function definition found');
if (hasDecisionSnapshot && hasMemoryStorage && hasVersionFunction && hasTestFunction) {
console.log('โ
All expected TypeScript definitions present');
}
} catch (error) {
console.log(`โ Error checking TypeScript definitions: ${error.message}`);
return;
}
try {
const wasmStats = fs.statSync(path.join(pkgDir, 'briefcase_wasm_bg.wasm'));
const wasmSizeKB = Math.round(wasmStats.size / 1024);
console.log(`โ
WASM binary size: ${wasmSizeKB} KB`);
if (wasmSizeKB > 10 && wasmSizeKB < 1000) {
console.log('โ
WASM binary size looks reasonable');
} else {
console.log(`โ ๏ธ WASM binary size unusual: ${wasmSizeKB} KB`);
}
} catch (error) {
console.log(`โ Error checking WASM binary: ${error.message}`);
return;
}
console.log('\n๐ WASM package validation completed successfully!');
console.log('\n๐ Summary:');
console.log(' โ
All required files present');
console.log(' โ
Package.json valid');
console.log(' โ
TypeScript definitions complete');
console.log(' โ
WASM binary properly generated');
console.log('\n๐ก To test in browser: serve test.html via HTTP');
console.log('๐ก To test in Node.js: build with --target nodejs');
}
testWasmPackage();