File tree Expand file tree Collapse file tree 2 files changed +43
-7
lines changed
Expand file tree Collapse file tree 2 files changed +43
-7
lines changed Original file line number Diff line number Diff line change @@ -972,23 +972,43 @@ function get_parent_context(component_context) {
972972}
973973
974974/**
975- * @param {Value<number> } signal
975+ * @template {number|bigint} T
976+ * @param {Value<T> } signal
976977 * @param {1 | -1 } [d]
977- * @returns {number }
978+ * @returns {T }
978979 */
979980export function update ( signal , d = 1 ) {
980- var value = + get ( signal ) ;
981- set ( signal , value + d ) ;
981+ var value = get ( signal ) ;
982+
983+ if ( typeof value === "bigint" ) {
984+ //@ts -ignore
985+ set ( signal , value + BigInt ( d ) ) ;
986+ } else {
987+ //@ts -ignore
988+ set ( signal , + value + d ) ;
989+ }
990+
982991 return value ;
983992}
984993
985994/**
986- * @param {Value<number> } signal
995+ * @template {number|bigint} T
996+ * @param {Value<T> } signal
987997 * @param {1 | -1 } [d]
988- * @returns {number }
998+ * @returns {T }
989999 */
9901000export function update_pre ( signal , d = 1 ) {
991- return set ( signal , + get ( signal ) + d ) ;
1001+ var value = get ( signal ) ;
1002+
1003+ if ( typeof value === "bigint" ) {
1004+ //@ts -ignore
1005+ d = BigInt ( d ) ;
1006+ } else {
1007+ //@ts -ignore
1008+ value = + value ;
1009+ }
1010+ //@ts -ignore
1011+ return set ( signal , value + d ) ;
9921012}
9931013
9941014/**
Original file line number Diff line number Diff line change @@ -739,4 +739,20 @@ describe('signals', () => {
739739 assert . deepEqual ( a . reactions , null ) ;
740740 } ;
741741 } ) ;
742+
743+ test ( 'bigint states update correctly' , ( ) => {
744+ return ( ) => {
745+ const count = state ( 0n ) ;
746+
747+ assert . doesNotThrow ( ( ) => $ . update ( count ) ) ;
748+ assert . equal ( $ . get ( count ) , 1n ) ;
749+ assert . doesNotThrow ( ( ) => $ . update ( count , - 1 ) ) ;
750+ assert . equal ( $ . get ( count ) , 0n ) ;
751+
752+ assert . doesNotThrow ( ( ) => $ . update_pre ( count ) ) ;
753+ assert . equal ( $ . get ( count ) , 1n ) ;
754+ assert . doesNotThrow ( ( ) => $ . update_pre ( count , - 1 ) ) ;
755+ assert . equal ( $ . get ( count ) , 0n ) ;
756+ }
757+ } )
742758} ) ;
You can’t perform that action at this time.
0 commit comments