"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise")); var _Storage = _interopRequireDefault(require("./Storage")); /** * @flow */ var uuidv4 = require('./uuid'); var iidCache = null; var InstallationController = { currentInstallationId: function () /*: Promise*/{ if (typeof iidCache === 'string') { return _promise.default.resolve(iidCache); } var path = _Storage.default.generatePath('installationId'); return _Storage.default.getItemAsync(path).then(function (iid) { if (!iid) { iid = uuidv4(); return _Storage.default.setItemAsync(path, iid).then(function () { iidCache = iid; return iid; }); } iidCache = iid; return iid; }); }, _clearCache: function () { iidCache = null; }, _setInstallationIdCache: function (iid /*: string*/) { iidCache = iid; } }; module.exports = InstallationController;