@@ -48,12 +48,10 @@ export function encodeParam(param: SQParam): string {
4848 if ( Buffer . isBuffer ( param ) ) {
4949 return [ PARAMS_TYPE . BINARY , param . length , '\n' , param . toString ( ) ] . join ( '' ) ;
5050 }
51-
5251 // null undefined
5352 if ( param == null ) {
5453 return '\x00' ;
5554 }
56-
5755 switch ( typeof param ) {
5856 case 'string' :
5957 return [ PARAMS_TYPE . STRING , param . length , '\n' , param ] . join ( '' ) ;
@@ -91,7 +89,6 @@ export function encodeQuery(query: Query): Buffer {
9189 const dataframe = `${ query . getQuery ( ) } ${ query . getParams ( ) . join ( '' ) } ` ;
9290 const data = [ query . getQueryLength ( ) , '\n' , dataframe ] ;
9391 const requestData = [ 'S' , data . join ( '' ) . length , '\n' , ...data ] ;
94-
9592 return Buffer . from ( requestData . join ( '' ) , 'utf-8' ) ;
9693}
9794
@@ -110,27 +107,23 @@ function parseNumber<T = number>(
110107) : [ T , Buffer ] {
111108 const offset = getFirstSplitOffset ( buffer ) ;
112109 const val = formatFn ( buffer . subarray ( 0 , offset ) . toString ( 'utf-8' ) ) ;
113-
114110 return [ val , buffer . subarray ( offset + 1 ) ] ;
115111}
116112
117113function parseNextBySize ( size : number , buffer : Buffer ) : [ Column [ ] , Buffer ] {
118114 let values = [ ] ;
119115 let nextBuffer = buffer ;
120-
121116 for ( let i = 0 ; i < size ; i ++ ) {
122- const [ value , remainingBuffer ] = parseSingleVal ( nextBuffer ) ;
117+ const [ value , remainingBuffer ] = decodeValue ( nextBuffer ) ;
123118 values . push ( value ) ;
124119 nextBuffer = remainingBuffer ;
125120 }
126-
127121 return [ values , nextBuffer ] ;
128122}
129123
130- function parseSingleVal ( buffer : Buffer ) : [ Column , Buffer ] {
124+ function decodeValue ( buffer : Buffer ) : [ Column , Buffer ] {
131125 const type = buffer . readUInt8 ( 0 ) ;
132126 buffer = buffer . subarray ( 1 ) ;
133-
134127 switch ( type ) {
135128 case RESPONSES_RESULT . NULL : // Null
136129 return [ null , buffer . subarray ( 0 ) ] ;
@@ -164,7 +157,6 @@ function parseSingleVal(buffer: Buffer): [Column, Buffer] {
164157 return [ Buffer . from ( [ ] ) , buffer . subarray ( sizeOffset + 1 ) ] ;
165158 }
166159 const [ start , end ] = [ sizeOffset + 1 , sizeOffset + 1 + Number ( size ) ] ;
167-
168160 return [ buffer . subarray ( start , end ) , buffer . subarray ( end ) ] ;
169161 }
170162 case RESPONSES_RESULT . STRING : {
@@ -173,7 +165,6 @@ function parseSingleVal(buffer: Buffer): [Column, Buffer] {
173165 const size = Number ( buffer . subarray ( 0 , sizeOffset ) . toString ( 'utf-8' ) ) ;
174166 const [ start , end ] = [ sizeOffset + 1 , sizeOffset + 1 + Number ( size ) ] ;
175167 const str = buffer . subarray ( start , end ) . toString ( 'utf-8' ) ;
176-
177168 return [ str , buffer . subarray ( end ) ] ;
178169 }
179170 case RESPONSES_RESULT . LIST : {
@@ -183,7 +174,6 @@ function parseSingleVal(buffer: Buffer): [Column, Buffer] {
183174 if ( size === 0 ) {
184175 return [ [ ] , buffer . subarray ( sizeOffset + 1 ) ] ;
185176 }
186-
187177 return parseNextBySize ( size , buffer . subarray ( sizeOffset + 1 ) ) as [
188178 Column ,
189179 Buffer ,
@@ -194,69 +184,56 @@ function parseSingleVal(buffer: Buffer): [Column, Buffer] {
194184 }
195185}
196186
197- export function formatRow ( buffer : Buffer ) : Row {
187+ export function decodeRow ( buffer : Buffer ) : Row {
198188 const offset = getFirstSplitOffset ( buffer ) ;
199189 const columnCount = Number ( buffer . subarray ( 0 , offset ) . toString ( 'utf-8' ) ) ;
200190 const dataType = buffer . subarray ( offset + 1 ) ;
201-
202191 const [ row ] = parseNextBySize ( columnCount , dataType ) ;
203-
204192 return row ;
205193}
206194
207- export function formatRows ( buffer : Buffer ) : Rows {
195+ export function decodeRows ( buffer : Buffer ) : Rows {
208196 const offset = getFirstSplitOffset ( buffer ) ;
209197 const rowCount = Number ( buffer . subarray ( 0 , offset ) . toString ( 'utf-8' ) ) ;
210-
211198 buffer = buffer . subarray ( offset + 1 ) ;
212-
213199 const columnOffset = getFirstSplitOffset ( buffer ) ;
214200 const columnCount = Number (
215201 buffer . subarray ( 0 , columnOffset ) . toString ( 'utf-8' ) ,
216202 ) ;
217-
218203 buffer = buffer . subarray ( columnOffset + 1 ) ;
219-
220204 const result : Rows = [ ] ;
221205 let nextBuffer = buffer ;
222-
223206 for ( let i = 0 ; i < rowCount ; i ++ ) {
224207 const [ row , remainingBuffer ] = parseNextBySize ( columnCount , nextBuffer ) ;
225-
226208 result [ i ] = row ;
227209 nextBuffer = remainingBuffer ;
228210 }
229-
230211 return result ;
231212}
232213
233- export function formatResponse ( buffer : Buffer ) : QueryResult {
214+ export function decodeResponse ( buffer : Buffer ) : QueryResult {
234215 const type = buffer . readInt8 ( 0 ) ;
235-
236216 switch ( type ) {
237217 case RESPONSES_RESULT . EMPTY :
238218 return null ;
239219 case RESPONSES_RESULT . ROW :
240- return formatRow ( buffer . subarray ( 1 ) ) ;
220+ return decodeRow ( buffer . subarray ( 1 ) ) ;
241221 case RESPONSES_RESULT . MULTIROW :
242- return formatRows ( buffer . subarray ( 1 ) ) ;
222+ return decodeRows ( buffer . subarray ( 1 ) ) ;
243223 case RESPONSES_RESULT . ERROR :
244224 throw new Error (
245225 `response error code: ${ buffer . subarray ( 1 , 2 ) . readInt8 ( ) } ` ,
246226 ) ;
247227 default :
248228 break ;
249229 }
250-
251- const [ val ] = parseSingleVal ( buffer ) ;
252-
230+ const [ val ] = decodeValue ( buffer ) ;
253231 return val ;
254232}
255233
256234export function getClientHandshake ( config : Config ) : string {
257235 const username = config . getUsername ( ) ;
258236 const password = config . getPassword ( ) ;
259-
260237 return [
261238 'H\x00\x00\x00\x00\x00' ,
262239 username . length ,
@@ -272,11 +249,9 @@ export function bufferToHandshakeResult(buffer: Buffer): Promise<void> {
272249 return new Promise ( ( resolve , reject ) => {
273250 const [ h , c1 , c2 , msg ] = Array . from ( buffer . toJSON ( ) . data ) ;
274251 const code = [ String . fromCharCode ( h ) , c1 , c2 ] . join ( '' ) ;
275-
276252 if ( code === HANDSHAKE_RESULT . SUCCESS ) {
277253 return resolve ( ) ;
278254 }
279-
280255 reject ( new Error ( `handshake error code ${ code } , msg: ${ msg } ` ) ) ;
281256 } ) ;
282257}
0 commit comments