/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
import { AppConstants } from '../constants/app.constants.js';
import yaml from 'js-yaml';

export class Converter {
	convertToYamlString(data: unknown, fileName?: string): string {
		try {
			return yaml.dump(data);
		} catch (err) {
			throw new Error(`${AppConstants.PARSING_EXCEPTION(fileName)} ${(err as Error).message}`);
		}
	}

	convertToJSON(data: string, fileName?: string): unknown {
		try {
			return yaml.load(data);
		} catch (err) {
			throw new Error(`${AppConstants.PARSING_EXCEPTION(fileName)} ${(err as Error).message}`);
		}
	}

	convertMultilineYamlToJSON(data: string, fileName?: string): unknown[] {
		try {
			return yaml.loadAll(data);
		} catch (err) {
			throw new Error(`${AppConstants.PARSING_EXCEPTION(fileName)} ${(err as Error).message}`);
		}
	}

	convertNumberToString(data: string | number): string {
		if (typeof data === 'string') {
			return data.trim();
		} else if (Math.abs(data - Math.floor(data)) < 1e-7) {
			return data.toFixed(1);
		} else {
			return data.toString();
		}
	}
}
