// const [imageName, { url, pixelRatio = 1, sdf = false }] = image

// if (!url) {
//     console.error(`Invalid url for image: ${imageName}`)
//     return reject(
//         new Error(`Invalid url for image: ${imageName}`)
//     )
// }

// const loadImage = async () => {
//     let imgBuffer = null
//     if (url.startsWith('data:')) {
//         imgBuffer = Buffer.from(
//             url.split('base64,')[1],
//             'base64'
//         )
//     } else {
//         try {
//             const img = await getRemoteAssetPromise(url)
//             imgBuffer = img.data
//         } catch (e) {
//             return reject(e)
//         }
//     }
//     const img = sharp(imgBuffer)
//     const metadata = await img.metadata()
//     const data = await img.raw().toBuffer()
//     await map.addImage(imageName, data, {
//         width: metadata.width,
//         height: metadata.height,
//         pixelRatio,
//         sdf,
//     })
//     console.log('done add image ', imageName)
// }

// const loadImages = async () => {
//     for (const image of Object.entries(images)) {
//         try {
//             await loadImage(map, ...image)
//             console.log('after load image', image[0])
//         } catch (e) {
//             console.error('got error loading image', e)
//             return reject(e)
//         }
//     }
//     return undefined
// }
// try {
//     loadImages() //.catch()
// } catch (e) {
//     console.error('caught error', e)
//     return reject(e)
// }

// load any images
// if (images !== null) {
//     const loadImages = async () => {
//         const imageRequests = Object.entries(images).map(
//             async (image) => {
//                 await loadImage(map, ...image)
//             }
//         )

//         console.log('requests', imageRequests)
//         // try {
//         await Promise.all(imageRequests)
//         // } catch (e) {
//         //     console.error('caught error in promise.all', e)
//         // }
//         console.log('completed? requests', imageRequests)
//     }

//     try {
//         loadImages().catch()
//     } catch (e) {
//         console.error('caught error', e)
//         return reject(e)
//     }

// }

///////////////////

// map.render(
// {
//     zoom,
//     center,
//     height,
//     width,
//     bearing,
//     pitch,
// },
//     async (err, buffer) => {
//         if (err) {
//             console.error('Error rendering map')
//             console.error(err)
//             // return
//             reject(err)
//         }

//         console.log('map render done')

//         // map.release() // release map resources to prevent reusing in future render requests
//         map = null

//         try {
//             const png = await toPNG(
//                 buffer,
//                 width,
//                 height,
//                 ratio
//             )
//             resolve(png)
//         } catch (e) {
//             reject(e)
//         }

//         // FIXME: removed
//         // Un-premultiply pixel values
//         // Mapbox GL buffer contains premultiplied values, which are not handled correctly by sharp
//         // https://github.com/mapbox/mapbox-gl-native/issues/9124
//         // since we are dealing with 8-bit RGBA values, normalize alpha onto 0-255 scale and divide
//         // it out of RGB values
//         // for (let i = 0; i < buffer.length; i += 4) {
//         //     const alpha = buffer[i + 3]
//         //     const norm = alpha / 255
//         //     if (alpha === 0) {
//         //         buffer[i] = 0
//         //         buffer[i + 1] = 0
//         //         buffer[i + 2] = 0
//         //     } else {
//         //         buffer[i] = buffer[i] / norm
//         //         buffer[i + 1] = buffer[i + 1] / norm
//         //         buffer[i + 2] = buffer[i + 2] / norm
//         //     }
//         // }

//         // // Convert raw image buffer to PNG
//         // try {
//         //     return sharp(buffer, {
//         //         raw: {
//         //             width: width * ratio,
//         //             height: height * ratio,
//         //             channels: 4,
//         //         },
//         //     })
//         //         .png()
//         //         .toBuffer()
//         //         .then(resolve)
//         //         .catch(reject)
//         // } catch (pngErr) {
//         //     console.error('Error encoding PNG')
//         //     console.error(pngErr)
//         //     return reject(pngErr)
//         // }
//     }
// )
