GetCategories
Implements GetCategories Unified Method.
Source
import { defineApi } from "@vsf-enterprise/unified-api-commercetools";
import type { GetCategoryResponse, getCategory } from "@vsf-enterprise/commercetools-api";
import type { GetCategoriesArgs } from "@vsf-enterprise/unified-api-commercetools/udl";
import { getNormalizers } from "@vue-storefront/unified-data-model";
type CategoryWhereSearch = Parameters<typeof getCategory>[1];
export const getCategories = defineApi.getCategories(async (context, args = {}) => {
  const response = await context.api.getCategory(toCategoryWhereSearch(args));
  const { categories } = unwrapResponse(response);
  const { normalizeCategory } = getNormalizers(context);
  return categories.map((category) => normalizeCategory(category));
});
function toCategoryWhereSearch(args: GetCategoriesArgs): CategoryWhereSearch {
  return {
    catIds: args.ids,
    slugs: args.slugs,
  };
}
function unwrapResponse(response: GetCategoryResponse) {
  return { categories: response.categories.results || [] };
}