@yakuzaa/jade-runtime 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/apis/audit_service.d.ts +43 -0
- package/dist/apis/audit_service.d.ts.map +1 -0
- package/dist/apis/audit_service.js +73 -0
- package/dist/apis/audit_service.js.map +1 -0
- package/dist/apis/auth_service.d.ts +51 -0
- package/dist/apis/auth_service.d.ts.map +1 -0
- package/dist/apis/auth_service.js +120 -0
- package/dist/apis/auth_service.js.map +1 -0
- package/dist/apis/console_api.d.ts +34 -0
- package/dist/apis/console_api.d.ts.map +1 -0
- package/dist/apis/console_api.js +90 -0
- package/dist/apis/console_api.js.map +1 -0
- package/dist/apis/datetime_api.d.ts +13 -0
- package/dist/apis/datetime_api.d.ts.map +1 -0
- package/dist/apis/datetime_api.js +89 -0
- package/dist/apis/datetime_api.js.map +1 -0
- package/dist/apis/http_client.d.ts +32 -0
- package/dist/apis/http_client.d.ts.map +1 -0
- package/dist/apis/http_client.js +83 -0
- package/dist/apis/http_client.js.map +1 -0
- package/dist/apis/permission_service.d.ts +18 -0
- package/dist/apis/permission_service.d.ts.map +1 -0
- package/dist/apis/permission_service.js +56 -0
- package/dist/apis/permission_service.js.map +1 -0
- package/dist/core/event_loop.d.ts +14 -0
- package/dist/core/event_loop.d.ts.map +1 -0
- package/dist/core/event_loop.js +60 -0
- package/dist/core/event_loop.js.map +1 -0
- package/dist/core/memory_manager.d.ts +43 -0
- package/dist/core/memory_manager.d.ts.map +1 -0
- package/dist/core/memory_manager.js +218 -0
- package/dist/core/memory_manager.js.map +1 -0
- package/dist/core/runtime.d.ts +18 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +116 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/persistence/local_datastore.d.ts +34 -0
- package/dist/persistence/local_datastore.d.ts.map +1 -0
- package/dist/persistence/local_datastore.js +112 -0
- package/dist/persistence/local_datastore.js.map +1 -0
- package/dist/persistence/sync_manager.d.ts +49 -0
- package/dist/persistence/sync_manager.d.ts.map +1 -0
- package/dist/persistence/sync_manager.js +187 -0
- package/dist/persistence/sync_manager.js.map +1 -0
- package/dist/pwa/pwa_generator.d.ts +16 -0
- package/dist/pwa/pwa_generator.d.ts.map +1 -0
- package/dist/pwa/pwa_generator.js +107 -0
- package/dist/pwa/pwa_generator.js.map +1 -0
- package/dist/stdlib/matematica.d.ts +121 -0
- package/dist/stdlib/matematica.d.ts.map +1 -0
- package/dist/stdlib/matematica.js +250 -0
- package/dist/stdlib/matematica.js.map +1 -0
- package/dist/stdlib/moeda.d.ts +129 -0
- package/dist/stdlib/moeda.d.ts.map +1 -0
- package/dist/stdlib/moeda.js +212 -0
- package/dist/stdlib/moeda.js.map +1 -0
- package/dist/stdlib/texto.d.ts +101 -0
- package/dist/stdlib/texto.d.ts.map +1 -0
- package/dist/stdlib/texto.js +205 -0
- package/dist/stdlib/texto.js.map +1 -0
- package/dist/stdlib/xml.d.ts +77 -0
- package/dist/stdlib/xml.d.ts.map +1 -0
- package/dist/stdlib/xml.js +212 -0
- package/dist/stdlib/xml.js.map +1 -0
- package/dist/ui/binding.d.ts +22 -0
- package/dist/ui/binding.d.ts.map +1 -0
- package/dist/ui/binding.js +62 -0
- package/dist/ui/binding.js.map +1 -0
- package/dist/ui/components/botao.d.ts +4 -0
- package/dist/ui/components/botao.d.ts.map +1 -0
- package/dist/ui/components/botao.js +4 -0
- package/dist/ui/components/botao.js.map +1 -0
- package/dist/ui/components/campo.d.ts +8 -0
- package/dist/ui/components/campo.d.ts.map +1 -0
- package/dist/ui/components/campo.js +9 -0
- package/dist/ui/components/campo.js.map +1 -0
- package/dist/ui/components/card.d.ts +4 -0
- package/dist/ui/components/card.d.ts.map +1 -0
- package/dist/ui/components/card.js +4 -0
- package/dist/ui/components/card.js.map +1 -0
- package/dist/ui/components/formulario.d.ts +4 -0
- package/dist/ui/components/formulario.d.ts.map +1 -0
- package/dist/ui/components/formulario.js +4 -0
- package/dist/ui/components/formulario.js.map +1 -0
- package/dist/ui/components/tabela.d.ts +3 -0
- package/dist/ui/components/tabela.d.ts.map +1 -0
- package/dist/ui/components/tabela.js +4 -0
- package/dist/ui/components/tabela.js.map +1 -0
- package/dist/ui/reactive.d.ts +61 -0
- package/dist/ui/reactive.d.ts.map +1 -0
- package/dist/ui/reactive.js +149 -0
- package/dist/ui/reactive.js.map +1 -0
- package/dist/ui/refs.d.ts +13 -0
- package/dist/ui/refs.d.ts.map +1 -0
- package/dist/ui/refs.js +32 -0
- package/dist/ui/refs.js.map +1 -0
- package/dist/ui/router.d.ts +39 -0
- package/dist/ui/router.d.ts.map +1 -0
- package/dist/ui/router.js +74 -0
- package/dist/ui/router.js.map +1 -0
- package/dist/ui/theme.d.ts +19 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +183 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/ui/ui_engine.d.ts +89 -0
- package/dist/ui/ui_engine.d.ts.map +1 -0
- package/dist/ui/ui_engine.js +406 -0
- package/dist/ui/ui_engine.js.map +1 -0
- package/dist/ui/virtual_list.d.ts +29 -0
- package/dist/ui/virtual_list.d.ts.map +1 -0
- package/dist/ui/virtual_list.js +88 -0
- package/dist/ui/virtual_list.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Biblioteca monetária para o runtime JADE
|
|
3
|
+
* Acessível via Moeda.metodo(args) no código JADE
|
|
4
|
+
*
|
|
5
|
+
* Toda aritmética é feita em centavos (inteiros) para eliminar
|
|
6
|
+
* erros de ponto flutuante IEEE 754 em operações monetárias.
|
|
7
|
+
*
|
|
8
|
+
* Exemplo do problema resolvido:
|
|
9
|
+
* 0.1 + 0.2 === 0.30000000000000004 ← JavaScript puro
|
|
10
|
+
* Moeda.somar(0.1, 0.2) === 0.30 ← esta lib
|
|
11
|
+
*/
|
|
12
|
+
export class MoedaStdlib {
|
|
13
|
+
// ── Conversão interna ─────────────────────────────────────
|
|
14
|
+
/**
|
|
15
|
+
* Converte reais para centavos inteiros
|
|
16
|
+
* 1234.50 → 123450
|
|
17
|
+
*/
|
|
18
|
+
static toCentavos(valor) {
|
|
19
|
+
return Math.round(valor * 100);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Converte centavos inteiros para reais
|
|
23
|
+
* 123450 → 1234.50
|
|
24
|
+
*/
|
|
25
|
+
static fromCentavos(centavos) {
|
|
26
|
+
return centavos / 100;
|
|
27
|
+
}
|
|
28
|
+
// ── Formatação ────────────────────────────────────────────
|
|
29
|
+
/**
|
|
30
|
+
* Formata valor como moeda brasileira
|
|
31
|
+
* 1234.5 → "R$ 1.234,50"
|
|
32
|
+
* -500 → "-R$ 500,00"
|
|
33
|
+
* 0 → "R$ 0,00"
|
|
34
|
+
*/
|
|
35
|
+
static formatarBRL(valor) {
|
|
36
|
+
const negativo = valor < 0;
|
|
37
|
+
const centavos = Math.round(Math.abs(valor) * 100);
|
|
38
|
+
const reais = Math.floor(centavos / 100);
|
|
39
|
+
const cents = centavos % 100;
|
|
40
|
+
const reaisStr = reais.toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
|
41
|
+
const resultado = `R$ ${reaisStr},${cents.toString().padStart(2, '0')}`;
|
|
42
|
+
return negativo ? '-' + resultado : resultado;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Formata valor em formato compacto para dashboards
|
|
46
|
+
* 1_500_000 → "R$ 1,5mi"
|
|
47
|
+
* 45_000 → "R$ 45mil"
|
|
48
|
+
* 1_500 → "R$ 1,5mil"
|
|
49
|
+
* 500 → "R$ 500,00"
|
|
50
|
+
*/
|
|
51
|
+
static formatarCompacto(valor) {
|
|
52
|
+
const negativo = valor < 0;
|
|
53
|
+
const abs = Math.abs(valor);
|
|
54
|
+
let resultado;
|
|
55
|
+
if (abs >= 1_000_000) {
|
|
56
|
+
const mi = abs / 1_000_000;
|
|
57
|
+
resultado = `R$ ${MoedaStdlib._compactarNumero(mi)}mi`;
|
|
58
|
+
}
|
|
59
|
+
else if (abs >= 1_000) {
|
|
60
|
+
const mil = abs / 1_000;
|
|
61
|
+
resultado = `R$ ${MoedaStdlib._compactarNumero(mil)}mil`;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
resultado = MoedaStdlib.formatarBRL(abs);
|
|
65
|
+
}
|
|
66
|
+
return negativo ? '-' + resultado : resultado;
|
|
67
|
+
}
|
|
68
|
+
static _compactarNumero(n) {
|
|
69
|
+
// Exibe até 1 casa decimal, sem zeros desnecessários
|
|
70
|
+
const arredondado = Math.round(n * 10) / 10;
|
|
71
|
+
return arredondado % 1 === 0
|
|
72
|
+
? arredondado.toFixed(0)
|
|
73
|
+
: arredondado.toFixed(1).replace('.', ',');
|
|
74
|
+
}
|
|
75
|
+
// ── Parsing ───────────────────────────────────────────────
|
|
76
|
+
/**
|
|
77
|
+
* Converte texto de moeda brasileira para número
|
|
78
|
+
* "R$ 1.234,50" → 1234.50
|
|
79
|
+
* "1.234,50" → 1234.50
|
|
80
|
+
* "1234,50" → 1234.50
|
|
81
|
+
* "-R$ 500,00" → -500.00
|
|
82
|
+
* Retorna NaN se o formato não for reconhecido
|
|
83
|
+
*/
|
|
84
|
+
static parseBRL(texto) {
|
|
85
|
+
const limpo = texto.trim().replace(/R\$\s?/g, '').trim();
|
|
86
|
+
const negativo = limpo.startsWith('-');
|
|
87
|
+
const sem_sinal = limpo.replace(/^-/, '').trim();
|
|
88
|
+
// Formato brasileiro: 1.234,50
|
|
89
|
+
const br = sem_sinal.replace(/\./g, '').replace(',', '.');
|
|
90
|
+
const valor = parseFloat(br);
|
|
91
|
+
if (isNaN(valor))
|
|
92
|
+
return NaN;
|
|
93
|
+
return negativo ? -valor : valor;
|
|
94
|
+
}
|
|
95
|
+
// ── Aritmética segura (via centavos) ──────────────────────
|
|
96
|
+
/**
|
|
97
|
+
* Soma monetária sem erro de ponto flutuante
|
|
98
|
+
* somar(0.1, 0.2) === 0.30 (não 0.30000000000000004)
|
|
99
|
+
*/
|
|
100
|
+
static somar(a, b) {
|
|
101
|
+
return MoedaStdlib.fromCentavos(MoedaStdlib.toCentavos(a) + MoedaStdlib.toCentavos(b));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Subtração monetária sem erro de ponto flutuante
|
|
105
|
+
*/
|
|
106
|
+
static subtrair(a, b) {
|
|
107
|
+
return MoedaStdlib.fromCentavos(MoedaStdlib.toCentavos(a) - MoedaStdlib.toCentavos(b));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Multiplica um valor monetário por um fator (ex: preço × quantidade)
|
|
111
|
+
* O fator pode ser decimal (ex: 1.5 unidades)
|
|
112
|
+
*/
|
|
113
|
+
static multiplicar(valor, fator) {
|
|
114
|
+
return MoedaStdlib.fromCentavos(Math.round(MoedaStdlib.toCentavos(valor) * fator));
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Divide um valor monetário por um divisor
|
|
118
|
+
* Arredonda para centavos (sem distribuição do resto — veja distribuir())
|
|
119
|
+
*/
|
|
120
|
+
static dividir(valor, divisor) {
|
|
121
|
+
if (divisor === 0)
|
|
122
|
+
return NaN;
|
|
123
|
+
return MoedaStdlib.fromCentavos(Math.round(MoedaStdlib.toCentavos(valor) / divisor));
|
|
124
|
+
}
|
|
125
|
+
// ── Comparações seguras ───────────────────────────────────
|
|
126
|
+
/**
|
|
127
|
+
* Compara dois valores monetários com precisão de centavos
|
|
128
|
+
* Evita problemas de 0.1 + 0.2 !== 0.3
|
|
129
|
+
*/
|
|
130
|
+
static igual(a, b) {
|
|
131
|
+
return MoedaStdlib.toCentavos(a) === MoedaStdlib.toCentavos(b);
|
|
132
|
+
}
|
|
133
|
+
static maior(a, b) {
|
|
134
|
+
return MoedaStdlib.toCentavos(a) > MoedaStdlib.toCentavos(b);
|
|
135
|
+
}
|
|
136
|
+
static menor(a, b) {
|
|
137
|
+
return MoedaStdlib.toCentavos(a) < MoedaStdlib.toCentavos(b);
|
|
138
|
+
}
|
|
139
|
+
static maiorOuIgual(a, b) {
|
|
140
|
+
return MoedaStdlib.toCentavos(a) >= MoedaStdlib.toCentavos(b);
|
|
141
|
+
}
|
|
142
|
+
static menorOuIgual(a, b) {
|
|
143
|
+
return MoedaStdlib.toCentavos(a) <= MoedaStdlib.toCentavos(b);
|
|
144
|
+
}
|
|
145
|
+
// ── Operações de negócio ──────────────────────────────────
|
|
146
|
+
/**
|
|
147
|
+
* Aplica desconto percentual sobre um valor
|
|
148
|
+
* descontar(100, 10) → 90.00 (10% de desconto)
|
|
149
|
+
*/
|
|
150
|
+
static descontar(valor, percentual) {
|
|
151
|
+
return MoedaStdlib.fromCentavos(Math.round(MoedaStdlib.toCentavos(valor) * (1 - percentual / 100)));
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Acrescenta percentual sobre um valor
|
|
155
|
+
* acrescentar(100, 10) → 110.00 (10% de acréscimo)
|
|
156
|
+
*/
|
|
157
|
+
static acrescentar(valor, percentual) {
|
|
158
|
+
return MoedaStdlib.fromCentavos(Math.round(MoedaStdlib.toCentavos(valor) * (1 + percentual / 100)));
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Calcula o valor de um percentual sobre um montante
|
|
162
|
+
* porcentagem(200, 15) → 30.00 (15% de R$200)
|
|
163
|
+
*/
|
|
164
|
+
static porcentagem(valor, percentual) {
|
|
165
|
+
return MoedaStdlib.fromCentavos(Math.round(MoedaStdlib.toCentavos(valor) * percentual / 100));
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Distribui um valor em N partes iguais, resolvendo o problema do centavo
|
|
169
|
+
* Os centavos restantes são distribuídos nas primeiras parcelas
|
|
170
|
+
*
|
|
171
|
+
* distribuir(10, 3) → [3.34, 3.33, 3.33] (não [3.33, 3.33, 3.33] = 9.99)
|
|
172
|
+
* distribuir(100, 4) → [25, 25, 25, 25]
|
|
173
|
+
*/
|
|
174
|
+
static distribuir(total, partes) {
|
|
175
|
+
if (partes <= 0)
|
|
176
|
+
return [];
|
|
177
|
+
const totalCentavos = MoedaStdlib.toCentavos(total);
|
|
178
|
+
const baseCentavos = Math.floor(totalCentavos / partes);
|
|
179
|
+
const resto = totalCentavos % partes;
|
|
180
|
+
return Array.from({ length: partes }, (_, i) => MoedaStdlib.fromCentavos(i < resto ? baseCentavos + 1 : baseCentavos));
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Calcula valor total de uma lista de itens (quantidade × preço unitário)
|
|
184
|
+
* Seguro contra ponto flutuante
|
|
185
|
+
*/
|
|
186
|
+
static totalItens(itens) {
|
|
187
|
+
const centavos = itens.reduce((acc, item) => acc + Math.round(MoedaStdlib.toCentavos(item.precoUnitario) * item.quantidade), 0);
|
|
188
|
+
return MoedaStdlib.fromCentavos(centavos);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
export const MoedaMetodos = {
|
|
192
|
+
toCentavos: MoedaStdlib.toCentavos,
|
|
193
|
+
fromCentavos: MoedaStdlib.fromCentavos,
|
|
194
|
+
formatarBRL: MoedaStdlib.formatarBRL,
|
|
195
|
+
formatarCompacto: MoedaStdlib.formatarCompacto,
|
|
196
|
+
parseBRL: MoedaStdlib.parseBRL,
|
|
197
|
+
somar: MoedaStdlib.somar,
|
|
198
|
+
subtrair: MoedaStdlib.subtrair,
|
|
199
|
+
multiplicar: MoedaStdlib.multiplicar,
|
|
200
|
+
dividir: MoedaStdlib.dividir,
|
|
201
|
+
igual: MoedaStdlib.igual,
|
|
202
|
+
maior: MoedaStdlib.maior,
|
|
203
|
+
menor: MoedaStdlib.menor,
|
|
204
|
+
maiorOuIgual: MoedaStdlib.maiorOuIgual,
|
|
205
|
+
menorOuIgual: MoedaStdlib.menorOuIgual,
|
|
206
|
+
descontar: MoedaStdlib.descontar,
|
|
207
|
+
acrescentar: MoedaStdlib.acrescentar,
|
|
208
|
+
porcentagem: MoedaStdlib.porcentagem,
|
|
209
|
+
distribuir: MoedaStdlib.distribuir,
|
|
210
|
+
totalItens: MoedaStdlib.totalItens,
|
|
211
|
+
};
|
|
212
|
+
//# sourceMappingURL=moeda.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moeda.js","sourceRoot":"","sources":["../../stdlib/moeda.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text standard library for Jade runtime
|
|
3
|
+
* Provides built-in methods for the 'texto' type
|
|
4
|
+
*/
|
|
5
|
+
export declare class TextoStdlib {
|
|
6
|
+
/**
|
|
7
|
+
* Converts string to uppercase
|
|
8
|
+
*/
|
|
9
|
+
static maiusculo(texto: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Converts string to lowercase
|
|
12
|
+
*/
|
|
13
|
+
static minusculo(texto: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Trims whitespace from both ends of string
|
|
16
|
+
*/
|
|
17
|
+
static aparar(texto: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Returns the length of the string (counts Unicode characters correctly)
|
|
20
|
+
*/
|
|
21
|
+
static tamanho(texto: string): number;
|
|
22
|
+
/**
|
|
23
|
+
* Remove acentos e diacríticos de uma string
|
|
24
|
+
* Ex: "João" → "Joao", "São Paulo" → "Sao Paulo"
|
|
25
|
+
*/
|
|
26
|
+
static semAcentos(texto: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Checks if string contains the specified substring
|
|
29
|
+
* @param ignorarAcentos Se verdadeiro, "Joao" encontra "João" (default: false)
|
|
30
|
+
*/
|
|
31
|
+
static contem(texto: string, busca: string, ignorarAcentos?: boolean): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Checks if string starts with the specified substring
|
|
34
|
+
*/
|
|
35
|
+
static comecaCom(texto: string, prefixo: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Checks if string ends with the specified substring
|
|
38
|
+
*/
|
|
39
|
+
static terminaCom(texto: string, sufixo: string): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Replaces all occurrences of a substring with another substring
|
|
42
|
+
*/
|
|
43
|
+
static substituir(texto: string, busca: string, substituto: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Splits string by a delimiter into an array of strings
|
|
46
|
+
*/
|
|
47
|
+
static dividir(texto: string, delimitador: string): string[];
|
|
48
|
+
/**
|
|
49
|
+
* Normalizes Unicode string to NFC form
|
|
50
|
+
*/
|
|
51
|
+
static normalizar(texto: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Aplica uma máscara de formatação a uma string de dígitos
|
|
54
|
+
* Use '#' para cada dígito esperado; demais caracteres são inseridos como literais
|
|
55
|
+
*
|
|
56
|
+
* Exemplos:
|
|
57
|
+
* aplicarMascara("12345678901", "###.###.###-##") → "123.456.789-01"
|
|
58
|
+
* aplicarMascara("00360305000104","##.###.###/####-##") → "00.360.305/0001-04"
|
|
59
|
+
* aplicarMascara("01310100", "#####-###") → "01310-100"
|
|
60
|
+
* aplicarMascara("11987654321", "(##) #####-####") → "(11) 98765-4321"
|
|
61
|
+
*/
|
|
62
|
+
static aplicarMascara(valor: string, mascara: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* Validates Brazilian CPF (Cadastro de Pessoas Físicas)
|
|
65
|
+
* Aceita CPF formatado (123.456.789-01) ou apenas dígitos
|
|
66
|
+
*/
|
|
67
|
+
static validarCPF(cpf: string): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Validates Brazilian CNPJ (Cadastro Nacional da Pessoa Jurídica)
|
|
70
|
+
* Aceita CNPJ formatado (00.360.305/0001-04) ou apenas dígitos
|
|
71
|
+
*/
|
|
72
|
+
static validarCNPJ(cnpj: string): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Formats Brazilian CEP (Código de Endereçamento Postal)
|
|
75
|
+
*/
|
|
76
|
+
static formatarCEP(cep: string): string;
|
|
77
|
+
/**
|
|
78
|
+
* Formats Brazilian phone number
|
|
79
|
+
* Returns (XX) XXXXX-XXXX for mobile or (XX) XXXX-XXXX for landline
|
|
80
|
+
*/
|
|
81
|
+
static formatarTelefone(telefone: string): string;
|
|
82
|
+
}
|
|
83
|
+
export declare const TextoMetodos: {
|
|
84
|
+
maiusculo: typeof TextoStdlib.maiusculo;
|
|
85
|
+
minusculo: typeof TextoStdlib.minusculo;
|
|
86
|
+
aparar: typeof TextoStdlib.aparar;
|
|
87
|
+
tamanho: typeof TextoStdlib.tamanho;
|
|
88
|
+
semAcentos: typeof TextoStdlib.semAcentos;
|
|
89
|
+
contem: typeof TextoStdlib.contem;
|
|
90
|
+
comecaCom: typeof TextoStdlib.comecaCom;
|
|
91
|
+
terminaCom: typeof TextoStdlib.terminaCom;
|
|
92
|
+
substituir: typeof TextoStdlib.substituir;
|
|
93
|
+
dividir: typeof TextoStdlib.dividir;
|
|
94
|
+
normalizar: typeof TextoStdlib.normalizar;
|
|
95
|
+
aplicarMascara: typeof TextoStdlib.aplicarMascara;
|
|
96
|
+
validarCPF: typeof TextoStdlib.validarCPF;
|
|
97
|
+
validarCNPJ: typeof TextoStdlib.validarCNPJ;
|
|
98
|
+
formatarCEP: typeof TextoStdlib.formatarCEP;
|
|
99
|
+
formatarTelefone: typeof TextoStdlib.formatarTelefone;
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=texto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texto.d.ts","sourceRoot":"","sources":["../../stdlib/texto.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,WAAW;IAEtB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIpC;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIrC;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIxC;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe,GAAG,OAAO;IAMrF;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAIzD;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAI3E;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAI5D;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIxC;;;;;;;;;OASG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAiB7D;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IA2BvC;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IA2BzC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAMvC;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;CASlD;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;CAiBxB,CAAC"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text standard library for Jade runtime
|
|
3
|
+
* Provides built-in methods for the 'texto' type
|
|
4
|
+
*/
|
|
5
|
+
export class TextoStdlib {
|
|
6
|
+
/**
|
|
7
|
+
* Converts string to uppercase
|
|
8
|
+
*/
|
|
9
|
+
static maiusculo(texto) {
|
|
10
|
+
return texto.toUpperCase();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Converts string to lowercase
|
|
14
|
+
*/
|
|
15
|
+
static minusculo(texto) {
|
|
16
|
+
return texto.toLowerCase();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Trims whitespace from both ends of string
|
|
20
|
+
*/
|
|
21
|
+
static aparar(texto) {
|
|
22
|
+
return texto.trim();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Returns the length of the string (counts Unicode characters correctly)
|
|
26
|
+
*/
|
|
27
|
+
static tamanho(texto) {
|
|
28
|
+
return Array.from(texto).length;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Remove acentos e diacríticos de uma string
|
|
32
|
+
* Ex: "João" → "Joao", "São Paulo" → "Sao Paulo"
|
|
33
|
+
*/
|
|
34
|
+
static semAcentos(texto) {
|
|
35
|
+
return texto.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Checks if string contains the specified substring
|
|
39
|
+
* @param ignorarAcentos Se verdadeiro, "Joao" encontra "João" (default: false)
|
|
40
|
+
*/
|
|
41
|
+
static contem(texto, busca, ignorarAcentos = false) {
|
|
42
|
+
if (!ignorarAcentos)
|
|
43
|
+
return texto.includes(busca);
|
|
44
|
+
const norm = (s) => TextoStdlib.semAcentos(s).toLowerCase();
|
|
45
|
+
return norm(texto).includes(norm(busca));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Checks if string starts with the specified substring
|
|
49
|
+
*/
|
|
50
|
+
static comecaCom(texto, prefixo) {
|
|
51
|
+
return texto.startsWith(prefixo);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Checks if string ends with the specified substring
|
|
55
|
+
*/
|
|
56
|
+
static terminaCom(texto, sufixo) {
|
|
57
|
+
return texto.endsWith(sufixo);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Replaces all occurrences of a substring with another substring
|
|
61
|
+
*/
|
|
62
|
+
static substituir(texto, busca, substituto) {
|
|
63
|
+
return texto.split(busca).join(substituto);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Splits string by a delimiter into an array of strings
|
|
67
|
+
*/
|
|
68
|
+
static dividir(texto, delimitador) {
|
|
69
|
+
return texto.split(delimitador);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Normalizes Unicode string to NFC form
|
|
73
|
+
*/
|
|
74
|
+
static normalizar(texto) {
|
|
75
|
+
return texto.normalize('NFC');
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Aplica uma máscara de formatação a uma string de dígitos
|
|
79
|
+
* Use '#' para cada dígito esperado; demais caracteres são inseridos como literais
|
|
80
|
+
*
|
|
81
|
+
* Exemplos:
|
|
82
|
+
* aplicarMascara("12345678901", "###.###.###-##") → "123.456.789-01"
|
|
83
|
+
* aplicarMascara("00360305000104","##.###.###/####-##") → "00.360.305/0001-04"
|
|
84
|
+
* aplicarMascara("01310100", "#####-###") → "01310-100"
|
|
85
|
+
* aplicarMascara("11987654321", "(##) #####-####") → "(11) 98765-4321"
|
|
86
|
+
*/
|
|
87
|
+
static aplicarMascara(valor, mascara) {
|
|
88
|
+
const digits = valor.replace(/\D/g, '');
|
|
89
|
+
let resultado = '';
|
|
90
|
+
let di = 0;
|
|
91
|
+
for (const ch of mascara) {
|
|
92
|
+
if (di >= digits.length)
|
|
93
|
+
break;
|
|
94
|
+
if (ch === '#') {
|
|
95
|
+
resultado += digits[di++];
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
resultado += ch;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return resultado;
|
|
102
|
+
}
|
|
103
|
+
// ── Validações e formatações brasileiras ─────────────────
|
|
104
|
+
/**
|
|
105
|
+
* Validates Brazilian CPF (Cadastro de Pessoas Físicas)
|
|
106
|
+
* Aceita CPF formatado (123.456.789-01) ou apenas dígitos
|
|
107
|
+
*/
|
|
108
|
+
static validarCPF(cpf) {
|
|
109
|
+
const cpfLimpo = cpf.replace(/\D/g, '');
|
|
110
|
+
if (cpfLimpo.length !== 11)
|
|
111
|
+
return false;
|
|
112
|
+
if (/^(\d)\1{10}$/.test(cpfLimpo))
|
|
113
|
+
return false;
|
|
114
|
+
let soma = 0;
|
|
115
|
+
let resto;
|
|
116
|
+
for (let i = 1; i <= 9; i++) {
|
|
117
|
+
soma += parseInt(cpfLimpo.substring(i - 1, i)) * (11 - i);
|
|
118
|
+
}
|
|
119
|
+
resto = (soma * 10) % 11;
|
|
120
|
+
if (resto === 10 || resto === 11)
|
|
121
|
+
resto = 0;
|
|
122
|
+
if (resto !== parseInt(cpfLimpo.substring(9, 10)))
|
|
123
|
+
return false;
|
|
124
|
+
soma = 0;
|
|
125
|
+
for (let i = 1; i <= 10; i++) {
|
|
126
|
+
soma += parseInt(cpfLimpo.substring(i - 1, i)) * (12 - i);
|
|
127
|
+
}
|
|
128
|
+
resto = (soma * 10) % 11;
|
|
129
|
+
if (resto === 10 || resto === 11)
|
|
130
|
+
resto = 0;
|
|
131
|
+
if (resto !== parseInt(cpfLimpo.substring(10, 11)))
|
|
132
|
+
return false;
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Validates Brazilian CNPJ (Cadastro Nacional da Pessoa Jurídica)
|
|
137
|
+
* Aceita CNPJ formatado (00.360.305/0001-04) ou apenas dígitos
|
|
138
|
+
*/
|
|
139
|
+
static validarCNPJ(cnpj) {
|
|
140
|
+
const cnpjLimpo = cnpj.replace(/\D/g, '');
|
|
141
|
+
if (cnpjLimpo.length !== 14)
|
|
142
|
+
return false;
|
|
143
|
+
if (/^(\d)\1{13}$/.test(cnpjLimpo))
|
|
144
|
+
return false;
|
|
145
|
+
let soma = 0;
|
|
146
|
+
let peso = 5;
|
|
147
|
+
for (let i = 0; i < 12; i++) {
|
|
148
|
+
soma += parseInt(cnpjLimpo[i]) * peso;
|
|
149
|
+
peso = peso === 2 ? 9 : peso - 1;
|
|
150
|
+
}
|
|
151
|
+
let resto = soma % 11;
|
|
152
|
+
const digito1 = resto < 2 ? 0 : 11 - resto;
|
|
153
|
+
soma = 0;
|
|
154
|
+
peso = 6;
|
|
155
|
+
for (let i = 0; i < 13; i++) {
|
|
156
|
+
soma += parseInt(cnpjLimpo[i]) * peso;
|
|
157
|
+
peso = peso === 2 ? 9 : peso - 1;
|
|
158
|
+
}
|
|
159
|
+
resto = soma % 11;
|
|
160
|
+
const digito2 = resto < 2 ? 0 : 11 - resto;
|
|
161
|
+
return parseInt(cnpjLimpo[12]) === digito1 && parseInt(cnpjLimpo[13]) === digito2;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Formats Brazilian CEP (Código de Endereçamento Postal)
|
|
165
|
+
*/
|
|
166
|
+
static formatarCEP(cep) {
|
|
167
|
+
const cepLimpo = cep.replace(/\D/g, '');
|
|
168
|
+
if (cepLimpo.length !== 8)
|
|
169
|
+
return cep;
|
|
170
|
+
return `${cepLimpo.substring(0, 5)}-${cepLimpo.substring(5)}`;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Formats Brazilian phone number
|
|
174
|
+
* Returns (XX) XXXXX-XXXX for mobile or (XX) XXXX-XXXX for landline
|
|
175
|
+
*/
|
|
176
|
+
static formatarTelefone(telefone) {
|
|
177
|
+
const telLimpo = telefone.replace(/\D/g, '');
|
|
178
|
+
if (telLimpo.length === 11) {
|
|
179
|
+
return `(${telLimpo.substring(0, 2)}) ${telLimpo.substring(2, 7)}-${telLimpo.substring(7)}`;
|
|
180
|
+
}
|
|
181
|
+
else if (telLimpo.length === 10) {
|
|
182
|
+
return `(${telLimpo.substring(0, 2)}) ${telLimpo.substring(2, 6)}-${telLimpo.substring(6)}`;
|
|
183
|
+
}
|
|
184
|
+
return telefone;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
export const TextoMetodos = {
|
|
188
|
+
maiusculo: TextoStdlib.maiusculo,
|
|
189
|
+
minusculo: TextoStdlib.minusculo,
|
|
190
|
+
aparar: TextoStdlib.aparar,
|
|
191
|
+
tamanho: TextoStdlib.tamanho,
|
|
192
|
+
semAcentos: TextoStdlib.semAcentos,
|
|
193
|
+
contem: TextoStdlib.contem,
|
|
194
|
+
comecaCom: TextoStdlib.comecaCom,
|
|
195
|
+
terminaCom: TextoStdlib.terminaCom,
|
|
196
|
+
substituir: TextoStdlib.substituir,
|
|
197
|
+
dividir: TextoStdlib.dividir,
|
|
198
|
+
normalizar: TextoStdlib.normalizar,
|
|
199
|
+
aplicarMascara: TextoStdlib.aplicarMascara,
|
|
200
|
+
validarCPF: TextoStdlib.validarCPF,
|
|
201
|
+
validarCNPJ: TextoStdlib.validarCNPJ,
|
|
202
|
+
formatarCEP: TextoStdlib.formatarCEP,
|
|
203
|
+
formatarTelefone: TextoStdlib.formatarTelefone,
|
|
204
|
+
};
|
|
205
|
+
//# sourceMappingURL=texto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texto.js","sourceRoot":"","sources":["../../stdlib/texto.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,WAAW;IAEtB;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAa;QAC5B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAa;QAC5B,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,KAAa;QACzB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,KAAa;QAC7B,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,KAAa,EAAE,KAAa,EAAE,iBAA0B,KAAK;QACzE,IAAI,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,KAAa,EAAE,OAAe;QAC7C,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAa,EAAE,MAAc;QAC7C,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAa,EAAE,KAAa,EAAE,UAAkB;QAChE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,KAAa,EAAE,WAAmB;QAC/C,OAAO,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,KAAa;QAC7B,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,cAAc,CAAC,KAAa,EAAE,OAAe;QAClD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM;gBAAE,MAAM;YAC/B,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,SAAS,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,SAAS,IAAI,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,4DAA4D;IAE5D;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,GAAW;QAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAExC,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAEhD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAAa,CAAC;QAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE;YAAE,KAAK,GAAG,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAEhE,IAAI,GAAG,CAAC,CAAC;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;QACzB,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE;YAAE,KAAK,GAAG,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAEjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAY;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAE1C,IAAI,SAAS,CAAC,MAAM,KAAK,EAAE;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;QAEjD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACtC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC;QAE3C,IAAI,GAAG,CAAC,CAAC;QACT,IAAI,GAAG,CAAC,CAAC;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACtC,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC;QAE3C,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC;IACpF,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,GAAW;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QACtC,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAgB;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAC3B,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YAClC,OAAO,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS,EAAE,WAAW,CAAC,SAAS;IAChC,SAAS,EAAE,WAAW,CAAC,SAAS;IAChC,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,MAAM,EAAE,WAAW,CAAC,MAAM;IAC1B,SAAS,EAAE,WAAW,CAAC,SAAS;IAChC,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,OAAO,EAAE,WAAW,CAAC,OAAO;IAC5B,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,cAAc,EAAE,WAAW,CAAC,cAAc;IAC1C,UAAU,EAAE,WAAW,CAAC,UAAU;IAClC,WAAW,EAAE,WAAW,CAAC,WAAW;IACpC,WAAW,EAAE,WAAW,CAAC,WAAW;IACpC,gBAAgB,EAAE,WAAW,CAAC,gBAAgB;CAC/C,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parser XML básico para o runtime JADE
|
|
3
|
+
* Suporta XML simples e NF-e brasileira (com namespaces xmlns)
|
|
4
|
+
* Acessível via XML.parse(texto) no código JADE
|
|
5
|
+
*/
|
|
6
|
+
export interface XMLNode {
|
|
7
|
+
tag: string;
|
|
8
|
+
atributos: Record<string, string>;
|
|
9
|
+
filhos: XMLNode[];
|
|
10
|
+
texto: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class XMLStdlib {
|
|
13
|
+
/**
|
|
14
|
+
* Faz parse de uma string XML e retorna um objeto navegável
|
|
15
|
+
* Tags com namespace (ex: nfe:det) são normalizadas para o nome local (det)
|
|
16
|
+
*/
|
|
17
|
+
static parse(xmlTexto: string): XMLNode;
|
|
18
|
+
/**
|
|
19
|
+
* Busca o primeiro elemento com a tag informada (busca em profundidade)
|
|
20
|
+
* Ignora prefixos de namespace: buscar(xml, 'det') encontra tanto <det> quanto <nfe:det>
|
|
21
|
+
*/
|
|
22
|
+
static buscar(no: XMLNode, tag: string): XMLNode | null;
|
|
23
|
+
/**
|
|
24
|
+
* Busca todos os elementos com a tag informada
|
|
25
|
+
* Ignora prefixos de namespace
|
|
26
|
+
*/
|
|
27
|
+
static buscarTodos(no: XMLNode, tag: string): XMLNode[];
|
|
28
|
+
/**
|
|
29
|
+
* Retorna o texto de um elemento filho pelo nome da tag
|
|
30
|
+
* Atalho para: xml.buscar(no, tag)?.texto ?? ''
|
|
31
|
+
*/
|
|
32
|
+
static texto(no: XMLNode, tag: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Converte XMLNode de volta para string XML
|
|
35
|
+
*/
|
|
36
|
+
static serializar(no: XMLNode): string;
|
|
37
|
+
/**
|
|
38
|
+
* Extrai campos principais de uma NF-e (Nota Fiscal Eletrônica)
|
|
39
|
+
* Funciona com NF-e com ou sem namespace (xmlns:nfe=...)
|
|
40
|
+
*/
|
|
41
|
+
static parsarNFe(xmlNFe: string): {
|
|
42
|
+
chave: string;
|
|
43
|
+
numero: string;
|
|
44
|
+
serie: string;
|
|
45
|
+
dataEmissao: string;
|
|
46
|
+
cnpjEmitente: string;
|
|
47
|
+
nomeEmitente: string;
|
|
48
|
+
cnpjDestinatario: string;
|
|
49
|
+
nomeDestinatario: string;
|
|
50
|
+
valorTotal: number;
|
|
51
|
+
itens: {
|
|
52
|
+
descricao: string;
|
|
53
|
+
quantidade: number;
|
|
54
|
+
valorUnitario: number;
|
|
55
|
+
valorTotal: number;
|
|
56
|
+
}[];
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Extrai o nome local de uma tag (remove prefixo de namespace)
|
|
60
|
+
* "nfe:det" → "det", "det" → "det"
|
|
61
|
+
*/
|
|
62
|
+
private static _localName;
|
|
63
|
+
private static _domToNode;
|
|
64
|
+
private static _buscarTodosRec;
|
|
65
|
+
private static _parseManual;
|
|
66
|
+
private static _parseElemento;
|
|
67
|
+
private static _parseAtributos;
|
|
68
|
+
}
|
|
69
|
+
export declare const XMLMetodos: {
|
|
70
|
+
parse: typeof XMLStdlib.parse;
|
|
71
|
+
buscar: typeof XMLStdlib.buscar;
|
|
72
|
+
buscarTodos: typeof XMLStdlib.buscarTodos;
|
|
73
|
+
texto: typeof XMLStdlib.texto;
|
|
74
|
+
serializar: typeof XMLStdlib.serializar;
|
|
75
|
+
parsarNFe: typeof XMLStdlib.parsarNFe;
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=xml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../../stdlib/xml.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,OAAO;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,SAAS;IAEpB;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAkBvC;;;OAGG;IACH,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IASvD;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE;IAMvD;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAI9C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM;IAetC;;;OAGG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG;QAChC,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC/F;IAmCD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAKzB,OAAO,CAAC,MAAM,CAAC,UAAU;IAyBzB,OAAO,CAAC,MAAM,CAAC,eAAe;IAO9B,OAAO,CAAC,MAAM,CAAC,YAAY;IAK3B,OAAO,CAAC,MAAM,CAAC,cAAc;IAyC7B,OAAO,CAAC,MAAM,CAAC,eAAe;CAY/B;AAED,eAAO,MAAM,UAAU;;;;;;;CAOtB,CAAC"}
|