//#region src/components/systemSettings/registry/utils/typeValidation.ts
/**
* 验证字符串类型
*/
const validateString = (value) => {
	if (value === null || value === void 0 || value === "") return { isValid: true };
	if (typeof value === "string") return { isValid: true };
	return {
		isValid: false,
		error: "默认值必须是字符串类型"
	};
};
/**
* 验证整数类型
*/
const validateInteger = (value) => {
	if (value === null || value === void 0 || value === "") return { isValid: true };
	if (typeof value === "number") {
		if (!Number.isInteger(value)) return {
			isValid: false,
			error: "默认值必须是整数"
		};
		return { isValid: true };
	}
	if (typeof value === "string") {
		const trimmed = value.trim();
		if (trimmed === "") return { isValid: true };
		const num = Number(trimmed);
		if (isNaN(num) || !Number.isInteger(num)) return {
			isValid: false,
			error: "默认值必须是有效的整数"
		};
		return { isValid: true };
	}
	return {
		isValid: false,
		error: "默认值必须是有效的整数"
	};
};
/**
* 验证浮点数类型
*/
const validateFloat = (value) => {
	if (value === null || value === void 0 || value === "") return { isValid: true };
	if (typeof value === "number") {
		if (!isFinite(value)) return {
			isValid: false,
			error: "默认值必须是有效的数字"
		};
		return { isValid: true };
	}
	if (typeof value === "string") {
		const trimmed = value.trim();
		if (trimmed === "") return { isValid: true };
		const num = Number(trimmed);
		if (isNaN(num) || !isFinite(num)) return {
			isValid: false,
			error: "默认值必须是有效的数字"
		};
		return { isValid: true };
	}
	return {
		isValid: false,
		error: "默认值必须是有效的数字"
	};
};
/**
* 验证布尔类型
*/
const validateBoolean = (value) => {
	if (value === null || value === void 0 || value === "") return { isValid: true };
	if (typeof value === "string") {
		const trimmed = value.trim().toLowerCase();
		if (trimmed === "") return { isValid: true };
		if (trimmed !== "true" && trimmed !== "false") return {
			isValid: false,
			error: "默认值必须是 true 或 false"
		};
		return { isValid: true };
	}
	if (typeof value === "boolean") return { isValid: true };
	return {
		isValid: false,
		error: "默认值必须是 true 或 false"
	};
};
/**
* 验证数组类型（JSON对象/数组）
*/
const validateArray = (value) => {
	if (value === null || value === void 0 || value === "") return { isValid: true };
	if (typeof value === "string") {
		const trimmed = value.trim();
		if (trimmed === "") return { isValid: true };
		try {
			const parsed = JSON.parse(trimmed);
			if (typeof parsed !== "object" || parsed === null) return {
				isValid: false,
				error: "默认值必须是有效的JSON对象或数组"
			};
			return { isValid: true };
		} catch (error) {
			return {
				isValid: false,
				error: "默认值必须是有效的JSON对象或数组"
			};
		}
	}
	if (typeof value === "object" && value !== null) return { isValid: true };
	return {
		isValid: false,
		error: "默认值必须是有效的JSON对象或数组"
	};
};
/**
* 根据字段类型验证默认值
*/
const validateDefaultValue = (fieldType, defaultValue) => {
	if (!fieldType) return {
		isValid: false,
		error: "字段类型不能为空"
	};
	switch (fieldType.toLowerCase()) {
		case "string": return validateString(defaultValue);
		case "integer": return validateInteger(defaultValue);
		case "float": return validateFloat(defaultValue);
		case "boolean": return validateBoolean(defaultValue);
		case "array": return validateArray(defaultValue);
		default: return {
			isValid: false,
			error: `不支持的字段类型: ${fieldType}`
		};
	}
};
/**
* 解析默认值为对应的类型
*/
const parseDefaultValue = (fieldType, defaultValue) => {
	if (defaultValue === null || defaultValue === void 0 || defaultValue === "") return null;
	switch (fieldType.toLowerCase()) {
		case "string": return String(defaultValue);
		case "integer":
			if (typeof defaultValue === "string") {
				const trimmed = defaultValue.trim();
				if (trimmed === "") return null;
				return parseInt(trimmed, 10);
			}
			return defaultValue;
		case "float":
			if (typeof defaultValue === "string") {
				const trimmed = defaultValue.trim();
				if (trimmed === "") return null;
				return parseFloat(trimmed);
			}
			return defaultValue;
		case "boolean":
			if (typeof defaultValue === "string") {
				const trimmed = defaultValue.trim().toLowerCase();
				if (trimmed === "") return null;
				return trimmed === "true";
			}
			return Boolean(defaultValue);
		case "array":
			if (typeof defaultValue === "string") {
				const trimmed = defaultValue.trim();
				if (trimmed === "") return null;
				return JSON.parse(trimmed);
			}
			return defaultValue;
		default: return defaultValue;
	}
};
//#endregion
exports.parseDefaultValue = parseDefaultValue;
exports.validateDefaultValue = validateDefaultValue;
