umd.js.map 21 KB

1
  1. {"version":3,"file":"umd.js","sources":["../../src/serialiser/createBlob.ts","../../src/serialiser/index.ts","../../src/clone.ts","../../src/getKeyPrefix.ts","../../src/executeCallback.ts","../../src/getCallback.ts","../../src/dropInstanceCommon.ts","../../src/normaliseKey.ts","../../src/index.ts"],"sourcesContent":["declare const BlobBuilder: any;\ndeclare const MozBlobBuilder: any;\ndeclare const WebKitBlobBuilder: any;\n\n/**\n * Abstracts constructing a Blob object, so it also works in older\n * browsers that don't support the native Blob constructor. (i.e.\n * old QtWebKit versions, at least).\n * Abstracts constructing a Blob object, so it also works in older\n * browsers that don't support the native Blob constructor. (i.e.\n * old QtWebKit versions, at least).\n *\n * @param parts\n * @param properties\n */\nexport function createBlob(parts: any, properties: any): Blob {\n /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */\n parts = parts || [];\n properties = properties || {};\n try {\n return new Blob(parts, properties);\n } catch (e) {\n if (e.name !== 'TypeError') {\n throw e;\n }\n\n //tslint:disable-next-line:variable-name\n const Builder: any = typeof BlobBuilder !== 'undefined' ? BlobBuilder\n : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder\n : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder\n : WebKitBlobBuilder;\n\n const builder = new Builder();\n for (let i = 0; i < parts.length; i += 1) {\n builder.append(parts[i]);\n }\n\n return builder.getBlob(properties.type);\n }\n}\n","import {createBlob} from './createBlob';\n\n// Sadly, the best way to save binary data in WebSQL/localStorage is serializing\n// it to Base64, so this is how we store it to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\n\nconst enum Consts {\n BASE_CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n BLOB_TYPE_PREFIX = '~~local_forage_type~',\n SERIALIZED_MARKER = '__lfsc__:',\n TYPE_ARRAYBUFFER = 'arbf',\n TYPE_BLOB = 'blob',\n TYPE_INT8ARRAY = 'si08',\n TYPE_UINT8ARRAY = 'ui08',\n TYPE_UINT8CLAMPEDARRAY = 'uic8',\n TYPE_INT16ARRAY = 'si16',\n TYPE_INT32ARRAY = 'si32',\n TYPE_UINT16ARRAY = 'ur16',\n TYPE_UINT32ARRAY = 'ui32',\n TYPE_FLOAT32ARRAY = 'fl32',\n TYPE_FLOAT64ARRAY = 'fl64'\n}\n\nconst BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;\nconst SERIALIZED_MARKER_LENGTH = Consts.SERIALIZED_MARKER.length;\nconst TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + Consts.TYPE_ARRAYBUFFER.length;\n\n//tslint:disable:no-magic-numbers no-bitwise prefer-switch no-unbound-method\n\nconst toString = Object.prototype.toString;\n\nexport function stringToBuffer(serializedString: string): ArrayBuffer {\n // Fill the string into a ArrayBuffer.\n let bufferLength = serializedString.length * 0.75;\n const len = serializedString.length;\n\n if (serializedString[serializedString.length - 1] === '=') {\n bufferLength--;\n if (serializedString[serializedString.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer = new ArrayBuffer(bufferLength);\n const bytes = new Uint8Array(buffer);\n\n for (let i = 0, p = 0; i < len; i += 4) {\n const encoded1 = Consts.BASE_CHARS.indexOf(serializedString[i]);\n const encoded2 = Consts.BASE_CHARS.indexOf(serializedString[i + 1]);\n const encoded3 = Consts.BASE_CHARS.indexOf(serializedString[i + 2]);\n const encoded4 = Consts.BASE_CHARS.indexOf(serializedString[i + 3]);\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n}\n\n/**\n * Converts a buffer to a string to store, serialized, in the backend\n * storage library.\n */\nexport function bufferToString(buffer: ArrayBufferLike): string {\n // base64-arraybuffer\n const bytes = new Uint8Array(buffer);\n let base64String = '';\n\n for (let i = 0; i < bytes.length; i += 3) {\n /*jslint bitwise: true */\n base64String += Consts.BASE_CHARS[bytes[i] >> 2];\n base64String += Consts.BASE_CHARS[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64String +=\n Consts.BASE_CHARS[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64String += Consts.BASE_CHARS[bytes[i + 2] & 63];\n }\n\n if (bytes.length % 3 === 2) {\n base64String = base64String.substring(0, base64String.length - 1) + '=';\n } else if (bytes.length % 3 === 1) {\n base64String = base64String.substring(0, base64String.length - 2) + '==';\n }\n\n return base64String;\n}\n\n/**\n * Serialize a value, afterwards executing a callback (which usually\n * instructs the `setItem()` callback/promise to be executed). This is how\n * we store binary data with localStorage.\n * @param value\n * @param callback\n */\n\nexport function serialize(this: any, value: any, callback: any): void {\n let valueType = '';\n\n if (value) {\n valueType = toString.call(value);\n }\n\n // Cannot use `value instanceof ArrayBuffer` or such here, as these\n // checks fail when running the tests using casper.js...\n if (value && (valueType === '[object ArrayBuffer]' ||\n (value.buffer && toString.call(value.buffer) === '[object ArrayBuffer]'))) {\n // Convert binary arrays to a string and prefix the string with\n // a special marker.\n let buffer: ArrayBufferLike;\n let marker: string = Consts.SERIALIZED_MARKER;\n\n if (value instanceof ArrayBuffer) {\n buffer = value;\n marker += Consts.TYPE_ARRAYBUFFER;\n } else {\n buffer = value.buffer;\n\n if (valueType === '[object Int8Array]') {\n marker += Consts.TYPE_INT8ARRAY;\n } else if (valueType === '[object Uint8Array]') {\n marker += Consts.TYPE_UINT8ARRAY;\n } else if (valueType === '[object Uint8ClampedArray]') {\n marker += Consts.TYPE_UINT8CLAMPEDARRAY;\n } else if (valueType === '[object Int16Array]') {\n marker += Consts.TYPE_INT16ARRAY;\n } else if (valueType === '[object Uint16Array]') {\n marker += Consts.TYPE_UINT16ARRAY;\n } else if (valueType === '[object Int32Array]') {\n marker += Consts.TYPE_INT32ARRAY;\n } else if (valueType === '[object Uint32Array]') {\n marker += Consts.TYPE_UINT32ARRAY;\n } else if (valueType === '[object Float32Array]') {\n marker += Consts.TYPE_FLOAT32ARRAY;\n } else if (valueType === '[object Float64Array]') {\n marker += Consts.TYPE_FLOAT64ARRAY;\n } else {\n callback(new Error('Failed to get type for BinaryArray'));\n }\n }\n\n callback(marker + bufferToString(buffer));\n } else if (valueType === '[object Blob]') {\n // Convert the blob to a binaryArray and then to a string.\n const fileReader = new FileReader();\n\n fileReader.onload = function () {\n // Backwards-compatible prefix for the blob type.\n //tslint:disable-next-line:restrict-plus-operands\n const str = `${Consts.BLOB_TYPE_PREFIX + value.type}~${bufferToString(<ArrayBufferLike>this.result)}`;\n\n callback(Consts.SERIALIZED_MARKER + Consts.TYPE_BLOB + str);\n };\n\n fileReader.readAsArrayBuffer(value);\n } else {\n try {\n callback(JSON.stringify(value));\n } catch (e) {\n console.error('Couldn\\'t convert value into a JSON string: ', value);\n\n callback(null, e);\n }\n }\n}\n\n/**\n * Deserialize data we've inserted into a value column/field. We place\n * special markers into our strings to mark them as encoded; this isn't\n * as nice as a meta field, but it's the only sane thing we can do whilst\n * keeping localStorage support intact.\n *\n * Oftentimes this will just deserialize JSON content, but if we have a\n * special marker (SERIALIZED_MARKER, defined above), we will extract\n * some kind of arraybuffer/binary data/typed array out of the string.\n * @param value\n */\nexport function deserialize(value: string): any {\n // If we haven't marked this string as being specially serialized (i.e.\n // something other than serialized JSON), we can just return it and be\n // done with it.\n if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== Consts.SERIALIZED_MARKER) {\n return JSON.parse(value);\n }\n\n // The following code deals with deserializing some kind of Blob or\n // TypedArray. First we separate out the type of data we're dealing\n // with from the data itself.\n let serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n const type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);\n\n let blobType: any;\n // Backwards-compatible blob type serialization strategy.\n // DBs created with older versions of localForage will simply not have the blob type.\n if (type === Consts.TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n const matcher = <RegExpMatchArray>serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n blobType = matcher[1];\n serializedString = serializedString.substring(matcher[0].length);\n }\n const buffer = stringToBuffer(serializedString);\n\n // Return the right type based on the code/type set during\n // serialization.\n switch (type) {\n case Consts.TYPE_ARRAYBUFFER:\n return buffer;\n case Consts.TYPE_BLOB:\n return createBlob([buffer], {type: blobType});\n case Consts.TYPE_INT8ARRAY:\n return new Int8Array(buffer);\n case Consts.TYPE_UINT8ARRAY:\n return new Uint8Array(buffer);\n case Consts.TYPE_UINT8CLAMPEDARRAY:\n return new Uint8ClampedArray(buffer);\n case Consts.TYPE_INT16ARRAY:\n return new Int16Array(buffer);\n case Consts.TYPE_UINT16ARRAY:\n return new Uint16Array(buffer);\n case Consts.TYPE_INT32ARRAY:\n return new Int32Array(buffer);\n case Consts.TYPE_UINT32ARRAY:\n return new Uint32Array(buffer);\n case Consts.TYPE_FLOAT32ARRAY:\n return new Float32Array(buffer);\n case Consts.TYPE_FLOAT64ARRAY:\n return new Float64Array(buffer);\n default:\n throw new Error('Unkown type: ' + type);\n }\n}\n","export function clone<T>(obj: T): T {\n if (obj === null || typeof(obj) !== 'object' || 'isActiveClone' in obj) {\n return obj;\n }\n\n const temp: any = obj instanceof Date ? new Date(<any>obj) : (obj.constructor());\n\n for (const key of Object.keys(obj)) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n obj['isActiveClone'] = null;\n temp[key] = clone(obj[key]);\n delete obj['isActiveClone'];\n }\n }\n\n return temp;\n}\n","import {LocalForageOptions} from './types';\n\nexport function getKeyPrefix(options: LocalForageOptions, defaultConfig: LocalForageOptions): string {\n return `${options.name || defaultConfig.name}/${options.storeName || defaultConfig.storeName}/`;\n}\n","export function executeCallback(promise: Promise<any>, callback?: any): void {\n if (callback) {\n promise.then(\n (result: any) => {\n callback(null, result);\n },\n (error: any) => {\n callback(error);\n }\n );\n }\n}\n","export function getCallback(..._args: any[]): any {\n if (arguments.length && typeof arguments[arguments.length - 1] === 'function') {\n return arguments[arguments.length - 1];\n }\n}\n","import {getCallback} from './getCallback';\nimport {getKeyPrefix} from './getKeyPrefix';\n\nexport interface DropInstanceCommonOutput {\n callback: any;\n\n promise: Promise<string>;\n}\n\n//tslint:disable-next-line:no-ignored-initial-value\nexport function dropInstanceCommon(this: any, options: any, callback?: any): DropInstanceCommonOutput {\n callback = getCallback.apply(this, arguments);\n\n options = (typeof options !== 'function' && options) || {};\n if (!options.name) {\n const currentConfig = this.config();\n options.name = options.name || currentConfig.name;\n options.storeName = options.storeName || currentConfig.storeName;\n }\n\n let promise: Promise<string>;\n if (!options.name) {\n promise = Promise.reject('Invalid arguments');\n } else {\n promise = new Promise<string>(resolve => {\n if (!options.storeName) {\n resolve(`${options.name}/`);\n } else {\n resolve(getKeyPrefix(options, this._defaultConfig));\n }\n });\n }\n\n return {promise, callback};\n}\n","export function normaliseKey(key: any): string {\n // Cast the key to a string, as that's all we can set as a key.\n if (typeof key !== 'string') {\n console.warn(`${key} used as a key, but it is not a string.`);\n key = String(key);\n }\n\n return key;\n}\n","import {bufferToString, deserialize, serialize, stringToBuffer} from './serialiser';\n\nexport {clone} from './clone';\nexport {getKeyPrefix} from './getKeyPrefix';\nexport {executeCallback} from './executeCallback';\nexport {LocalForageDbInstanceOptions, LocalForageOptions} from './types';\nexport {getCallback} from './getCallback';\nexport {dropInstanceCommon, DropInstanceCommonOutput} from './dropInstanceCommon';\nexport {normaliseKey} from './normaliseKey';\n\nexport const serialiser = {\n bufferToString,\n deserialize,\n serialize,\n stringToBuffer\n};\n"],"names":["tslib_1.__values"],"mappings":"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"}