@semacode/cli 1.5.36 → 1.5.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/AGENT_CONTEXT_PACK.json +76 -8
  2. package/LICENSE +1 -2
  3. package/SEMA_BRIEF.curto.txt +8 -6
  4. package/SEMA_BRIEF.md +240 -204
  5. package/SEMA_BRIEF.micro.txt +9 -6
  6. package/SEMA_INDEX.json +2079 -1907
  7. package/dist/agentContext.d.ts +19 -0
  8. package/dist/agentContext.js +26 -0
  9. package/dist/agentContext.js.map +1 -0
  10. package/dist/agentContextPack.d.ts +3 -0
  11. package/dist/agentContextPack.js +403 -0
  12. package/dist/agentContextPack.js.map +1 -0
  13. package/dist/agentContextTipos.d.ts +96 -0
  14. package/dist/agentContextTipos.js +55 -0
  15. package/dist/agentContextTipos.js.map +1 -0
  16. package/dist/agentEntryPoints.d.ts +13 -0
  17. package/dist/agentEntryPoints.js +422 -0
  18. package/dist/agentEntryPoints.js.map +1 -0
  19. package/dist/authorAnalise.d.ts +15 -0
  20. package/dist/authorAnalise.js +210 -0
  21. package/dist/authorAnalise.js.map +1 -0
  22. package/dist/authorPoliticas.d.ts +37 -0
  23. package/dist/authorPoliticas.js +340 -0
  24. package/dist/authorPoliticas.js.map +1 -0
  25. package/dist/billing/index.d.ts +1 -1
  26. package/dist/billing/index.js +6 -2
  27. package/dist/billing/index.js.map +1 -1
  28. package/dist/bridge.js +2 -0
  29. package/dist/bridge.js.map +1 -1
  30. package/dist/carregarModulos.d.ts +2 -0
  31. package/dist/carregarModulos.js +9 -0
  32. package/dist/carregarModulos.js.map +1 -0
  33. package/dist/cliArgs.d.ts +6 -0
  34. package/dist/cliArgs.js +70 -0
  35. package/dist/cliArgs.js.map +1 -0
  36. package/dist/contexto.js +2 -0
  37. package/dist/contexto.js.map +1 -1
  38. package/dist/controleComercialSupabase.js.map +1 -1
  39. package/dist/controleComercialSupabaseAdmin.js.map +1 -1
  40. package/dist/controleComercialSupabaseCadastro.js.map +1 -1
  41. package/dist/controleComercialSupabaseConsumo.js.map +1 -1
  42. package/dist/controleComercialSupabaseConta.js.map +1 -1
  43. package/dist/controleComercialSupabaseProfiles.js.map +1 -1
  44. package/dist/dev/index.js +2 -0
  45. package/dist/dev/index.js.map +1 -1
  46. package/dist/dev/watcher.d.ts +1 -0
  47. package/dist/dev/watcher.js +4 -0
  48. package/dist/dev/watcher.js.map +1 -0
  49. package/dist/docs/resolver.d.ts +1 -0
  50. package/dist/docs/resolver.js +4 -0
  51. package/dist/docs/resolver.js.map +1 -0
  52. package/dist/docs.d.ts +2 -56
  53. package/dist/docs.js +5 -502
  54. package/dist/docs.js.map +1 -1
  55. package/dist/docs.part01.d.ts +78 -0
  56. package/dist/docs.part01.js +347 -0
  57. package/dist/docs.part01.js.map +1 -0
  58. package/dist/docs.part02.d.ts +20 -0
  59. package/dist/docs.part02.js +181 -0
  60. package/dist/docs.part02.js.map +1 -0
  61. package/dist/doctorCommand.d.ts +27 -0
  62. package/dist/doctorCommand.js +160 -0
  63. package/dist/doctorCommand.js.map +1 -0
  64. package/dist/drift.contrato.d.ts +23 -0
  65. package/dist/drift.contrato.js +33 -0
  66. package/dist/drift.contrato.js.map +1 -0
  67. package/dist/drift.d.ts +13 -227
  68. package/dist/drift.js +16 -3924
  69. package/dist/drift.js.map +1 -1
  70. package/dist/drift.part01.d.ts +252 -0
  71. package/dist/drift.part01.js +183 -0
  72. package/dist/drift.part01.js.map +1 -0
  73. package/dist/drift.part02.d.ts +30 -0
  74. package/dist/drift.part02.js +342 -0
  75. package/dist/drift.part02.js.map +1 -0
  76. package/dist/drift.part03.d.ts +26 -0
  77. package/dist/drift.part03.js +343 -0
  78. package/dist/drift.part03.js.map +1 -0
  79. package/dist/drift.part04.d.ts +46 -0
  80. package/dist/drift.part04.js +354 -0
  81. package/dist/drift.part04.js.map +1 -0
  82. package/dist/drift.part05.d.ts +47 -0
  83. package/dist/drift.part05.js +353 -0
  84. package/dist/drift.part05.js.map +1 -0
  85. package/dist/drift.part06.d.ts +17 -0
  86. package/dist/drift.part06.js +381 -0
  87. package/dist/drift.part06.js.map +1 -0
  88. package/dist/drift.part07.d.ts +48 -0
  89. package/dist/drift.part07.js +377 -0
  90. package/dist/drift.part07.js.map +1 -0
  91. package/dist/drift.part08.d.ts +26 -0
  92. package/dist/drift.part08.js +333 -0
  93. package/dist/drift.part08.js.map +1 -0
  94. package/dist/drift.part09.d.ts +22 -0
  95. package/dist/drift.part09.js +322 -0
  96. package/dist/drift.part09.js.map +1 -0
  97. package/dist/drift.part10.d.ts +11 -0
  98. package/dist/drift.part10.js +116 -0
  99. package/dist/drift.part10.js.map +1 -0
  100. package/dist/drift.part11.d.ts +3 -0
  101. package/dist/drift.part11.js +320 -0
  102. package/dist/drift.part11.js.map +1 -0
  103. package/dist/drift.part12.d.ts +17 -0
  104. package/dist/drift.part12.js +289 -0
  105. package/dist/drift.part12.js.map +1 -0
  106. package/dist/drift.part13.d.ts +17 -0
  107. package/dist/drift.part13.js +86 -0
  108. package/dist/drift.part13.js.map +1 -0
  109. package/dist/drift.part14.d.ts +44 -0
  110. package/dist/drift.part14.js +402 -0
  111. package/dist/drift.part14.js.map +1 -0
  112. package/dist/driftOrcamento.d.ts +69 -0
  113. package/dist/driftOrcamento.js +280 -0
  114. package/dist/driftOrcamento.js.map +1 -0
  115. package/dist/execucoesExternas.d.ts +10 -0
  116. package/dist/execucoesExternas.js +51 -0
  117. package/dist/execucoesExternas.js.map +1 -0
  118. package/dist/exemplosOficiais.d.ts +10 -0
  119. package/dist/exemplosOficiais.js +63 -0
  120. package/dist/exemplosOficiais.js.map +1 -0
  121. package/dist/fsGovernado.d.ts +10 -0
  122. package/dist/fsGovernado.js +50 -0
  123. package/dist/fsGovernado.js.map +1 -0
  124. package/dist/geracaoCore.d.ts +64 -0
  125. package/dist/geracaoCore.js +381 -0
  126. package/dist/geracaoCore.js.map +1 -0
  127. package/dist/iaPrompts.d.ts +6 -0
  128. package/dist/iaPrompts.js +318 -0
  129. package/dist/iaPrompts.js.map +1 -0
  130. package/dist/importador.d.ts +9 -31
  131. package/dist/importador.js +11 -2938
  132. package/dist/importador.js.map +1 -1
  133. package/dist/importador.part01.d.ts +150 -0
  134. package/dist/importador.part01.js +256 -0
  135. package/dist/importador.part01.js.map +1 -0
  136. package/dist/importador.part02.d.ts +25 -0
  137. package/dist/importador.part02.js +359 -0
  138. package/dist/importador.part02.js.map +1 -0
  139. package/dist/importador.part03.d.ts +53 -0
  140. package/dist/importador.part03.js +366 -0
  141. package/dist/importador.part03.js.map +1 -0
  142. package/dist/importador.part04.d.ts +26 -0
  143. package/dist/importador.part04.js +374 -0
  144. package/dist/importador.part04.js.map +1 -0
  145. package/dist/importador.part05.d.ts +28 -0
  146. package/dist/importador.part05.js +340 -0
  147. package/dist/importador.part05.js.map +1 -0
  148. package/dist/importador.part06.d.ts +8 -0
  149. package/dist/importador.part06.js +327 -0
  150. package/dist/importador.part06.js.map +1 -0
  151. package/dist/importador.part07.d.ts +23 -0
  152. package/dist/importador.part07.js +300 -0
  153. package/dist/importador.part07.js.map +1 -0
  154. package/dist/importador.part08.d.ts +12 -0
  155. package/dist/importador.part08.js +378 -0
  156. package/dist/importador.part08.js.map +1 -0
  157. package/dist/importador.part09.d.ts +16 -0
  158. package/dist/importador.part09.js +319 -0
  159. package/dist/importador.part09.js.map +1 -0
  160. package/dist/index.d.ts +12 -1
  161. package/dist/index.js +16 -7945
  162. package/dist/index.js.map +1 -1
  163. package/dist/index.part01.d.ts +148 -0
  164. package/dist/index.part01.js +252 -0
  165. package/dist/index.part01.js.map +1 -0
  166. package/dist/index.part02.d.ts +17 -0
  167. package/dist/index.part02.js +344 -0
  168. package/dist/index.part02.js.map +1 -0
  169. package/dist/index.part03.d.ts +59 -0
  170. package/dist/index.part03.js +352 -0
  171. package/dist/index.part03.js.map +1 -0
  172. package/dist/index.part04.d.ts +20 -0
  173. package/dist/index.part04.js +358 -0
  174. package/dist/index.part04.js.map +1 -0
  175. package/dist/index.part05.d.ts +10 -0
  176. package/dist/index.part05.js +370 -0
  177. package/dist/index.part05.js.map +1 -0
  178. package/dist/index.part06.d.ts +14 -0
  179. package/dist/index.part06.js +336 -0
  180. package/dist/index.part06.js.map +1 -0
  181. package/dist/index.part07.d.ts +9 -0
  182. package/dist/index.part07.js +287 -0
  183. package/dist/index.part07.js.map +1 -0
  184. package/dist/index.part08.d.ts +1 -0
  185. package/dist/index.part08.js +206 -0
  186. package/dist/index.part08.js.map +1 -0
  187. package/dist/init/index.js +2 -0
  188. package/dist/init/index.js.map +1 -1
  189. package/dist/init/templates.d.ts +2 -11
  190. package/dist/init/templates.js +4 -659
  191. package/dist/init/templates.js.map +1 -1
  192. package/dist/init/templates.part01.d.ts +11 -0
  193. package/dist/init/templates.part01.js +399 -0
  194. package/dist/init/templates.part01.js.map +1 -0
  195. package/dist/init/templates.part02.d.ts +8 -0
  196. package/dist/init/templates.part02.js +265 -0
  197. package/dist/init/templates.part02.js.map +1 -0
  198. package/dist/initCommand.d.ts +3 -0
  199. package/dist/initCommand.js +41 -0
  200. package/dist/initCommand.js.map +1 -0
  201. package/dist/initTemplatesBackend.d.ts +2 -0
  202. package/dist/initTemplatesBackend.js +127 -0
  203. package/dist/initTemplatesBackend.js.map +1 -0
  204. package/dist/initTemplatesBase.d.ts +9 -0
  205. package/dist/initTemplatesBase.js +79 -0
  206. package/dist/initTemplatesBase.js.map +1 -0
  207. package/dist/initTemplatesFlutter.d.ts +2 -0
  208. package/dist/initTemplatesFlutter.js +185 -0
  209. package/dist/initTemplatesFlutter.js.map +1 -0
  210. package/dist/initTemplatesRuntime.d.ts +2 -0
  211. package/dist/initTemplatesRuntime.js +494 -0
  212. package/dist/initTemplatesRuntime.js.map +1 -0
  213. package/dist/initTemplatesWeb.d.ts +2 -0
  214. package/dist/initTemplatesWeb.js +429 -0
  215. package/dist/initTemplatesWeb.js.map +1 -0
  216. package/dist/mcpInstalarChaveCommand.d.ts +1 -0
  217. package/dist/mcpInstalarChaveCommand.js +141 -0
  218. package/dist/mcpInstalarChaveCommand.js.map +1 -0
  219. package/dist/mcpRemoto.js.map +1 -1
  220. package/dist/mcp_chave.d.ts +1 -0
  221. package/dist/mcp_chave.js +4 -0
  222. package/dist/mcp_chave.js.map +1 -0
  223. package/dist/profileArtefatoBase.d.ts +30 -0
  224. package/dist/profileArtefatoBase.js +129 -0
  225. package/dist/profileArtefatoBase.js.map +1 -0
  226. package/dist/profileArtefatoValidadores.d.ts +9 -0
  227. package/dist/profileArtefatoValidadores.js +287 -0
  228. package/dist/profileArtefatoValidadores.js.map +1 -0
  229. package/dist/profileAuthorCommand.d.ts +6 -0
  230. package/dist/profileAuthorCommand.js +442 -0
  231. package/dist/profileAuthorCommand.js.map +1 -0
  232. package/dist/profileAuthorTipos.d.ts +225 -0
  233. package/dist/profileAuthorTipos.js +6 -0
  234. package/dist/profileAuthorTipos.js.map +1 -0
  235. package/dist/profileCatalogo.d.ts +8 -0
  236. package/dist/profileCatalogo.js +235 -0
  237. package/dist/profileCatalogo.js.map +1 -0
  238. package/dist/profileCommand.d.ts +33 -0
  239. package/dist/profileCommand.js +256 -0
  240. package/dist/profileCommand.js.map +1 -0
  241. package/dist/profileOrquestracao.d.ts +33 -0
  242. package/dist/profileOrquestracao.js +53 -0
  243. package/dist/profileOrquestracao.js.map +1 -0
  244. package/dist/profileRegras.d.ts +19 -0
  245. package/dist/profileRegras.js +219 -0
  246. package/dist/profileRegras.js.map +1 -0
  247. package/dist/profileRulePacks.d.ts +3 -0
  248. package/dist/profileRulePacks.js +334 -0
  249. package/dist/profileRulePacks.js.map +1 -0
  250. package/dist/profiles/validate.d.ts +1 -0
  251. package/dist/profiles/validate.js +4 -0
  252. package/dist/profiles/validate.js.map +1 -0
  253. package/dist/projeto.d.ts +4 -53
  254. package/dist/projeto.js +5 -649
  255. package/dist/projeto.js.map +1 -1
  256. package/dist/projetoBusca.d.ts +7 -0
  257. package/dist/projetoBusca.js +142 -0
  258. package/dist/projetoBusca.js.map +1 -0
  259. package/dist/projetoCarregar.d.ts +2 -0
  260. package/dist/projetoCarregar.js +50 -0
  261. package/dist/projetoCarregar.js.map +1 -0
  262. package/dist/projetoConfig.d.ts +10 -0
  263. package/dist/projetoConfig.js +89 -0
  264. package/dist/projetoConfig.js.map +1 -0
  265. package/dist/projetoLegado.d.ts +3 -0
  266. package/dist/projetoLegado.js +175 -0
  267. package/dist/projetoLegado.js.map +1 -0
  268. package/dist/projetoOrigens.d.ts +6 -0
  269. package/dist/projetoOrigens.js +185 -0
  270. package/dist/projetoOrigens.js.map +1 -0
  271. package/dist/projetoResolucao.d.ts +8 -0
  272. package/dist/projetoResolucao.js +43 -0
  273. package/dist/projetoResolucao.js.map +1 -0
  274. package/dist/projetoTipos.d.ts +43 -0
  275. package/dist/projetoTipos.js +4 -0
  276. package/dist/projetoTipos.js.map +1 -0
  277. package/dist/runnerValidacaoRemota.js.map +1 -1
  278. package/dist/runnerValidacaoRemotaBateria.js +2 -0
  279. package/dist/runnerValidacaoRemotaBateria.js.map +1 -1
  280. package/dist/runnerValidacaoRemotaExecucao.js +2 -0
  281. package/dist/runnerValidacaoRemotaExecucao.js.map +1 -1
  282. package/dist/runnerValidacaoRemotaRelatorio.js +2 -0
  283. package/dist/runnerValidacaoRemotaRelatorio.js.map +1 -1
  284. package/dist/runnerValidacaoRemotaSnapshot.js +2 -0
  285. package/dist/runnerValidacaoRemotaSnapshot.js.map +1 -1
  286. package/dist/runnerValidacaoRemotaWorkspace.js +2 -0
  287. package/dist/runnerValidacaoRemotaWorkspace.js.map +1 -1
  288. package/dist/sync/index.js +2 -0
  289. package/dist/sync/index.js.map +1 -1
  290. package/dist/textoListas.d.ts +4 -0
  291. package/dist/textoListas.js +22 -0
  292. package/dist/textoListas.js.map +1 -0
  293. package/dist/typescript-http-body.d.ts +12 -0
  294. package/dist/typescript-http-body.js +145 -0
  295. package/dist/typescript-http-body.js.map +1 -0
  296. package/dist/typescript-http-expressoes.d.ts +17 -0
  297. package/dist/typescript-http-expressoes.js +194 -0
  298. package/dist/typescript-http-expressoes.js.map +1 -0
  299. package/dist/typescript-http-modelos.d.ts +45 -0
  300. package/dist/typescript-http-modelos.js +82 -0
  301. package/dist/typescript-http-modelos.js.map +1 -0
  302. package/dist/typescript-http-rotas.d.ts +9 -0
  303. package/dist/typescript-http-rotas.js +129 -0
  304. package/dist/typescript-http-rotas.js.map +1 -0
  305. package/dist/typescript-http-semantica.d.ts +11 -0
  306. package/dist/typescript-http-semantica.js +329 -0
  307. package/dist/typescript-http-semantica.js.map +1 -0
  308. package/dist/typescript-http.d.ts +3 -35
  309. package/dist/typescript-http.js +4 -853
  310. package/dist/typescript-http.js.map +1 -1
  311. package/docs/AGENT_STARTER.md +1 -1
  312. package/docs/agentes-por-capacidade.md +46 -3
  313. package/docs/documentacao.md +1 -1
  314. package/docs/fluxo-pratico-ia-sema.md +1 -1
  315. package/docs/mcp.md +12 -0
  316. package/docs/pagamento-ponta-a-ponta.md +1 -1
  317. package/docs/persistencia-vendor-first.md +1 -1
  318. package/docs/prompt-base-ia-sema.md +1 -1
  319. package/docs/repositories.md +2 -2
  320. package/docs/seguranca.md +1 -1
  321. package/docs/sintaxe.md +1 -1
  322. package/exemplos/agendamento.sema +1 -1
  323. package/exemplos/assinatura.sema +1 -1
  324. package/exemplos/auditoria.sema +1 -1
  325. package/exemplos/autenticacao.sema +1 -1
  326. package/exemplos/author_obra_comum.sema +1 -1
  327. package/exemplos/author_tema_sensivel.sema +1 -1
  328. package/exemplos/automacao.sema +1 -1
  329. package/exemplos/cadastro_usuario.sema +1 -1
  330. package/exemplos/calculadora.sema +1 -1
  331. package/exemplos/crud_simples.sema +1 -1
  332. package/exemplos/estoque.sema +1 -1
  333. package/exemplos/exportacao.sema +1 -1
  334. package/exemplos/fila.sema +1 -1
  335. package/exemplos/integracao_externa.sema +1 -1
  336. package/exemplos/multi_tenant.sema +1 -1
  337. package/exemplos/notificacao.sema +1 -1
  338. package/exemplos/operacao_estrategia.sema +132 -633
  339. package/exemplos/operacao_estrategia_discovery.sema +220 -0
  340. package/exemplos/operacao_estrategia_fluxo.sema +114 -0
  341. package/exemplos/operacao_estrategia_gates.sema +106 -0
  342. package/exemplos/operacao_estrategia_quarentena.sema +133 -0
  343. package/exemplos/operacao_estrategia_rollout.sema +124 -0
  344. package/exemplos/pagamento.sema +1 -1
  345. package/exemplos/pagamento_dominio.sema +1 -1
  346. package/exemplos/pedido.sema +1 -1
  347. package/exemplos/permissao.sema +1 -1
  348. package/exemplos/persistencia_vendor_first.sema +1 -1
  349. package/exemplos/profile_game.sema +1 -1
  350. package/exemplos/profile_legal.sema +1 -1
  351. package/exemplos/profile_ops.sema +1 -1
  352. package/exemplos/profile_research.sema +1 -1
  353. package/exemplos/profile_software.sema +1 -1
  354. package/exemplos/profile_workflow_n8n.sema +1 -1
  355. package/exemplos/relatorio.sema +1 -1
  356. package/exemplos/replica_analitica_erp.sema +1 -1
  357. package/exemplos/testes_embutidos.sema +1 -1
  358. package/exemplos/tratamento_erro.sema +1 -1
  359. package/exemplos/upload_arquivo.sema +1 -1
  360. package/exemplos/webhook.sema +1 -1
  361. package/llms-full.txt +13 -8
  362. package/llms.txt +12 -7
  363. package/node_modules/@sema/gerador-css/dist/index.d.ts +2 -3
  364. package/node_modules/@sema/gerador-css/dist/index.js +4 -599
  365. package/node_modules/@sema/gerador-css/dist/index.js.map +1 -1
  366. package/node_modules/@sema/gerador-css/dist/index.part01.d.ts +6 -0
  367. package/node_modules/@sema/gerador-css/dist/index.part01.js +49 -0
  368. package/node_modules/@sema/gerador-css/dist/index.part01.js.map +1 -0
  369. package/node_modules/@sema/gerador-css/dist/index.part02.d.ts +3 -0
  370. package/node_modules/@sema/gerador-css/dist/index.part02.js +471 -0
  371. package/node_modules/@sema/gerador-css/dist/index.part02.js.map +1 -0
  372. package/node_modules/@sema/gerador-python/dist/index.d.ts +2 -6
  373. package/node_modules/@sema/gerador-python/dist/index.js +4 -771
  374. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
  375. package/node_modules/@sema/gerador-python/dist/index.part01.d.ts +28 -0
  376. package/node_modules/@sema/gerador-python/dist/index.part01.js +383 -0
  377. package/node_modules/@sema/gerador-python/dist/index.part01.js.map +1 -0
  378. package/node_modules/@sema/gerador-python/dist/index.part02.d.ts +20 -0
  379. package/node_modules/@sema/gerador-python/dist/index.part02.js +396 -0
  380. package/node_modules/@sema/gerador-python/dist/index.part02.js.map +1 -0
  381. package/node_modules/@sema/gerador-typescript/dist/index.d.ts +3 -6
  382. package/node_modules/@sema/gerador-typescript/dist/index.js +5 -810
  383. package/node_modules/@sema/gerador-typescript/dist/index.js.map +1 -1
  384. package/node_modules/@sema/gerador-typescript/dist/index.part01.d.ts +25 -0
  385. package/node_modules/@sema/gerador-typescript/dist/index.part01.js +358 -0
  386. package/node_modules/@sema/gerador-typescript/dist/index.part01.js.map +1 -0
  387. package/node_modules/@sema/gerador-typescript/dist/index.part02.d.ts +14 -0
  388. package/node_modules/@sema/gerador-typescript/dist/index.part02.js +405 -0
  389. package/node_modules/@sema/gerador-typescript/dist/index.part02.js.map +1 -0
  390. package/node_modules/@sema/gerador-typescript/dist/index.part03.d.ts +5 -0
  391. package/node_modules/@sema/gerador-typescript/dist/index.part03.js +60 -0
  392. package/node_modules/@sema/gerador-typescript/dist/index.part03.js.map +1 -0
  393. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js +2 -0
  394. package/node_modules/@sema/nucleo/dist/diagnosticos/melhorador.js.map +1 -1
  395. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.d.ts +6 -0
  396. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js +40 -0
  397. package/node_modules/@sema/nucleo/dist/diagnosticos/snippets.js.map +1 -0
  398. package/node_modules/@sema/nucleo/dist/formatador/index.d.ts +2 -9
  399. package/node_modules/@sema/nucleo/dist/formatador/index.js +4 -467
  400. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
  401. package/node_modules/@sema/nucleo/dist/formatador/index.part01.d.ts +38 -0
  402. package/node_modules/@sema/nucleo/dist/formatador/index.part01.js +382 -0
  403. package/node_modules/@sema/nucleo/dist/formatador/index.part01.js.map +1 -0
  404. package/node_modules/@sema/nucleo/dist/formatador/index.part02.d.ts +4 -0
  405. package/node_modules/@sema/nucleo/dist/formatador/index.part02.js +92 -0
  406. package/node_modules/@sema/nucleo/dist/formatador/index.part02.js.map +1 -0
  407. package/node_modules/@sema/nucleo/dist/index.d.ts +2 -0
  408. package/node_modules/@sema/nucleo/dist/index.js +6 -0
  409. package/node_modules/@sema/nucleo/dist/index.js.map +1 -1
  410. package/node_modules/@sema/nucleo/dist/ir/conversor.d.ts +3 -5
  411. package/node_modules/@sema/nucleo/dist/ir/conversor.js +5 -880
  412. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  413. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.d.ts +30 -0
  414. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js +398 -0
  415. package/node_modules/@sema/nucleo/dist/ir/conversor.part01.js.map +1 -0
  416. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.d.ts +41 -0
  417. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js +184 -0
  418. package/node_modules/@sema/nucleo/dist/ir/conversor.part02.js.map +1 -0
  419. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.d.ts +5 -0
  420. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js +310 -0
  421. package/node_modules/@sema/nucleo/dist/ir/conversor.part03.js.map +1 -0
  422. package/node_modules/@sema/nucleo/dist/parser/parser.d.ts +3 -9
  423. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.d.ts +11 -0
  424. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js +150 -0
  425. package/node_modules/@sema/nucleo/dist/parser/parser.declaracoes.js.map +1 -0
  426. package/node_modules/@sema/nucleo/dist/parser/parser.js +5 -768
  427. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  428. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.d.ts +3 -0
  429. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js +222 -0
  430. package/node_modules/@sema/nucleo/dist/parser/parser.modulo.js.map +1 -0
  431. package/node_modules/@sema/nucleo/dist/parser/parser.part01.d.ts +9 -0
  432. package/node_modules/@sema/nucleo/dist/parser/parser.part01.js +61 -0
  433. package/node_modules/@sema/nucleo/dist/parser/parser.part01.js.map +1 -0
  434. package/node_modules/@sema/nucleo/dist/parser/parser.part02.d.ts +40 -0
  435. package/node_modules/@sema/nucleo/dist/parser/parser.part02.js +373 -0
  436. package/node_modules/@sema/nucleo/dist/parser/parser.part02.js.map +1 -0
  437. package/node_modules/@sema/nucleo/dist/parser/parser.part03.d.ts +4 -0
  438. package/node_modules/@sema/nucleo/dist/parser/parser.part03.js +9 -0
  439. package/node_modules/@sema/nucleo/dist/parser/parser.part03.js.map +1 -0
  440. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js +2 -0
  441. package/node_modules/@sema/nucleo/dist/persistencia/contratos.js.map +1 -1
  442. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +3 -59
  443. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +2 -1682
  444. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  445. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.d.ts +89 -0
  446. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js +292 -0
  447. package/node_modules/@sema/nucleo/dist/semantico/analisador.part01.js.map +1 -0
  448. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.d.ts +29 -0
  449. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js +168 -0
  450. package/node_modules/@sema/nucleo/dist/semantico/analisador.part02.js.map +1 -0
  451. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.d.ts +11 -0
  452. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js +185 -0
  453. package/node_modules/@sema/nucleo/dist/semantico/analisador.part03.js.map +1 -0
  454. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.d.ts +30 -0
  455. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js +200 -0
  456. package/node_modules/@sema/nucleo/dist/semantico/analisador.part04.js.map +1 -0
  457. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.d.ts +6 -0
  458. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js +193 -0
  459. package/node_modules/@sema/nucleo/dist/semantico/analisador.part05.js.map +1 -0
  460. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.d.ts +11 -0
  461. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js +208 -0
  462. package/node_modules/@sema/nucleo/dist/semantico/analisador.part06.js.map +1 -0
  463. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.d.ts +11 -0
  464. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js +247 -0
  465. package/node_modules/@sema/nucleo/dist/semantico/analisador.part07.js.map +1 -0
  466. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.d.ts +3 -0
  467. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js +249 -0
  468. package/node_modules/@sema/nucleo/dist/semantico/analisador.part08.js.map +1 -0
  469. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +2 -106
  470. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +4 -474
  471. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -1
  472. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.d.ts +109 -0
  473. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js +259 -0
  474. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part01.js.map +1 -0
  475. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.d.ts +9 -0
  476. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js +223 -0
  477. package/node_modules/@sema/nucleo/dist/semantico/estruturas.part02.js.map +1 -0
  478. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.d.ts +21 -0
  479. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js +40 -0
  480. package/node_modules/@sema/nucleo/dist/semantico/orcamentoSemantico.js.map +1 -0
  481. package/package.json +10 -10
