{"ast":null,"code":"import mergeOptions from 'merge-options';\nvar merge = mergeOptions.bind({\n  concatArrays: true,\n  ignoreUndefined: true\n});\n\nfunction mergeLocalStorageItem(key, value) {\n  var oldValue = window.localStorage.getItem(key);\n\n  if (oldValue) {\n    var oldObject = JSON.parse(oldValue);\n    var newObject = JSON.parse(value);\n    var nextValue = JSON.stringify(merge(oldObject, newObject));\n    window.localStorage.setItem(key, nextValue);\n  } else {\n    window.localStorage.setItem(key, value);\n  }\n}\n\nfunction createPromise(getValue, callback) {\n  return new Promise(function (resolve, reject) {\n    try {\n      var value = getValue();\n      callback === null || callback === void 0 ? void 0 : callback(null, value);\n      resolve(value);\n    } catch (err) {\n      callback === null || callback === void 0 ? void 0 : callback(err);\n      reject(err);\n    }\n  });\n}\n\nfunction createPromiseAll(promises, callback, processResult) {\n  return Promise.all(promises).then(function (result) {\n    var _processResult;\n\n    var value = (_processResult = processResult === null || processResult === void 0 ? void 0 : processResult(result)) !== null && _processResult !== void 0 ? _processResult : null;\n    callback === null || callback === void 0 ? void 0 : callback(null, value);\n    return Promise.resolve(value);\n  }, function (errors) {\n    callback === null || callback === void 0 ? void 0 : callback(errors);\n    return Promise.reject(errors);\n  });\n}\n\nvar AsyncStorage = {\n  getItem: function getItem(key, callback) {\n    return createPromise(function () {\n      return window.localStorage.getItem(key);\n    }, callback);\n  },\n  setItem: function setItem(key, value, callback) {\n    return createPromise(function () {\n      return window.localStorage.setItem(key, value);\n    }, callback);\n  },\n  removeItem: function removeItem(key, callback) {\n    return createPromise(function () {\n      return window.localStorage.removeItem(key);\n    }, callback);\n  },\n  mergeItem: function mergeItem(key, value, callback) {\n    return createPromise(function () {\n      return mergeLocalStorageItem(key, value);\n    }, callback);\n  },\n  clear: function clear(callback) {\n    return createPromise(function () {\n      return window.localStorage.clear();\n    }, callback);\n  },\n  getAllKeys: function getAllKeys(callback) {\n    return createPromise(function () {\n      var numberOfKeys = window.localStorage.length;\n      var keys = [];\n\n      for (var i = 0; i < numberOfKeys; i += 1) {\n        var key = window.localStorage.key(i) || '';\n        keys.push(key);\n      }\n\n      return keys;\n    }, callback);\n  },\n  flushGetRequests: function flushGetRequests() {\n    return undefined;\n  },\n  multiGet: function multiGet(keys, callback) {\n    var promises = keys.map(function (key) {\n      return AsyncStorage.getItem(key);\n    });\n\n    var processResult = function processResult(result) {\n      return result.map(function (value, i) {\n        return [keys[i], value];\n      });\n    };\n\n    return createPromiseAll(promises, callback, processResult);\n  },\n  multiSet: function multiSet(keyValuePairs, callback) {\n    var promises = keyValuePairs.map(function (item) {\n      return AsyncStorage.setItem(item[0], item[1]);\n    });\n    return createPromiseAll(promises, callback);\n  },\n  multiRemove: function multiRemove(keys, callback) {\n    var promises = keys.map(function (key) {\n      return AsyncStorage.removeItem(key);\n    });\n    return createPromiseAll(promises, callback);\n  },\n  multiMerge: function multiMerge(keyValuePairs, callback) {\n    var promises = keyValuePairs.map(function (item) {\n      var _AsyncStorage$mergeIt, _AsyncStorage$mergeIt2;\n\n      return (_AsyncStorage$mergeIt = (_AsyncStorage$mergeIt2 = AsyncStorage.mergeItem) === null || _AsyncStorage$mergeIt2 === void 0 ? void 0 : _AsyncStorage$mergeIt2.call(AsyncStorage, item[0], item[1])) !== null && _AsyncStorage$mergeIt !== void 0 ? _AsyncStorage$mergeIt : Promise.reject('Not implemented');\n    });\n    return createPromiseAll(promises, callback);\n  }\n};\nexport default AsyncStorage;","map":{"version":3,"sources":["AsyncStorage.ts"],"names":["merge","concatArrays","ignoreUndefined","oldValue","window","oldObject","JSON","newObject","nextValue","value","getValue","callback","resolve","reject","result","processResult","Promise","errors","AsyncStorage","getItem","createPromise","setItem","removeItem","mergeItem","mergeLocalStorageItem","clear","getAllKeys","numberOfKeys","keys","i","key","flushGetRequests","multiGet","promises","createPromiseAll","multiSet","keyValuePairs","item","multiRemove","multiMerge"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Nicolas Gallagher.\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// @ts-ignore Cannot find module 'merge-options' or its corresponding type declarations\nimport mergeOptions from 'merge-options';\nimport type {\n  AsyncStorageStatic,\n  MultiCallback,\n  MultiGetCallback,\n} from './types';\n\nconst merge = mergeOptions.bind({\n  concatArrays: true,\n  ignoreUndefined: true,\n});\n\nfunction mergeLocalStorageItem(key: string, value: string) {\n  const oldValue = window.localStorage.getItem(key);\n  if (oldValue) {\n    const oldObject = JSON.parse(oldValue);\n    const newObject = JSON.parse(value);\n    const nextValue = JSON.stringify(merge(oldObject, newObject));\n    window.localStorage.setItem(key, nextValue);\n  } else {\n    window.localStorage.setItem(key, value);\n  }\n}\n\nfunction createPromise<Result, Callback extends Function>(\n  getValue: () => Result,\n  callback?: Callback\n): Promise<Result> {\n  return new Promise((resolve, reject) => {\n    try {\n      const value = getValue();\n      callback?.(null, value);\n      resolve(value);\n    } catch (err) {\n      callback?.(err);\n      reject(err);\n    }\n  });\n}\n\nfunction createPromiseAll<ReturnType, Result, ResultProcessor extends Function>(\n  promises: Promise<Result>[],\n  callback?: MultiCallback | MultiGetCallback,\n  processResult?: ResultProcessor\n): Promise<ReturnType> {\n  return Promise.all(promises).then(\n    (result) => {\n      const value = processResult?.(result) ?? null;\n      callback?.(null, value);\n      return Promise.resolve(value);\n    },\n    (errors) => {\n      callback?.(errors);\n      return Promise.reject(errors);\n    }\n  );\n}\n\nconst AsyncStorage: AsyncStorageStatic = {\n  /**\n   * Fetches `key` value.\n   */\n  getItem: (key, callback) => {\n    return createPromise(() => window.localStorage.getItem(key), callback);\n  },\n\n  /**\n   * Sets `value` for `key`.\n   */\n  setItem: (key, value, callback) => {\n    return createPromise(\n      () => window.localStorage.setItem(key, value),\n      callback\n    );\n  },\n\n  /**\n   * Removes a `key`\n   */\n  removeItem: (key, callback) => {\n    return createPromise(() => window.localStorage.removeItem(key), callback);\n  },\n\n  /**\n   * Merges existing value with input value, assuming they are stringified JSON.\n   */\n  mergeItem: (key, value, callback) => {\n    return createPromise(() => mergeLocalStorageItem(key, value), callback);\n  },\n\n  /**\n   * Erases *all* AsyncStorage for the domain.\n   */\n  clear: (callback) => {\n    return createPromise(() => window.localStorage.clear(), callback);\n  },\n\n  /**\n   * Gets *all* keys known to the app, for all callers, libraries, etc.\n   */\n  getAllKeys: (callback) => {\n    return createPromise(() => {\n      const numberOfKeys = window.localStorage.length;\n      const keys: string[] = [];\n      for (let i = 0; i < numberOfKeys; i += 1) {\n        const key = window.localStorage.key(i) || '';\n        keys.push(key);\n      }\n      return keys;\n    }, callback);\n  },\n\n  /**\n   * (stub) Flushes any pending requests using a single batch call to get the data.\n   */\n  flushGetRequests: () => undefined,\n\n  /**\n   * multiGet resolves to an array of key-value pair arrays that matches the\n   * input format of multiSet.\n   *\n   *   multiGet(['k1', 'k2']) -> [['k1', 'val1'], ['k2', 'val2']]\n   */\n  multiGet: (keys, callback) => {\n    const promises = keys.map((key) => AsyncStorage.getItem(key));\n    const processResult = (result: string[]) =>\n      result.map((value, i) => [keys[i], value]);\n    return createPromiseAll(promises, callback, processResult);\n  },\n\n  /**\n   * Takes an array of key-value array pairs.\n   *   multiSet([['k1', 'val1'], ['k2', 'val2']])\n   */\n  multiSet: (keyValuePairs, callback) => {\n    const promises = keyValuePairs.map((item) =>\n      AsyncStorage.setItem(item[0], item[1])\n    );\n    return createPromiseAll(promises, callback);\n  },\n\n  /**\n   * Delete all the keys in the `keys` array.\n   */\n  multiRemove: (keys, callback) => {\n    const promises = keys.map((key) => AsyncStorage.removeItem(key));\n    return createPromiseAll(promises, callback);\n  },\n\n  /**\n   * Takes an array of key-value array pairs and merges them with existing\n   * values, assuming they are stringified JSON.\n   *\n   *   multiMerge([['k1', 'val1'], ['k2', 'val2']])\n   */\n  multiMerge: (keyValuePairs, callback) => {\n    const promises = keyValuePairs.map(\n      (item) =>\n        AsyncStorage.mergeItem?.(item[0], item[1]) ??\n        Promise.reject('Not implemented')\n    );\n    return createPromiseAll(promises, callback);\n  },\n};\n\nexport default AsyncStorage;\n"]},"metadata":{},"sourceType":"module"}