import { search } from 'fast-fuzzy';
import fs from 'fs';

// Get list source from args
// ARGS: type source
// Then we read query from stdin to not restart indexing & the like for each keystroke

let data: string[] = [];
if ( process.argv[ 2 ] === 'fs' ) {
    if ( process.argv[ 3 ].includes( '.json' ) ) {
        data = JSON.parse( '' + fs.readFileSync( process.argv[ 3 ] ) );
    } else if ( process.argv[ 3 ].includes( '.txt' ) ) {
        data = ( '' + fs.readFileSync( process.argv[ 3 ] ) ).split( ',' );
    } else if ( fs.statSync( process.argv[ 3 ] ).isDirectory() ) {
        data = fs.readdirSync( process.argv[ 3 ] );
    }
} else if ( process.argv[ 2 ] === 'arg' ) {
    data = process.argv[ 3 ].split( ',' );
} else {
    throw new Error( 'Invalid argument at position 1. Can be either fs or arg, not ' + process.argv[ 2 ] );
}

process.stdin.on( "data", ( query ) => {
    // On stdin submit (which the other client will have to support) process data
    
    console.log( search( query.toString(), data ) );
} );
