vue-files-preview-inno
Version:
A tool for previewing files such as doc, excel, pdf, image, markdown, txt, audio, and video and so on.
1 lines • 14.8 kB
Source Map (JSON)
{"version":3,"file":"store.mjs","sources":["../../../../../node_modules/epubjs/src/store.js"],"sourcesContent":["import {defer, isXml, parse} from \"./utils/core\";\nimport httpRequest from \"./utils/request\";\nimport mime from \"./utils/mime\";\nimport Path from \"./utils/path\";\nimport EventEmitter from \"event-emitter\";\nimport localforage from \"localforage\";\n\n/**\n * Handles saving and requesting files from local storage\n * @class\n * @param {string} name This should be the name of the application for modals\n * @param {function} [requester]\n * @param {function} [resolver]\n */\nclass Store {\n\n\tconstructor(name, requester, resolver) {\n\t\tthis.urlCache = {};\n\n\t\tthis.storage = undefined;\n\n\t\tthis.name = name;\n\t\tthis.requester = requester || httpRequest;\n\t\tthis.resolver = resolver;\n\n\t\tthis.online = true;\n\n\t\tthis.checkRequirements();\n\n\t\tthis.addListeners();\n\t}\n\n\t/**\n\t * Checks to see if localForage exists in global namspace,\n\t * Requires localForage if it isn't there\n\t * @private\n\t */\n\tcheckRequirements(){\n\t\ttry {\n\t\t\tlet store;\n\t\t\tif (typeof localforage === \"undefined\") {\n\t\t\t\tstore = localforage;\n\t\t\t}\n\t\t\tthis.storage = store.createInstance({\n\t\t\t\t\tname: this.name\n\t\t\t});\n\t\t} catch (e) {\n\t\t\tthrow new Error(\"localForage lib not loaded\");\n\t\t}\n\t}\n\n\t/**\n\t * Add online and offline event listeners\n\t * @private\n\t */\n\taddListeners() {\n\t\tthis._status = this.status.bind(this);\n\t\twindow.addEventListener('online', this._status);\n\t window.addEventListener('offline', this._status);\n\t}\n\n\t/**\n\t * Remove online and offline event listeners\n\t * @private\n\t */\n\tremoveListeners() {\n\t\twindow.removeEventListener('online', this._status);\n\t window.removeEventListener('offline', this._status);\n\t\tthis._status = undefined;\n\t}\n\n\t/**\n\t * Update the online / offline status\n\t * @private\n\t */\n\tstatus(event) {\n\t\tlet online = navigator.onLine;\n\t\tthis.online = online;\n\t\tif (online) {\n\t\t\tthis.emit(\"online\", this);\n\t\t} else {\n\t\t\tthis.emit(\"offline\", this);\n\t\t}\n\t}\n\n\t/**\n\t * Add all of a book resources to the store\n\t * @param {Resources} resources book resources\n\t * @param {boolean} [force] force resaving resources\n\t * @return {Promise<object>} store objects\n\t */\n\tadd(resources, force) {\n\t\tlet mapped = resources.resources.map((item) => {\n\t\t\tlet { href } = item;\n\t\t\tlet url = this.resolver(href);\n\t\t\tlet encodedUrl = window.encodeURIComponent(url);\n\n\t\t\treturn this.storage.getItem(encodedUrl).then((item) => {\n\t\t\t\tif (!item || force) {\n\t\t\t\t\treturn this.requester(url, \"binary\")\n\t\t\t\t\t\t.then((data) => {\n\t\t\t\t\t\t\treturn this.storage.setItem(encodedUrl, data);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturn item;\n\t\t\t\t}\n\t\t\t});\n\n\t\t});\n\t\treturn Promise.all(mapped);\n\t}\n\n\t/**\n\t * Put binary data from a url to storage\n\t * @param {string} url a url to request from storage\n\t * @param {boolean} [withCredentials]\n\t * @param {object} [headers]\n\t * @return {Promise<Blob>}\n\t */\n\tput(url, withCredentials, headers) {\n\t\tlet encodedUrl = window.encodeURIComponent(url);\n\n\t\treturn this.storage.getItem(encodedUrl).then((result) => {\n\t\t\tif (!result) {\n\t\t\t\treturn this.requester(url, \"binary\", withCredentials, headers).then((data) => {\n\t\t\t\t\treturn this.storage.setItem(encodedUrl, data);\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn result;\n\t\t});\n\t}\n\n\t/**\n\t * Request a url\n\t * @param {string} url a url to request from storage\n\t * @param {string} [type] specify the type of the returned result\n\t * @param {boolean} [withCredentials]\n\t * @param {object} [headers]\n\t * @return {Promise<Blob | string | JSON | Document | XMLDocument>}\n\t */\n\trequest(url, type, withCredentials, headers){\n\t\tif (this.online) {\n\t\t\t// From network\n\t\t\treturn this.requester(url, type, withCredentials, headers).then((data) => {\n\t\t\t\t// save to store if not present\n\t\t\t\tthis.put(url);\n\t\t\t\treturn data;\n\t\t\t})\n\t\t} else {\n\t\t\t// From store\n\t\t\treturn this.retrieve(url, type);\n\t\t}\n\n\t}\n\n\t/**\n\t * Request a url from storage\n\t * @param {string} url a url to request from storage\n\t * @param {string} [type] specify the type of the returned result\n\t * @return {Promise<Blob | string | JSON | Document | XMLDocument>}\n\t */\n\tretrieve(url, type) {\n\t\tvar deferred = new defer();\n\t\tvar response;\n\t\tvar path = new Path(url);\n\n\t\t// If type isn't set, determine it from the file extension\n\t\tif(!type) {\n\t\t\ttype = path.extension;\n\t\t}\n\n\t\tif(type == \"blob\"){\n\t\t\tresponse = this.getBlob(url);\n\t\t} else {\n\t\t\tresponse = this.getText(url);\n\t\t}\n\n\n\t\treturn response.then((r) => {\n\t\t\tvar deferred = new defer();\n\t\t\tvar result;\n\t\t\tif (r) {\n\t\t\t\tresult = this.handleResponse(r, type);\n\t\t\t\tdeferred.resolve(result);\n\t\t\t} else {\n\t\t\t\tdeferred.reject({\n\t\t\t\t\tmessage : \"File not found in storage: \" + url,\n\t\t\t\t\tstack : new Error().stack\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn deferred.promise;\n\t\t});\n\t}\n\n\t/**\n\t * Handle the response from request\n\t * @private\n\t * @param {any} response\n\t * @param {string} [type]\n\t * @return {any} the parsed result\n\t */\n\thandleResponse(response, type){\n\t\tvar r;\n\n\t\tif(type == \"json\") {\n\t\t\tr = JSON.parse(response);\n\t\t}\n\t\telse\n\t\tif(isXml(type)) {\n\t\t\tr = parse(response, \"text/xml\");\n\t\t}\n\t\telse\n\t\tif(type == \"xhtml\") {\n\t\t\tr = parse(response, \"application/xhtml+xml\");\n\t\t}\n\t\telse\n\t\tif(type == \"html\" || type == \"htm\") {\n\t\t\tr = parse(response, \"text/html\");\n\t\t } else {\n\t\t\t r = response;\n\t\t }\n\n\t\treturn r;\n\t}\n\n\t/**\n\t * Get a Blob from Storage by Url\n\t * @param {string} url\n\t * @param {string} [mimeType]\n\t * @return {Blob}\n\t */\n\tgetBlob(url, mimeType){\n\t\tlet encodedUrl = window.encodeURIComponent(url);\n\n\t\treturn this.storage.getItem(encodedUrl).then(function(uint8array) {\n\t\t\tif(!uint8array) return;\n\n\t\t\tmimeType = mimeType || mime.lookup(url);\n\n\t\t\treturn new Blob([uint8array], {type : mimeType});\n\t\t});\n\n\t}\n\n\t/**\n\t * Get Text from Storage by Url\n\t * @param {string} url\n\t * @param {string} [mimeType]\n\t * @return {string}\n\t */\n\tgetText(url, mimeType){\n\t\tlet encodedUrl = window.encodeURIComponent(url);\n\n\t\tmimeType = mimeType || mime.lookup(url);\n\n\t\treturn this.storage.getItem(encodedUrl).then(function(uint8array) {\n\t\t\tvar deferred = new defer();\n\t\t\tvar reader = new FileReader();\n\t\t\tvar blob;\n\n\t\t\tif(!uint8array) return;\n\n\t\t\tblob = new Blob([uint8array], {type : mimeType});\n\n\t\t\treader.addEventListener(\"loadend\", () => {\n\t\t\t\tdeferred.resolve(reader.result);\n\t\t\t});\n\n\t\t\treader.readAsText(blob, mimeType);\n\n\t\t\treturn deferred.promise;\n\t\t});\n\t}\n\n\t/**\n\t * Get a base64 encoded result from Storage by Url\n\t * @param {string} url\n\t * @param {string} [mimeType]\n\t * @return {string} base64 encoded\n\t */\n\tgetBase64(url, mimeType){\n\t\tlet encodedUrl = window.encodeURIComponent(url);\n\n\t\tmimeType = mimeType || mime.lookup(url);\n\n\t\treturn this.storage.getItem(encodedUrl).then((uint8array) => {\n\t\t\tvar deferred = new defer();\n\t\t\tvar reader = new FileReader();\n\t\t\tvar blob;\n\n\t\t\tif(!uint8array) return;\n\n\t\t\tblob = new Blob([uint8array], {type : mimeType});\n\n\t\t\treader.addEventListener(\"loadend\", () => {\n\t\t\t\tdeferred.resolve(reader.result);\n\t\t\t});\n\t\t\treader.readAsDataURL(blob, mimeType);\n\n\t\t\treturn deferred.promise;\n\t\t});\n\t}\n\n\t/**\n\t * Create a Url from a stored item\n\t * @param {string} url\n\t * @param {object} [options.base64] use base64 encoding or blob url\n\t * @return {Promise} url promise with Url string\n\t */\n\tcreateUrl(url, options){\n\t\tvar deferred = new defer();\n\t\tvar _URL = window.URL || window.webkitURL || window.mozURL;\n\t\tvar tempUrl;\n\t\tvar response;\n\t\tvar useBase64 = options && options.base64;\n\n\t\tif(url in this.urlCache) {\n\t\t\tdeferred.resolve(this.urlCache[url]);\n\t\t\treturn deferred.promise;\n\t\t}\n\n\t\tif (useBase64) {\n\t\t\tresponse = this.getBase64(url);\n\n\t\t\tif (response) {\n\t\t\t\tresponse.then(function(tempUrl) {\n\n\t\t\t\t\tthis.urlCache[url] = tempUrl;\n\t\t\t\t\tdeferred.resolve(tempUrl);\n\n\t\t\t\t}.bind(this));\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tresponse = this.getBlob(url);\n\n\t\t\tif (response) {\n\t\t\t\tresponse.then(function(blob) {\n\n\t\t\t\t\ttempUrl = _URL.createObjectURL(blob);\n\t\t\t\t\tthis.urlCache[url] = tempUrl;\n\t\t\t\t\tdeferred.resolve(tempUrl);\n\n\t\t\t\t}.bind(this));\n\n\t\t\t}\n\t\t}\n\n\n\t\tif (!response) {\n\t\t\tdeferred.reject({\n\t\t\t\tmessage : \"File not found in storage: \" + url,\n\t\t\t\tstack : new Error().stack\n\t\t\t});\n\t\t}\n\n\t\treturn deferred.promise;\n\t}\n\n\t/**\n\t * Revoke Temp Url for a archive item\n\t * @param {string} url url of the item in the store\n\t */\n\trevokeUrl(url){\n\t\tvar _URL = window.URL || window.webkitURL || window.mozURL;\n\t\tvar fromCache = this.urlCache[url];\n\t\tif(fromCache) _URL.revokeObjectURL(fromCache);\n\t}\n\n\tdestroy() {\n\t\tvar _URL = window.URL || window.webkitURL || window.mozURL;\n\t\tfor (let fromCache in this.urlCache) {\n\t\t\t_URL.revokeObjectURL(fromCache);\n\t\t}\n\t\tthis.urlCache = {};\n\t\tthis.removeListeners();\n\t}\n}\n\nEventEmitter(Store.prototype);\n\nexport default Store;\n"],"names":["Store","name","requester","resolver","httpRequest","store","localforage","event","online","resources","force","mapped","item","href","url","encodedUrl","data","withCredentials","headers","result","type","defer","response","path","Path","r","deferred","isXml","parse","mimeType","uint8array","mime","reader","blob","options","_URL","tempUrl","useBase64","fromCache","EventEmitter"],"mappings":"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","x_google_ignoreList":[0]}