diff --git a/infraestrutura/preprocessadores/foles.ts b/infraestrutura/preprocessadores/foles.ts index c734f17..e6415e9 100644 --- a/infraestrutura/preprocessadores/foles.ts +++ b/infraestrutura/preprocessadores/foles.ts @@ -13,7 +13,7 @@ export class PreprocessadorFolEs { this.construtorLmht = new XMLBuilder({ ignoreAttributes : false }); - this.foles = new FolEs(); + this.foles = new FolEs(false); } processar(conteudoLmht: string): string { diff --git a/liquido.ts b/liquido.ts index b99cf40..18af921 100644 --- a/liquido.ts +++ b/liquido.ts @@ -69,14 +69,14 @@ export class Liquido implements LiquidoInterface { this.interpretador = new Interpretador(this.importador, process.cwd(), false, console.log); this.roteador = new Roteador(); this.provedorLincones = new ProvedorLincones(); - this.foles = new FolEs(); + this.foles = new FolEs(false); } async iniciar(): Promise { this.importarArquivoConfiguracao(); this.roteador.configurarArquivosEstaticos(this.diretorioEstatico); this.roteador.iniciarMiddlewares(); - this.importarArquivosRotas(); + await this.importarArquivosRotas(); this.roteador.iniciar(); if (this.provedorLincones.configurado) { @@ -233,7 +233,7 @@ export class Liquido implements LiquidoInterface { return rotaResolvida; } - importarArquivosRotas(): void { + async importarArquivosRotas(): Promise { this.descobrirRotas(caminho.join(this.diretorioBase, 'rotas')); try { @@ -250,40 +250,40 @@ export class Liquido implements LiquidoInterface { if (objeto.simbolo.lexema.toLowerCase() === 'liquido') { switch (metodo.lexema) { case 'rotaGet': - this.adicionarRotaGet(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaGet(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaPost': - this.adicionarRotaPost(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaPost(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaPut': - this.adicionarRotaPut(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaPut(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaDelete': - this.adicionarRotaDelete(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaDelete(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaPatch': - this.adicionarRotaPatch(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaPatch(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaOptions': - this.adicionarRotaOptions(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaOptions(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaCopy': - this.adicionarRotaCopy(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaCopy(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaHead': - this.adicionarRotaHead(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaHead(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaLock': - this.adicionarRotaLock(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaLock(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaUnlock': - this.adicionarRotaUnlock(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaUnlock(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaPurge': - this.adicionarRotaPurge(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaPurge(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; case 'rotaPropfind': - this.adicionarRotaPropfind(this.resolverCaminhoRota(arquivo), expressao.argumentos); + await this.adicionarRotaPropfind(this.resolverCaminhoRota(arquivo), expressao.argumentos); break; default: console.log(`Método ${metodo.lexema} não reconhecido.`); @@ -305,11 +305,12 @@ export class Liquido implements LiquidoInterface { * @param nomeFuncao O nome da função a ser chamada pelo Interpretador. * @param funcaoConstruto O conteúdo da função, declarada no arquivo `.delegua` correspondente. */ - prepararRequisicao(requisicao: any, nomeFuncao: string, funcaoConstruto: FuncaoConstruto): void { + async prepararRequisicao(requisicao: any, nomeFuncao: string, funcaoConstruto: FuncaoConstruto): Promise { this.interpretador.pilhaEscoposExecucao.definirVariavel('requisicao', requisicao); + const classeResposta = new Resposta(); this.interpretador.pilhaEscoposExecucao.definirVariavel( 'resposta', - new Resposta().chamar(this.interpretador as any, []) + await classeResposta.chamar(this.interpretador as any, []) ); const funcaoRetorno = new DeleguaFuncao(nomeFuncao, funcaoConstruto); @@ -383,11 +384,11 @@ export class Liquido implements LiquidoInterface { * para a resolução da rota. Por enquanto apenas a primeira * função é executada. */ - adicionarRotaGet(caminhoRota: string, argumentos: Construto[]) { + async adicionarRotaGet(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaGet(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaGet', funcao); + await this.prepararRequisicao(req, 'funcaoRotaGet', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaGet'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -395,11 +396,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaPost(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaPost(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaPost(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaPost', funcao); + await this.prepararRequisicao(req, 'funcaoRotaPost', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaPost'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -407,11 +408,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaPut(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaPut(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaPut(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaPut', funcao); + await this.prepararRequisicao(req, 'funcaoRotaPut', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaPut'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -419,11 +420,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaDelete(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaDelete(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaDelete(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaDelete', funcao); + await this.prepararRequisicao(req, 'funcaoRotaDelete', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaDelete'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -431,11 +432,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaPatch(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaPatch(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaPatch(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaPatch', funcao); + await this.prepararRequisicao(req, 'funcaoRotaPatch', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaPatch'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -443,11 +444,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaOptions(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaOptions(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaOptions(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaOptions', funcao); + await this.prepararRequisicao(req, 'funcaoRotaOptions', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaOptions'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -455,11 +456,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaCopy(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaCopy(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaCopy(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaCopy', funcao); + await this.prepararRequisicao(req, 'funcaoRotaCopy', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaCopy'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -467,11 +468,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaHead(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaHead(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaHead(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaHead', funcao); + await this.prepararRequisicao(req, 'funcaoRotaHead', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaHead'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -479,11 +480,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaLock(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaLock(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaLock(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaLock', funcao); + await this.prepararRequisicao(req, 'funcaoRotaLock', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaLock'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -491,11 +492,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaUnlock(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaUnlock(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaUnlock(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaUnlock', funcao); + await this.prepararRequisicao(req, 'funcaoRotaUnlock', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaUnlock'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -503,11 +504,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaPurge(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaPurge(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaPurge(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaPurge', funcao); + await this.prepararRequisicao(req, 'funcaoRotaPurge', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaPurge'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); @@ -515,11 +516,11 @@ export class Liquido implements LiquidoInterface { }); } - adicionarRotaPropfind(caminhoRota: string, argumentos: Construto[]): void { + async adicionarRotaPropfind(caminhoRota: string, argumentos: Construto[]): Promise { const funcao = argumentos[0] as FuncaoConstruto; this.roteador.rotaPropfind(caminhoRota, async (req, res) => { - this.prepararRequisicao(req, 'funcaoRotaPropfind', funcao); + await this.prepararRequisicao(req, 'funcaoRotaPropfind', funcao); const retornoInterpretador = await this.chamarInterpretador('funcaoRotaPropfind'); const corpoEStatus = await this.logicaComumResultadoInterpretador(caminhoRota, retornoInterpretador); diff --git a/package.json b/package.json index 7bdfd31..fad9d2e 100644 --- a/package.json +++ b/package.json @@ -32,8 +32,8 @@ "swagger": "tsoa spec" }, "dependencies": { - "@designliquido/delegua-node": "^0.20.1", - "@designliquido/foles": "^0.4.1", + "@designliquido/delegua-node": "^0.26.2", + "@designliquido/foles": "^0.5.1", "@designliquido/lincones-sqlite": "^0.0.2", "@designliquido/lmht-js": "^0.3.1", "body-parser": "^1.20.1", diff --git a/yarn.lock b/yarn.lock index 6281478..34697d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -304,30 +304,31 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@designliquido/delegua-node@^0.20.1": - version "0.20.16" - resolved "https://registry.yarnpkg.com/@designliquido/delegua-node/-/delegua-node-0.20.16.tgz#1610dcd1c2c926696cc12317920d889e7104e659" - integrity sha512-YOGMd+XRA8RRDp3BYya3DKThVad1HuWnIt6TGmBJLZhM7Z7m2743t74szNcTxyr9fvdm1wI7me2EkXEUF2iqUQ== +"@designliquido/delegua-node@^0.26.2": + version "0.26.2" + resolved "https://registry.yarnpkg.com/@designliquido/delegua-node/-/delegua-node-0.26.2.tgz#53041caa02d6c2f6e4c338b5fab44341c569ec9d" + integrity sha512-p0o7F/rwkU2/NCpfrlvy/YjH+OwuvDmbchMgKqYG4+vbNqygN2MQOO0G8y9hdfBmzS7bgghlHcDpqowZ9FqJhQ== dependencies: - "@designliquido/delegua" "0.20.16" + "@designliquido/delegua" "0.26.2" chalk "4.1.2" commander "^9.4.1" + json-colorizer "^2.2.2" lodash.clonedeep "^4.5.0" -"@designliquido/delegua@0.20.16": - version "0.20.16" - resolved "https://registry.yarnpkg.com/@designliquido/delegua/-/delegua-0.20.16.tgz#85bd2db63d64dcbb947aa716f95ad2c565f25b51" - integrity sha512-hUuAt5M56KNIkqQCvREzo5DpDZMxWTx+mjnJ6aSXIXjYQEh1MqbdImRP41e9Ys48DI/9Nry8AfM3BEoFyXXqZw== +"@designliquido/delegua@0.26.2": + version "0.26.2" + resolved "https://registry.yarnpkg.com/@designliquido/delegua/-/delegua-0.26.2.tgz#bdf30f23cf8bac9788d9eac8a64365ec18e0db44" + integrity sha512-TwRu8UOd1UaBEb3J0j64uPEDNGDAKV/OsrQXN42g32y9Mv2Sv8CiOgD5LABYhjPCKbOhPp9p2du3IMmogkZvYQ== dependencies: antlr4ts "^0.5.0-alpha.4" browser-process-hrtime "^1.0.0" esprima "^4.0.1" lodash.clonedeep "^4.5.0" -"@designliquido/foles@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@designliquido/foles/-/foles-0.4.1.tgz#6220bfad6ade8fafc7e94704a70a8c6dea04e48d" - integrity sha512-H+bqcFCAO2orxb213faorVeZMvqY1jEDw8wWw8eq6pBK09jyNtSZoP6WmmEW2aULRkCjaRNmAtGVfmdVhZr1FA== +"@designliquido/foles@^0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@designliquido/foles/-/foles-0.5.1.tgz#3c92a80c17051b76b1e1be5ceb181d2dd2be23cf" + integrity sha512-G0i92CoTn6ijDtTuLZNd+O01HX/3NzmWEEJl/IBU2Abu7bWAxjnipXe9AVJwYmSu9hqzgjCPNkjTpvFJSCyXgQ== dependencies: commander "^9.4.1" vlq "^2.0.4" @@ -1728,7 +1729,7 @@ chalk@5.0.1: resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6" integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w== -chalk@^2.0.0: +chalk@^2.0.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4067,6 +4068,14 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +json-colorizer@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/json-colorizer/-/json-colorizer-2.2.2.tgz#07c2ac8cef36558075948e1566c6cfb4ac1668e6" + integrity sha512-56oZtwV1piXrQnRNTtJeqRv+B9Y/dXAYLqBBaYl/COcUdoZxgLBLAO88+CnkbT6MxNs0c5E9mPBIb2sFcNz3vw== + dependencies: + chalk "^2.4.1" + lodash.get "^4.4.2" + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -4190,6 +4199,11 @@ lodash.clonedeep@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + lodash.memoize@4.x: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"