Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

fix(sandbox): declarative engine strips JSONC comments inside strings; sql.format and sql.parse are regex-based

Aberta
#1,567 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
75/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
dart
Domínio
backend, databases

Direção de pesquisa

Read lib/core/extensions/sandbox/embedded/declarative_embedded_engine.dart alongside lib/core/theme/parser/jsonc_preprocessor.dart and the core/database helper mentioned for leading comments. Check the editor fix in issue #1566 for the segment-aware SQL formatter. Add tests for the listed JSONC and SQL cases; done means strings remain intact, trailing commas parse, and sql.parse skips leading comments.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug core P3 parser

Problem

DeclarativeEmbeddedEngine (lib/core/extensions/sandbox/embedded/declarative_embedded_engine.dart) runs Level-1 JSON/JSONC modules for extensions. Three of its helpers use regexes where a scanner is needed:

  1. _parseJsoncObject (:230-238) breaks on any // or /* inside a string. It removes comments with //[^\n]* and /\*[\s\S]*?\*/ over the raw text, so {"homepage": "https://example.com"} becomes {"homepage": "https: and the module fails with FormatException. Trailing commas, which JSONC allows, are not handled either. The repo already has a correct scanner: stripJsonc in lib/core/theme/parser/jsonc_preprocessor.dart (string-aware, handles trailing commas). Use it.
  2. sql.format (:120-164) changes literals and does extra work. It compiles 21 RegExps per call (one per keyword plus two) and makes 23 passes over the string. [ \t]+ -> ' ' collapses spaces inside string literals; \s*;\s* -> ';\n' inserts newlines inside literals; keyword uppercasing rewrites 'order by' and "select". Use the segment-aware formatter from the editor fix (#1566) instead of a second implementation.
  3. sql.parse (:219) splits the whole statement on whitespace to read the first word, and returns -- / /* when the statement starts with a comment. Use one firstMatch after skipping leading comments (stripLeadingWhitespaceAndLineComments exists in core/database).

Scope

EmbeddedSandboxRuntime has no callers outside lib/core/extensions/sandbox/embedded/ yet (only tests), so nothing breaks for users today. Fix before the runtime is wired to extensions.

Tests

JSONC with a URL value, /* inside a string, trailing comma; sql.format with keywords and ; inside literals; sql.parse with a leading comment.

Linguagem predominante
Dart
Estrelas
23
Forks
1
Merge médio
31min
PRs com merge (30d)
570

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de QueryaHub/Querya-Desktop

Todas as issues de QueryaHub/Querya-Desktop

Issues semelhantes

Mais issues de Dart

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.