@@ -157,26 +157,28 @@ export class OperationExecutionManager {
157157if ( parallelism === 'max' ) {
158158this . _parallelism = numberOfCores ;
159159} else {
160- const parsed :number = parseInt ( parallelism , 10 ) ;
160+ const parallelismAsNumber :number = Number ( parallelism ) ;
161161
162- let parallelismInt :number = parsed > 0 ?parsed :1 ;
162+ const getParallelismValueHighThanZero = ( value :number ) => ( value > 0 ?value :1 ) ;
163163
164164if ( typeof parallelism === 'string' && parallelism . trim ( ) . endsWith ( '%' ) ) {
165- if ( parsed <= 0 || parsed > 100 ) {
165+ const parsedPercentage = Number ( parallelism . trim ( ) . replace ( / \% $ / , '' ) ) ;
166+
167+ if ( parsedPercentage <= 0 || parsedPercentage > 100 ) {
166168throw new Error (
167169`Invalid percentage value of '${ parallelism } ', value cannot be less than '0%' or more than '100%'`
168170) ;
169171}
170172
171- const workers :number = Math . floor ( ( parsed / 100 ) * numberOfCores ) ;
172- parallelismInt = Math . max ( workers , 1 ) ;
173- } else if ( isNaN ( parsed ) ) {
174- throw new Error (
175- `Invalid parallelism value of '${ parallelism } ', expected a number, a percentage, or 'max'`
176- ) ;
173+ const workers :number = Math . floor ( ( parallelismAsNumber / 100 ) * numberOfCores ) ;
174+ this . _parallelism = getParallelismValueHighThanZero ( workers ) ;
175+ } else if ( ! isNaN ( parallelismAsNumber ) ) {
176+ this . _parallelism = getParallelismValueHighThanZero ( parallelismAsNumber ) ;
177177}
178178
179- this . _parallelism = parallelismInt ;
179+ throw new Error (
180+ `Invalid parallelism value of '${ parallelism } ', expected a number, a percentage, or 'max'`
181+ ) ;
180182}
181183} else {
182184// If an explicit parallelism number wasn't provided, then choose a sensible