@@ -1,769 +1,6 @@
1
- import { criarDiagnostico, } from "../diagnosticos/index.js";
2
- const PALAVRAS_BLOCO_NOMEADO_LIVRE = new Set([
3
- "table",
4
- "view",
5
- "query",
6
- "transaction",
7
- "index",
8
- "constraint",
9
- "relationship",
10
- "collection",
11
- "document",
12
- "keyspace",
13
- "stream",
14
- "lock",
15
- "retention",
16
- "replication",
17
- ]);
18
- function decodificarTextoLiteral(valor) {
19
- let resultado = "";
20
- for (let indice = 0; indice < valor.length; indice += 1) {
21
- const atual = valor[indice];
22
- if (atual !== "\\") {
23
- resultado += atual;
24
- continue;
25
- }
26
- const proximo = valor[indice + 1];
27
- if (!proximo) {
28
- resultado += atual;
29
- continue;
30
- }
31
- switch (proximo) {
32
- case "\"":
33
- resultado += "\"";
34
- indice += 1;
35
- break;
36
- case "\\":
37
- resultado += "\\";
38
- indice += 1;
39
- break;
40
- case "n":
41
- resultado += "\n";
42
- indice += 1;
43
- break;
44
- case "r":
45
- resultado += "\r";
46
- indice += 1;
47
- break;
48
- case "t":
49
- resultado += "\t";
50
- indice += 1;
51
- break;
52
- default:
53
- resultado += `${atual}${proximo}`;
54
- indice += 1;
55
- break;
56
- }
57
- }
58
- return resultado;
59
- }
60
- class Parser {
61
- tokens;
62
- indice = 0;
63
- diagnosticos = [];
64
- constructor(tokens) {
65
- this.tokens = tokens;
66
- }
67
- analisar() {
68
- this.ignorarRuido();
69
- const modulo = this.parseModulo();
70
- return { modulo, diagnosticos: this.diagnosticos };
71
- }
72
- atual() {
73
- return this.tokens[this.indice];
74
- }
75
- anterior() {
76
- return this.tokens[Math.max(0, this.indice - 1)];
77
- }
78
- avancar() {
79
- const token = this.atual();
80
- if (this.indice < this.tokens.length - 1) {
81
- this.indice += 1;
82
- }
83
- return token;
84
- }
85
- ignorarRuido() {
86
- while (["nova_linha", "comentario"].includes(this.atual().tipo)) {
87
- this.avancar();
88
- }
89
- }
90
- tokenNaFrente(distancia = 1) {
91
- return this.tokens[this.indice + distancia];
92
- }
93
- iniciaBlocoSimples(keyword) {
94
- if (this.atual().valor !== keyword) {
95
- return false;
96
- }
97
- return this.tokenNaFrente()?.valor === "{";
98
- }
99
- iniciaBlocoComNomeObrigatorio(keyword) {
100
- if (this.atual().valor !== keyword) {
101
- return false;
102
- }
103
- return this.tokenNaFrente()?.tipo === "identificador" && this.tokenNaFrente(2)?.valor === "{";
104
- }
105
- iniciaBlocoState() {
106
- if (this.atual().valor !== "state") {
107
- return false;
108
- }
109
- return this.tokenNaFrente()?.valor === "{"
110
- || (this.tokenNaFrente()?.tipo === "identificador" && this.tokenNaFrente(2)?.valor === "{");
111
- }
112
- iniciaSubblocoConhecido() {
113
- if (this.atual().tipo !== "palavra_chave") {
114
- return false;
115
- }
116
- if (["state"].includes(this.atual().valor)) {
117
- return this.iniciaBlocoState();
118
- }
119
- return [
120
- "docs",
121
- "comments",
122
- "fields",
123
- "invariants",
124
- "transitions",
125
- "input",
126
- "output",
127
- "rules",
128
- "effects",
129
- "impl",
130
- "vinculos",
131
- "execucao",
132
- "auth",
133
- "authz",
134
- "dados",
135
- "audit",
136
- "segredos",
137
- "forbidden",
138
- "guarantees",
139
- "tests",
140
- "error",
141
- "given",
142
- "when",
143
- "expect",
144
- ].includes(this.atual().valor) && this.iniciaBlocoSimples(this.atual().valor);
145
- }
146
- consumirValor(valor, mensagem) {
147
- const token = this.atual();
148
- if (token.valor === valor) {
149
- this.avancar();
150
- return token;
151
- }
152
- this.registrarErro("PAR001", mensagem, token.intervalo, `Esperado "${valor}", recebido "${token.valor}".`);
153
- return token;
154
- }
155
- consumirTipo(tipo, mensagem) {
156
- const token = this.atual();
157
- if (token.tipo === tipo) {
158
- this.avancar();
159
- return token;
160
- }
161
- this.registrarErro("PAR002", mensagem, token.intervalo, `Esperado token do tipo "${tipo}".`);
162
- return token;
163
- }
164
- registrarErro(codigo, mensagem, intervalo, contexto) {
165
- this.diagnosticos.push(criarDiagnostico(codigo, mensagem, "erro", intervalo, "Revise a sintaxe do bloco e a ordem das declaracoes.", contexto));
166
- }
167
- parseModulo() {
168
- if (this.atual().valor !== "module") {
169
- this.registrarErro("PAR003", "Arquivo .sema deve iniciar com um bloco module.", this.atual().intervalo);
170
- return undefined;
171
- }
172
- const inicio = this.avancar().intervalo.inicio;
173
- const nome = this.consumirTipo("identificador", "Era esperado o nome do modulo.").valor;
174
- this.consumirValor("{", "Era esperado abrir o corpo do modulo com {.");
175
- const uses = [];
176
- let vinculos;
177
- const databases = [];
178
- const types = [];
179
- const entities = [];
180
- const enums = [];
181
- const tasks = [];
182
- const flows = [];
183
- const routes = [];
184
- const workers = [];
185
- const eventos = [];
186
- const filas = [];
187
- const crons = [];
188
- const webhooks = [];
189
- const caches = [];
190
- const storages = [];
191
- const policies = [];
192
- const states = [];
193
- const extras = [];
194
- let docs;
195
- let comments;
196
- let tests;
197
- while (this.atual().tipo !== "fim_arquivo" && this.atual().valor !== "}") {
198
- this.ignorarRuido();
199
- const token = this.atual();
200
- if (token.valor === "}") {
201
- break;
202
- }
203
- switch (token.valor) {
204
- case "use":
205
- if (this.tokenNaFrente()?.tipo === "identificador") {
206
- uses.push(this.parseUse());
207
- break;
208
- }
209
- extras.push(this.parseBlocoGenerico("desconhecido"));
210
- break;
211
- case "docs":
212
- if (this.iniciaBlocoSimples("docs")) {
213
- docs = this.parseBlocoGenerico("docs");
214
- break;
215
- }
216
- extras.push(this.parseBlocoGenerico("desconhecido"));
217
- break;
218
- case "comments":
219
- if (this.iniciaBlocoSimples("comments")) {
220
- comments = this.parseBlocoGenerico("comments");
221
- break;
222
- }
223
- extras.push(this.parseBlocoGenerico("desconhecido"));
224
- break;
225
- case "vinculos":
226
- if (this.iniciaBlocoSimples("vinculos")) {
227
- vinculos = this.parseBlocoGenerico("vinculos");
228
- break;
229
- }
230
- extras.push(this.parseBlocoGenerico("desconhecido"));
231
- break;
232
- case "database":
233
- if (this.iniciaBlocoComNomeObrigatorio("database")) {
234
- databases.push(this.parseBlocoGenerico("database"));
235
- break;
236
- }
237
- extras.push(this.parseBlocoGenerico("desconhecido"));
238
- break;
239
- case "type":
240
- if (this.iniciaBlocoComNomeObrigatorio("type")) {
241
- types.push(this.parseType());
242
- break;
243
- }
244
- extras.push(this.parseBlocoGenerico("desconhecido"));
245
- break;
246
- case "entity":
247
- if (this.iniciaBlocoComNomeObrigatorio("entity")) {
248
- entities.push(this.parseEntity());
249
- break;
250
- }
251
- extras.push(this.parseBlocoGenerico("desconhecido"));
252
- break;
253
- case "enum":
254
- if (this.iniciaBlocoComNomeObrigatorio("enum")) {
255
- enums.push(this.parseEnum());
256
- break;
257
- }
258
- extras.push(this.parseBlocoGenerico("desconhecido"));
259
- break;
260
- case "task":
261
- if (this.iniciaBlocoComNomeObrigatorio("task")) {
262
- tasks.push(this.parseTask());
263
- break;
264
- }
265
- extras.push(this.parseBlocoGenerico("desconhecido"));
266
- break;
267
- case "flow":
268
- if (this.iniciaBlocoComNomeObrigatorio("flow")) {
269
- flows.push(this.parseFlow());
270
- break;
271
- }
272
- extras.push(this.parseBlocoGenerico("desconhecido"));
273
- break;
274
- case "route":
275
- if (this.iniciaBlocoComNomeObrigatorio("route")) {
276
- routes.push(this.parseRoute());
277
- break;
278
- }
279
- extras.push(this.parseBlocoGenerico("desconhecido"));
280
- break;
281
- case "worker":
282
- if (this.iniciaBlocoComNomeObrigatorio("worker")) {
283
- workers.push(this.parseBlocoGenerico("worker"));
284
- break;
285
- }
286
- extras.push(this.parseBlocoGenerico("desconhecido"));
287
- break;
288
- case "evento":
289
- if (this.iniciaBlocoComNomeObrigatorio("evento")) {
290
- eventos.push(this.parseBlocoGenerico("evento"));
291
- break;
292
- }
293
- extras.push(this.parseBlocoGenerico("desconhecido"));
294
- break;
295
- case "fila":
296
- if (this.iniciaBlocoComNomeObrigatorio("fila")) {
297
- filas.push(this.parseBlocoGenerico("fila"));
298
- break;
299
- }
300
- extras.push(this.parseBlocoGenerico("desconhecido"));
301
- break;
302
- case "cron":
303
- if (this.iniciaBlocoComNomeObrigatorio("cron")) {
304
- crons.push(this.parseBlocoGenerico("cron"));
305
- break;
306
- }
307
- extras.push(this.parseBlocoGenerico("desconhecido"));
308
- break;
309
- case "webhook":
310
- if (this.iniciaBlocoComNomeObrigatorio("webhook")) {
311
- webhooks.push(this.parseBlocoGenerico("webhook"));
312
- break;
313
- }
314
- extras.push(this.parseBlocoGenerico("desconhecido"));
315
- break;
316
- case "cache":
317
- if (this.iniciaBlocoComNomeObrigatorio("cache")) {
318
- caches.push(this.parseBlocoGenerico("cache"));
319
- break;
320
- }
321
- extras.push(this.parseBlocoGenerico("desconhecido"));
322
- break;
323
- case "storage":
324
- if (this.iniciaBlocoComNomeObrigatorio("storage")) {
325
- storages.push(this.parseBlocoGenerico("storage"));
326
- break;
327
- }
328
- extras.push(this.parseBlocoGenerico("desconhecido"));
329
- break;
330
- case "policy":
331
- if (this.iniciaBlocoComNomeObrigatorio("policy")) {
332
- policies.push(this.parseBlocoGenerico("policy"));
333
- break;
334
- }
335
- extras.push(this.parseBlocoGenerico("desconhecido"));
336
- break;
337
- case "state":
338
- if (this.iniciaBlocoState()) {
339
- states.push(this.parseState());
340
- break;
341
- }
342
- extras.push(this.parseBlocoGenerico("desconhecido"));
343
- break;
344
- case "tests":
345
- if (this.iniciaBlocoSimples("tests")) {
346
- tests = this.parseBlocoGenerico("tests");
347
- break;
348
- }
349
- extras.push(this.parseBlocoGenerico("desconhecido"));
350
- break;
351
- default:
352
- extras.push(this.parseBlocoGenerico("desconhecido"));
353
- break;
354
- }
355
- this.ignorarRuido();
356
- }
357
- const fim = this.consumirValor("}", "Era esperado fechar o bloco module com }.").intervalo.fim;
358
- return {
359
- tipo: "module",
360
- nome,
361
- uses,
362
- vinculos,
363
- docs,
364
- comments,
365
- databases,
366
- types,
367
- entities,
368
- enums,
369
- tasks,
370
- flows,
371
- routes,
372
- workers,
373
- eventos,
374
- filas,
375
- crons,
376
- webhooks,
377
- caches,
378
- storages,
379
- policies,
380
- states,
381
- tests,
382
- extras,
383
- intervalo: { inicio, fim },
384
- };
385
- }
386
- parseUse() {
387
- const inicio = this.avancar().intervalo.inicio;
388
- const primeiro = this.consumirTipo("identificador", "Era esperado o caminho do use.");
389
- let origem = "sema";
390
- let caminho = primeiro.valor;
391
- const origemNormalizada = normalizarOrigemUse(primeiro.valor);
392
- if (origemNormalizada && this.atual().tipo === "identificador") {
393
- origem = origemNormalizada;
394
- caminho = this.avancar().valor;
395
- }
396
- const fim = this.anterior().intervalo.fim;
397
- return { tipo: "use", origem, caminho, intervalo: { inicio, fim } };
398
- }
399
- parseType() {
400
- const inicio = this.avancar().intervalo.inicio;
401
- const nome = this.consumirTipo("identificador", "Era esperado o nome do type.").valor;
402
- const corpo = this.parseBlocoComNomeOpcional("type");
403
- return { tipo: "type", nome, corpo, intervalo: { inicio, fim: corpo.intervalo?.fim ?? this.anterior().intervalo.fim } };
404
- }
405
- parseEntity() {
406
- const inicio = this.avancar().intervalo.inicio;
407
- const nome = this.consumirTipo("identificador", "Era esperado o nome da entity.").valor;
408
- const corpo = this.parseBlocoComNomeOpcional("entity");
409
- return { tipo: "entity", nome, corpo, intervalo: { inicio, fim: corpo.intervalo?.fim ?? this.anterior().intervalo.fim } };
410
- }
411
- parseEnum() {
412
- const inicio = this.avancar().intervalo.inicio;
413
- const nome = this.consumirTipo("identificador", "Era esperado o nome do enum.").valor;
414
- this.consumirValor("{", "Era esperado abrir o corpo do enum.");
415
- const valores = [];
416
- let docs;
417
- while (this.atual().tipo !== "fim_arquivo" && this.atual().valor !== "}") {
418
- this.ignorarRuido();
419
- if (this.atual().valor === "}") {
420
- break;
421
- }
422
- if (this.atual().valor === "docs") {
423
- docs = this.parseBlocoGenerico("docs");
424
- continue;
425
- }
426
- if (["identificador", "palavra_chave"].includes(this.atual().tipo)) {
427
- valores.push(this.avancar().valor);
428
- if (this.atual().valor === ",") {
429
- this.avancar();
430
- }
431
- continue;
432
- }
433
- this.avancar();
434
- }
435
- const fim = this.consumirValor("}", "Era esperado fechar o enum.").intervalo.fim;
436
- return { tipo: "enum", nome, valores, docs, intervalo: { inicio, fim } };
437
- }
438
- parseTask() {
439
- const inicio = this.avancar().intervalo.inicio;
440
- const nome = this.consumirTipo("identificador", "Era esperado o nome da task.").valor;
441
- const corpo = this.parseBlocoComNomeOpcional("task");
442
- const localizar = (palavraChave) => corpo.blocos.find((bloco) => bloco.tipo === "bloco_generico" && bloco.palavraChave === palavraChave);
443
- return {
444
- tipo: "task",
445
- nome,
446
- corpo,
447
- input: localizar("input"),
448
- output: localizar("output"),
449
- rules: localizar("rules"),
450
- effects: localizar("effects"),
451
- impl: localizar("impl"),
452
- vinculos: localizar("vinculos"),
453
- execucao: localizar("execucao"),
454
- auth: localizar("auth"),
455
- authz: localizar("authz"),
456
- dados: localizar("dados"),
457
- audit: localizar("audit"),
458
- segredos: localizar("segredos"),
459
- forbidden: localizar("forbidden"),
460
- guarantees: localizar("guarantees"),
461
- state: localizar("state"),
462
- tests: localizar("tests"),
463
- error: localizar("error"),
464
- docs: localizar("docs"),
465
- comments: localizar("comments"),
466
- intervalo: { inicio, fim: corpo.intervalo?.fim ?? this.anterior().intervalo.fim },
467
- };
468
- }
469
- parseFlow() {
470
- const inicio = this.avancar().intervalo.inicio;
471
- const nome = this.consumirTipo("identificador", "Era esperado o nome do flow.").valor;
472
- const corpo = this.parseBlocoComNomeOpcional("flow");
473
- const vinculos = corpo.blocos.find((bloco) => bloco.tipo === "bloco_generico" && bloco.palavraChave === "vinculos");
474
- return { tipo: "flow", nome, corpo, vinculos, intervalo: { inicio, fim: corpo.intervalo?.fim ?? this.anterior().intervalo.fim } };
475
- }
476
- parseRoute() {
477
- const inicio = this.avancar().intervalo.inicio;
478
- const nome = this.consumirTipo("identificador", "Era esperado o nome da route.").valor;
479
- const corpo = this.parseBlocoComNomeOpcional("route");
480
- const vinculos = corpo.blocos.find((bloco) => bloco.tipo === "bloco_generico" && bloco.palavraChave === "vinculos");
481
- return { tipo: "route", nome, corpo, vinculos, intervalo: { inicio, fim: corpo.intervalo?.fim ?? this.anterior().intervalo.fim } };
482
- }
483
- parseState() {
484
- const inicioToken = this.avancar();
485
- let nome;
486
- if (this.atual().tipo === "identificador") {
487
- nome = this.avancar().valor;
488
- }
489
- this.consumirValor("{", "Era esperado abrir o bloco state.");
490
- const corpo = this.parseCorpoBloco("state", nome, inicioToken.intervalo.inicio);
491
- return {
492
- tipo: "state",
493
- nome,
494
- corpo,
495
- intervalo: { inicio: inicioToken.intervalo.inicio, fim: corpo.intervalo?.fim ?? this.anterior().intervalo.fim },
496
- };
497
- }
498
- parseBlocoComNomeOpcional(nomeBloco) {
499
- this.consumirValor("{", `Era esperado abrir o bloco ${nomeBloco}.`);
500
- return this.parseCorpoBloco(nomeBloco);
501
- }
502
- parseBlocoGenerico(palavraChave) {
503
- const inicioToken = this.avancar();
504
- let nome;
505
- if (this.atual().tipo === "identificador") {
506
- nome = this.avancar().valor;
507
- }
508
- this.consumirValor("{", `Era esperado abrir o bloco ${inicioToken.valor}.`);
509
- return this.parseCorpoBloco((palavraChave === "desconhecido" ? "desconhecido" : inicioToken.valor), nome, inicioToken.intervalo.inicio);
510
- }
511
- parseBlocoNomeadoLivre() {
512
- const inicioToken = this.avancar();
513
- const nome = inicioToken.valor;
514
- this.consumirValor("{", `Era esperado abrir o bloco ${nome}.`);
515
- return this.parseCorpoBloco("desconhecido", nome, inicioToken.intervalo.inicio);
516
- }
517
- parseBlocoNomeadoComPalavraChaveLivre() {
518
- const palavraChaveToken = this.avancar();
519
- const nomeToken = this.avancar();
520
- this.consumirValor("{", `Era esperado abrir o bloco ${palavraChaveToken.valor} ${nomeToken.valor}.`);
521
- return this.parseCorpoBloco(palavraChaveToken.valor, nomeToken.valor, palavraChaveToken.intervalo.inicio);
522
- }
523
- parseCorpoBloco(palavraChave, nome, inicioManual) {
524
- const inicio = inicioManual ?? this.anterior().intervalo.inicio;
525
- const campos = [];
526
- const linhas = [];
527
- const blocos = [];
528
- while (this.atual().tipo !== "fim_arquivo" && this.atual().valor !== "}") {
529
- this.ignorarRuido();
530
- if (this.atual().valor === "}") {
531
- break;
532
- }
533
- if (palavraChave === "tests" && this.atual().valor === "caso") {
534
- blocos.push(this.parseCasoTeste());
535
- continue;
536
- }
537
- if (this.iniciaSubblocoConhecido()) {
538
- blocos.push(this.parseBlocoGenerico(this.atual().valor));
539
- continue;
540
- }
541
- if (["identificador", "palavra_chave"].includes(this.atual().tipo)
542
- && PALAVRAS_BLOCO_NOMEADO_LIVRE.has(this.atual().valor)
543
- && ["identificador", "palavra_chave"].includes(this.tokens[this.indice + 1]?.tipo ?? "")
544
- && this.tokens[this.indice + 2]?.valor === "{") {
545
- blocos.push(this.parseBlocoNomeadoComPalavraChaveLivre());
546
- continue;
547
- }
548
- if (["identificador", "palavra_chave"].includes(this.atual().tipo) && this.tokens[this.indice + 1]?.valor === "{") {
549
- blocos.push(this.parseBlocoNomeadoLivre());
550
- continue;
551
- }
552
- if (["identificador", "palavra_chave"].includes(this.atual().tipo) && this.tokens[this.indice + 1]?.valor === ":") {
553
- campos.push(this.parseCampo());
554
- continue;
555
- }
556
- const linha = this.parseLinhaDeclarativa();
557
- if (linha.conteudo.trim().length > 0) {
558
- linhas.push(linha);
559
- }
560
- }
561
- const fim = this.consumirValor("}", "Era esperado fechar o bloco com }.").intervalo.fim;
562
- return {
563
- tipo: "bloco_generico",
564
- palavraChave,
565
- nome,
566
- campos,
567
- linhas,
568
- blocos,
569
- intervalo: { inicio, fim },
570
- };
571
- }
572
- parseCampo() {
573
- const inicio = this.atual().intervalo.inicio;
574
- const nome = this.avancar().valor;
575
- this.consumirValor(":", "Era esperado ':' depois do nome do campo.");
576
- const partes = [];
577
- let profundidade = 0;
578
- while (this.atual().tipo !== "fim_arquivo" && this.atual().tipo !== "nova_linha" && this.atual().valor !== "}") {
579
- const proximoToken = this.tokens[this.indice + 1];
580
- const iniciaNovoCampo = profundidade === 0
581
- && partes.length > 0
582
- && ["identificador", "palavra_chave"].includes(this.atual().tipo)
583
- && proximoToken?.valor === ":";
584
- if (iniciaNovoCampo) {
585
- break;
586
- }
587
- const token = this.avancar();
588
- partes.push(token);
589
- if (["<", "[", "("].includes(token.valor)) {
590
- profundidade += 1;
591
- }
592
- else if ([">", "]", ")"].includes(token.valor)) {
593
- profundidade = Math.max(0, profundidade - 1);
594
- }
595
- }
596
- const segmentos = partes.filter((token) => token.valor.length > 0);
597
- const possuiTextoLiteral = segmentos.some((token) => token.tipo === "texto");
598
- if (possuiTextoLiteral) {
599
- const valorLiteral = segmentos.map((token) => token.tipo === "texto" ? decodificarTextoLiteral(token.valor) : token.valor).join(" ");
600
- if (this.atual().tipo === "nova_linha") {
601
- this.avancar();
602
- }
603
- return {
604
- tipo: "campo",
605
- nome,
606
- valor: valorLiteral,
607
- modificadores: [],
608
- intervalo: { inicio, fim: this.anterior().intervalo.fim },
609
- };
610
- }
611
- const tipoTokens = [];
612
- const modificadores = [];
613
- let profundidadeTipo = 0;
614
- let iniciouModificadores = false;
615
- for (const token of segmentos) {
616
- const segmento = token.valor;
617
- if (!iniciouModificadores) {
618
- if (["<", "[", "("].includes(segmento)) {
619
- profundidadeTipo += 1;
620
- tipoTokens.push(segmento);
621
- continue;
622
- }
623
- if ([">", "]", ")"].includes(segmento)) {
624
- profundidadeTipo = Math.max(0, profundidadeTipo - 1);
625
- tipoTokens.push(segmento);
626
- continue;
627
- }
628
- const pareceModificador = profundidadeTipo === 0
629
- && tipoTokens.length > 0
630
- && /^[a-z_][a-z0-9_]*$/u.test(segmento);
631
- if (pareceModificador) {
632
- iniciouModificadores = true;
633
- modificadores.push(segmento);
634
- continue;
635
- }
636
- tipoTokens.push(segmento);
637
- continue;
638
- }
639
- modificadores.push(segmento);
640
- }
641
- let valor = tipoTokens
642
- .join(" ")
643
- .replace(/\s*([<>\[\](),|?])\s*/g, "$1")
644
- .trim();
645
- if (valor.includes("/")) {
646
- valor = valor.replace(/\s*\/\s*/g, "/");
647
- }
648
- if (this.atual().tipo === "nova_linha") {
649
- this.avancar();
650
- }
651
- return {
652
- tipo: "campo",
653
- nome,
654
- valor,
655
- modificadores,
656
- intervalo: { inicio, fim: this.anterior().intervalo.fim },
657
- };
658
- }
659
- parseLinhaDeclarativa() {
660
- const inicio = this.atual().intervalo.inicio;
661
- const partes = [];
662
- while (this.atual().tipo !== "fim_arquivo" && this.atual().tipo !== "nova_linha" && this.atual().valor !== "}") {
663
- partes.push(this.avancar().valor);
664
- }
665
- if (this.atual().tipo === "nova_linha") {
666
- this.avancar();
667
- }
668
- return {
669
- tipo: "linha_declarativa",
670
- conteudo: partes.join(" ").trim(),
671
- intervalo: { inicio, fim: this.anterior().intervalo.fim },
672
- };
673
- }
674
- parseCasoTeste() {
675
- const inicio = this.avancar().intervalo.inicio;
676
- const nomeToken = this.atual();
677
- const nome = nomeToken.tipo === "texto"
678
- ? this.avancar().valor
679
- : this.consumirTipo("identificador", "Era esperado o nome textual do caso de teste.").valor;
680
- this.consumirValor("{", "Era esperado abrir o bloco do caso de teste.");
681
- let given;
682
- let when;
683
- let expect;
684
- let error;
685
- let docs;
686
- let comments;
687
- while (this.atual().tipo !== "fim_arquivo" && this.atual().valor !== "}") {
688
- this.ignorarRuido();
689
- if (this.atual().valor === "}") {
690
- break;
691
- }
692
- switch (this.atual().valor) {
693
- case "given":
694
- given = this.parseBlocoGenerico("given");
695
- break;
696
- case "when":
697
- when = this.parseBlocoGenerico("when");
698
- break;
699
- case "expect":
700
- expect = this.parseBlocoGenerico("expect");
701
- break;
702
- case "error":
703
- error = this.parseBlocoGenerico("error");
704
- break;
705
- case "docs":
706
- docs = this.parseBlocoGenerico("docs");
707
- break;
708
- case "comments":
709
- comments = this.parseBlocoGenerico("comments");
710
- break;
711
- default:
712
- this.avancar();
713
- break;
714
- }
715
- }
716
- const fim = this.consumirValor("}", "Era esperado fechar o caso de teste.").intervalo.fim;
717
- return {
718
- tipo: "caso_teste",
719
- nome,
720
- given,
721
- when,
722
- expect,
723
- error,
724
- docs,
725
- comments,
726
- intervalo: { inicio, fim },
727
- };
728
- }
729
- }
730
- function normalizarOrigemUse(valor) {
731
- switch (valor.toLowerCase()) {
732
- case "sema":
733
- return "sema";
734
- case "ts":
735
- case "typescript":
736
- return "ts";
737
- case "py":
738
- case "python":
739
- return "py";
740
- case "dart":
741
- return "dart";
742
- case "lua":
743
- return "lua";
744
- case "cs":
745
- case "csharp":
746
- case "dotnet":
747
- return "cs";
748
- case "java":
749
- return "java";
750
- case "go":
751
- case "golang":
752
- return "go";
753
- case "rust":
754
- case "rs":
755
- return "rust";
756
- case "cpp":
757
- case "cxx":
758
- case "cc":
759
- case "c++":
760
- return "cpp";
761
- default:
762
- return undefined;
763
- }
764
- }
765
- export function parsear(tokens) {
766
- const parser = new Parser(tokens);
767
- return parser.analisar();
768
- }
1
+ // SEMA-GOVERNED: sema.software
2
+ // Descricao: parser particionado; consulte contratos/sema/software.sema antes de editar.
3
+ export * from "./parser.part01.js";
4
+ export * from "./parser.part02.js";
5
+ export * from "./parser.part03.js";
769
6
  //# sourceMappingURL=parser.js.map