Vue Storefront is now Alokai! Learn More
Image normalizer

Image normalizer

The normalizeImage function maps SFCC Image into Unified SfImage.

Parameters

NameTypeDefault valueDescription
contextNormalizerContextContext needed for the normalizer.
imageImageSFCC image

Extending

The SfImage is returned as a part of multiple models, as for example SfProduct, SfProductCatalogItem, and SfCart. If the SfImage structure doesn't contain the information you need for your Storefront, you can extend its logic using the addCustomFields API.

export const unifiedApiExtension = createUnifiedExtension({
  normalizers: {
    addCustomFields: [
      {
        normalizeImage: (context, image) => ({
          someNewField: "someValue",
        }),
      },
    ],
  },
  config: {
    ...
  },
});

Source

image.ts
import type { Image } from "@internal";
import { maybe } from "@shared/utils";
import { defineNormalizer } from "../defineNormalizer";

function isImageObject(image: unknown): image is Image {
  return !!image && typeof image === "object" && "link" in image;
}

export const normalizeImage = defineNormalizer.normalizeImage((context, image) => {
  if (isImageObject(image)) {
    return {
      alt: maybe(image.alt),
      url: image.link,
    };
  }

  return {
    alt: null,
    url: image,
  };
});