
O Netgrep é uma porção experimental do RipGrep no WASM usando o protocolo HTTP. O escopo deste projeto é fornecer uma alternativa viável aos mecanismos de pesquisa baseados em índice para aplicativos com um pequeno banco de dados baseado em arquivos. Ele usa um garfo do repositório ripgrep original com alterações suficientes para torná -lo executável no WASM.
No momento, o Netgrep apenas dirá se um padrão está presente em um arquivo remoto que alavanca o mecanismo de pesquisa ripgrep Core. Isso acontece enquanto o arquivo está sendo baixado para maximizar o desempenho.
Nota A pesquisa de postagens em um blog criada através de um gerador de sites estático é um caso de uso interessante para este experimento. O Netgrep pode ser facilmente usado para criar um mecanismo de pesquisa em tempo real a partir dos arquivos de postagem bruta. Um exemplo ao vivo para esse comportamento pode ser encontrado no meu blog (você pode dar uma olhada no código -fonte).
Aviso no momento em que essa biblioteca é exportada apenas como um ESM, portanto, é necessário um PACKPACK para usá -lo.
Observe que este curto tutorial assume que o WebPack 5 é o empurrão usado no aplicativo em que
netgrepserá integrado. Um exemplo completo está disponível no pacote deexample.
Primeiro de tudo, instale o módulo:
# Using yarn
yarn add @netgrep/netgrep
# Using npm
npm install @netgrep/netgrep O sinalizador asyncWebAssembbly Experiment deve ser ativado dentro do webpack.config.js :
module . exports = {
//...
experiments : {
// ...
asyncWebAssembly : true ,
} ,
} ; Em seguida, será possível executar netgrep diretamente enquanto o arquivo WASM incluído será carregado de forma assíncrona em segundo plano:
import { Netgrep } from '@netgrep/netgrep' ;
// Create a Netgrep instance, here it's
// possible to pass an initial configuration.
const NG = new Netgrep ( ) ;
// Execute a Netgrep search on the url using
// the given pattern.
NG . search ( "url" , "pattern" )
. then ( ( output ) => {
console . log ( 'The pattern has matched' , output . result )
} ) ;
// It's possible to pass custom metadata during
// the search. These will be returned back in the result
// for convenience.
NG . search ( "url" , "pattern" , { post } )
. then ( ( output ) => {
console . log ( 'The pattern has matched' , output . result )
console . log ( 'Metadata' , output . metadata )
} ) ;
// There is a convenient method to do batched searches
// to multiple urls. Using `searchBatch` the resulting `Promise`
// will resolve only after the completion of all the searches.
NG . searchBatch ( [
{ url : 'url1' } ,
{ url : 'url2' } ,
{ url : 'url3' }
] , "pattern" )
. then ( ( outputs ) => {
outputs . forEach ( ( output ) => {
console . log ( `The pattern has matched for ${ output . url } ` , output . result )
} ) ;
} ) ;
// If you want to avoid waiting for the completion of
// all the searches, the method `searchBatchWithCallback` will
// execute a callback every time a search completes.
NG . searchBatchWithCallback ( [
{ url : 'url1' } ,
{ url : 'url2' } ,
{ url : 'url3' }
] , "pattern" , ( output ) => {
console . log ( `The pattern has matched for ${ output . url } ` , output . result )
} ) ; O Netgrep está sob a licença do MIT.