solverforge-ui 0.6.1

Frontend component library for SolverForge constraint-optimization applications
Documentation
const fs = require('node:fs');
const path = require('node:path');
const vm = require('node:vm');

const { createDom } = require('./fake-dom');

const ROOT = path.resolve(__dirname, '..', '..');

function loadSf(files, overrides = {}) {
  const { document, window, Node } = createDom();
  const context = vm.createContext({
    console,
    document,
    window,
    Node,
    setTimeout,
    clearTimeout,
    Promise,
    ...overrides,
  });

  files.forEach((file) => {
    const source = fs.readFileSync(path.join(ROOT, file), 'utf8');
    vm.runInContext(source, context, { filename: file });
  });

  return { SF: context.window.SF, context, document };
}

async function flush() {
  await Promise.resolve();
  await Promise.resolve();
}

module.exports = {
  loadSf,
  flush,
};