Repolode
johnsoncodehk

johnsoncodehk/muggle-string

Biblioteca TypeScript sem dependências para reescrever texto-fonte com vários escritores e mapear o resultado de volta usando spans de language server e source maps v3.

Estrelas
25
Forks
2
Issues abertas
0
Último commit
há 23 horas

O que é?

muggle-string reescreve um texto-fonte a partir de vários pontos ao mesmo tempo e mapeia o resultado de volta para o código original. Foi criada para vuejs/language-tools, para converter componentes single-file do Vue em TypeScript para o language server, em que vários plugins editam o mesmo bloco e o resultado precisa manter recursos do editor, como hover, completion e rename.

As edições são registradas como adições a listas de cada escritor e só são ordenadas na hora de renderizar, então nunca é preciso buscar nem copiar texto. Os escritores têm ranks que definem a ordem quando as edições ocorrem na mesma posição; assim, a ordem dos plugins, e não a ordem das chamadas, determina o resultado. Remoções se combinam, e um recorte permite mover um intervalo para outro ponto do resultado, preservando o mapeamento.

As mesmas partes renderizadas geram spans de language server (Verbatim e Atom) ou um source map v3. A biblioteca é distribuída somente como módulos ES e não tem dependências.

Recursos principais

  • 01Vários escritores editam a mesma fonte, com ordenação por rank em vez da ordem das chamadas.
  • 02Remoções e substituições se combinam sem desfazer umas às outras.
  • 03Intervalos recortados podem ser movidos para outra posição no resultado.
  • 04Gera spans de language server ou um source map v3 a partir das mesmas partes.
  • 05Funciona com TypeScript e não tem dependências em runtime.

Casos de uso

  • Criar um plugin de language server que gera TypeScript a partir de um formato de arquivo baseado em templates.
  • Compilar uma linguagem de templates para HTML, preservando o mapeamento para as posições originais.
  • Gerar um source map para uma ferramenta de transformação de código que faz muitas edições em um único arquivo.

Em coleções

Tópicos

#source-map#code-transformation#typescript#language-server#compiler

Perguntas frequentes

O que é muggle-string?
Biblioteca TypeScript sem dependências para reescrever texto-fonte com vários escritores e mapear o resultado de volta usando spans de language server e source maps v3. muggle-string reescreve um texto-fonte a partir de vários pontos ao mesmo tempo e mapeia o resultado de volta para o código original. Foi criada para vuejs/language-tools, para converter componentes single-file do Vue em TypeScript para o language server, em que vários plugins editam o mesmo bloco e o resultado precisa manter recursos do editor, como hover, completion e rename.
muggle-string é gratuito? Qual é a licença?
muggle-string é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
muggle-string ainda é mantido?
Manutenção ativa. O último commit de muggle-string foi em 6 de nov. de 2026.
Para que posso usar muggle-string?
Criar um plugin de language server que gera TypeScript a partir de um formato de arquivo baseado em templates. Compilar uma linguagem de templates para HTML, preservando o mapeamento para as posições originais. Gerar um source map para uma ferramenta de transformação de código que faz muitas edições em um único arquivo.
Onde consigo muggle-string?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/johnsoncodehk/muggle-string

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados