#!/usr/bin/env node
'use strict';
/**
 * טוען את המנוע משני מקורות לאימות כפול:
 *   1) tests/helpers/engine-dump.js  (gen-dump קנוני)
 *   2) sdk-check/dump-test.js          (נתיב legacy / הפצה)
 */
const path = require('node:path');

process.env.SC_TEST = process.env.SC_TEST || '1';

let _dump = null;
let _sdk = null;

function loadDump() {
  if (!_dump) {
    _dump = require(path.join(__dirname, 'engine-dump.js')).__test;
    try { _dump.ensureId(); _dump.deriveKeys(); } catch { /* */ }
  }
  return _dump;
}

function loadSdk() {
  if (!_sdk) {
    const sdkPath = path.join(__dirname, '..', '..', 'sdk-check', 'dump-test.js');
    _sdk = require(sdkPath).__test;
    try { _sdk.ensureId(); _sdk.deriveKeys(); } catch { /* */ }
  }
  return _sdk;
}

function loadBoth() {
  return { dump: loadDump(), sdk: loadSdk() };
}

function callSafe(fn, args = []) {
  if (typeof fn !== 'function') return { ok: false, kind: 'missing' };
  try {
    let v = fn(...args);
    if (v && typeof v.then === 'function') return { ok: true, kind: 'async', v };
    return { ok: true, kind: 'sync', v };
  } catch (e) {
    return { ok: false, kind: 'throw', err: e?.message || String(e) };
  }
}

module.exports = { loadDump, loadSdk, loadBoth, callSafe };
