Files
medusa-store/packages/gatsby-source-medusa/src/process-node.ts
Kasper Fabricius Kristensen b8ff364276 feat: gatsby source medusa (#924)
2021-12-14 20:56:31 +01:00

50 lines
1.2 KiB
TypeScript

import { capitalize } from "./utils/capitalize"
export const processNode = (
node: any,
fieldName: string,
createContentDigest: (this: void, input: string | object) => string
): any[] => {
const nodeId: string = node.id
const nodeContent = JSON.stringify(node)
const nodeContentDigest = createContentDigest(nodeContent)
let images = []
if (fieldName === "products") {
if (node.images?.length) {
images = node.images.map((image: any) => {
const nodeImageContentDigest = createContentDigest(image.id)
const nodeImageContent = JSON.stringify(image)
const imageData = Object.assign({}, image, {
id: image.id,
parent: nodeId,
children: [],
internal: {
type: "MedusaImages",
content: nodeImageContent,
contentDigest: nodeImageContentDigest,
},
})
return imageData
})
}
delete node.images
}
const nodeData = Object.assign({}, node, {
id: nodeId,
parent: null,
children: [],
internal: {
type: `Medusa${capitalize(fieldName)}`,
content: nodeContent,
contentDigest: nodeContentDigest,
},
})
return [nodeData, ...images]
}