UNPKG

@snap/camera-kit

Version:
44 lines 1.51 kB
import { __awaiter } from "tslib"; export const createMappingHandler = (map, pageVisibility, maxMapConcurrency = Number.POSITIVE_INFINITY) => { const buffer = []; let mapConcurrency = 0; const processRequest = (request) => __awaiter(void 0, void 0, void 0, function* () { try { mapConcurrency++; const mapped = request.map(); if (mapped instanceof Promise) request.next(yield mapped); else if (mapped) request.next(mapped); } catch (error) { request.reject(error); } finally { mapConcurrency--; } while (buffer.length > 0 && mapConcurrency < maxMapConcurrency) { processRequest(buffer.shift()); } }); if (pageVisibility) { pageVisibility.onPageHidden(() => { while (buffer.length > 0) processRequest(buffer.shift()); }); } return (next) => (request, metadata) => { return new Promise((resolve, reject) => { const mappableRequest = { map: () => map(request), next: (mappedRequest) => next(mappedRequest, metadata).then(resolve).catch(reject), reject, }; if (mapConcurrency < maxMapConcurrency) processRequest(mappableRequest); else buffer.push(mappableRequest); }); }; }; //# sourceMappingURL=mappingHandler.js.map