LocalDatastoreController.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. "use strict";
  2. var _sliceInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/slice");
  3. var _Array$from = require("@babel/runtime-corejs3/core-js-stable/array/from");
  4. var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
  5. var _getIteratorMethod = require("@babel/runtime-corejs3/core-js/get-iterator-method");
  6. var _Array$isArray = require("@babel/runtime-corejs3/core-js-stable/array/is-array");
  7. var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
  8. var _stringify = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/json/stringify"));
  9. var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
  10. var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
  11. var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
  12. var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
  13. var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
  14. var _LocalDatastoreUtils = require("./LocalDatastoreUtils");
  15. var _Storage = _interopRequireDefault(require("./Storage"));
  16. function _createForOfIteratorHelper(o, allowArrayLike) {
  17. var it = typeof _Symbol !== "undefined" && _getIteratorMethod(o) || o["@@iterator"];
  18. if (!it) {
  19. if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
  20. if (it) o = it;
  21. var i = 0;
  22. var F = function () {};
  23. return {
  24. s: F,
  25. n: function () {
  26. if (i >= o.length) return {
  27. done: true
  28. };
  29. return {
  30. done: false,
  31. value: o[i++]
  32. };
  33. },
  34. e: function (_e) {
  35. throw _e;
  36. },
  37. f: F
  38. };
  39. }
  40. throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  41. }
  42. var normalCompletion = true,
  43. didErr = false,
  44. err;
  45. return {
  46. s: function () {
  47. it = it.call(o);
  48. },
  49. n: function () {
  50. var step = it.next();
  51. normalCompletion = step.done;
  52. return step;
  53. },
  54. e: function (_e2) {
  55. didErr = true;
  56. err = _e2;
  57. },
  58. f: function () {
  59. try {
  60. if (!normalCompletion && it.return != null) it.return();
  61. } finally {
  62. if (didErr) throw err;
  63. }
  64. }
  65. };
  66. }
  67. function _unsupportedIterableToArray(o, minLen) {
  68. var _context7;
  69. if (!o) return;
  70. if (typeof o === "string") return _arrayLikeToArray(o, minLen);
  71. var n = _sliceInstanceProperty(_context7 = Object.prototype.toString.call(o)).call(_context7, 8, -1);
  72. if (n === "Object" && o.constructor) n = o.constructor.name;
  73. if (n === "Map" || n === "Set") return _Array$from(o);
  74. if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  75. }
  76. function _arrayLikeToArray(arr, len) {
  77. if (len == null || len > arr.length) len = arr.length;
  78. for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
  79. return arr2;
  80. } /**
  81. * @flow
  82. */
  83. var LocalDatastoreController = {
  84. fromPinWithName: function (name /*: string*/) /*: Array<Object>*/{
  85. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
  86. var values, objects;
  87. return _regenerator.default.wrap(function (_context) {
  88. while (1) switch (_context.prev = _context.next) {
  89. case 0:
  90. _context.next = 2;
  91. return _Storage.default.getItemAsync(name);
  92. case 2:
  93. values = _context.sent;
  94. if (values) {
  95. _context.next = 5;
  96. break;
  97. }
  98. return _context.abrupt("return", []);
  99. case 5:
  100. objects = JSON.parse(values);
  101. return _context.abrupt("return", objects);
  102. case 7:
  103. case "end":
  104. return _context.stop();
  105. }
  106. }, _callee);
  107. }))();
  108. },
  109. pinWithName: function (name /*: string*/, value /*: any*/) {
  110. var values = (0, _stringify.default)(value);
  111. return _Storage.default.setItemAsync(name, values);
  112. },
  113. unPinWithName: function (name /*: string*/) {
  114. return _Storage.default.removeItemAsync(name);
  115. },
  116. getAllContents: function () /*: Object*/{
  117. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
  118. var keys;
  119. return _regenerator.default.wrap(function (_context3) {
  120. while (1) switch (_context3.prev = _context3.next) {
  121. case 0:
  122. _context3.next = 2;
  123. return _Storage.default.getAllKeysAsync();
  124. case 2:
  125. keys = _context3.sent;
  126. return _context3.abrupt("return", (0, _reduce.default)(keys).call(keys, /*#__PURE__*/function () {
  127. var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(previousPromise, key) {
  128. var LDS, value;
  129. return _regenerator.default.wrap(function (_context2) {
  130. while (1) switch (_context2.prev = _context2.next) {
  131. case 0:
  132. _context2.next = 2;
  133. return previousPromise;
  134. case 2:
  135. LDS = _context2.sent;
  136. if (!(0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  137. _context2.next = 8;
  138. break;
  139. }
  140. _context2.next = 6;
  141. return _Storage.default.getItemAsync(key);
  142. case 6:
  143. value = _context2.sent;
  144. try {
  145. LDS[key] = JSON.parse(value);
  146. } catch (error) {
  147. console.error('Error getAllContents: ', error);
  148. }
  149. case 8:
  150. return _context2.abrupt("return", LDS);
  151. case 9:
  152. case "end":
  153. return _context2.stop();
  154. }
  155. }, _callee2);
  156. }));
  157. return function () {
  158. return _ref.apply(this, arguments);
  159. };
  160. }(), _promise.default.resolve({})));
  161. case 4:
  162. case "end":
  163. return _context3.stop();
  164. }
  165. }, _callee3);
  166. }))();
  167. },
  168. // Used for testing
  169. getRawStorage: function () /*: Object*/{
  170. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
  171. var keys;
  172. return _regenerator.default.wrap(function (_context5) {
  173. while (1) switch (_context5.prev = _context5.next) {
  174. case 0:
  175. _context5.next = 2;
  176. return _Storage.default.getAllKeysAsync();
  177. case 2:
  178. keys = _context5.sent;
  179. return _context5.abrupt("return", (0, _reduce.default)(keys).call(keys, /*#__PURE__*/function () {
  180. var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(previousPromise, key) {
  181. var LDS, value;
  182. return _regenerator.default.wrap(function (_context4) {
  183. while (1) switch (_context4.prev = _context4.next) {
  184. case 0:
  185. _context4.next = 2;
  186. return previousPromise;
  187. case 2:
  188. LDS = _context4.sent;
  189. _context4.next = 5;
  190. return _Storage.default.getItemAsync(key);
  191. case 5:
  192. value = _context4.sent;
  193. LDS[key] = value;
  194. return _context4.abrupt("return", LDS);
  195. case 8:
  196. case "end":
  197. return _context4.stop();
  198. }
  199. }, _callee4);
  200. }));
  201. return function () {
  202. return _ref2.apply(this, arguments);
  203. };
  204. }(), _promise.default.resolve({})));
  205. case 4:
  206. case "end":
  207. return _context5.stop();
  208. }
  209. }, _callee5);
  210. }))();
  211. },
  212. clear: function () /*: Promise*/{
  213. var _this = this;
  214. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
  215. var keys, toRemove, _iterator, _step, key, promises;
  216. return _regenerator.default.wrap(function (_context6) {
  217. while (1) switch (_context6.prev = _context6.next) {
  218. case 0:
  219. _context6.next = 2;
  220. return _Storage.default.getAllKeysAsync();
  221. case 2:
  222. keys = _context6.sent;
  223. toRemove = [];
  224. _iterator = _createForOfIteratorHelper(keys);
  225. try {
  226. for (_iterator.s(); !(_step = _iterator.n()).done;) {
  227. key = _step.value;
  228. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  229. toRemove.push(key);
  230. }
  231. }
  232. } catch (err) {
  233. _iterator.e(err);
  234. } finally {
  235. _iterator.f();
  236. }
  237. promises = (0, _map.default)(toRemove).call(toRemove, _this.unPinWithName);
  238. return _context6.abrupt("return", _promise.default.all(promises));
  239. case 8:
  240. case "end":
  241. return _context6.stop();
  242. }
  243. }, _callee6);
  244. }))();
  245. }
  246. };
  247. module.exports = LocalDatastoreController;