Response object to validate
Type predicate indicating if response is a valid SearchResponse
// Valid search response
const validResponse = {
responseStatusCode: 200,
"@type": "SearchResponse",
contents: {
ContentFolderZone: [
{
childRules: [
{
"product.productId": "12345",
"product.productName": "Sodium Chloride",
"product.shortDescription": "High purity NaCl",
itemPrice: "29.99",
"product.seoName": "sodium-chloride",
productUrl: "/products/sodium-chloride",
productName: "Sodium Chloride 500g",
qtyDiscountAvailable: false
}
]
}
]
}
};
if (isValidSearchResponse(validResponse)) {
console.log("Valid search response");
const firstItem = validResponse.contents.ContentFolderZone[0].childRules[0];
console.log("First item:", firstItem["product.productName"]);
} else {
console.error("Invalid search response structure");
}
// Invalid search response (empty content folder)
const emptyFolder = {
responseStatusCode: 200,
"@type": "SearchResponse",
contents: {
ContentFolderZone: [] // Empty folder
}
};
if (!isValidSearchResponse(emptyFolder)) {
console.error("Invalid response - empty content folder");
}
// Invalid search response (missing child rules)
const noChildRules = {
responseStatusCode: 200,
"@type": "SearchResponse",
contents: {
ContentFolderZone: [
{
// Missing childRules
}
]
}
};
if (!isValidSearchResponse(noChildRules)) {
console.error("Invalid response - missing child rules");
}
Type guard to validate if a response has the complete structure of a Carolina search response. Performs deep validation of the response object including contents, content folder zones, and child rules. This is a more thorough validation than isResponseOk.