File tree 1 file changed +10
-5
lines changed
1 file changed +10
-5
lines changed Original file line number Diff line number Diff line change @@ -386,7 +386,8 @@ function toPrimitive_TIME_MILLIS(value: string | number) {
386
386
if ( typeof value === `string` ) {
387
387
v = parseInt ( value , 10 ) ;
388
388
}
389
- if ( v < 0 || v > 0xffffffffffffffff || typeof v !== 'number' ) {
389
+ // Year 2255 bug. Should eventually switch to bigint
390
+ if ( v < 0 || v > ( Number . MAX_SAFE_INTEGER - 1 ) || typeof v !== 'number' ) {
390
391
throw 'invalid value for TIME_MILLIS: ' + value ;
391
392
}
392
393
@@ -461,18 +462,22 @@ function toPrimitive_TIMESTAMP_MICROS(value: Date | string | number | bigint) {
461
462
}
462
463
463
464
/* convert from integer */
464
- {
465
+ try {
466
+ // Will throw if NaN
465
467
const v = BigInt ( value ) ;
466
- if ( v < 0n /*|| isNaN(v)*/ ) {
467
- throw 'invalid value for TIMESTAMP_MICROS: ' + value ;
468
+ if ( v < 0n ) {
469
+ throw 'Cannot be less than zero' ;
468
470
}
469
471
470
472
return v ;
473
+ } catch ( e ) {
474
+ throw 'invalid value for TIMESTAMP_MICROS: ' + value ;
471
475
}
472
476
}
473
477
474
478
function fromPrimitive_TIMESTAMP_MICROS ( value : number | bigint ) {
475
- return typeof value === 'bigint' ? new Date ( Number ( value / 1000n ) ) : new Date ( value / 1000 ) ;
479
+ if ( typeof value === 'bigint' ) return new Date ( Number ( value / 1000n ) ) ;
480
+ return new Date ( value / 1000 ) ;
476
481
}
477
482
478
483
function toPrimitive_INTERVAL ( value : INTERVAL ) {
You can’t perform that action at this time.
0 commit comments