@semacode/cli 1.2.0 → 1.2.11
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.
- package/README.md +2 -2
- package/SEMA_BRIEF.curto.txt +9 -9
- package/SEMA_BRIEF.md +49 -49
- package/SEMA_BRIEF.micro.txt +7 -7
- package/SEMA_INDEX.json +501 -546
- package/dist/drift.d.ts +3 -3
- package/dist/drift.js +213 -22
- package/dist/drift.js.map +1 -1
- package/dist/importador.d.ts +1 -1
- package/dist/importador.js +0 -60
- package/dist/importador.js.map +1 -1
- package/dist/index.js +1334 -1360
- package/dist/index.js.map +1 -1
- package/dist/projeto.js +0 -6
- package/dist/projeto.js.map +1 -1
- package/dist/tipos.d.ts +1 -1
- package/docs/AGENT_STARTER.md +102 -102
- package/docs/instalacao-e-primeiro-uso.md +196 -198
- package/docs/sintaxe.md +95 -1
- package/node_modules/@sema/gerador-dart/package.json +1 -1
- package/node_modules/@sema/gerador-lua/dist/index.js +49 -81
- package/node_modules/@sema/gerador-lua/dist/index.js.map +1 -1
- package/node_modules/@sema/gerador-lua/package.json +1 -1
- package/node_modules/@sema/gerador-python/package.json +1 -1
- package/node_modules/@sema/gerador-typescript/package.json +1 -1
- package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +8 -2
- package/node_modules/@sema/nucleo/dist/formatador/index.js +65 -21
- package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/conversor.js +91 -5
- package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +74 -3
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js +6 -0
- package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/parser/parser.js +12 -2
- package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +2 -2
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js +410 -11
- package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +6 -1
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +63 -13
- package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -1
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.d.ts +91 -0
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.js +258 -0
- package/node_modules/@sema/nucleo/dist/semantico/seguranca.js.map +1 -0
- package/node_modules/@sema/nucleo/package.json +1 -1
- package/node_modules/@sema/padroes/dist/index.js +18 -1
- package/node_modules/@sema/padroes/dist/index.js.map +1 -1
- package/node_modules/@sema/padroes/package.json +1 -1
- package/package.json +7 -7
package/docs/sintaxe.md
CHANGED
|
@@ -40,6 +40,12 @@ A Sema usa blocos declarativos com chaves e forma previsivel. A regra aqui nao e
|
|
|
40
40
|
- `output`
|
|
41
41
|
- `rules`
|
|
42
42
|
- `effects`
|
|
43
|
+
- `auth`
|
|
44
|
+
- `authz`
|
|
45
|
+
- `dados`
|
|
46
|
+
- `audit`
|
|
47
|
+
- `segredos`
|
|
48
|
+
- `forbidden`
|
|
43
49
|
- `impl`
|
|
44
50
|
- `vinculos`
|
|
45
51
|
- `execucao`
|
|
@@ -202,6 +208,89 @@ Campos canonicos:
|
|
|
202
208
|
- `compensacao`
|
|
203
209
|
- `criticidade_operacional`
|
|
204
210
|
|
|
211
|
+
## Seguranca semantica
|
|
212
|
+
|
|
213
|
+
Em `task`, `route` e superficies modernas, a Sema agora aceita contratos de seguranca explicitos para reduzir adivinhacao em producao.
|
|
214
|
+
|
|
215
|
+
- `auth`: como a chamada autentica, com `modo`, `estrategia`, `principal` e `origem`
|
|
216
|
+
- `authz`: quem pode executar, com `papel`, `escopo`, `politica` e `tenant`
|
|
217
|
+
- `dados`: classificacao de input/output, `redacao_log` e `retencao`
|
|
218
|
+
- `audit`: trilha obrigatoria com `evento`, `ator`, `correlacao`, `retencao` e `motivo`
|
|
219
|
+
- `segredos`: origem, escopo, rotacao e protecoes de segredo
|
|
220
|
+
- `forbidden`: proibicoes explicitas como `shell.exec`, `network.egress`, `log.segredo` e `retorno.credencial`
|
|
221
|
+
|
|
222
|
+
Exemplo:
|
|
223
|
+
|
|
224
|
+
```sema
|
|
225
|
+
task processar_pagamento {
|
|
226
|
+
input {
|
|
227
|
+
cliente_id: Id required
|
|
228
|
+
token_gateway: Texto required
|
|
229
|
+
}
|
|
230
|
+
output {
|
|
231
|
+
protocolo: Id
|
|
232
|
+
status: Texto
|
|
233
|
+
}
|
|
234
|
+
effects {
|
|
235
|
+
db.write Pagamento criticidade=alta privilegio=escrita isolamento=tenant
|
|
236
|
+
secret.read gateway_api_key criticidade=media privilegio=leitura isolamento=processo
|
|
237
|
+
}
|
|
238
|
+
auth {
|
|
239
|
+
modo: interno
|
|
240
|
+
estrategia: jwt
|
|
241
|
+
principal: servico
|
|
242
|
+
origem: worker
|
|
243
|
+
}
|
|
244
|
+
authz {
|
|
245
|
+
papel: pagamentos_admin
|
|
246
|
+
escopo: pagamentos.processar
|
|
247
|
+
tenant: isolado
|
|
248
|
+
}
|
|
249
|
+
dados {
|
|
250
|
+
classificacao_padrao: interno
|
|
251
|
+
redacao_log: obrigatoria
|
|
252
|
+
retencao: "90d"
|
|
253
|
+
input {
|
|
254
|
+
cliente_id: pii
|
|
255
|
+
token_gateway: credencial
|
|
256
|
+
}
|
|
257
|
+
output {
|
|
258
|
+
protocolo: interno
|
|
259
|
+
status: interno
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
audit {
|
|
263
|
+
evento: pagamentos.processado
|
|
264
|
+
ator: auth.servico
|
|
265
|
+
correlacao: request_id
|
|
266
|
+
retencao: "180d"
|
|
267
|
+
motivo: obrigatorio
|
|
268
|
+
}
|
|
269
|
+
segredos {
|
|
270
|
+
gateway_api_key {
|
|
271
|
+
origem: vault
|
|
272
|
+
escopo: runtime
|
|
273
|
+
acesso: gateway_pagamento
|
|
274
|
+
rotacao: "30d"
|
|
275
|
+
nao_logar: verdadeiro
|
|
276
|
+
nao_retornar: verdadeiro
|
|
277
|
+
mascarar: verdadeiro
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
forbidden {
|
|
281
|
+
shell.exec
|
|
282
|
+
retorno.credencial
|
|
283
|
+
log.segredo
|
|
284
|
+
}
|
|
285
|
+
guarantees {
|
|
286
|
+
protocolo existe
|
|
287
|
+
status existe
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Esses blocos nao tentam implementar seguranca magica. Eles tornam a intencao auditavel por parser, IR, `drift`, `contexto-ia` e verificacao semantica.
|
|
293
|
+
|
|
205
294
|
## Superficies modernas
|
|
206
295
|
|
|
207
296
|
A Sema nao fica presa em HTTP. As bordas abaixo sao blocos irmaos de `route`, com shape minimo compativel com `task`, `impl`, `vinculos`, `execucao` e `effects`.
|
|
@@ -253,8 +342,12 @@ flow operar_contexto_ia {
|
|
|
253
342
|
O formatador passa a preferir:
|
|
254
343
|
|
|
255
344
|
- `vinculos` com `arquivo` antes de `simbolo`
|
|
345
|
+
- `auth` com `modo`, `estrategia`, `principal` e `origem`
|
|
346
|
+
- `authz` com `papel|papeis`, `escopo|escopos`, `politica` e `tenant`
|
|
347
|
+
- `dados` com `classificacao_padrao`, `redacao_log` e `retencao`
|
|
348
|
+
- `audit` com `evento`, `ator`, `correlacao`, `retencao` e `motivo`
|
|
256
349
|
- `execucao` com `idempotencia`, `timeout`, `retry`, `compensacao` e `criticidade_operacional`
|
|
257
|
-
- strings operacionais como `arquivo`, `timeout`, `retry` e `
|
|
350
|
+
- strings operacionais como `arquivo`, `timeout`, `retry`, `compensacao`, `retencao` e `rotacao` com aspas
|
|
258
351
|
- tipos compostos sem espacos quebrados em `Lista<T>` e `Mapa<K, V>`
|
|
259
352
|
|
|
260
353
|
## Resumo pratico
|
|
@@ -262,6 +355,7 @@ O formatador passa a preferir:
|
|
|
262
355
|
Se a duvida for "isso vai ajudar a IA a editar com menos chute?", a sintaxe nova aponta para quatro coisas:
|
|
263
356
|
|
|
264
357
|
- contrato rico
|
|
358
|
+
- seguranca semantica explicita
|
|
265
359
|
- vinculo rastreavel
|
|
266
360
|
- execucao explicita
|
|
267
361
|
- superficie moderna de primeira classe
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
1
2
|
import path from "node:path";
|
|
2
3
|
import { descreverEstruturaModulo, mapearTipoParaLua, normalizarNomeModulo, normalizarNomeParaSimbolo, } from "@sema/padroes";
|
|
3
4
|
const TIPOS_PRIMITIVOS_SEMA = new Set(["Texto", "Numero", "Inteiro", "Decimal", "Booleano", "Data", "DataHora", "Id", "Email", "Url", "Json", "Vazio"]);
|
|
@@ -39,10 +40,7 @@ function gerarTabelaCampos(campos) {
|
|
|
39
40
|
return `{\n${campos.map((campo) => ` { nome = ${JSON.stringify(campo.nome)}, tipo = ${JSON.stringify(campo.tipo)}, obrigatorio = ${campo.modificadores.includes("required") ? "true" : "false"} },`).join("\n")}\n }`;
|
|
40
41
|
}
|
|
41
42
|
function valorPadraoLua(campo) {
|
|
42
|
-
if (campo.cardinalidade === "lista") {
|
|
43
|
-
return "{}";
|
|
44
|
-
}
|
|
45
|
-
if (campo.cardinalidade === "mapa") {
|
|
43
|
+
if (campo.cardinalidade === "lista" || campo.cardinalidade === "mapa") {
|
|
46
44
|
return "{}";
|
|
47
45
|
}
|
|
48
46
|
if (campo.opcional) {
|
|
@@ -68,12 +66,6 @@ function valorPadraoLua(campo) {
|
|
|
68
66
|
return "{}";
|
|
69
67
|
}
|
|
70
68
|
}
|
|
71
|
-
function normalizarReferenciaLua(referencia) {
|
|
72
|
-
return referencia
|
|
73
|
-
.split(".")
|
|
74
|
-
.map((parte) => `[${JSON.stringify(parte)}]`)
|
|
75
|
-
.join("");
|
|
76
|
-
}
|
|
77
69
|
function resolverReferenciaLua(referencia, variavel) {
|
|
78
70
|
const partes = referencia.split(".").filter(Boolean);
|
|
79
71
|
if (partes.length === 0) {
|
|
@@ -117,91 +109,73 @@ function gerarExpressaoLua(expressao, camposConhecidos, variavel) {
|
|
|
117
109
|
}
|
|
118
110
|
}
|
|
119
111
|
function gerarValidacoes(task) {
|
|
120
|
-
const linhas = [
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
112
|
+
const linhas = [
|
|
113
|
+
...task.input
|
|
114
|
+
.filter((campo) => campo.modificadores.includes("required"))
|
|
115
|
+
.map((campo) => ` if entrada[${JSON.stringify(campo.nome)}] == nil then error("Campo obrigatorio ausente: ${campo.nome}") end`),
|
|
116
|
+
...task.regrasEstruturadas.map((regra) => {
|
|
117
|
+
switch (regra.tipo) {
|
|
118
|
+
case "predicado":
|
|
119
|
+
return ` -- Predicado declarado em Sema: ${regra.textoOriginal}`;
|
|
120
|
+
default:
|
|
121
|
+
return ` if not (${gerarExpressaoLua(regra, new Set(task.input.map((campo) => campo.nome)), "entrada")}) then error("Regra violada: ${regra.textoOriginal}") end`;
|
|
122
|
+
}
|
|
123
|
+
}),
|
|
124
|
+
...task.rules
|
|
125
|
+
.filter((regra) => !task.regrasEstruturadas.some((estruturada) => estruturada.textoOriginal === regra))
|
|
126
|
+
.map((regra) => ` -- Regra declarada em Sema: ${regra}`),
|
|
127
|
+
];
|
|
137
128
|
return linhas.join("\n");
|
|
138
129
|
}
|
|
139
130
|
function gerarGarantias(task) {
|
|
140
131
|
const camposSaida = new Set(task.output.map((campo) => campo.nome));
|
|
141
|
-
const linhas = [
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
132
|
+
const linhas = [
|
|
133
|
+
...task.garantiasEstruturadas.map((garantia) => {
|
|
134
|
+
switch (garantia.tipo) {
|
|
135
|
+
case "predicado":
|
|
136
|
+
return ` -- Predicado de garantia declarado em Sema: ${garantia.textoOriginal}`;
|
|
137
|
+
default:
|
|
138
|
+
return ` if not (${gerarExpressaoLua(garantia, camposSaida, "saida")}) then error("Garantia violada: ${garantia.textoOriginal}") end`;
|
|
139
|
+
}
|
|
140
|
+
}),
|
|
141
|
+
...task.guarantees
|
|
142
|
+
.filter((garantia) => !task.garantiasEstruturadas.some((estruturada) => estruturada.textoOriginal === garantia))
|
|
143
|
+
.map((garantia) => ` -- Garantia declarada em Sema: ${garantia}`),
|
|
144
|
+
];
|
|
155
145
|
return `local function verificar_garantias_${normalizarNomeParaSimbolo(task.nome)}(saida)\n${linhas.join("\n")}\nend`;
|
|
156
146
|
}
|
|
157
|
-
function
|
|
147
|
+
function gerarPreparacaoSaida(task) {
|
|
158
148
|
const camposSaida = new Set(task.output.map((campo) => campo.nome));
|
|
159
|
-
const
|
|
149
|
+
const inicializacao = task.output.map((campo) => ` ${campo.nome} = ${valorPadraoLua(campo)},`).join("\n");
|
|
160
150
|
const ajustes = [];
|
|
161
151
|
for (const garantia of task.garantiasEstruturadas) {
|
|
162
152
|
if (garantia.tipo === "pertencimento" && garantia.valores && camposSaida.has(garantia.alvo)) {
|
|
163
153
|
ajustes.push(` saida[${JSON.stringify(garantia.alvo)}] = ${formatarValorLua(garantia.valores[0] ?? "", camposSaida, "saida")}`);
|
|
164
|
-
continue;
|
|
165
154
|
}
|
|
166
|
-
if (garantia.tipo === "comparacao" && garantia.valor) {
|
|
167
|
-
const [raiz, filho] = garantia.alvo.split(".", 2);
|
|
168
|
-
if (!raiz || !camposSaida.has(raiz)) {
|
|
169
|
-
continue;
|
|
170
|
-
}
|
|
171
|
-
if (filho) {
|
|
172
|
-
if (!tabelasGarantidas.has(raiz)) {
|
|
173
|
-
ajustes.push(` saida[${JSON.stringify(raiz)}] = saida[${JSON.stringify(raiz)}] or {}`);
|
|
174
|
-
tabelasGarantidas.add(raiz);
|
|
175
|
-
}
|
|
176
|
-
ajustes.push(` ${resolverReferenciaLua(garantia.alvo, "saida")} = ${formatarValorLua(garantia.valor, camposSaida, "saida")}`);
|
|
177
|
-
continue;
|
|
178
|
-
}
|
|
155
|
+
if (garantia.tipo === "comparacao" && garantia.valor && camposSaida.has(garantia.alvo.split(".")[0] ?? garantia.alvo) && !garantia.alvo.includes(".")) {
|
|
179
156
|
ajustes.push(` saida[${JSON.stringify(garantia.alvo)}] = ${formatarValorLua(garantia.valor, camposSaida, "saida")}`);
|
|
180
|
-
continue;
|
|
181
157
|
}
|
|
182
|
-
if (garantia.tipo === "
|
|
158
|
+
if (garantia.tipo === "comparacao" && garantia.valor && garantia.alvo.includes(".")) {
|
|
183
159
|
const [raiz, filho] = garantia.alvo.split(".", 2);
|
|
184
|
-
if (
|
|
185
|
-
|
|
160
|
+
if (raiz && filho && camposSaida.has(raiz)) {
|
|
161
|
+
ajustes.push(` saida[${JSON.stringify(raiz)}] = saida[${JSON.stringify(raiz)}] or {}`);
|
|
162
|
+
ajustes.push(` saida[${JSON.stringify(raiz)}][${JSON.stringify(filho)}] = ${formatarValorLua(garantia.valor, camposSaida, "saida")}`);
|
|
186
163
|
}
|
|
187
|
-
|
|
164
|
+
}
|
|
165
|
+
if (garantia.tipo === "existe" && garantia.alvo.includes(".")) {
|
|
166
|
+
const [raiz, filho] = garantia.alvo.split(".", 2);
|
|
167
|
+
if (raiz && filho && camposSaida.has(raiz)) {
|
|
188
168
|
ajustes.push(` saida[${JSON.stringify(raiz)}] = saida[${JSON.stringify(raiz)}] or {}`);
|
|
189
|
-
|
|
169
|
+
ajustes.push(` if saida[${JSON.stringify(raiz)}][${JSON.stringify(filho)}] == nil then saida[${JSON.stringify(raiz)}][${JSON.stringify(filho)}] = "valor_garantido" end`);
|
|
190
170
|
}
|
|
191
|
-
ajustes.push(` if ${resolverReferenciaLua(garantia.alvo, "saida")} == nil then ${resolverReferenciaLua(garantia.alvo, "saida")} = "valor_garantido" end`);
|
|
192
171
|
}
|
|
193
172
|
}
|
|
194
|
-
return ajustes
|
|
195
|
-
}
|
|
196
|
-
function gerarPreparacaoSaida(task) {
|
|
197
|
-
if (task.output.length === 0) {
|
|
198
|
-
return " local saida = nil";
|
|
199
|
-
}
|
|
200
|
-
const linhas = task.output.map((campo) => ` [${JSON.stringify(campo.nome)}] = ${valorPadraoLua(campo)},`);
|
|
201
|
-
const ajustes = gerarAjustesGarantias(task);
|
|
202
|
-
return ` local saida = {\n${linhas.join("\n")}\n }${ajustes.length > 0 ? `\n${ajustes.join("\n")}` : ""}`;
|
|
173
|
+
return ` local saida = {\n${inicializacao}\n }\n${ajustes.join("\n")}`;
|
|
203
174
|
}
|
|
204
175
|
function formatarLiteralTesteLua(valor, tipoDeclarado) {
|
|
176
|
+
if (["Texto", "Id", "Email", "Url", "Data", "DataHora"].includes(tipoDeclarado ?? "")) {
|
|
177
|
+
return JSON.stringify(valor);
|
|
178
|
+
}
|
|
205
179
|
if (["Numero", "Inteiro", "Decimal"].includes(tipoDeclarado ?? "") && /^-?\d+(?:\.\d+)?$/.test(valor)) {
|
|
206
180
|
return valor;
|
|
207
181
|
}
|
|
@@ -222,19 +196,13 @@ function formatarLiteralTesteLua(valor, tipoDeclarado) {
|
|
|
222
196
|
if (valor === "falso") {
|
|
223
197
|
return "false";
|
|
224
198
|
}
|
|
225
|
-
if (valor === "nulo") {
|
|
226
|
-
return "nil";
|
|
227
|
-
}
|
|
228
199
|
return JSON.stringify(valor);
|
|
229
200
|
}
|
|
230
201
|
function gerarTabelaLua(campos, blocos) {
|
|
231
202
|
const entradas = [
|
|
232
|
-
...campos.map((campo) => `
|
|
233
|
-
...blocos.map((bloco) => `
|
|
203
|
+
...campos.map((campo) => ` ${campo.nome} = ${campo.valor},`),
|
|
204
|
+
...blocos.map((bloco) => ` ${bloco.nome} = ${bloco.conteudo},`),
|
|
234
205
|
];
|
|
235
|
-
if (entradas.length === 0) {
|
|
236
|
-
return "{}";
|
|
237
|
-
}
|
|
238
206
|
return `{\n${entradas.join("\n")}\n}`;
|
|
239
207
|
}
|
|
240
208
|
function converterBlocoTesteParaLua(bloco, tiposDeclarados) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IntervaloFonte } from "../diagnosticos/index.js";
|
|
2
|
-
export type TipoBloco = "module" | "use" | "type" | "entity" | "enum" | "task" | "worker" | "evento" | "fila" | "cron" | "webhook" | "cache" | "storage" | "policy" | "input" | "output" | "rules" | "effects" | "impl" | "vinculos" | "execucao" | "guarantees" | "state" | "flow" | "route" | "tests" | "error" | "docs" | "comments" | "fields" | "invariants" | "transitions" | "given" | "when" | "expect" | "case" | "desconhecido";
|
|
2
|
+
export type TipoBloco = "module" | "use" | "type" | "entity" | "enum" | "task" | "worker" | "evento" | "fila" | "cron" | "webhook" | "cache" | "storage" | "policy" | "input" | "output" | "rules" | "effects" | "impl" | "vinculos" | "execucao" | "auth" | "authz" | "dados" | "audit" | "segredos" | "forbidden" | "guarantees" | "state" | "flow" | "route" | "tests" | "error" | "docs" | "comments" | "fields" | "invariants" | "transitions" | "given" | "when" | "expect" | "case" | "desconhecido";
|
|
3
3
|
export interface NoAstBase {
|
|
4
4
|
tipo: string;
|
|
5
5
|
intervalo?: IntervaloFonte;
|
|
@@ -34,7 +34,7 @@ export interface BlocoCasoTesteAst extends NoAstBase {
|
|
|
34
34
|
}
|
|
35
35
|
export interface UseAst extends NoAstBase {
|
|
36
36
|
tipo: "use";
|
|
37
|
-
origem: "sema" | "ts" | "py" | "dart" | "
|
|
37
|
+
origem: "sema" | "ts" | "py" | "dart" | "cs" | "java" | "go" | "rust" | "cpp";
|
|
38
38
|
caminho: string;
|
|
39
39
|
}
|
|
40
40
|
export interface EnumAst extends NoAstBase {
|
|
@@ -64,6 +64,12 @@ export interface TaskAst extends NoAstBase {
|
|
|
64
64
|
impl?: BlocoGenericoAst;
|
|
65
65
|
vinculos?: BlocoGenericoAst;
|
|
66
66
|
execucao?: BlocoGenericoAst;
|
|
67
|
+
auth?: BlocoGenericoAst;
|
|
68
|
+
authz?: BlocoGenericoAst;
|
|
69
|
+
dados?: BlocoGenericoAst;
|
|
70
|
+
audit?: BlocoGenericoAst;
|
|
71
|
+
segredos?: BlocoGenericoAst;
|
|
72
|
+
forbidden?: BlocoGenericoAst;
|
|
67
73
|
guarantees?: BlocoGenericoAst;
|
|
68
74
|
state?: BlocoGenericoAst;
|
|
69
75
|
tests?: BlocoGenericoAst;
|
|
@@ -30,24 +30,36 @@ const ORDEM_SUBBLOCOS_TASK = new Map([
|
|
|
30
30
|
["output", 3],
|
|
31
31
|
["rules", 4],
|
|
32
32
|
["effects", 5],
|
|
33
|
-
["
|
|
34
|
-
["
|
|
35
|
-
["
|
|
36
|
-
["
|
|
37
|
-
["
|
|
38
|
-
["
|
|
39
|
-
["
|
|
40
|
-
["
|
|
33
|
+
["auth", 6],
|
|
34
|
+
["authz", 7],
|
|
35
|
+
["dados", 8],
|
|
36
|
+
["audit", 9],
|
|
37
|
+
["segredos", 10],
|
|
38
|
+
["forbidden", 11],
|
|
39
|
+
["impl", 12],
|
|
40
|
+
["vinculos", 13],
|
|
41
|
+
["execucao", 14],
|
|
42
|
+
["state", 15],
|
|
43
|
+
["guarantees", 16],
|
|
44
|
+
["error", 17],
|
|
45
|
+
["tests", 18],
|
|
46
|
+
["desconhecido", 19],
|
|
41
47
|
]);
|
|
42
48
|
const ORDEM_SUBBLOCOS_ROUTE = new Map([
|
|
43
49
|
["input", 0],
|
|
44
50
|
["output", 1],
|
|
45
51
|
["effects", 2],
|
|
46
|
-
["
|
|
47
|
-
["
|
|
48
|
-
["
|
|
49
|
-
["
|
|
50
|
-
["
|
|
52
|
+
["auth", 3],
|
|
53
|
+
["authz", 4],
|
|
54
|
+
["dados", 5],
|
|
55
|
+
["audit", 6],
|
|
56
|
+
["segredos", 7],
|
|
57
|
+
["forbidden", 8],
|
|
58
|
+
["vinculos", 9],
|
|
59
|
+
["error", 10],
|
|
60
|
+
["docs", 11],
|
|
61
|
+
["comments", 12],
|
|
62
|
+
["desconhecido", 13],
|
|
51
63
|
]);
|
|
52
64
|
const ORDEM_SUBBLOCOS_FLOW = new Map([
|
|
53
65
|
["effects", 0],
|
|
@@ -60,13 +72,19 @@ const ORDEM_SUBBLOCOS_SUPERFICIE = new Map([
|
|
|
60
72
|
["input", 0],
|
|
61
73
|
["output", 1],
|
|
62
74
|
["effects", 2],
|
|
63
|
-
["
|
|
64
|
-
["
|
|
65
|
-
["
|
|
66
|
-
["
|
|
67
|
-
["
|
|
68
|
-
["
|
|
69
|
-
["
|
|
75
|
+
["auth", 3],
|
|
76
|
+
["authz", 4],
|
|
77
|
+
["dados", 5],
|
|
78
|
+
["audit", 6],
|
|
79
|
+
["segredos", 7],
|
|
80
|
+
["forbidden", 8],
|
|
81
|
+
["impl", 9],
|
|
82
|
+
["vinculos", 10],
|
|
83
|
+
["execucao", 11],
|
|
84
|
+
["error", 12],
|
|
85
|
+
["docs", 13],
|
|
86
|
+
["comments", 14],
|
|
87
|
+
["desconhecido", 15],
|
|
70
88
|
]);
|
|
71
89
|
const ORDEM_SUBBLOCOS_STATE = new Map([
|
|
72
90
|
["fields", 0],
|
|
@@ -110,6 +128,32 @@ const ORDEM_CAMPOS_POR_BLOCO = new Map([
|
|
|
110
128
|
["compensacao", 3],
|
|
111
129
|
["criticidade_operacional", 4],
|
|
112
130
|
])],
|
|
131
|
+
["auth", new Map([
|
|
132
|
+
["modo", 0],
|
|
133
|
+
["estrategia", 1],
|
|
134
|
+
["principal", 2],
|
|
135
|
+
["origem", 3],
|
|
136
|
+
])],
|
|
137
|
+
["authz", new Map([
|
|
138
|
+
["papeis", 0],
|
|
139
|
+
["papel", 1],
|
|
140
|
+
["escopos", 2],
|
|
141
|
+
["escopo", 3],
|
|
142
|
+
["politica", 4],
|
|
143
|
+
["tenant", 5],
|
|
144
|
+
])],
|
|
145
|
+
["dados", new Map([
|
|
146
|
+
["classificacao_padrao", 0],
|
|
147
|
+
["redacao_log", 1],
|
|
148
|
+
["retencao", 2],
|
|
149
|
+
])],
|
|
150
|
+
["audit", new Map([
|
|
151
|
+
["evento", 0],
|
|
152
|
+
["ator", 1],
|
|
153
|
+
["correlacao", 2],
|
|
154
|
+
["retencao", 3],
|
|
155
|
+
["motivo", 4],
|
|
156
|
+
])],
|
|
113
157
|
]);
|
|
114
158
|
function indentacao(nivel) {
|
|
115
159
|
return " ".repeat(nivel);
|
|
@@ -164,7 +208,7 @@ function deveColocarAspas(contexto, campo, combinado) {
|
|
|
164
208
|
if (contexto === "vinculos" && ["arquivo", "webhook"].includes(campo.nome)) {
|
|
165
209
|
return true;
|
|
166
210
|
}
|
|
167
|
-
if (
|
|
211
|
+
if (["timeout", "retry", "compensacao", "retencao", "rotacao"].includes(campo.nome)) {
|
|
168
212
|
return true;
|
|
169
213
|
}
|
|
170
214
|
if (contexto === "docs" || contexto === "comments") {
|