diff --git a/fontes/analisador-semantico/analisador-semantico-visualg.ts b/fontes/analisador-semantico/analisador-semantico-visualg.ts index 7b87c9e..6ad86bb 100644 --- a/fontes/analisador-semantico/analisador-semantico-visualg.ts +++ b/fontes/analisador-semantico/analisador-semantico-visualg.ts @@ -27,6 +27,7 @@ import { VariavelHipoteticaInterface } from '@designliquido/delegua/interfaces/v import { RetornoQuebra } from '@designliquido/delegua/quebras'; import { PilhaVariaveis } from './pilha-variaveis'; +import { TipoDadosElementar } from '@designliquido/delegua/tipo-dados-elementar'; export class AnalisadorSemanticoVisuAlg extends AnalisadorSemanticoBase { pilhaVariaveis: PilhaVariaveis; @@ -59,24 +60,27 @@ export class AnalisadorSemanticoVisuAlg extends AnalisadorSemanticoBase { } visitarExpressaoDeAtribuicao(expressao: Atribuir) { - const { simbolo, valor } = expressao; - let variavel = this.variaveis[simbolo.lexema]; + const { alvo, valor } = expressao; + // Provavelmente o alvo é sempre `Variavel` + const alvoVariavel: Variavel = alvo as Variavel; + + let variavel = this.variaveis[alvoVariavel.simbolo.lexema]; if (!variavel) { - this.adicionarDiagnostico(simbolo, `Variável ${simbolo.lexema} ainda não foi declarada.`); + this.adicionarDiagnostico(alvoVariavel.simbolo, `Variável ${alvoVariavel.simbolo.lexema} ainda não foi declarada.`); return Promise.resolve(); } if (variavel.tipo) { if (valor instanceof Literal && variavel.tipo.includes('[]')) { this.adicionarDiagnostico( - simbolo, + alvoVariavel.simbolo, `Atribuição inválida, esperado tipo '${variavel.tipo}' na atribuição.` ); return Promise.resolve(); } if (valor instanceof Vetor && !variavel.tipo.includes('[]')) { this.adicionarDiagnostico( - simbolo, + alvoVariavel.simbolo, `Atribuição inválida, esperado tipo '${variavel.tipo}' na atribuição.` ); return Promise.resolve(); @@ -87,13 +91,13 @@ export class AnalisadorSemanticoVisuAlg extends AnalisadorSemanticoBase { if (!['qualquer'].includes(variavel.tipo)) { if (valorLiteral === 'string') { if (variavel.tipo.toLowerCase() != 'caractere') { - this.adicionarDiagnostico(simbolo, `Esperado tipo '${variavel.tipo}' na atribuição.`); + this.adicionarDiagnostico(alvoVariavel.simbolo, `Esperado tipo '${variavel.tipo}' na atribuição.`); return Promise.resolve(); } } if (valorLiteral === 'number') { if (!['inteiro', 'real'].includes(variavel.tipo.toLowerCase())) { - this.adicionarDiagnostico(simbolo, `Esperado tipo '${variavel.tipo}' na atribuição.`); + this.adicionarDiagnostico(alvoVariavel.simbolo, `Esperado tipo '${variavel.tipo}' na atribuição.`); return Promise.resolve(); } } @@ -102,7 +106,7 @@ export class AnalisadorSemanticoVisuAlg extends AnalisadorSemanticoBase { } if (variavel) { - this.variaveis[simbolo.lexema].valor = valor; + this.variaveis[alvoVariavel.simbolo.lexema].valor = valor; } } @@ -171,7 +175,7 @@ export class AnalisadorSemanticoVisuAlg extends AnalisadorSemanticoBase { visitarDeclaracaoVar(declaracao: Var): Promise { this.variaveis[declaracao.simbolo.lexema] = { imutavel: false, - tipo: declaracao.tipo, + tipo: declaracao.tipo as TipoDadosElementar, valor: declaracao.inicializador !== null ? declaracao.inicializador.valor !== undefined @@ -201,10 +205,10 @@ export class AnalisadorSemanticoVisuAlg extends AnalisadorSemanticoBase { visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao) { for (let parametro of declaracao.funcao.parametros) { - if (parametro.hasOwnProperty('tipoDado') && !parametro.tipoDado.tipo) { + if (parametro.hasOwnProperty('tipoDado') && !parametro.tipoDado) { this.adicionarDiagnostico( declaracao.simbolo, - `O tipo '${parametro.tipoDado.tipoInvalido}' não é valido` + `O tipo '${parametro.tipoDado}' não é valido` ); } } @@ -269,7 +273,7 @@ export class AnalisadorSemanticoVisuAlg extends AnalisadorSemanticoBase { for (let [indice, argumento] of expressao.argumentos.entries()) { const parametroCorrespondente = funcao.parametros[indice]; - const tipoDadoParametro = parametroCorrespondente.tipoDado.tipo.toLowerCase(); + const tipoDadoParametro = parametroCorrespondente.tipoDado.toLowerCase(); if (argumento instanceof Variavel) { const lexemaVariavelCorrespondente = (argumento as Variavel).simbolo.lexema; diff --git a/fontes/avaliador-sintatico/avaliador-sintatico-visualg.ts b/fontes/avaliador-sintatico/avaliador-sintatico-visualg.ts index 488cf68..371da94 100644 --- a/fontes/avaliador-sintatico/avaliador-sintatico-visualg.ts +++ b/fontes/avaliador-sintatico/avaliador-sintatico-visualg.ts @@ -266,7 +266,6 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { this.hashArquivo ) ), - undefined, [] ) ), @@ -349,7 +348,6 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { this.hashArquivo ) ), - undefined, [] ), dadosVariaveis.tipo as any @@ -394,7 +392,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { const variavel = new Variavel(this.hashArquivo, simboloIdentificadorOuMetodo); // Chamada de função ou procedimento sem parâmetros. if (this.funcoesProcedimentosConhecidos.includes(simboloIdentificadorOuMetodo.lexema)) { - return new Chamada(this.hashArquivo, variavel, undefined, []); + return new Chamada(this.hashArquivo, variavel, []); } return variavel; @@ -456,29 +454,40 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { const setaAtribuicao = this.simbolos[this.atual - 1]; const valor = this.atribuir(); - if (expressao instanceof Variavel) { - const simbolo = expressao.simbolo; - return new Atribuir(this.hashArquivo, simbolo, valor); - } else if (expressao instanceof AcessoIndiceVariavel) { - return new AtribuicaoPorIndice( - this.hashArquivo, - expressao.linha, - expressao.entidadeChamada, - expressao.indice, - valor - ); - } else if (expressao instanceof AcessoElementoMatriz) { - return new AtribuicaoPorIndicesMatriz( - this.hashArquivo, - expressao.linha, - expressao.entidadeChamada, - expressao.indicePrimario, - expressao.indiceSecundario, - valor - ); + switch (expressao.constructor.name) { + case 'Variavel': + return new Atribuir(this.hashArquivo, expressao, valor); + case 'AcessoIndiceVariavel': + const expressaoAcessoIndiceVariavel = expressao as AcessoIndiceVariavel; + return new AtribuicaoPorIndice( + this.hashArquivo, + expressaoAcessoIndiceVariavel.linha, + expressaoAcessoIndiceVariavel.entidadeChamada, + expressaoAcessoIndiceVariavel.indice, + valor + ); + case 'AcessoElementoMatriz': + const expressaoAcessoElementoMatriz = expressao as AcessoElementoMatriz; + return new AtribuicaoPorIndicesMatriz( + this.hashArquivo, + expressaoAcessoElementoMatriz.linha, + expressaoAcessoElementoMatriz.entidadeChamada, + expressaoAcessoElementoMatriz.indicePrimario, + expressaoAcessoElementoMatriz.indiceSecundario, + valor + ); + case 'AcessoMetodoOuPropriedade': + const expressaAcessoMetodoOuPropriedade = expressao as AcessoMetodoOuPropriedade; + return new DefinirValor( + expressaAcessoMetodoOuPropriedade.hashArquivo, + expressaAcessoMetodoOuPropriedade.linha, + expressaAcessoMetodoOuPropriedade.objeto, + expressaAcessoMetodoOuPropriedade.simbolo, + valor + ); + default: + throw this.erro(setaAtribuicao, 'Tarefa de atribuição inválida'); } - - throw this.erro(setaAtribuicao, 'Tarefa de atribuição inválida'); } return expressao; @@ -517,16 +526,13 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { override finalizarChamada(entidadeChamada: Construto): Chamada { const argumentos: Array = []; - let parenteseDireito: SimboloInterface; - if (!this.verificarTipoSimboloAtual(tiposDeSimbolos.PARENTESE_DIREITO)) { - do { - if (argumentos.length >= 255) { - throw this.erro(this.simbolos[this.atual], 'Não pode haver mais de 255 argumentos.'); - } - argumentos.push(this.expressao()); - } while (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.VIRGULA)); + while (!this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.PARENTESE_DIREITO)) { + if (argumentos.length >= 255) { + throw this.erro(this.simbolos[this.atual], 'Não pode haver mais de 255 argumentos.'); + } - parenteseDireito = this.consumir(tiposDeSimbolos.PARENTESE_DIREITO, "Esperado ')' após os argumentos."); + argumentos.push(this.expressao()); + this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.VIRGULA); } if (entidadeChamada instanceof Chamada) { @@ -534,7 +540,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { return entidadeChamada; } - return new Chamada(this.hashArquivo, entidadeChamada, parenteseDireito, argumentos); + return new Chamada(this.hashArquivo, entidadeChamada, argumentos); } chamar(): Construto { @@ -951,15 +957,15 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { let operadorCondicao = new Simbolo( tiposDeSimbolos.MENOR_IGUAL, - '', - '', + '<=', + null, Number(simboloPara.linha), this.hashArquivo ); let operadorCondicaoIncremento = new Simbolo( tiposDeSimbolos.MENOR, - '', - '', + '<', + null, Number(simboloPara.linha), this.hashArquivo ); @@ -1023,7 +1029,7 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { } } else { // Passo e operador de condição precisam ser resolvidos em tempo de execução. - passo = undefined; + passo = new Literal(this.hashArquivo, Number(simboloPara.linha), 1); operadorCondicao = undefined; operadorCondicaoIncremento = undefined; resolverIncrementoEmExecucao = true; @@ -1062,11 +1068,15 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { this.hashArquivo, Number(simboloPara.linha), // Inicialização. - new Atribuir(this.hashArquivo, variavelIteracao, literalOuVariavelInicio), + new Atribuir( + this.hashArquivo, + new Variavel(this.hashArquivo, variavelIteracao, 'inteiro'), + literalOuVariavelInicio + ), // Condição. new Binario( this.hashArquivo, - new Variavel(this.hashArquivo, variavelIteracao), + new Variavel(this.hashArquivo, variavelIteracao, 'inteiro'), operadorCondicao, literalOuVariavelFim ), @@ -1076,18 +1086,18 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { Number(simboloPara.linha), new Binario( this.hashArquivo, - new Variavel(this.hashArquivo, variavelIteracao), + new Variavel(this.hashArquivo, variavelIteracao, 'inteiro'), operadorCondicaoIncremento, literalOuVariavelFim ), new Expressao( new Atribuir( this.hashArquivo, - variavelIteracao, + new Variavel(this.hashArquivo, variavelIteracao, 'inteiro'), new Binario( this.hashArquivo, - new Variavel(this.hashArquivo, variavelIteracao), - new Simbolo(tiposDeSimbolos.ADICAO, '', null, Number(simboloPara.linha), this.hashArquivo), + new Variavel(this.hashArquivo, variavelIteracao, 'inteiro'), + new Simbolo(tiposDeSimbolos.ADICAO, '+', null, Number(simboloPara.linha), this.hashArquivo), passo ) ) @@ -1105,21 +1115,13 @@ export class AvaliadorSintaticoVisuAlg extends AvaliadorSintaticoBase { if (this.verificarSeSimboloAtualEIgualA(tiposDeSimbolos.PARENTESE_ESQUERDO)) { while (!this.verificarTipoSimboloAtual(tiposDeSimbolos.PARENTESE_DIREITO)) { const dadosParametros = this.logicaComumParametroVisuAlg(); - const tipoDadoParametro = { - nome: dadosParametros.simbolo.lexema, - tipo: dadosParametros.tipo as TipoDadosElementar, - // TODO: Remover isso. O máximo que o avaliador sintático - // deveria olhar é o símbolo anterior, não dois - // símbolos para trás. - tipoInvalido: !dadosParametros.tipo ? this.simbolos[this.atual - 2].lexema : null, - }; for (let parametro of dadosParametros.identificadores) { parametros.push({ abrangencia: 'padrao', nome: parametro, referencia: dadosParametros.referencia, - tipoDado: tipoDadoParametro, + tipoDado: dadosParametros.tipo as TipoDadosElementar, }); } } diff --git a/fontes/formatador/formatador.ts b/fontes/formatador/formatador.ts index eee0c0f..2a34d5e 100644 --- a/fontes/formatador/formatador.ts +++ b/fontes/formatador/formatador.ts @@ -1,6 +1,7 @@ import { AcessoIndiceVariavel, AcessoMetodoOuPropriedade, + AcessoPropriedade, Agrupamento, AtribuicaoPorIndice, Atribuir, @@ -73,7 +74,7 @@ export class FormatadorVisuAlg implements VisitanteVisuAlgInterface { devePularLinha: boolean; deveIndentar: boolean; contadorDeclaracaoVar: number; - retornoFuncaoAtual: SimboloInterface; + retornoFuncaoAtual: string; constructor(quebraLinha: string, tamanhoIndentacao: number = 4) { this.quebraLinha = quebraLinha; @@ -88,6 +89,14 @@ export class FormatadorVisuAlg implements VisitanteVisuAlgInterface { this.retornoFuncaoAtual = undefined; } + visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): Promise | void { + throw new Error('Método não implementado.'); + } + + visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise | void { + throw new Error('Método não implementado.'); + } + visitarExpressaoLimpaTela(expressao: LimpaTela): void | Promise { this.codigoFormatado += ' '.repeat(this.indentacaoAtual); this.codigoFormatado += 'limpatela'; @@ -161,7 +170,7 @@ export class FormatadorVisuAlg implements VisitanteVisuAlgInterface { } visitarExpressaoDeAtribuicao(expressao: Atribuir) { - this.codigoFormatado += `${expressao.simbolo.lexema} <- `; + this.codigoFormatado += `${this.formatarDeclaracaoOuConstruto(expressao.alvo)} <- `; this.formatarDeclaracaoOuConstruto(expressao.valor); if (this.devePularLinha) { @@ -654,9 +663,7 @@ export class FormatadorVisuAlg implements VisitanteVisuAlgInterface { if (expressao.parametros.length > 0) { this.codigoFormatado += `(`; for (let argumento of expressao.parametros) { - this.codigoFormatado += `${argumento.nome.lexema}${ - argumento.tipoDado && argumento.tipoDado.tipo ? `: ${argumento.tipoDado.tipo}, ` : ', ' - }`; + this.codigoFormatado += `${argumento.nome.lexema}${argumento.tipoDado || ''}, `; } this.codigoFormatado = this.codigoFormatado.slice(0, -2); this.codigoFormatado += `) `; diff --git a/package.json b/package.json index 63d3d03..478ab3f 100644 --- a/package.json +++ b/package.json @@ -24,21 +24,21 @@ "deixar-codigo-bonito": "yarn prettier --config .prettierrc --write fontes/**/*.ts" }, "dependencies": { - "@designliquido/delegua": "^0.37.2", + "@designliquido/delegua": "^0.39.3", "lodash": "^4.17.21" }, "devDependencies": { "@types/estree": "^1.0.6", "@types/jest": "^29.5.14", - "@types/lodash": "^4.17.13", - "@types/node": "^22.10.1", + "@types/lodash": "^4.17.16", + "@types/node": "^22.13.10", "copyfiles": "^2.4.1", "jest": "^29.7.0", - "prettier": "^3.4.1", + "prettier": "^3.5.3", "rimraf": "^6.0.1", - "ts-jest": "^29.2.5", + "ts-jest": "^29.2.6", "ts-node": "^10.9.2", - "typedoc": "^0.27.1", - "typescript": "^5.7.2" + "typedoc": "^0.27.9", + "typescript": "^5.8.2" } } diff --git a/testes/avaliador-sintatico.test.ts b/testes/avaliador-sintatico.test.ts index 4b39b81..8c086cf 100644 --- a/testes/avaliador-sintatico.test.ts +++ b/testes/avaliador-sintatico.test.ts @@ -374,6 +374,7 @@ describe('Avaliador sintático', () => { expect(retornoAvaliadorSintatico).toBeTruthy(); expect(retornoAvaliadorSintatico.declaracoes).toHaveLength(32); + expect(retornoAvaliadorSintatico.erros).toHaveLength(0); }); it('Repita', () => { diff --git a/testes/interpretador.test.ts b/testes/interpretador.test.ts index 4411cd1..6fd22fe 100644 --- a/testes/interpretador.test.ts +++ b/testes/interpretador.test.ts @@ -8,10 +8,16 @@ describe('Interpretador', () => { let avaliadorSintatico: AvaliadorSintaticoVisuAlg; let interpretador: InterpretadorVisuAlg; + let _saidas: string[] = []; + const funcaoSaida = (texto: string) => { + _saidas.push(texto); + } + beforeEach(() => { + _saidas = []; lexador = new LexadorVisuAlg(); avaliadorSintatico = new AvaliadorSintaticoVisuAlg(); - interpretador = new InterpretadorVisuAlg(process.cwd(), false, console.log, console.log); + interpretador = new InterpretadorVisuAlg(process.cwd(), false, funcaoSaida, funcaoSaida); }); describe('Cenários de sucesso', () => { diff --git a/yarn.lock b/yarn.lock index 234cd97..c4377c9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -277,24 +277,24 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@designliquido/delegua@^0.37.2": - version "0.37.2" - resolved "https://registry.yarnpkg.com/@designliquido/delegua/-/delegua-0.37.2.tgz#9870c738a4b6654e24f12c6f83410a11b1136879" - integrity sha512-5DT3s2maJpbCrrPOezttev8vai83iz4M3o/u3RR8sarQ0rKCexUhpMrVEMzAfsASt7j02drW3u6JZHRzlwxhbQ== +"@designliquido/delegua@^0.39.3": + version "0.39.3" + resolved "https://registry.yarnpkg.com/@designliquido/delegua/-/delegua-0.39.3.tgz#1ef56e2ad441f3342a18745567cc17b972e7aa5b" + integrity sha512-J3WK/FLVzvhJJ3d73OW5EvrV5dK/F+URPTvoL/9OAN0L4P077hwdEqA6GR3cG1fFB+WcqEKR6CvQFGzd77FKlg== dependencies: antlr4ts "^0.5.0-alpha.4" browser-process-hrtime "^1.0.0" esprima "^4.0.1" lodash.clonedeep "^4.5.0" -"@gerrit0/mini-shiki@^1.23.2": - version "1.24.1" - resolved "https://registry.yarnpkg.com/@gerrit0/mini-shiki/-/mini-shiki-1.24.1.tgz#60ef10f4e2cfac7a9223e10b88c128438aa44fd8" - integrity sha512-PNP/Gjv3VqU7z7DjRgO3F9Ok5frTKqtpV+LJW1RzMcr2zpRk0ulhEWnbcNGXzPC7BZyWMIHrkfQX2GZRfxrn6Q== +"@gerrit0/mini-shiki@^1.24.0": + version "1.27.2" + resolved "https://registry.yarnpkg.com/@gerrit0/mini-shiki/-/mini-shiki-1.27.2.tgz#cf2a9fcb08a6581c78fc94821f0c854ec4b9f899" + integrity sha512-GeWyHz8ao2gBiUW4OJnQDxXQnFgZQwwQk05t/CVVgNBN7/rK8XZ7xY6YhLVv9tH3VppWWmr9DCl3MwemB/i+Og== dependencies: - "@shikijs/engine-oniguruma" "^1.24.0" - "@shikijs/types" "^1.24.0" - "@shikijs/vscode-textmate" "^9.3.0" + "@shikijs/engine-oniguruma" "^1.27.2" + "@shikijs/types" "^1.27.2" + "@shikijs/vscode-textmate" "^10.0.1" "@isaacs/cliui@^8.0.2": version "8.0.2" @@ -556,26 +556,26 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@shikijs/engine-oniguruma@^1.24.0": - version "1.24.0" - resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.0.tgz#4e6f49413fbc96dabfa30cb232ca1acf5ca1a446" - integrity sha512-Eua0qNOL73Y82lGA4GF5P+G2+VXX9XnuUxkiUuwcxQPH4wom+tE39kZpBFXfUuwNYxHSkrSxpB1p4kyRW0moSg== +"@shikijs/engine-oniguruma@^1.27.2": + version "1.29.2" + resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz#d879717ced61d44e78feab16f701f6edd75434f1" + integrity sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA== dependencies: - "@shikijs/types" "1.24.0" - "@shikijs/vscode-textmate" "^9.3.0" + "@shikijs/types" "1.29.2" + "@shikijs/vscode-textmate" "^10.0.1" -"@shikijs/types@1.24.0", "@shikijs/types@^1.24.0": - version "1.24.0" - resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-1.24.0.tgz#a1755b125cb8fb1780a876a0a57242939eafd79f" - integrity sha512-aptbEuq1Pk88DMlCe+FzXNnBZ17LCiLIGWAeCWhoFDzia5Q5Krx3DgnULLiouSdd6+LUM39XwXGppqYE0Ghtug== +"@shikijs/types@1.29.2", "@shikijs/types@^1.27.2": + version "1.29.2" + resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-1.29.2.tgz#a93fdb410d1af8360c67bf5fc1d1a68d58e21c4f" + integrity sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw== dependencies: - "@shikijs/vscode-textmate" "^9.3.0" + "@shikijs/vscode-textmate" "^10.0.1" "@types/hast" "^3.0.4" -"@shikijs/vscode-textmate@^9.3.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz#b2f1776e488c1d6c2b6cd129bab62f71bbc9c7ab" - integrity sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA== +"@shikijs/vscode-textmate@^10.0.1": + version "10.0.2" + resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz#a90ab31d0cc1dfb54c66a69e515bf624fa7b2224" + integrity sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg== "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -695,10 +695,10 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/lodash@^4.17.13": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.13.tgz#786e2d67cfd95e32862143abe7463a7f90c300eb" - integrity sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg== +"@types/lodash@^4.17.16": + version "4.17.16" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.16.tgz#94ae78fab4a38d73086e962d0b65c30d816bfb0a" + integrity sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g== "@types/node@*": version "22.1.0" @@ -707,10 +707,10 @@ dependencies: undici-types "~6.13.0" -"@types/node@^22.10.1": - version "22.10.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.1.tgz#41ffeee127b8975a05f8c4f83fb89bcb2987d766" - integrity sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ== +"@types/node@^22.13.10": + version "22.13.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.10.tgz#df9ea358c5ed991266becc3109dc2dc9125d77e4" + integrity sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw== dependencies: undici-types "~6.20.0" @@ -2196,10 +2196,10 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -prettier@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.1.tgz#e211d451d6452db0a291672ca9154bc8c2579f7b" - integrity sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg== +prettier@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" + integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" @@ -2310,11 +2310,16 @@ semver@^6.3.0, semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.3, semver@^7.5.4, semver@^7.6.3: +semver@^7.5.3, semver@^7.5.4: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== +semver@^7.7.1: + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -2515,10 +2520,10 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -ts-jest@^29.2.5: - version "29.2.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.5.tgz#591a3c108e1f5ebd013d3152142cb5472b399d63" - integrity sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA== +ts-jest@^29.2.6: + version "29.2.6" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.2.6.tgz#df53edf8b72fb89de032cfa310abf37582851d9a" + integrity sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg== dependencies: bs-logger "^0.2.6" ejs "^3.1.10" @@ -2527,7 +2532,7 @@ ts-jest@^29.2.5: json5 "^2.2.3" lodash.memoize "^4.1.2" make-error "^1.3.6" - semver "^7.6.3" + semver "^7.7.1" yargs-parser "^21.1.1" ts-node@^10.9.2: @@ -2559,21 +2564,21 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typedoc@^0.27.1: - version "0.27.1" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.27.1.tgz#fe7590c5682ca0f20c283850cf3e21a43b1d8e44" - integrity sha512-cbFtNFpkCtHAHRvMnCDdtM2+xhO2uiJAcw4ooLmVMuaY9yLJswKvi6wOwPZgTnKKnm/HKpO/Ub6DVk4KRf/vRg== +typedoc@^0.27.9: + version "0.27.9" + resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.27.9.tgz#5e0a7bc32bfc7bd0b70a353f4f1d5cba3d667c46" + integrity sha512-/z585740YHURLl9DN2jCWe6OW7zKYm6VoQ93H0sxZ1cwHQEQrUn5BJrEnkWhfzUdyO+BLGjnKUZ9iz9hKloFDw== dependencies: - "@gerrit0/mini-shiki" "^1.23.2" + "@gerrit0/mini-shiki" "^1.24.0" lunr "^2.3.9" markdown-it "^14.1.0" minimatch "^9.0.5" yaml "^2.6.1" -typescript@^5.7.2: - version "5.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" - integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== +typescript@^5.8.2: + version "5.8.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" + integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== uc.micro@^2.0.0, uc.micro@^2.1.0: version "2.1.0"