source: frontend/node_modules/fork-ts-checker-webpack-plugin/lib/utils/async/pool.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 1.9 KB
Line 
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11Object.defineProperty(exports, "__esModule", { value: true });
12function createPool(size) {
13 let pendingPromises = [];
14 const pool = {
15 submit(task) {
16 return __awaiter(this, void 0, void 0, function* () {
17 while (pendingPromises.length >= pool.size) {
18 yield Promise.race(pendingPromises).catch(() => undefined);
19 }
20 let resolve;
21 let reject;
22 const taskPromise = new Promise((taskResolve, taskReject) => {
23 resolve = taskResolve;
24 reject = taskReject;
25 });
26 const donePromise = new Promise((doneResolve) => {
27 task(() => {
28 doneResolve(undefined);
29 pendingPromises = pendingPromises.filter((pendingPromise) => pendingPromise !== donePromise);
30 })
31 .then(resolve)
32 .catch(reject);
33 });
34 pendingPromises.push(donePromise);
35 return taskPromise;
36 });
37 },
38 size,
39 get pending() {
40 return pendingPromises.length;
41 },
42 };
43 return pool;
44}
45exports.createPool = createPool;
Note: See TracBrowser for help on using the repository browser.