Files
Aislo/tools/est-test/quantity-calculate.cjs

19 lines
675 B
JavaScript

const fs = require("node:fs");
const path = require("node:path");
const vm = require("node:vm");
// The same calculation code used by the browser, isolated from server globals.
const engine = vm.createContext({ structuredClone });
for (const name of ["native-math.js", "native-formula.js", "native-text.js", "native-quantity.cjs"])
vm.runInContext(fs.readFileSync(path.join(__dirname, name), "utf8"), engine, { filename: name });
function calculateQuantity(sheet) {
engine.sheet = sheet;
try {
return vm.runInContext("EstQuantity.calculate(sheet)", engine, { timeout: 20000 });
} finally {
delete engine.sheet;
}
}
module.exports = { calculateQuantity };