#!/usr/bin/env node
/**
 * @open-matrix/contracts build
 *
 * Type contracts + one pure runtime function (decideMatrixPlacementBind).
 * Emits .js + .d.ts via tsc. Part of core-decontamination Phase 2.
 */

import { execFileSync } from 'node:child_process';
import { createRequire } from 'node:module';
import { rmSync } from 'node:fs';
import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';

const __dirname = dirname(fileURLToPath(import.meta.url));
const distDir = resolve(__dirname, 'dist');
const require = createRequire(import.meta.url);
const typescriptPackageJson = require.resolve('typescript/package.json', { paths: [__dirname] });
const tscBin = resolve(dirname(typescriptPackageJson), 'bin/tsc');

rmSync(distDir, { recursive: true, force: true });
execFileSync(process.execPath, [
  tscBin,
  '-p',
  resolve(__dirname, 'tsconfig.build.json'),
], {
  cwd: __dirname,
  stdio: 'inherit',
});
