/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
import { RefParserInterface } from '../models/interface.js';
import { LogWrapper } from '../service/log-wrapper.js';

export class RefParser implements RefParserInterface {
	parseRef(ref: string): { namespace?: string, name: string, version: string } {
		LogWrapper.logDebug('0003', `Starting to parse reference: ${ref}`);

		const parts = ref.split(':');
		let namespace, name, version;

		if (parts.length === 3) {
			[namespace, name, version] = parts;
			LogWrapper.logDebug('0003', `Parsed reference into namespace: ${namespace}, name: ${name}, version: ${version}`);
		} else if (parts.length === 2) {
			[name, version] = parts;
			LogWrapper.logDebug('0003', `Parsed reference into name: ${name}, version: ${version}`);
		} else {
			LogWrapper.logError('0003', `Invalid reference format: ${ref}`);
			throw new Error(`Invalid reference format: ${ref}`);
		}

		LogWrapper.logDebug('0003', `Completed parsing reference: ${ref}`);
		return { namespace, name, version };
	}
}
