@snap/camera-kit
Version:
Camera Kit Web
21 lines • 1.02 kB
JavaScript
import { __awaiter } from "tslib";
import { createMappingHandler } from "./mappingHandler";
const delay = (duration) => new Promise((resolve) => setTimeout(resolve, duration));
export const createRateLimitingHandler = (duration, pageVisibility) => {
let mostRecentSendTime = undefined;
const mappingHandler = createMappingHandler((request) => __awaiter(void 0, void 0, void 0, function* () {
if (mostRecentSendTime !== undefined) {
const millisUntilNextSend = duration - (Date.now() - mostRecentSendTime);
if (millisUntilNextSend > 0)
yield delay(millisUntilNextSend);
}
mostRecentSendTime = Date.now();
return request;
}), pageVisibility, 1);
return (next) => (request, metadata) => {
if (pageVisibility && pageVisibility.isDuringVisibilityTransition("hidden"))
return next(request, metadata);
return mappingHandler(next)(request, metadata);
};
};
//# sourceMappingURL=rateLimitingHandler.js.map