Resolved using merge-images-v2
const mergeImages = require('merge-images-v2');
const Canvas = require('node-canvas');
const { Image } = require('node-canvas');
var images = [];
let totalWidthPixels, totalHeightPixels;
let imageDir = './images/'
Array.prototype.random = function () {
    return this[Math.floor((Math.random()*this.length))];
  }
function createImagesObject(gridHorizontalWidth,gridVerticalHeight,imageRes) {
    totalWidthPixels = gridHorizontalWidth * imageRes;
    totalHeightPixels = gridVerticalHeight * imageRes;
    let totalPlots = gridHorizontalWidth * gridVerticalHeight;
    for (let i = 0; i <= totalPlots; i++) {
        let currentX = 0;
        let currentY = 0;
        let currentColumn =  parseInt(i/gridVerticalHeight);
        let currentColumnRemainder =  i % gridVerticalHeight;
        //console.log(currentColumn+ "   ------     " + currentColumnRemainder);
        currentX = currentColumn * imageRes;
        currentY = currentColumnRemainder * imageRes;
        images.push({ src: [imageDir+'default_gray.png',
                            imageDir+'bought_gray.png',
                            imageDir+'userImage.png'].random(),
                       x: currentX, 
                       y: currentY })
    }
}
createImagesObject(128,64,64);
mergeImages(images, {
  Canvas: Canvas,
  width: totalWidthPixels,
  height: totalHeightPixels
})
  .then(b64 => {
    var base64Data = b64.replace(/^data:image\/png;base64,/, "");
    require("fs").writeFile("out.png", base64Data, 'base64', function(err) {
    console.log(err);
    });
      
  });