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 ) ); } );