UNPKG

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
'use strict'; 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;