11import * as React from 'react' ;
22import * as Rdom from 'react-dom' ;
3- import * as bqrs from 'semmle-bqrs' ;
4- import {
5- ElementBase ,
6- PrimitiveColumnValue ,
7- PrimitiveTypeKind ,
8- tryGetResolvableLocation ,
9- } from 'semmle-bqrs' ;
103import { assertNever } from '../helpers-pure' ;
114import {
125 DatabaseInfo ,
@@ -22,8 +15,6 @@ import {
2215import { EventHandlers as EventHandlerList } from './event-handler-list' ;
2316import { ResultTables } from './result-tables' ;
2417import {
25- ResultValue ,
26- ResultRow ,
2718 ParsedResultSets ,
2819} from '../adapt' ;
2920import { ResultSet } from '../interface-types' ;
@@ -36,91 +27,6 @@ import { vscode } from './vscode-api';
3627 * Displaying query results.
3728 */
3829
39- async function * getChunkIterator (
40- response : Response
41- ) : AsyncIterableIterator < Uint8Array > {
42- if ( ! response . ok ) {
43- throw new Error (
44- `Failed to load results: (${ response . status } ) ${ response . statusText } `
45- ) ;
46- }
47- const reader = response . body ! . getReader ( ) ;
48- while ( true ) {
49- const { value, done } = await reader . read ( ) ;
50- if ( done ) {
51- return ;
52- }
53- yield value ! ;
54- }
55- }
56-
57- function translatePrimitiveValue (
58- value : PrimitiveColumnValue ,
59- type : PrimitiveTypeKind
60- ) : ResultValue {
61- switch ( type ) {
62- case 'i' :
63- case 'f' :
64- case 's' :
65- case 'd' :
66- case 'b' :
67- return value . toString ( ) ;
68-
69- case 'u' :
70- return {
71- uri : value as string ,
72- } ;
73- }
74- }
75-
76- async function parseResultSets (
77- response : Response
78- ) : Promise < readonly ResultSet [ ] > {
79- const chunks = getChunkIterator ( response ) ;
80-
81- const resultSets : ResultSet [ ] = [ ] ;
82-
83- await bqrs . parse ( chunks , ( resultSetSchema ) => {
84- const columnTypes = resultSetSchema . columns . map ( ( column ) => column . type ) ;
85- const rows : ResultRow [ ] = [ ] ;
86- resultSets . push ( {
87- t : 'RawResultSet' ,
88- schema : resultSetSchema ,
89- rows : rows ,
90- } ) ;
91-
92- return ( tuple ) => {
93- const row : ResultValue [ ] = [ ] ;
94- tuple . forEach ( ( value , index ) => {
95- const type = columnTypes [ index ] ;
96- if ( type . type === 'e' ) {
97- const element : ElementBase = value as ElementBase ;
98- const label =
99- element . label !== undefined ? element . label : element . id . toString ( ) ; //REVIEW: URLs?
100- const resolvableLocation = tryGetResolvableLocation ( element . location ) ;
101- if ( resolvableLocation !== undefined ) {
102- row . push ( {
103- label : label ,
104- location : resolvableLocation ,
105- } ) ;
106- } else {
107- // No location link.
108- row . push ( label ) ;
109- }
110- } else {
111- row . push (
112- translatePrimitiveValue ( value as PrimitiveColumnValue , type . type )
113- ) ;
114- }
115- } ) ;
116-
117- rows . push ( row ) ;
118- } ;
119- } ) ;
120-
121- return resultSets ;
122- }
123-
12430interface ResultsInfo {
12531 parsedResultSets : ParsedResultSets ;
12632 resultsPath : string ;
@@ -270,8 +176,6 @@ class App extends React.Component<{}, ResultsViewState> {
270176 ) : Promise < readonly ResultSet [ ] > {
271177 const parsedResultSets = resultsInfo . parsedResultSets ;
272178 switch ( parsedResultSets . t ) {
273- case 'WebviewParsed' :
274- return await this . fetchResultSets ( resultsInfo ) ;
275179 case 'ExtensionParsed' : {
276180 return [ { t : 'RawResultSet' , ...parsedResultSets . resultSet } ] ;
277181 }
@@ -321,35 +225,6 @@ class App extends React.Component<{}, ResultsViewState> {
321225 } ) ;
322226 }
323227
324- /**
325- * This is deprecated, because it calls `fetch`. We are moving
326- * towards doing all bqrs parsing in the extension.
327- */
328- private async fetchResultSets (
329- resultsInfo : ResultsInfo
330- ) : Promise < readonly ResultSet [ ] > {
331- const unsortedResponse = await fetch ( resultsInfo . resultsPath ) ;
332- const unsortedResultSets = await parseResultSets ( unsortedResponse ) ;
333- return Promise . all (
334- unsortedResultSets . map ( async ( unsortedResultSet ) => {
335- const sortedResultSetInfo = resultsInfo . sortedResultsMap . get (
336- unsortedResultSet . schema . name
337- ) ;
338- if ( sortedResultSetInfo === undefined ) {
339- return unsortedResultSet ;
340- }
341- const response = await fetch ( sortedResultSetInfo . resultsPath ) ;
342- const resultSets = await parseResultSets ( response ) ;
343- if ( resultSets . length != 1 ) {
344- throw new Error (
345- `Expected sorted BQRS to contain a single result set, encountered ${ resultSets . length } result sets.`
346- ) ;
347- }
348- return resultSets [ 0 ] ;
349- } )
350- ) ;
351- }
352-
353228 private getSortStates (
354229 resultsInfo : ResultsInfo
355230 ) : Map < string , RawResultsSortState > {
0 commit comments