LocalDatastoreController.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  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++) {
  79. arr2[i] = arr[i];
  80. }
  81. return arr2;
  82. }
  83. var LocalDatastoreController = {
  84. fromPinWithName: function (name
  85. /*: string*/
  86. )
  87. /*: Array<Object>*/
  88. {
  89. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
  90. var values, objects;
  91. return _regenerator.default.wrap(function (_context) {
  92. while (1) {
  93. switch (_context.prev = _context.next) {
  94. case 0:
  95. _context.next = 2;
  96. return _Storage.default.getItemAsync(name);
  97. case 2:
  98. values = _context.sent;
  99. if (values) {
  100. _context.next = 5;
  101. break;
  102. }
  103. return _context.abrupt("return", []);
  104. case 5:
  105. objects = JSON.parse(values);
  106. return _context.abrupt("return", objects);
  107. case 7:
  108. case "end":
  109. return _context.stop();
  110. }
  111. }
  112. }, _callee);
  113. }))();
  114. },
  115. pinWithName: function (name
  116. /*: string*/
  117. , value
  118. /*: any*/
  119. ) {
  120. var values = (0, _stringify.default)(value);
  121. return _Storage.default.setItemAsync(name, values);
  122. },
  123. unPinWithName: function (name
  124. /*: string*/
  125. ) {
  126. return _Storage.default.removeItemAsync(name);
  127. },
  128. getAllContents: function ()
  129. /*: Object*/
  130. {
  131. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
  132. var keys;
  133. return _regenerator.default.wrap(function (_context3) {
  134. while (1) {
  135. switch (_context3.prev = _context3.next) {
  136. case 0:
  137. _context3.next = 2;
  138. return _Storage.default.getAllKeysAsync();
  139. case 2:
  140. keys = _context3.sent;
  141. return _context3.abrupt("return", (0, _reduce.default)(keys).call(keys, /*#__PURE__*/function () {
  142. var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(previousPromise, key) {
  143. var LDS, value;
  144. return _regenerator.default.wrap(function (_context2) {
  145. while (1) {
  146. switch (_context2.prev = _context2.next) {
  147. case 0:
  148. _context2.next = 2;
  149. return previousPromise;
  150. case 2:
  151. LDS = _context2.sent;
  152. if (!(0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  153. _context2.next = 8;
  154. break;
  155. }
  156. _context2.next = 6;
  157. return _Storage.default.getItemAsync(key);
  158. case 6:
  159. value = _context2.sent;
  160. try {
  161. LDS[key] = JSON.parse(value);
  162. } catch (error) {
  163. // eslint-disable-next-line no-console
  164. console.error('Error getAllContents: ', error);
  165. }
  166. case 8:
  167. return _context2.abrupt("return", LDS);
  168. case 9:
  169. case "end":
  170. return _context2.stop();
  171. }
  172. }
  173. }, _callee2);
  174. }));
  175. return function () {
  176. return _ref.apply(this, arguments);
  177. };
  178. }(), _promise.default.resolve({})));
  179. case 4:
  180. case "end":
  181. return _context3.stop();
  182. }
  183. }
  184. }, _callee3);
  185. }))();
  186. },
  187. // Used for testing
  188. getRawStorage: function ()
  189. /*: Object*/
  190. {
  191. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
  192. var keys;
  193. return _regenerator.default.wrap(function (_context5) {
  194. while (1) {
  195. switch (_context5.prev = _context5.next) {
  196. case 0:
  197. _context5.next = 2;
  198. return _Storage.default.getAllKeysAsync();
  199. case 2:
  200. keys = _context5.sent;
  201. return _context5.abrupt("return", (0, _reduce.default)(keys).call(keys, /*#__PURE__*/function () {
  202. var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(previousPromise, key) {
  203. var LDS, value;
  204. return _regenerator.default.wrap(function (_context4) {
  205. while (1) {
  206. switch (_context4.prev = _context4.next) {
  207. case 0:
  208. _context4.next = 2;
  209. return previousPromise;
  210. case 2:
  211. LDS = _context4.sent;
  212. _context4.next = 5;
  213. return _Storage.default.getItemAsync(key);
  214. case 5:
  215. value = _context4.sent;
  216. LDS[key] = value;
  217. return _context4.abrupt("return", LDS);
  218. case 8:
  219. case "end":
  220. return _context4.stop();
  221. }
  222. }
  223. }, _callee4);
  224. }));
  225. return function () {
  226. return _ref2.apply(this, arguments);
  227. };
  228. }(), _promise.default.resolve({})));
  229. case 4:
  230. case "end":
  231. return _context5.stop();
  232. }
  233. }
  234. }, _callee5);
  235. }))();
  236. },
  237. clear: function ()
  238. /*: Promise*/
  239. {
  240. var _this = this;
  241. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
  242. var keys, toRemove, _iterator, _step, key, promises;
  243. return _regenerator.default.wrap(function (_context6) {
  244. while (1) {
  245. switch (_context6.prev = _context6.next) {
  246. case 0:
  247. _context6.next = 2;
  248. return _Storage.default.getAllKeysAsync();
  249. case 2:
  250. keys = _context6.sent;
  251. toRemove = [];
  252. _iterator = _createForOfIteratorHelper(keys);
  253. try {
  254. for (_iterator.s(); !(_step = _iterator.n()).done;) {
  255. key = _step.value;
  256. if ((0, _LocalDatastoreUtils.isLocalDatastoreKey)(key)) {
  257. toRemove.push(key);
  258. }
  259. }
  260. } catch (err) {
  261. _iterator.e(err);
  262. } finally {
  263. _iterator.f();
  264. }
  265. promises = (0, _map.default)(toRemove).call(toRemove, _this.unPinWithName);
  266. return _context6.abrupt("return", _promise.default.all(promises));
  267. case 8:
  268. case "end":
  269. return _context6.stop();
  270. }
  271. }
  272. }, _callee6);
  273. }))();
  274. }
  275. };
  276. module.exports = LocalDatastoreController;