@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.
49 lines (48 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.memoize = void 0;
const memoize = (provider, isExpired, requiresRefresh) => {
let resolved;
let pending;
let hasResult;
const coalesceProvider = async () => {
if (!pending) {
pending = provider();
}
try {
resolved = await pending;
hasResult = true;
}
finally {
pending = undefined;
}
return resolved;
};
if (isExpired === undefined) {
return async () => {
if (!hasResult) {
resolved = await coalesceProvider();
}
return resolved;
};
}
let isConstant = false;
return async () => {
if (!hasResult) {
resolved = await coalesceProvider();
}
if (isConstant) {
return resolved;
}
if (requiresRefresh && !requiresRefresh(resolved)) {
isConstant = true;
return resolved;
}
if (isExpired(resolved)) {
await coalesceProvider();
return resolved;
}
return resolved;
};
};
exports.memoize = memoize;