@@ -10,22 +10,36 @@ export class SparseVector {
1010 /** @type {number[] } */
1111 values = [ ] ;
1212
13+ /**
14+ * @overload
15+ * @param {string | number[] } value
16+ *
17+ * @overload
18+ * @param {Map<number, number> } value
19+ * @param {number } dimensions
20+ */
1321 constructor ( value , dimensions ) {
14- if ( typeof value === 'string' ) {
15- this . #fromSql( value ) ;
16- } else if ( dimensions !== undefined ) {
22+ if ( dimensions !== undefined ) {
1723 this . #fromMap( value , dimensions ) ;
24+ } else if ( typeof value === 'string' ) {
25+ this . #fromSql( value ) ;
1826 } else {
1927 this . #fromDense( value ) ;
2028 }
2129 }
2230
31+ /**
32+ * @returns {string }
33+ */
2334 toPostgres ( ) {
2435 const values = this . values ;
2536 const elements = this . indices . map ( ( index , i ) => format ( '%i:%f' , index + 1 , values [ i ] ) ) . join ( ',' ) ;
2637 return format ( '{%s}/%d' , elements , this . dimensions ) ;
2738 }
2839
40+ /**
41+ * @returns {string }
42+ */
2943 toString ( ) {
3044 return this . toPostgres ( ) ;
3145 }
@@ -41,6 +55,9 @@ export class SparseVector {
4155 return arr ;
4256 }
4357
58+ /**
59+ * @param {string } value
60+ */
4461 #fromSql( value ) {
4562 const parts = value . split ( '/' , 2 ) ;
4663
@@ -54,6 +71,9 @@ export class SparseVector {
5471 }
5572 }
5673
74+ /**
75+ * @param {number[] } value
76+ */
5777 #fromDense( value ) {
5878 this . dimensions = value . length ;
5979
@@ -66,6 +86,10 @@ export class SparseVector {
6686 }
6787 }
6888
89+ /**
90+ * @param {Map<number, number> } map
91+ * @param {number } dimensions
92+ */
6993 #fromMap( map , dimensions ) {
7094 this . dimensions = Number ( dimensions ) ;
7195
0 commit comments