import fs from 'fs';
import path from 'path';

const readPackageVersion = () => {
  try {
    const pkgPath = path.join(process.cwd(), 'package.json');
    const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
    return String(pkg.version || '0.0.0');
  } catch {
    return '0.0.0';
  }
};

const readWidgetVersion = () => {
  try {
    const versionPath = path.join(process.cwd(), 'dist', 'client', 'widget-version.txt');
    const version = fs.readFileSync(versionPath, 'utf-8').trim();
    return version || readPackageVersion();
  } catch {
    return readPackageVersion();
  }
};

export const UI_TEMPLATE_FILENAME = `proovit-${readWidgetVersion()}.html`;
export const UI_TEMPLATE_URI = `ui://widget/${UI_TEMPLATE_FILENAME}`;

export const withWidgetData = <T extends Record<string, unknown>>(data: T) => {
  return {
    ui: UI_TEMPLATE_URI,
    data,
    ...data
  };
};
