diff --git a/package-lock.json b/package-lock.json index 1b15dea6..96fe3ff3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,6 @@ "license": "Apache-2.0", "dependencies": { "node-gyp-build": "<4.0", - "p-limit": "^3.1.0", "pprof-format": "^2.2.1", "source-map": "^0.7.4" }, @@ -5025,10 +5024,27 @@ "node": ">=8" } }, - "node_modules/p-limit": { + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -5040,15 +5056,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, "engines": { "node": ">=10" }, @@ -7256,18 +7269,6 @@ "engines": { "node": ">=12" } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } } } } diff --git a/package.json b/package.json index 129f3d47..a61e874a 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ "license": "Apache-2.0", "dependencies": { "node-gyp-build": "<4.0", - "p-limit": "^3.1.0", "pprof-format": "^2.2.1", "source-map": "^0.7.4" }, diff --git a/ts/src/sourcemapper/sourcemapper.ts b/ts/src/sourcemapper/sourcemapper.ts index aa906eab..4e94446d 100644 --- a/ts/src/sourcemapper/sourcemapper.ts +++ b/ts/src/sourcemapper/sourcemapper.ts @@ -23,11 +23,30 @@ import * as fs from 'fs'; import * as path from 'path'; import * as sourceMap from 'source-map'; import {logger} from '../logger'; -import pLimit from 'p-limit'; const readFile = fs.promises.readFile; const CONCURRENCY = 10; + +function createLimiter(concurrency: number) { + let active = 0; + const queue: Array<() => void> = []; + return function limit(fn: () => Promise): Promise { + return new Promise((resolve, reject) => { + const run = () => { + active++; + fn() + .then(resolve, reject) + .finally(() => { + active--; + if (queue.length > 0) queue.shift()!(); + }); + }; + if (active < concurrency) run(); + else queue.push(run); + }); + }; +} const MAP_EXT = '.map'; function error(msg: string) { @@ -306,7 +325,7 @@ async function createFromMapFiles( mapFiles: string[], debug: boolean, ): Promise { - const limit = pLimit(CONCURRENCY); + const limit = createLimiter(CONCURRENCY); const mapper = new SourceMapper(debug); const promises: Array> = mapFiles.map(mapPath => limit(() => processSourceMap(mapper.infoMap, mapPath, debug)),