@davidbc01/telar 0.1.0

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/dist/parser.js ADDED
@@ -0,0 +1,441 @@
1
+ "use strict";
2
+ // ---
3
+ // parser.ts
4
+ // Convierte la lista de tokens del lexer en un árbol (AST)
5
+ // Es el segundo paso del compilador
6
+ // ---
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.Parser = void 0;
9
+ const tipos_1 = require("./tipos");
10
+ const errores_1 = require("./errores");
11
+ class Parser {
12
+ constructor(tokens) {
13
+ this.posicion = 0;
14
+ // Filtramos tokens de indentación — el parser no los necesita
15
+ this.tokens = tokens.filter(t => t.tipo !== tipos_1.TipoToken.Indentacion &&
16
+ t.tipo !== tipos_1.TipoToken.FinIndentacion &&
17
+ t.tipo !== tipos_1.TipoToken.NuevaLinea);
18
+ }
19
+ parsear() {
20
+ if (this.tokens.length === 0 || this.actual().tipo === tipos_1.TipoToken.FinArchivo) {
21
+ throw new tipos_1.TelarError(errores_1.Errores.archivoVacio());
22
+ }
23
+ if (this.actual().tipo !== tipos_1.TipoToken.Aplicacion) {
24
+ throw new tipos_1.TelarError(errores_1.Errores.faltaAplicacion(this.actual().linea, this.actual().columna));
25
+ }
26
+ return this.parsearAplicacion();
27
+ }
28
+ // ── aplicación MiTienda ─────────────────────────────────────
29
+ parsearAplicacion() {
30
+ const token = this.consumir(tipos_1.TipoToken.Aplicacion);
31
+ if (this.actual().tipo !== tipos_1.TipoToken.Nombre) {
32
+ throw new tipos_1.TelarError(errores_1.Errores.nombreAplicacion(this.actual().linea, this.actual().columna));
33
+ }
34
+ const nombre = this.consumir(tipos_1.TipoToken.Nombre).valor;
35
+ let idioma = "español";
36
+ const paginas = [];
37
+ const datos = [];
38
+ // Leer hijos de la aplicación
39
+ while (!this.finArchivo()) {
40
+ const actual = this.actual();
41
+ if (actual.tipo === tipos_1.TipoToken.Idioma) {
42
+ this.avanzar();
43
+ idioma = this.consumirIdentificador().valor;
44
+ continue;
45
+ }
46
+ if (actual.tipo === tipos_1.TipoToken.Datos) {
47
+ datos.push(this.parsearDatos());
48
+ continue;
49
+ }
50
+ if (actual.tipo === tipos_1.TipoToken.Pagina) {
51
+ paginas.push(this.parsearPagina());
52
+ continue;
53
+ }
54
+ // Token no reconocido a nivel raíz — saltar
55
+ this.avanzar();
56
+ }
57
+ return {
58
+ tipo: "aplicacion",
59
+ nombre,
60
+ idioma,
61
+ paginas,
62
+ datos,
63
+ linea: token.linea
64
+ };
65
+ }
66
+ // ── datos Producto ──────────────────────────────────────────
67
+ parsearDatos() {
68
+ const token = this.consumir(tipos_1.TipoToken.Datos);
69
+ const nombre = this.consumir(tipos_1.TipoToken.Nombre).valor;
70
+ const campos = [];
71
+ // Leer campos hasta encontrar otra sección de nivel raíz
72
+ while (!this.finArchivo() && this.esNivelRaiz()) {
73
+ const campo = this.parsearCampoDatos();
74
+ if (campo)
75
+ campos.push(campo);
76
+ }
77
+ return { tipo: "datos", nombre, campos, linea: token.linea };
78
+ }
79
+ parsearCampoDatos() {
80
+ if (this.actual().tipo !== tipos_1.TipoToken.Identificador)
81
+ return null;
82
+ const nombreToken = this.consumirIdentificador();
83
+ if (this.actual().tipo !== tipos_1.TipoToken.DosPuntos)
84
+ return null;
85
+ this.consumir(tipos_1.TipoToken.DosPuntos);
86
+ const tipoDato = this.parsearTipoDato();
87
+ return {
88
+ tipo: "campo_datos",
89
+ nombre: nombreToken.valor,
90
+ tipoCampo: tipoDato,
91
+ linea: nombreToken.linea
92
+ };
93
+ }
94
+ parsearTipoDato() {
95
+ const token = this.actual();
96
+ const valor = token.valor.toLowerCase();
97
+ const tipos = {
98
+ "texto": "texto",
99
+ "número": "número",
100
+ "numero": "número",
101
+ "fecha": "fecha",
102
+ "foto": "foto",
103
+ "verdad": "verdad",
104
+ "lista": "lista",
105
+ };
106
+ if (tipos[valor]) {
107
+ this.avanzar();
108
+ // Si es lista, saltar "de NombreModelo"
109
+ if (tipos[valor] === "lista") {
110
+ if (this.actual().valor === "de")
111
+ this.avanzar();
112
+ if (this.actual().tipo === tipos_1.TipoToken.Nombre)
113
+ this.avanzar();
114
+ }
115
+ return tipos[valor];
116
+ }
117
+ throw new tipos_1.TelarError(errores_1.Errores.tipoDatoDesconocido(token.valor, token.linea, token.columna));
118
+ }
119
+ // ── página inicio en "/" ────────────────────────────────────
120
+ parsearPagina() {
121
+ const token = this.consumir(tipos_1.TipoToken.Pagina);
122
+ const nombre = this.consumirIdentificador().valor;
123
+ if (this.actual().tipo !== tipos_1.TipoToken.En) {
124
+ throw new tipos_1.TelarError(errores_1.Errores.rutaPagina(nombre, this.actual().linea, this.actual().columna));
125
+ }
126
+ this.consumir(tipos_1.TipoToken.En);
127
+ const ruta = this.consumir(tipos_1.TipoToken.Texto).valor;
128
+ const hijos = [];
129
+ // Leer hijos hasta encontrar otra página o fin
130
+ while (!this.finArchivo() && !this.esSiguientePagina()) {
131
+ const nodo = this.parsearNodo();
132
+ if (nodo)
133
+ hijos.push(nodo);
134
+ }
135
+ return { tipo: "pagina", nombre, ruta, hijos, linea: token.linea };
136
+ }
137
+ // ── Nodos dentro de una página ──────────────────────────────
138
+ parsearNodo() {
139
+ const actual = this.actual();
140
+ switch (actual.tipo) {
141
+ case tipos_1.TipoToken.Titulo: return this.parsearTitulo();
142
+ case tipos_1.TipoToken.Descripcion: return this.parsearDescripcion();
143
+ case tipos_1.TipoToken.Mostrar: return this.parsearMostrar();
144
+ case tipos_1.TipoToken.Boton: return this.parsearBoton();
145
+ case tipos_1.TipoToken.Campo: return this.parsearCampo();
146
+ case tipos_1.TipoToken.Si: return this.parsearSi();
147
+ case tipos_1.TipoToken.Optimizar: return this.parsearOptimizar();
148
+ case tipos_1.TipoToken.Cache: return this.parsearCache();
149
+ case tipos_1.TipoToken.Reintentar: return this.parsearReintentar();
150
+ default:
151
+ this.avanzar();
152
+ return null;
153
+ }
154
+ }
155
+ // título "Bienvenido"
156
+ parsearTitulo() {
157
+ const token = this.consumir(tipos_1.TipoToken.Titulo);
158
+ const texto = this.consumir(tipos_1.TipoToken.Texto).valor;
159
+ return { tipo: "titulo", texto, linea: token.linea };
160
+ }
161
+ // descripción "..."
162
+ parsearDescripcion() {
163
+ const token = this.consumir(tipos_1.TipoToken.Descripcion);
164
+ const texto = this.consumir(tipos_1.TipoToken.Texto).valor;
165
+ return { tipo: "descripcion", texto, linea: token.linea };
166
+ }
167
+ // mostrar Producto recientes / mostrar producto.nombre
168
+ parsearMostrar() {
169
+ const token = this.consumir(tipos_1.TipoToken.Mostrar);
170
+ const modeloToken = this.actual();
171
+ const modelo = modeloToken.valor;
172
+ this.avanzar();
173
+ const modificadores = [];
174
+ let siFalla;
175
+ let siFunciona;
176
+ // Leer modificadores opcionales
177
+ while (!this.finArchivo() && (!this.esInstruccionNueva() || this.actual().tipo === tipos_1.TipoToken.Si)) {
178
+ const t = this.actual();
179
+ if (t.tipo === tipos_1.TipoToken.Recientes) {
180
+ modificadores.push({ tipo: "recientes" });
181
+ this.avanzar();
182
+ continue;
183
+ }
184
+ if (t.tipo === tipos_1.TipoToken.Maximo) {
185
+ this.avanzar();
186
+ const cantidad = parseInt(this.consumir(tipos_1.TipoToken.Numero).valor);
187
+ modificadores.push({ tipo: "maximo", cantidad });
188
+ continue;
189
+ }
190
+ if (t.tipo === tipos_1.TipoToken.Ordenados) {
191
+ this.avanzar();
192
+ if (this.actual().tipo === tipos_1.TipoToken.Por)
193
+ this.avanzar();
194
+ const campo = this.consumirIdentificador().valor;
195
+ modificadores.push({ tipo: "ordenados", campo });
196
+ continue;
197
+ }
198
+ if (t.tipo === tipos_1.TipoToken.Filtrados) {
199
+ this.avanzar();
200
+ if (this.actual().tipo === tipos_1.TipoToken.Por)
201
+ this.avanzar();
202
+ const campo = this.consumirIdentificador().valor;
203
+ if (this.actual().tipo === tipos_1.TipoToken.Igual)
204
+ this.avanzar();
205
+ const valor = this.consumir(tipos_1.TipoToken.Texto).valor;
206
+ modificadores.push({ tipo: "filtrados", campo, valor });
207
+ continue;
208
+ }
209
+ if (t.tipo === tipos_1.TipoToken.Si && this.siguiente()?.tipo === tipos_1.TipoToken.Falla) {
210
+ this.avanzar(); // si
211
+ this.avanzar(); // falla
212
+ siFalla = this.parsearBloque();
213
+ continue;
214
+ }
215
+ if (t.tipo === tipos_1.TipoToken.Si && this.siguiente()?.tipo === tipos_1.TipoToken.Funciona) {
216
+ this.avanzar(); // si
217
+ this.avanzar(); // funciona
218
+ siFunciona = this.parsearBloque();
219
+ continue;
220
+ }
221
+ break;
222
+ }
223
+ return { tipo: "mostrar", modelo, modificadores, siFalla, siFunciona, linea: token.linea };
224
+ }
225
+ // botón "Entrar" ir a login
226
+ parsearBoton() {
227
+ const token = this.consumir(tipos_1.TipoToken.Boton);
228
+ const texto = this.consumir(tipos_1.TipoToken.Texto).valor;
229
+ const accionToken = this.actual();
230
+ if (accionToken.tipo !== tipos_1.TipoToken.Ir && accionToken.tipo !== tipos_1.TipoToken.Hacer) {
231
+ throw new tipos_1.TelarError(errores_1.Errores.seEsperaba('"ir" o "hacer"', accionToken.valor, accionToken.linea, accionToken.columna));
232
+ }
233
+ const accion = accionToken.tipo === tipos_1.TipoToken.Ir ? "ir" : "hacer";
234
+ this.avanzar();
235
+ // Saltar "a" si existe
236
+ if (this.actual().valor === "a")
237
+ this.avanzar();
238
+ const destino = this.consumirIdentificador().valor;
239
+ // Leer bloque "si falla" opcional después del botón
240
+ let siFalla;
241
+ if (this.actual().tipo === tipos_1.TipoToken.Si && this.siguiente()?.tipo === tipos_1.TipoToken.Falla) {
242
+ this.avanzar(); // si
243
+ this.avanzar(); // falla
244
+ siFalla = this.parsearBloque();
245
+ }
246
+ return { tipo: "boton", texto, accion, destino, siFalla, linea: token.linea };
247
+ }
248
+ // campo "Correo" tipo email
249
+ parsearCampo() {
250
+ const token = this.consumir(tipos_1.TipoToken.Campo);
251
+ const etiqueta = this.consumir(tipos_1.TipoToken.Texto).valor;
252
+ this.consumir(tipos_1.TipoToken.Tipo);
253
+ const tipoCampo = this.parsearTipoCampo();
254
+ return { tipo: "campo", etiqueta, tipoCampo, linea: token.linea };
255
+ }
256
+ parsearTipoCampo() {
257
+ const token = this.actual();
258
+ const valor = token.valor.toLowerCase();
259
+ const tipos = {
260
+ "texto": "texto",
261
+ "email": "email",
262
+ "contraseña": "contraseña",
263
+ "numero": "texto",
264
+ "número": "texto",
265
+ };
266
+ if (tipos[valor]) {
267
+ this.avanzar();
268
+ return tipos[valor];
269
+ }
270
+ // "área de texto" son tres tokens
271
+ if (valor === "área" || valor === "area") {
272
+ this.avanzar();
273
+ if (this.actual().valor === "de")
274
+ this.avanzar();
275
+ if (this.actual().valor === "texto")
276
+ this.avanzar();
277
+ return "texto";
278
+ }
279
+ throw new tipos_1.TelarError(errores_1.Errores.tipoCampoDesconocido(token.valor, token.linea, token.columna));
280
+ }
281
+ // si el usuario está conectado / si hay resultados / si no
282
+ parsearSi() {
283
+ const token = this.consumir(tipos_1.TipoToken.Si);
284
+ // "si no" — rama else
285
+ if (this.actual().tipo === tipos_1.TipoToken.SiNo) {
286
+ this.avanzar();
287
+ const entonces = this.parsearBloque();
288
+ return {
289
+ tipo: "si",
290
+ condicion: { tipo: "hay_resultados" }, // placeholder
291
+ entonces,
292
+ linea: token.linea
293
+ };
294
+ }
295
+ const condicion = this.parsearCondicion();
296
+ const entonces = this.parsearBloque();
297
+ let siNo;
298
+ // Buscar "si no" al mismo nivel
299
+ if (this.actual().tipo === tipos_1.TipoToken.Si && this.siguiente()?.tipo === tipos_1.TipoToken.SiNo) {
300
+ this.avanzar(); // si
301
+ this.avanzar(); // no
302
+ siNo = this.parsearBloque();
303
+ }
304
+ return { tipo: "si", condicion, entonces, siNo, linea: token.linea };
305
+ }
306
+ parsearCondicion() {
307
+ const t = this.actual();
308
+ // si el usuario está conectado / si el usuario es administrador
309
+ if (t.tipo === tipos_1.TipoToken.El || t.tipo === tipos_1.TipoToken.La) {
310
+ this.avanzar();
311
+ if (this.actual().valor === "usuario") {
312
+ this.avanzar();
313
+ if (this.actual().tipo === tipos_1.TipoToken.Esta) {
314
+ this.avanzar();
315
+ if (this.actual().valor === "conectado") {
316
+ this.avanzar();
317
+ return { tipo: "usuario_conectado" };
318
+ }
319
+ }
320
+ if (this.actual().tipo === tipos_1.TipoToken.Es) {
321
+ this.avanzar();
322
+ if (this.actual().valor === "administrador") {
323
+ this.avanzar();
324
+ return { tipo: "usuario_admin" };
325
+ }
326
+ }
327
+ }
328
+ }
329
+ // si hay resultados
330
+ if (t.tipo === tipos_1.TipoToken.Hay) {
331
+ this.avanzar();
332
+ if (this.actual().valor === "resultados") {
333
+ this.avanzar();
334
+ return { tipo: "hay_resultados" };
335
+ }
336
+ }
337
+ // si producto.stock > 0
338
+ if (t.tipo === tipos_1.TipoToken.Identificador) {
339
+ const campo = t.valor;
340
+ this.avanzar();
341
+ if (this.actual().tipo === tipos_1.TipoToken.Mayor) {
342
+ this.avanzar();
343
+ const valor = parseFloat(this.consumir(tipos_1.TipoToken.Numero).valor);
344
+ return { tipo: "campo_mayor", campo, valor };
345
+ }
346
+ if (this.actual().tipo === tipos_1.TipoToken.Igual) {
347
+ this.avanzar();
348
+ const valor = this.consumir(tipos_1.TipoToken.Texto).valor;
349
+ return { tipo: "campo_igual", campo, valor };
350
+ }
351
+ }
352
+ throw new tipos_1.TelarError(errores_1.Errores.condicionDesconocida(t.valor, t.linea, t.columna));
353
+ }
354
+ // optimizar para móvil
355
+ parsearOptimizar() {
356
+ const token = this.consumir(tipos_1.TipoToken.Optimizar);
357
+ if (this.actual().tipo === tipos_1.TipoToken.Para)
358
+ this.avanzar();
359
+ if (this.actual().tipo === tipos_1.TipoToken.Movil)
360
+ this.avanzar();
361
+ return { tipo: "optimizar", objetivo: "movil", linea: token.linea };
362
+ }
363
+ // caché 10 minutos
364
+ parsearCache() {
365
+ const token = this.consumir(tipos_1.TipoToken.Cache);
366
+ const cantidad = parseInt(this.consumir(tipos_1.TipoToken.Numero).valor);
367
+ const unidad = this.actual().tipo === tipos_1.TipoToken.Horas ? "horas" : "minutos";
368
+ this.avanzar();
369
+ return { tipo: "cache", cantidad, unidad, linea: token.linea };
370
+ }
371
+ // reintentar en 5 segundos
372
+ parsearReintentar() {
373
+ const token = this.consumir(tipos_1.TipoToken.Reintentar);
374
+ if (this.actual().tipo === tipos_1.TipoToken.En)
375
+ this.avanzar();
376
+ const segundos = parseInt(this.consumir(tipos_1.TipoToken.Numero).valor);
377
+ if (this.actual().tipo === tipos_1.TipoToken.Segundos)
378
+ this.avanzar();
379
+ return { tipo: "reintentar", segundos, linea: token.linea };
380
+ }
381
+ // ── Helpers ─────────────────────────────────────────────────
382
+ parsearBloque() {
383
+ const nodos = [];
384
+ while (!this.finArchivo() && !this.esInstruccionNueva() && !this.esSiguientePagina()) {
385
+ const nodo = this.parsearNodo();
386
+ if (nodo)
387
+ nodos.push(nodo);
388
+ }
389
+ return nodos;
390
+ }
391
+ esNivelRaiz() {
392
+ const t = this.actual().tipo;
393
+ return t === tipos_1.TipoToken.Identificador;
394
+ }
395
+ esSiguientePagina() {
396
+ return this.actual().tipo === tipos_1.TipoToken.Pagina ||
397
+ this.actual().tipo === tipos_1.TipoToken.Datos ||
398
+ this.actual().tipo === tipos_1.TipoToken.FinArchivo;
399
+ }
400
+ esInstruccionNueva() {
401
+ const t = this.actual().tipo;
402
+ return [
403
+ tipos_1.TipoToken.Titulo, tipos_1.TipoToken.Descripcion, tipos_1.TipoToken.Mostrar,
404
+ tipos_1.TipoToken.Boton, tipos_1.TipoToken.Campo, tipos_1.TipoToken.Si,
405
+ tipos_1.TipoToken.Optimizar, tipos_1.TipoToken.Cache, tipos_1.TipoToken.Reintentar,
406
+ tipos_1.TipoToken.Pagina, tipos_1.TipoToken.Datos, tipos_1.TipoToken.FinArchivo
407
+ ].includes(t);
408
+ }
409
+ consumir(tipo) {
410
+ const token = this.actual();
411
+ if (token.tipo !== tipo) {
412
+ throw new tipos_1.TelarError(errores_1.Errores.seEsperaba(tipo, token.valor, token.linea, token.columna));
413
+ }
414
+ this.avanzar();
415
+ return token;
416
+ }
417
+ consumirIdentificador() {
418
+ const token = this.actual();
419
+ if (token.tipo !== tipos_1.TipoToken.Identificador && token.tipo !== tipos_1.TipoToken.Nombre) {
420
+ throw new tipos_1.TelarError(errores_1.Errores.seEsperaba("un nombre", token.valor, token.linea, token.columna));
421
+ }
422
+ this.avanzar();
423
+ return token;
424
+ }
425
+ actual() {
426
+ return this.tokens[this.posicion] ?? {
427
+ tipo: tipos_1.TipoToken.FinArchivo, valor: "", linea: 0, columna: 0
428
+ };
429
+ }
430
+ siguiente() {
431
+ return this.tokens[this.posicion + 1] ?? null;
432
+ }
433
+ avanzar() {
434
+ this.posicion++;
435
+ }
436
+ finArchivo() {
437
+ return this.posicion >= this.tokens.length || this.actual().tipo === tipos_1.TipoToken.FinArchivo;
438
+ }
439
+ }
440
+ exports.Parser = Parser;
441
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ export declare enum TipoToken {
2
+ Aplicacion = "aplicacion",
3
+ Pagina = "pagina",
4
+ Datos = "datos",
5
+ En = "en",
6
+ Titulo = "titulo",
7
+ Descripcion = "descripcion",
8
+ Mostrar = "mostrar",
9
+ Boton = "boton",
10
+ Campo = "campo",
11
+ Si = "si",
12
+ SiNo = "si_no",
13
+ El = "el",
14
+ La = "la",
15
+ Esta = "esta",
16
+ Es = "es",
17
+ Hay = "hay",
18
+ Falla = "falla",
19
+ Funciona = "funciona",
20
+ Maximo = "maximo",
21
+ Ordenados = "ordenados",
22
+ Filtrados = "filtrados",
23
+ Por = "por",
24
+ Recientes = "recientes",
25
+ Para = "para",
26
+ Movil = "movil",
27
+ Cache = "cache",
28
+ Reintentar = "reintentar",
29
+ Minutos = "minutos",
30
+ Horas = "horas",
31
+ Segundos = "segundos",
32
+ Optimizar = "optimizar",
33
+ Ir = "ir",
34
+ Hacer = "hacer",
35
+ Tipo = "tipo",
36
+ Idioma = "idioma",
37
+ Texto = "TEXTO",// "hola mundo"
38
+ Numero = "NUMERO",// 42
39
+ Nombre = "NOMBRE",// MiTienda, Producto...
40
+ Identificador = "IDENTIFICADOR",// inicio, login...
41
+ DosPuntos = ":",
42
+ Mayor = ">",
43
+ Igual = "=",
44
+ NuevaLinea = "NUEVA_LINEA",
45
+ Indentacion = "INDENTACION",
46
+ FinIndentacion = "FIN_INDENTACION",
47
+ FinArchivo = "FIN_ARCHIVO",
48
+ Desconocido = "DESCONOCIDO"
49
+ }
50
+ export interface Token {
51
+ tipo: TipoToken;
52
+ valor: string;
53
+ linea: number;
54
+ columna: number;
55
+ }
56
+ export type Nodo = NodoAplicacion | NodoPagina | NodoDatos | NodoCamposDatos | NodoTitulo | NodoDescripcion | NodoMostrar | NodoBoton | NodoCampo | NodoSi | NodoOptimizar | NodoCache | NodoReintentar;
57
+ export interface NodoAplicacion {
58
+ tipo: "aplicacion";
59
+ nombre: string;
60
+ idioma: string;
61
+ paginas: NodoPagina[];
62
+ datos: NodoDatos[];
63
+ linea: number;
64
+ }
65
+ export interface NodoPagina {
66
+ tipo: "pagina";
67
+ nombre: string;
68
+ ruta: string;
69
+ hijos: Nodo[];
70
+ linea: number;
71
+ }
72
+ export interface NodoDatos {
73
+ tipo: "datos";
74
+ nombre: string;
75
+ campos: NodoCamposDatos[];
76
+ linea: number;
77
+ }
78
+ export interface NodoCamposDatos {
79
+ tipo: "campo_datos";
80
+ nombre: string;
81
+ tipoCampo: TipoDato;
82
+ linea: number;
83
+ }
84
+ export interface NodoTitulo {
85
+ tipo: "titulo";
86
+ texto: string;
87
+ linea: number;
88
+ }
89
+ export interface NodoDescripcion {
90
+ tipo: "descripcion";
91
+ texto: string;
92
+ linea: number;
93
+ }
94
+ export interface NodoMostrar {
95
+ tipo: "mostrar";
96
+ modelo: string;
97
+ modificadores: ModificadorMostrar[];
98
+ siFalla?: Nodo[];
99
+ siFunciona?: Nodo[];
100
+ linea: number;
101
+ }
102
+ export interface NodoBoton {
103
+ tipo: "boton";
104
+ texto: string;
105
+ accion: AccionBoton;
106
+ destino: string;
107
+ siFalla?: Nodo[];
108
+ linea: number;
109
+ }
110
+ export interface NodoCampo {
111
+ tipo: "campo";
112
+ etiqueta: string;
113
+ tipoCampo: TipoCampo;
114
+ linea: number;
115
+ }
116
+ export interface NodoSi {
117
+ tipo: "si";
118
+ condicion: Condicion;
119
+ entonces: Nodo[];
120
+ siNo?: Nodo[];
121
+ linea: number;
122
+ }
123
+ export interface NodoOptimizar {
124
+ tipo: "optimizar";
125
+ objetivo: "movil";
126
+ linea: number;
127
+ }
128
+ export interface NodoCache {
129
+ tipo: "cache";
130
+ cantidad: number;
131
+ unidad: "minutos" | "horas" | "segundos";
132
+ linea: number;
133
+ }
134
+ export interface NodoReintentar {
135
+ tipo: "reintentar";
136
+ segundos: number;
137
+ linea: number;
138
+ }
139
+ export type TipoDato = "texto" | "número" | "fecha" | "foto" | "verdad" | "lista";
140
+ export type TipoCampo = "texto" | "email" | "contraseña" | "numero" | "área de texto";
141
+ export type AccionBoton = "ir" | "hacer";
142
+ export type ModificadorMostrar = {
143
+ tipo: "maximo";
144
+ cantidad: number;
145
+ } | {
146
+ tipo: "ordenados";
147
+ campo: string;
148
+ } | {
149
+ tipo: "filtrados";
150
+ campo: string;
151
+ valor: string;
152
+ } | {
153
+ tipo: "recientes";
154
+ };
155
+ export type Condicion = {
156
+ tipo: "usuario_conectado";
157
+ } | {
158
+ tipo: "usuario_admin";
159
+ } | {
160
+ tipo: "hay_resultados";
161
+ } | {
162
+ tipo: "campo_igual";
163
+ campo: string;
164
+ valor: string;
165
+ } | {
166
+ tipo: "campo_mayor";
167
+ campo: string;
168
+ valor: number;
169
+ };
170
+ export interface ErrorTelar {
171
+ mensaje: string;
172
+ sugerencia?: string;
173
+ linea: number;
174
+ columna: number;
175
+ }
176
+ export declare class TelarError extends Error {
177
+ readonly linea: number;
178
+ readonly columna: number;
179
+ readonly sugerencia?: string;
180
+ constructor(error: ErrorTelar);
181
+ formatear(nombreArchivo: string): string;
182
+ }
183
+ //# sourceMappingURL=tipos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tipos.d.ts","sourceRoot":"","sources":["../src/tipos.ts"],"names":[],"mappings":"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"}