// SPDX-License-Identifier: LGPL-2.1-or-later const fs = require("fs"); const path = require("path"); const { pathToFileURL } = require("url"); const buildDirectory = path.resolve(process.argv[2] || "build-web/configure/bin"); async function main() { globalThis.__dirname = `${buildDirectory}${path.sep}`; globalThis.require = require; const moduleUrl = pathToFileURL(path.join(buildDirectory, "FreeCADWebSpreadsheetRuntimeProbe.js")).href; const module = await import(moduleUrl); const probe = await module.default({ wasmBinary: fs.readFileSync(path.join(buildDirectory, "FreeCADWebSpreadsheetRuntimeProbe.wasm")), }); const call = (name, returnType = "number", argTypes = [], args = []) => probe.ccall(name, returnType, argTypes, args); const result = { initialize: call("fc_web_spreadsheet_initialize"), createRecompute: call("fc_web_spreadsheet_create_recompute"), typeName: call("fc_web_spreadsheet_type_name", "string"), objectCount: call("fc_web_spreadsheet_object_count"), recomputeCount: call("fc_web_spreadsheet_recompute_count"), recomputeHasError: call("fc_web_spreadsheet_recompute_has_error"), cellA1: call("fc_web_spreadsheet_cell_a1", "string"), cellB1: call("fc_web_spreadsheet_cell_b1", "string"), resourcesReleased: call("fc_web_spreadsheet_create_resources_released"), error: call("fc_web_spreadsheet_last_error", "string"), }; const valid = result.initialize === 1 && result.createRecompute === 1 && result.typeName === "Spreadsheet::Sheet" && result.objectCount === 1 && result.recomputeCount === 1 && result.recomputeHasError === 0 && result.cellA1 === "21" && result.cellB1 === "=A1*2" && result.resourcesReleased === 1 && result.error === ""; if (!valid) { throw new Error(JSON.stringify(result)); } console.log(JSON.stringify(result)); } main().catch((error) => { console.error(error); process.exitCode = 1; });