@@ -294,26 +294,34 @@ function findFatalUnresolvedImport(lines) {
294294 return null ;
295295}
296296
297- function parsePositiveInteger ( value ) {
297+ function parsePositiveIntegerEnv ( value , name ) {
298298 if ( typeof value !== "string" || value . trim ( ) === "" ) {
299299 return null ;
300300 }
301- const parsed = Number ( value ) ;
302- if ( ! Number . isFinite ( parsed ) || parsed <= 0 ) {
303- return null ;
301+ const text = value . trim ( ) ;
302+ if ( ! / ^ \d + $ / u . test ( text ) ) {
303+ throw new Error ( ` ${ name } must be a positive integer` ) ;
304304 }
305- return Math . trunc ( parsed ) ;
305+ const parsed = Number ( text ) ;
306+ if ( ! Number . isSafeInteger ( parsed ) || parsed <= 0 ) {
307+ throw new Error ( `${ name } must be a positive safe integer` ) ;
308+ }
309+ return parsed ;
306310}
307311
308- function parseNonNegativeInteger ( value ) {
312+ function parseNonNegativeIntegerEnv ( value , name ) {
309313 if ( typeof value !== "string" || value . trim ( ) === "" ) {
310314 return null ;
311315 }
312- const parsed = Number ( value ) ;
313- if ( ! Number . isFinite ( parsed ) || parsed < 0 ) {
314- return null ;
316+ const text = value . trim ( ) ;
317+ if ( ! / ^ \d + $ / u . test ( text ) ) {
318+ throw new Error ( ` ${ name } must be a non-negative integer` ) ;
315319 }
316- return Math . trunc ( parsed ) ;
320+ const parsed = Number ( text ) ;
321+ if ( ! Number . isSafeInteger ( parsed ) ) {
322+ throw new Error ( `${ name } must be a non-negative safe integer` ) ;
323+ }
324+ return parsed ;
317325}
318326
319327function parseCgroupMemoryLimitBytes ( value ) {
@@ -582,9 +590,15 @@ export async function runTsdownBuildInvocation(invocation, params = {}) {
582590 const stderr = params . stderr ?? process . stderr ;
583591 const env = params . env ?? process . env ;
584592 const scanner = params . scanner ?? createTsdownOutputScanner ( ) ;
585- const timeoutMs = parsePositiveInteger ( env . OPENCLAW_TSDOWN_TIMEOUT_MS ) ;
593+ const timeoutMs = parsePositiveIntegerEnv (
594+ env . OPENCLAW_TSDOWN_TIMEOUT_MS ,
595+ "OPENCLAW_TSDOWN_TIMEOUT_MS" ,
596+ ) ;
586597 const heartbeatMs =
587- parseNonNegativeInteger ( env . OPENCLAW_TSDOWN_HEARTBEAT_MS ) ?? DEFAULT_HEARTBEAT_MS ;
598+ parseNonNegativeIntegerEnv (
599+ env . OPENCLAW_TSDOWN_HEARTBEAT_MS ,
600+ "OPENCLAW_TSDOWN_HEARTBEAT_MS" ,
601+ ) ?? DEFAULT_HEARTBEAT_MS ;
588602 let timedOut = false ;
589603 let settled = false ;
590604 let lastOutputAt = Date . now ( ) ;
0 commit comments