LocalDatastoreController.js 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
  3. var _Array$isArray = require("@babel/runtime-corejs3/core-js-stable/array/is-array");
  4. var _getIteratorMethod = require("@babel/runtime-corejs3/core-js/get-iterator-method");
  5. var _Array$from = require("@babel/runtime-corejs3/core-js-stable/array/from");
  6. var _sliceInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/slice");
  7. var _reverseInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/reverse");
  8. var _Promise2 = require("@babel/runtime-corejs3/core-js-stable/promise");
  9. var _Object$setPrototypeOf = require("@babel/runtime-corejs3/core-js-stable/object/set-prototype-of");
  10. var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
  11. var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
  12. var _Object$getPrototypeOf = require("@babel/runtime-corejs3/core-js-stable/object/get-prototype-of");
  13. var _Object$create = require("@babel/runtime-corejs3/core-js-stable/object/create");
  14. var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
  15. var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
  16. var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
  17. var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
  18. var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
  19. var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
  20. var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
  21. var _LocalDatastoreUtils = require("./LocalDatastoreUtils");
  22. var _Storage = _interopRequireDefault(require("./Storage"));
  23. function _createForOfIteratorHelper(o, allowArrayLike) {
  24. var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"];
  25. if (!it) {
  26. if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
  27. if (it) o = it;
  28. var i = 0;
  29. var F = function () {};
  30. return {
  31. s: F,
  32. n: function () {
  33. if (i >= o.length) return {
  34. done: true
  35. };
  36. return {
  37. done: false,
  38. value: o[i++]
  39. };
  40. },
  41. e: function (_e) {
  42. throw _e;
  43. },
  44. f: F
  45. };
  46. }
  47. throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  48. }
  49. var normalCompletion = true,
  50. didErr = false,
  51. err;
  52. return {
  53. s: function () {
  54. it = it.call(o);
  55. },
  56. n: function () {
  57. var step = it.next();
  58. normalCompletion = step.done;
  59. return step;
  60. },
  61. e: function (_e2) {
  62. didErr = true;
  63. err = _e2;
  64. },
  65. f: function () {
  66. try {
  67. if (!normalCompletion && it.return != null) it.return();
  68. } finally {
  69. if (didErr) throw err;
  70. }
  71. }
  72. };
  73. }
  74. function _unsupportedIterableToArray(o, minLen) {
  75. var _context9;
  76. if (!o) return;
  77. if (typeof o === "string") return _arrayLikeToArray(o, minLen);
  78. var n = _sliceInstanceProperty(_context9 = Object.prototype.toString.call(o)).call(_context9, 8, -1);
  79. if (n === "Object" && o.constructor) n = o.constructor.name;
  80. if (n === "Map" || n === "Set") return _Array$from(o);
  81. if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  82. }
  83. function _arrayLikeToArray(arr, len) {
  84. if (len == null || len > arr.length) len = arr.length;
  85. for (var i = 0, arr2 = new Array(len); i < len; i++) {
  86. arr2[i] = arr[i];
  87. }
  88. return arr2;
  89. }
  90. function _regeneratorRuntime() {
  91. "use strict";
  92. /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
  93. _regeneratorRuntime = function () {
  94. return exports;
  95. };
  96. var exports = {},
  97. Op = Object.prototype,
  98. hasOwn = Op.hasOwnProperty,
  99. $Symbol = "function" == typeof _Symbol ? _Symbol : {},
  100. iteratorSymbol = $Symbol.iterator || "@@iterator",
  101. asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
  102. toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
  103. function define(obj, key, value) {
  104. return _Object$defineProperty(obj, key, {
  105. value: value,
  106. enumerable: !0,
  107. configurable: !0,
  108. writable: !0
  109. }), obj[key];
  110. }
  111. try {
  112. define({}, "");
  113. } catch (err) {
  114. define = function (obj, key, value) {
  115. return obj[key] = value;
  116. };
  117. }
  118. function wrap(innerFn, outerFn, self, tryLocsList) {
  119. var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
  120. generator = _Object$create(protoGenerator.prototype),
  121. context = new Context(tryLocsList || []);
  122. return generator._invoke = function (innerFn, self, context) {
  123. var state = "suspendedStart";
  124. return function (method, arg) {
  125. if ("executing" === state) throw new Error("Generator is already running");
  126. if ("completed" === state) {
  127. if ("throw" === method) throw arg;
  128. return doneResult();
  129. }
  130. for (context.method = method, context.arg = arg;;) {
  131. var delegate = context.delegate;
  132. if (delegate) {
  133. var delegateResult = maybeInvokeDelegate(delegate, context);
  134. if (delegateResult) {
  135. if (delegateResult === ContinueSentinel) continue;
  136. return delegateResult;
  137. }
  138. }
  139. if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
  140. if ("suspendedStart" === state) throw state = "completed", context.arg;
  141. context.dispatchException(context.arg);
  142. } else "return" === context.method && context.abrupt("return", context.arg);
  143. state = "executing";
  144. var record = tryCatch(innerFn, self, context);
  145. if ("normal" === record.type) {
  146. if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
  147. return {
  148. value: record.arg,
  149. done: context.done
  150. };
  151. }
  152. "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
  153. }
  154. };
  155. }(innerFn, self, context), generator;
  156. }
  157. function tryCatch(fn, obj, arg) {
  158. try {
  159. return {
  160. type: "normal",
  161. arg: fn.call(obj, arg)
  162. };
  163. } catch (err) {
  164. return {
  165. type: "throw",
  166. arg: err
  167. };
  168. }
  169. }
  170. exports.wrap = wrap;
  171. var ContinueSentinel = {};
  172. function Generator() {}
  173. function GeneratorFunction() {}
  174. function GeneratorFunctionPrototype() {}
  175. var IteratorPrototype = {};
  176. define(IteratorPrototype, iteratorSymbol, function () {
  177. return this;
  178. });
  179. var getProto = _Object$getPrototypeOf,
  180. NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  181. NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
  182. var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = _Object$create(IteratorPrototype);
  183. function defineIteratorMethods(prototype) {
  184. var _context7;
  185. _forEachInstanceProperty(_context7 = ["next", "throw", "return"]).call(_context7, function (method) {
  186. define(prototype, method, function (arg) {
  187. return this._invoke(method, arg);
  188. });
  189. });
  190. }
  191. function AsyncIterator(generator, PromiseImpl) {
  192. function invoke(method, arg, resolve, reject) {
  193. var record = tryCatch(generator[method], generator, arg);
  194. if ("throw" !== record.type) {
  195. var result = record.arg,
  196. value = result.value;
  197. return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
  198. invoke("next", value, resolve, reject);
  199. }, function (err) {
  200. invoke("throw", err, resolve, reject);
  201. }) : PromiseImpl.resolve(value).then(function (unwrapped) {
  202. result.value = unwrapped, resolve(result);
  203. }, function (error) {
  204. return invoke("throw", error, resolve, reject);
  205. });
  206. }
  207. reject(record.arg);
  208. }
  209. var previousPromise;
  210. this._invoke = function (method, arg) {
  211. function callInvokeWithMethodAndArg() {
  212. return new PromiseImpl(function (resolve, reject) {
  213. invoke(method, arg, resolve, reject);
  214. });
  215. }
  216. return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
  217. };
  218. }
  219. function maybeInvokeDelegate(delegate, context) {
  220. var method = delegate.iterator[context.method];
  221. if (undefined === method) {
  222. if (context.delegate = null, "throw" === context.method) {
  223. if (delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method)) return ContinueSentinel;
  224. context.method = "throw", context.arg = new TypeError("The iterator does not provide a 'throw' method");
  225. }
  226. return ContinueSentinel;
  227. }
  228. var record = tryCatch(method, delegate.iterator, context.arg);
  229. if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
  230. var info = record.arg;
  231. return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
  232. }
  233. function pushTryEntry(locs) {
  234. var entry = {
  235. tryLoc: locs[0]
  236. };
  237. 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
  238. }
  239. function resetTryEntry(entry) {
  240. var record = entry.completion || {};
  241. record.type = "normal", delete record.arg, entry.completion = record;
  242. }
  243. function Context(tryLocsList) {
  244. this.tryEntries = [{
  245. tryLoc: "root"
  246. }], _forEachInstanceProperty(tryLocsList).call(tryLocsList, pushTryEntry, this), this.reset(!0);
  247. }
  248. function values(iterable) {
  249. if (iterable) {
  250. var iteratorMethod = iterable[iteratorSymbol];
  251. if (iteratorMethod) return iteratorMethod.call(iterable);
  252. if ("function" == typeof iterable.next) return iterable;
  253. if (!isNaN(iterable.length)) {
  254. var i = -1,
  255. next = function next() {
  256. for (; ++i < iterable.length;) {
  257. if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
  258. }
  259. return next.value = undefined, next.done = !0, next;
  260. };
  261. return next.next = next;
  262. }
  263. }
  264. return {
  265. next: doneResult
  266. };
  267. }
  268. function doneResult() {
  269. return {
  270. value: undefined,
  271. done: !0
  272. };
  273. }
  274. return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, "constructor", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
  275. var ctor = "function" == typeof genFun && genFun.constructor;
  276. return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
  277. }, exports.mark = function (genFun) {
  278. return _Object$setPrototypeOf ? _Object$setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = _Object$create(Gp), genFun;
  279. }, exports.awrap = function (arg) {
  280. return {
  281. __await: arg
  282. };
  283. }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
  284. return this;
  285. }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
  286. void 0 === PromiseImpl && (PromiseImpl = _Promise2);
  287. var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
  288. return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
  289. return result.done ? result.value : iter.next();
  290. });
  291. }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
  292. return this;
  293. }), define(Gp, "toString", function () {
  294. return "[object Generator]";
  295. }), exports.keys = function (object) {
  296. var keys = [];
  297. for (var key in object) {
  298. keys.push(key);
  299. }
  300. return _reverseInstanceProperty(keys).call(keys), function next() {
  301. for (; keys.length;) {
  302. var key = keys.pop();
  303. if (key in object) return next.value = key, next.done = !1, next;
  304. }
  305. return next.done = !0, next;
  306. };
  307. }, exports.values = values, Context.prototype = {
  308. constructor: Context,
  309. reset: function (skipTempReset) {
  310. var _context8;
  311. if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, _forEachInstanceProperty(_context8 = this.tryEntries).call(_context8, resetTryEntry), !skipTempReset) for (var name in this) {
  312. "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+_sliceInstanceProperty(name).call(name, 1)) && (this[name] = undefined);
  313. }
  314. },
  315. stop: function () {
  316. this.done = !0;
  317. var rootRecord = this.tryEntries[0].completion;
  318. if ("throw" === rootRecord.type) throw rootRecord.arg;
  319. return this.rval;
  320. },
  321. dispatchException: function (exception) {
  322. if (this.done) throw exception;
  323. var context = this;
  324. function handle(loc, caught) {
  325. return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
  326. }
  327. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  328. var entry = this.tryEntries[i],
  329. record = entry.completion;
  330. if ("root" === entry.tryLoc) return handle("end");
  331. if (entry.tryLoc <= this.prev) {
  332. var hasCatch = hasOwn.call(entry, "catchLoc"),
  333. hasFinally = hasOwn.call(entry, "finallyLoc");
  334. if (hasCatch && hasFinally) {
  335. if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
  336. if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
  337. } else if (hasCatch) {
  338. if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
  339. } else {
  340. if (!hasFinally) throw new Error("try statement without catch or finally");
  341. if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
  342. }
  343. }
  344. }
  345. },
  346. abrupt: function (type, arg) {
  347. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  348. var entry = this.tryEntries[i];
  349. if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
  350. var finallyEntry = entry;
  351. break;
  352. }
  353. }
  354. finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
  355. var record = finallyEntry ? finallyEntry.completion : {};
  356. return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
  357. },
  358. complete: function (record, afterLoc) {
  359. if ("throw" === record.type) throw record.arg;
  360. return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
  361. },
  362. finish: function (finallyLoc) {
  363. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  364. var entry = this.tryEntries[i];
  365. if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
  366. }
  367. },
  368. catch: function (tryLoc) {
  369. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  370. var entry = this.tryEntries[i];
  371. if (entry.tryLoc === tryLoc) {
  372. var record = entry.completion;
  373. if ("throw" === record.type) {
  374. var thrown = record.arg;
  375. resetTryEntry(entry);
  376. }
  377. return thrown;
  378. }
  379. }
  380. throw new Error("illegal catch attempt");
  381. },
  382. delegateYield: function (iterable, resultName, nextLoc) {
  383. return this.delegate = {
  384. iterator: values(iterable),
  385. resultName: resultName,
  386. nextLoc: nextLoc
  387. }, "next" === this.method && (this.arg = undefined), ContinueSentinel;
  388. }
  389. }, exports;
  390. }
  391. var LocalDatastoreController = {
  392. fromPinWithName: function (name
  393. /*: string*/
  394. )
  395. /*: Array<Object>*/
  396. {
  397. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
  398. var values, objects;
  399. return _regeneratorRuntime().wrap(function _callee$(_context) {
  400. while (1) {
  401. switch (_context.prev = _context.next) {
  402. case 0:
  403. _context.next = 2;
  404. return _Storage.default.getItemAsync(name);
  405. case 2:
  406. values = _context.sent;
  407. if (values) {
  408. _context.next = 5;
  409. break;
  410. }
  411. return _context.abrupt("return", []);
  412. case 5:
  413. objects = JSON.parse(values);
  414. return _context.abrupt("return", objects);
  415. case 7:
  416. case "end":
  417. return _context.stop();
  418. }
  419. }
  420. }, _callee);
  421. }))();
  422. },
  423. pinWithName: function pinWithName(name
  424. /*: string*/
  425. , value
  426. /*: any*/
  427. ) {
  428. var values = (0, _stringify.default)(value);
  429. return _Storage.default.setItemAsync(name, values);
  430. },
  431. unPinWithName: function unPinWithName(name
  432. /*: string*/
  433. ) {
  434. return _Storage.default.removeItemAsync(name);
  435. },
  436. getAllContents: function getAllContents()
  437. /*: Object*/
  438. {
  439. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
  440. var keys;
  441. return _regeneratorRuntime().wrap(function _callee3$(_context3) {
  442. while (1) {
  443. switch (_context3.prev = _context3.next) {
  444. case 0:
  445. _context3.next = 2;
  446. return _Storage.default.getAllKeysAsync();
  447. case 2:
  448. keys = _context3.sent;
  449. return _context3.abrupt("return", (0, _reduce.default)(keys).call(keys, /*#__PURE__*/function () {
  450. var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(previousPromise, key) {
  451. var LDS, value;
  452. return _regeneratorRuntime().wrap(function _callee2$(_context2) {
  453. while (1) {
  454. switch (_context2.prev = _context2.next) {
  455. case 0:
  456. _context2.next = 2;
  457. return previousPromise;
  458. case 2:
  459. LDS = _context2.sent;
  460. if (!(0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  461. _context2.next = 8;
  462. break;
  463. }
  464. _context2.next = 6;
  465. return _Storage.default.getItemAsync(key);
  466. case 6:
  467. value = _context2.sent;
  468. try {
  469. LDS[key] = JSON.parse(value);
  470. } catch (error) {
  471. console.error('Error getAllContents: ', error);
  472. }
  473. case 8:
  474. return _context2.abrupt("return", LDS);
  475. case 9:
  476. case "end":
  477. return _context2.stop();
  478. }
  479. }
  480. }, _callee2);
  481. }));
  482. return function (_x, _x2) {
  483. return _ref.apply(this, arguments);
  484. };
  485. }(), _promise.default.resolve({})));
  486. case 4:
  487. case "end":
  488. return _context3.stop();
  489. }
  490. }
  491. }, _callee3);
  492. }))();
  493. },
  494. // Used for testing
  495. getRawStorage: function getRawStorage()
  496. /*: Object*/
  497. {
  498. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
  499. var keys;
  500. return _regeneratorRuntime().wrap(function _callee5$(_context5) {
  501. while (1) {
  502. switch (_context5.prev = _context5.next) {
  503. case 0:
  504. _context5.next = 2;
  505. return _Storage.default.getAllKeysAsync();
  506. case 2:
  507. keys = _context5.sent;
  508. return _context5.abrupt("return", (0, _reduce.default)(keys).call(keys, /*#__PURE__*/function () {
  509. var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(previousPromise, key) {
  510. var LDS, value;
  511. return _regeneratorRuntime().wrap(function _callee4$(_context4) {
  512. while (1) {
  513. switch (_context4.prev = _context4.next) {
  514. case 0:
  515. _context4.next = 2;
  516. return previousPromise;
  517. case 2:
  518. LDS = _context4.sent;
  519. _context4.next = 5;
  520. return _Storage.default.getItemAsync(key);
  521. case 5:
  522. value = _context4.sent;
  523. LDS[key] = value;
  524. return _context4.abrupt("return", LDS);
  525. case 8:
  526. case "end":
  527. return _context4.stop();
  528. }
  529. }
  530. }, _callee4);
  531. }));
  532. return function (_x3, _x4) {
  533. return _ref2.apply(this, arguments);
  534. };
  535. }(), _promise.default.resolve({})));
  536. case 4:
  537. case "end":
  538. return _context5.stop();
  539. }
  540. }
  541. }, _callee5);
  542. }))();
  543. },
  544. clear: function clear()
  545. /*: Promise*/
  546. {
  547. var _this = this;
  548. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
  549. var keys, toRemove, _iterator, _step, key, promises;
  550. return _regeneratorRuntime().wrap(function _callee6$(_context6) {
  551. while (1) {
  552. switch (_context6.prev = _context6.next) {
  553. case 0:
  554. _context6.next = 2;
  555. return _Storage.default.getAllKeysAsync();
  556. case 2:
  557. keys = _context6.sent;
  558. toRemove = [];
  559. _iterator = _createForOfIteratorHelper(keys);
  560. try {
  561. for (_iterator.s(); !(_step = _iterator.n()).done;) {
  562. key = _step.value;
  563. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  564. toRemove.push(key);
  565. }
  566. }
  567. } catch (err) {
  568. _iterator.e(err);
  569. } finally {
  570. _iterator.f();
  571. }
  572. promises = (0, _map.default)(toRemove).call(toRemove, _this.unPinWithName);
  573. return _context6.abrupt("return", _promise.default.all(promises));
  574. case 8:
  575. case "end":
  576. return _context6.stop();
  577. }
  578. }
  579. }, _callee6);
  580. }))();
  581. }
  582. };
  583. module.exports = LocalDatastoreController;