28 lines
1.0 KiB
TypeScript
28 lines
1.0 KiB
TypeScript
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 ) );
|
|
} );
|