1+ "use strict" ;
2+ var __createBinding = ( this && this . __createBinding ) || ( Object . create ? ( function ( o , m , k , k2 ) {
3+ if ( k2 === undefined ) k2 = k ;
4+ var desc = Object . getOwnPropertyDescriptor ( m , k ) ;
5+ if ( ! desc || ( "get" in desc ? ! m . __esModule : desc . writable || desc . configurable ) ) {
6+ desc = { enumerable : true , get : function ( ) { return m [ k ] ; } } ;
7+ }
8+ Object . defineProperty ( o , k2 , desc ) ;
9+ } ) : ( function ( o , m , k , k2 ) {
10+ if ( k2 === undefined ) k2 = k ;
11+ o [ k2 ] = m [ k ] ;
12+ } ) ) ;
13+ var __setModuleDefault = ( this && this . __setModuleDefault ) || ( Object . create ? ( function ( o , v ) {
14+ Object . defineProperty ( o , "default" , { enumerable : true , value : v } ) ;
15+ } ) : function ( o , v ) {
16+ o [ "default" ] = v ;
17+ } ) ;
18+ var __importStar = ( this && this . __importStar ) || function ( mod ) {
19+ if ( mod && mod . __esModule ) return mod ;
20+ var result = { } ;
21+ if ( mod != null ) for ( var k in mod ) if ( k !== "default" && Object . prototype . hasOwnProperty . call ( mod , k ) ) __createBinding ( result , mod , k ) ;
22+ __setModuleDefault ( result , mod ) ;
23+ return result ;
24+ } ;
25+ Object . defineProperty ( exports , "__esModule" , { value : true } ) ;
26+ exports . callLimit = void 0 ;
27+ const os = __importStar ( require ( "node:os" ) ) ;
28+ // availableParallelism available only since node v19, for older versions use
29+ // cpus() cpus() can return an empty list if /proc is not mounted, use 1 in
30+ // this case
31+ /* c8 ignore start */
32+ const defLimit = 'availableParallelism' in os
33+ ? Math . max ( 1 , os . availableParallelism ( ) - 1 )
34+ : Math . max ( 1 , os . cpus ( ) . length - 1 ) ;
35+ const callLimit = ( queue , { limit = defLimit , rejectLate } = { } ) => new Promise ( ( res , rej ) => {
36+ let active = 0 ;
37+ let current = 0 ;
38+ const results = [ ] ;
39+ // Whether or not we rejected, distinct from the rejection just in case the rejection itself is falsey
40+ let rejected = false ;
41+ let rejection ;
42+ const reject = ( er ) => {
43+ if ( rejected )
44+ return ;
45+ rejected = true ;
46+ rejection ??= er ;
47+ if ( ! rejectLate )
48+ rej ( rejection ) ;
49+ } ;
50+ let resolved = false ;
51+ const resolve = ( ) => {
52+ if ( resolved || active > 0 )
53+ return ;
54+ resolved = true ;
55+ res ( results ) ;
56+ } ;
57+ const run = ( ) => {
58+ const c = current ++ ;
59+ if ( c >= queue . length )
60+ return rejected ? reject ( ) : resolve ( ) ;
61+ active ++ ;
62+ const step = queue [ c ] ;
63+ /* c8 ignore start */
64+ if ( ! step )
65+ throw new Error ( 'walked off queue' ) ;
66+ /* c8 ignore stop */
67+ results [ c ] = step ( )
68+ . then ( result => {
69+ active -- ;
70+ results [ c ] = result ;
71+ return result ;
72+ } , er => {
73+ active -- ;
74+ reject ( er ) ;
75+ } )
76+ . then ( result => {
77+ if ( rejected && active === 0 )
78+ return rej ( rejection ) ;
79+ run ( ) ;
80+ return result ;
81+ } ) ;
82+ } ;
83+ for ( let i = 0 ; i < limit ; i ++ )
84+ run ( ) ;
85+ } ) ;
86+ exports . callLimit = callLimit ;
87+ //# sourceMappingURL=index.js.map
0 commit comments