UNPKG

@softchef/cdk-iot-device-management

Version:

IoT device management is composed of things, thing types, thing groups, jobs, files API services. The constructs can be used independently, that are based on full-managed service to create an API Gateway & Lambda function.

71 lines (70 loc) 2.54 kB
import { __awaiter, __generator } from "tslib"; export var memoize = function (provider, isExpired, requiresRefresh) { var resolved; var pending; var hasResult; var coalesceProvider = function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: if (!pending) { pending = provider(); } _a.label = 1; case 1: _a.trys.push([1, , 3, 4]); return [4, pending]; case 2: resolved = _a.sent(); hasResult = true; return [3, 4]; case 3: pending = undefined; return [7]; case 4: return [2, resolved]; } }); }); }; if (isExpired === undefined) { return function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: if (!!hasResult) return [3, 2]; return [4, coalesceProvider()]; case 1: resolved = _a.sent(); _a.label = 2; case 2: return [2, resolved]; } }); }); }; } var isConstant = false; return function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { switch (_a.label) { case 0: if (!!hasResult) return [3, 2]; return [4, coalesceProvider()]; case 1: resolved = _a.sent(); _a.label = 2; case 2: if (isConstant) { return [2, resolved]; } if (requiresRefresh && !requiresRefresh(resolved)) { isConstant = true; return [2, resolved]; } if (!isExpired(resolved)) return [3, 4]; return [4, coalesceProvider()]; case 3: _a.sent(); return [2, resolved]; case 4: return [2, resolved]; } }); }); }; };