@datocms/cma-client
Version:
JS client for DatoCMS REST Content Management API
44 lines • 1.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isLocalizedFileFieldValueInRequest = exports.isLocalizedFileFieldValue = exports.isFileFieldValueInRequest = exports.isFileFieldValue = void 0;
const normalizedFieldValues_1 = require("../utilities/normalizedFieldValues");
/**
* =============================================================================
* TYPE GUARDS - Runtime validation functions
* =============================================================================
*/
/**
* Type guard for basic File field values (response format with all fields present).
* Validates that all required metadata fields are present.
*/
function isFileFieldValue(value) {
if (value === null)
return true;
return ((0, normalizedFieldValues_1.isLocalizedFieldValue)(value) &&
'upload_id' in value &&
'alt' in value &&
'title' in value &&
'custom_data' in value &&
'focal_point' in value);
}
exports.isFileFieldValue = isFileFieldValue;
/**
* Type guard for File field values in API request format.
* Allows metadata fields to be optional or omitted.
*/
function isFileFieldValueInRequest(value) {
if (value === null)
return true;
return typeof value === 'object' && value !== null && 'upload_id' in value;
}
exports.isFileFieldValueInRequest = isFileFieldValueInRequest;
function isLocalizedFileFieldValue(value) {
return ((0, normalizedFieldValues_1.isLocalizedFieldValue)(value) && Object.values(value).every(isFileFieldValue));
}
exports.isLocalizedFileFieldValue = isLocalizedFileFieldValue;
function isLocalizedFileFieldValueInRequest(value) {
return ((0, normalizedFieldValues_1.isLocalizedFieldValue)(value) &&
Object.values(value).every(isFileFieldValueInRequest));
}
exports.isLocalizedFileFieldValueInRequest = isLocalizedFileFieldValueInRequest;
//# sourceMappingURL=file.js.map