{"ast":null,"code":"import { KEY_PREFIX, REHYDRATE } from './constants'; // @TODO remove once flow < 0.63 support is no longer required.\n\nexport default function createPersistoid(config) {\n  // defaults\n  var blacklist = config.blacklist || null;\n  var whitelist = config.whitelist || null;\n  var transforms = config.transforms || [];\n  var throttle = config.throttle || 0;\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  var storage = config.storage;\n  var serialize;\n\n  if (config.serialize === false) {\n    serialize = function serialize(x) {\n      return x;\n    };\n  } else if (typeof config.serialize === 'function') {\n    serialize = config.serialize;\n  } else {\n    serialize = defaultSerialize;\n  }\n\n  var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n  var lastState = {};\n  var stagedState = {};\n  var keysToProcess = [];\n  var timeIterator = null;\n  var writePromise = null;\n\n  var update = function update(state) {\n    // add any changed keys to the queue\n    Object.keys(state).forEach(function (key) {\n      if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n      if (lastState[key] === state[key]) return; // value unchanged? noop\n\n      if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n      keysToProcess.push(key); // add key to queue\n    }); //if any key is missing in the new state which was present in the lastState,\n    //add it for processing too\n\n    Object.keys(lastState).forEach(function (key) {\n      if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n        keysToProcess.push(key);\n      }\n    }); // start the time iterator if not running (read: throttle)\n\n    if (timeIterator === null) {\n      timeIterator = setInterval(processNextKey, throttle);\n    }\n\n    lastState = state;\n  };\n\n  function processNextKey() {\n    if (keysToProcess.length === 0) {\n      if (timeIterator) clearInterval(timeIterator);\n      timeIterator = null;\n      return;\n    }\n\n    var key = keysToProcess.shift();\n    var endState = transforms.reduce(function (subState, transformer) {\n      return transformer.in(subState, key, lastState);\n    }, lastState[key]);\n\n    if (endState !== undefined) {\n      try {\n        stagedState[key] = serialize(endState);\n      } catch (err) {\n        console.error('redux-persist/createPersistoid: error serializing state', err);\n      }\n    } else {\n      //if the endState is undefined, no need to persist the existing serialized content\n      delete stagedState[key];\n    }\n\n    if (keysToProcess.length === 0) {\n      writeStagedState();\n    }\n  }\n\n  function writeStagedState() {\n    // cleanup any removed keys just before write.\n    Object.keys(stagedState).forEach(function (key) {\n      if (lastState[key] === undefined) {\n        delete stagedState[key];\n      }\n    });\n    writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n  }\n\n  function passWhitelistBlacklist(key) {\n    if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n    if (blacklist && blacklist.indexOf(key) !== -1) return false;\n    return true;\n  }\n\n  function onWriteFail(err) {\n    // @TODO add fail handlers (typically storage full)\n    if (writeFailHandler) writeFailHandler(err);\n\n    if (err && process.env.NODE_ENV !== 'production') {\n      console.error('Error storing data', err);\n    }\n  }\n\n  var flush = function flush() {\n    while (keysToProcess.length !== 0) {\n      processNextKey();\n    }\n\n    return writePromise || Promise.resolve();\n  }; // return `persistoid`\n\n\n  return {\n    update: update,\n    flush: flush\n  };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n  return JSON.stringify(data);\n}","map":{"version":3,"sources":["C:/laragon/www/itokin/DriverOPCDA/frontend/node_modules/redux-persist/es/createPersistoid.js"],"names":["KEY_PREFIX","REHYDRATE","createPersistoid","config","blacklist","whitelist","transforms","throttle","storageKey","concat","keyPrefix","undefined","key","storage","serialize","x","defaultSerialize","writeFailHandler","lastState","stagedState","keysToProcess","timeIterator","writePromise","update","state","Object","keys","forEach","passWhitelistBlacklist","indexOf","push","setInterval","processNextKey","length","clearInterval","shift","endState","reduce","subState","transformer","in","err","console","error","writeStagedState","setItem","catch","onWriteFail","process","env","NODE_ENV","flush","Promise","resolve","data","JSON","stringify"],"mappings":"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","sourcesContent":["import { KEY_PREFIX, REHYDRATE } from './constants';\n// @TODO remove once flow < 0.63 support is no longer required.\nexport default function createPersistoid(config) {\n  // defaults\n  var blacklist = config.blacklist || null;\n  var whitelist = config.whitelist || null;\n  var transforms = config.transforms || [];\n  var throttle = config.throttle || 0;\n  var storageKey = \"\".concat(config.keyPrefix !== undefined ? config.keyPrefix : KEY_PREFIX).concat(config.key);\n  var storage = config.storage;\n  var serialize;\n\n  if (config.serialize === false) {\n    serialize = function serialize(x) {\n      return x;\n    };\n  } else if (typeof config.serialize === 'function') {\n    serialize = config.serialize;\n  } else {\n    serialize = defaultSerialize;\n  }\n\n  var writeFailHandler = config.writeFailHandler || null; // initialize stateful values\n\n  var lastState = {};\n  var stagedState = {};\n  var keysToProcess = [];\n  var timeIterator = null;\n  var writePromise = null;\n\n  var update = function update(state) {\n    // add any changed keys to the queue\n    Object.keys(state).forEach(function (key) {\n      if (!passWhitelistBlacklist(key)) return; // is keyspace ignored? noop\n\n      if (lastState[key] === state[key]) return; // value unchanged? noop\n\n      if (keysToProcess.indexOf(key) !== -1) return; // is key already queued? noop\n\n      keysToProcess.push(key); // add key to queue\n    }); //if any key is missing in the new state which was present in the lastState,\n    //add it for processing too\n\n    Object.keys(lastState).forEach(function (key) {\n      if (state[key] === undefined && passWhitelistBlacklist(key) && keysToProcess.indexOf(key) === -1 && lastState[key] !== undefined) {\n        keysToProcess.push(key);\n      }\n    }); // start the time iterator if not running (read: throttle)\n\n    if (timeIterator === null) {\n      timeIterator = setInterval(processNextKey, throttle);\n    }\n\n    lastState = state;\n  };\n\n  function processNextKey() {\n    if (keysToProcess.length === 0) {\n      if (timeIterator) clearInterval(timeIterator);\n      timeIterator = null;\n      return;\n    }\n\n    var key = keysToProcess.shift();\n    var endState = transforms.reduce(function (subState, transformer) {\n      return transformer.in(subState, key, lastState);\n    }, lastState[key]);\n\n    if (endState !== undefined) {\n      try {\n        stagedState[key] = serialize(endState);\n      } catch (err) {\n        console.error('redux-persist/createPersistoid: error serializing state', err);\n      }\n    } else {\n      //if the endState is undefined, no need to persist the existing serialized content\n      delete stagedState[key];\n    }\n\n    if (keysToProcess.length === 0) {\n      writeStagedState();\n    }\n  }\n\n  function writeStagedState() {\n    // cleanup any removed keys just before write.\n    Object.keys(stagedState).forEach(function (key) {\n      if (lastState[key] === undefined) {\n        delete stagedState[key];\n      }\n    });\n    writePromise = storage.setItem(storageKey, serialize(stagedState)).catch(onWriteFail);\n  }\n\n  function passWhitelistBlacklist(key) {\n    if (whitelist && whitelist.indexOf(key) === -1 && key !== '_persist') return false;\n    if (blacklist && blacklist.indexOf(key) !== -1) return false;\n    return true;\n  }\n\n  function onWriteFail(err) {\n    // @TODO add fail handlers (typically storage full)\n    if (writeFailHandler) writeFailHandler(err);\n\n    if (err && process.env.NODE_ENV !== 'production') {\n      console.error('Error storing data', err);\n    }\n  }\n\n  var flush = function flush() {\n    while (keysToProcess.length !== 0) {\n      processNextKey();\n    }\n\n    return writePromise || Promise.resolve();\n  }; // return `persistoid`\n\n\n  return {\n    update: update,\n    flush: flush\n  };\n} // @NOTE in the future this may be exposed via config\n\nfunction defaultSerialize(data) {\n  return JSON.stringify(data);\n}"]},"metadata":{},"sourceType":"module"}