dumb-image-preloader
Version:
An image pre-loader that takes a bunch of image URLs and loads them into the browsers cache
71 lines (64 loc) • 2.33 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var MSG_REJECT = 'dumbImagePreloader: Parameter provided is not an array or is an empty array.';
/**
* getImageFromBlob - takes a blob from a fetch response and returns image
* @param {object} blob - blob from response object
* @return {object} - image object or undefined
*/
var getImageFromBlob = exports.getImageFromBlob = function getImageFromBlob(blob) {
var img = void 0;
if (blob !== null) {
img = new Image();
img.src = URL.createObjectURL(blob);
}
return img;
};
/**
* getBlobFromResponse - takes in a fetch response object and returns the blob
* @param {object} response - fetch response object
* @return {object} - null if response has error, blob otherwise
*/
var getBlobFromResponse = exports.getBlobFromResponse = function getBlobFromResponse(response) {
return response.ok ? response.blob() : null;
};
/**
* getRequestSettings - constructs a request settings object for Request
* @return {object} - settings object
*/
var getRequestSettings = exports.getRequestSettings = function getRequestSettings() {
var headers = new Headers();
return { method: 'GET', headers: headers, mode: 'no-cors', cache: 'default' };
};
/**
* requestImage fetches the image by URl
* @param {string} url - Image request URL
* @param {object} settings - Request settings
* @return {promise} - Resolves whether request is successful / fails
*/
var requestImage = exports.requestImage = function requestImage(url, settings) {
var request = new Request(url, settings);
return fetch(request).then(function (response) {
return getBlobFromResponse(response);
});
};
/**
* Pre-load images
* @param {array} imageURLs - image URL array
* @return {promise} - promise
*/
var dumbImagePreloader = function dumbImagePreloader(imageURLs) {
if (!Array.isArray(imageURLs) || imageURLs.length === 0) {
return Promise.reject(new Error(MSG_REJECT));
}
var settings = getRequestSettings();
var imgReqPromiseArray = imageURLs.map(function (imageURL) {
return requestImage(imageURL, settings);
});
return Promise.all(imgReqPromiseArray).then(function (responses) {
return responses.map(getImageFromBlob);
});
};
exports.default = dumbImagePreloader;
;