opf-validator 0.0.1
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 +143 -0
- package/dist/consent/index.d.ts +9 -0
- package/dist/consent/index.d.ts.map +1 -0
- package/dist/consent/index.js +12 -0
- package/dist/consent/index.js.map +1 -0
- package/dist/consent/successResponses/index.d.ts +89 -0
- package/dist/consent/successResponses/index.d.ts.map +1 -0
- package/dist/consent/successResponses/index.js +6 -0
- package/dist/consent/successResponses/index.js.map +1 -0
- package/dist/consent/validators/createConsent.d.ts +31 -0
- package/dist/consent/validators/createConsent.d.ts.map +1 -0
- package/dist/consent/validators/createConsent.js +205 -0
- package/dist/consent/validators/createConsent.js.map +1 -0
- package/dist/consent/validators/createConsentExtensions.d.ts +33 -0
- package/dist/consent/validators/createConsentExtensions.d.ts.map +1 -0
- package/dist/consent/validators/createConsentExtensions.js +193 -0
- package/dist/consent/validators/createConsentExtensions.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/payments/index.d.ts +11 -0
- package/dist/payments/index.d.ts.map +1 -0
- package/dist/payments/index.js +18 -0
- package/dist/payments/index.js.map +1 -0
- package/dist/payments/successResponses/index.d.ts +129 -0
- package/dist/payments/successResponses/index.d.ts.map +1 -0
- package/dist/payments/successResponses/index.js +6 -0
- package/dist/payments/successResponses/index.js.map +1 -0
- package/dist/payments/validators/createPaymentConsent.d.ts +66 -0
- package/dist/payments/validators/createPaymentConsent.d.ts.map +1 -0
- package/dist/payments/validators/createPaymentConsent.js +508 -0
- package/dist/payments/validators/createPaymentConsent.js.map +1 -0
- package/dist/payments/validators/createPixPayment.d.ts +35 -0
- package/dist/payments/validators/createPixPayment.d.ts.map +1 -0
- package/dist/payments/validators/createPixPayment.js +342 -0
- package/dist/payments/validators/createPixPayment.js.map +1 -0
- package/dist/payments/validators/patchPixPayment.d.ts +40 -0
- package/dist/payments/validators/patchPixPayment.d.ts.map +1 -0
- package/dist/payments/validators/patchPixPayment.js +191 -0
- package/dist/payments/validators/patchPixPayment.js.map +1 -0
- package/dist/recurring-payments/index.d.ts +13 -0
- package/dist/recurring-payments/index.d.ts.map +1 -0
- package/dist/recurring-payments/index.js +17 -0
- package/dist/recurring-payments/index.js.map +1 -0
- package/dist/recurring-payments/successResponses/index.d.ts +175 -0
- package/dist/recurring-payments/successResponses/index.d.ts.map +1 -0
- package/dist/recurring-payments/successResponses/index.js +6 -0
- package/dist/recurring-payments/successResponses/index.js.map +1 -0
- package/dist/recurring-payments/validators/createRecurringConsent.d.ts +96 -0
- package/dist/recurring-payments/validators/createRecurringConsent.d.ts.map +1 -0
- package/dist/recurring-payments/validators/createRecurringConsent.js +663 -0
- package/dist/recurring-payments/validators/createRecurringConsent.js.map +1 -0
- package/dist/recurring-payments/validators/createRecurringRetryPixPayment.d.ts +19 -0
- package/dist/recurring-payments/validators/createRecurringRetryPixPayment.d.ts.map +1 -0
- package/dist/recurring-payments/validators/createRecurringRetryPixPayment.js +41 -0
- package/dist/recurring-payments/validators/createRecurringRetryPixPayment.js.map +1 -0
- package/dist/recurring-payments/validators/patchPixPayment.d.ts +38 -0
- package/dist/recurring-payments/validators/patchPixPayment.d.ts.map +1 -0
- package/dist/recurring-payments/validators/patchPixPayment.js +123 -0
- package/dist/recurring-payments/validators/patchPixPayment.js.map +1 -0
- package/dist/recurring-payments/validators/patchRecurringConsent.d.ts +87 -0
- package/dist/recurring-payments/validators/patchRecurringConsent.d.ts.map +1 -0
- package/dist/recurring-payments/validators/patchRecurringConsent.js +555 -0
- package/dist/recurring-payments/validators/patchRecurringConsent.js.map +1 -0
- package/dist/utils/openFinanceErrors.d.ts +84 -0
- package/dist/utils/openFinanceErrors.d.ts.map +1 -0
- package/dist/utils/openFinanceErrors.js +85 -0
- package/dist/utils/openFinanceErrors.js.map +1 -0
- package/dist/utils/paymentErrors.d.ts +9 -0
- package/dist/utils/paymentErrors.d.ts.map +1 -0
- package/dist/utils/paymentErrors.js +13 -0
- package/dist/utils/paymentErrors.js.map +1 -0
- package/dist/utils/successResponses.d.ts +52 -0
- package/dist/utils/successResponses.d.ts.map +1 -0
- package/dist/utils/successResponses.js +6 -0
- package/dist/utils/successResponses.js.map +1 -0
- package/dist/utils/validateHeaderParameters.d.ts +51 -0
- package/dist/utils/validateHeaderParameters.d.ts.map +1 -0
- package/dist/utils/validateHeaderParameters.js +142 -0
- package/dist/utils/validateHeaderParameters.js.map +1 -0
- package/dist/utils/validationHelpers.d.ts +89 -0
- package/dist/utils/validationHelpers.d.ts.map +1 -0
- package/dist/utils/validationHelpers.js +376 -0
- package/dist/utils/validationHelpers.js.map +1 -0
- package/package.json +20 -0
|
@@ -0,0 +1,555 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Validações para PatchRecurringConsent
|
|
4
|
+
* Segue as regras especificadas no Open Finance Brasil - API de Pagamentos Automáticos
|
|
5
|
+
*
|
|
6
|
+
* O PATCH permite três operações (oneOf):
|
|
7
|
+
* 1. ConsentEdition - Editar parâmetros do consentimento (apenas Pix Automático em status AUTHORISED)
|
|
8
|
+
* 2. ConsentRevocation - Revogar o consentimento (status AUTHORISED)
|
|
9
|
+
* 3. ConsentRejection - Rejeitar o consentimento (status não autorizado ainda)
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.validatePatchRecurringConsent = validatePatchRecurringConsent;
|
|
13
|
+
const openFinanceErrors_1 = require("../../utils/openFinanceErrors");
|
|
14
|
+
/**
|
|
15
|
+
* Tipos válidos de revogação
|
|
16
|
+
*/
|
|
17
|
+
const VALID_REVOCATION_CODES = [
|
|
18
|
+
"REVOGADO_RECEBEDOR",
|
|
19
|
+
"REVOGADO_USUARIO",
|
|
20
|
+
"NAO_INFORMADO",
|
|
21
|
+
];
|
|
22
|
+
/**
|
|
23
|
+
* Tipos válidos de rejeição
|
|
24
|
+
*/
|
|
25
|
+
const VALID_REJECTION_CODES = [
|
|
26
|
+
"NAO_INFORMADO",
|
|
27
|
+
"FALHA_INFRAESTRUTURA",
|
|
28
|
+
"TEMPO_EXPIRADO_AUTORIZACAO",
|
|
29
|
+
"REJEITADO_USUARIO",
|
|
30
|
+
"CONTAS_ORIGEM_DESTINO_IGUAIS",
|
|
31
|
+
"CONTA_NAO_PERMITE_PAGAMENTO",
|
|
32
|
+
"AUTENTICACAO_DIVERGENTE",
|
|
33
|
+
"FLUXO_NAO_SUPORTADO_PRODUTO",
|
|
34
|
+
];
|
|
35
|
+
/**
|
|
36
|
+
* Atores válidos para revogação/rejeição
|
|
37
|
+
*/
|
|
38
|
+
const VALID_REVOKED_BY = ["INICIADORA", "USUARIO", "DETENTORA"];
|
|
39
|
+
const VALID_REVOKED_FROM = ["INICIADORA", "DETENTORA"];
|
|
40
|
+
/**
|
|
41
|
+
* Tipos de conta válidos para consentimentos
|
|
42
|
+
*/
|
|
43
|
+
const VALID_ACCOUNT_TYPES = ["CACC", "SVGS", "TRAN"];
|
|
44
|
+
/**
|
|
45
|
+
* Intervalos válidos para Pix Automático
|
|
46
|
+
*/
|
|
47
|
+
const VALID_INTERVALS = ["SEMANAL", "MENSAL", "ANUAL", "SEMESTRAL", "TRIMESTRAL"];
|
|
48
|
+
/**
|
|
49
|
+
* Valida o payload de PATCH para consentimento recorrente
|
|
50
|
+
*/
|
|
51
|
+
function validatePatchRecurringConsent(payload) {
|
|
52
|
+
const errors = [];
|
|
53
|
+
// Validação: data deve existir
|
|
54
|
+
if (!payload.data) {
|
|
55
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data"));
|
|
56
|
+
return { isValid: false, errors };
|
|
57
|
+
}
|
|
58
|
+
const data = payload.data;
|
|
59
|
+
// Determinar qual tipo de operação está sendo realizada
|
|
60
|
+
const hasStatus = data.status !== undefined;
|
|
61
|
+
const hasRevocation = data.revocation !== undefined;
|
|
62
|
+
const hasRejection = data.rejection !== undefined;
|
|
63
|
+
const hasCreditors = data.creditors !== undefined;
|
|
64
|
+
// Validar que apenas um tipo de operação está presente
|
|
65
|
+
const operationCount = [
|
|
66
|
+
hasStatus && (hasRevocation || hasRejection),
|
|
67
|
+
hasCreditors && !hasStatus,
|
|
68
|
+
].filter(Boolean).length;
|
|
69
|
+
// Se tem status com revocation ou rejection, é uma operação de revogação/rejeição
|
|
70
|
+
if (hasStatus && (hasRevocation || hasRejection)) {
|
|
71
|
+
return validateRevocationOrRejection(data);
|
|
72
|
+
}
|
|
73
|
+
// Se tem creditors, é uma operação de edição
|
|
74
|
+
if (hasCreditors) {
|
|
75
|
+
return validateEdition(data);
|
|
76
|
+
}
|
|
77
|
+
// Se nenhum dos tipos foi detectado, retornar erro
|
|
78
|
+
errors.push((0, openFinanceErrors_1.createError)("PARAMETRO_INVALIDO", "Parâmetro inválido.", "Deve ser fornecido um dos: creditors (para edição), status com revocation/rejection (para revogação/rejeição)"));
|
|
79
|
+
return { isValid: false, errors };
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Valida operação de edição de consentimento
|
|
83
|
+
* Regra: Apenas Pix Automático em status AUTHORISED pode ser editado
|
|
84
|
+
*/
|
|
85
|
+
function validateEdition(data) {
|
|
86
|
+
const errors = [];
|
|
87
|
+
// creditors é obrigatório
|
|
88
|
+
if (!data.creditors) {
|
|
89
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("creditors"));
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
const creditorsErrors = validateEditCreditors(data.creditors);
|
|
93
|
+
errors.push(...creditorsErrors);
|
|
94
|
+
}
|
|
95
|
+
// loggedUser é obrigatório para edição (exceto se for apenas editar creditors.name)
|
|
96
|
+
if (data.expirationDateTime || data.recurringConfiguration) {
|
|
97
|
+
if (!data.loggedUser) {
|
|
98
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("loggedUser"));
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
const loggedUserErrors = validateEditLoggedUser(data.loggedUser);
|
|
102
|
+
errors.push(...loggedUserErrors);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// businessEntity é opcional
|
|
106
|
+
if (data.businessEntity) {
|
|
107
|
+
const businessEntityErrors = validateEditBusinessEntity(data.businessEntity);
|
|
108
|
+
errors.push(...businessEntityErrors);
|
|
109
|
+
}
|
|
110
|
+
// riskSignals é obrigatório para editar parâmetros do consentimento
|
|
111
|
+
// (exceto para edição exclusiva de creditors.name)
|
|
112
|
+
if (data.expirationDateTime ||
|
|
113
|
+
data.recurringConfiguration ||
|
|
114
|
+
(data.creditors && data.creditors.some((c) => Object.keys(c).some(k => k !== "name")))) {
|
|
115
|
+
if (!data.riskSignals) {
|
|
116
|
+
errors.push((0, openFinanceErrors_1.createError)("FALTAM_SINAIS_OBRIGATORIOS_PLATAFORMA", "Os sinais obrigatórios para a plataforma do usuário não foram enviados em sua totalidade.", "riskSignals é obrigatório ao editar parâmetros do consentimento"));
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
const riskSignalsErrors = validateRiskSignals(data.riskSignals);
|
|
120
|
+
errors.push(...riskSignalsErrors);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// expirationDateTime é opcional
|
|
124
|
+
if (data.expirationDateTime) {
|
|
125
|
+
const expirationErrors = validateEditExpirationDateTime(data.expirationDateTime);
|
|
126
|
+
errors.push(...expirationErrors);
|
|
127
|
+
}
|
|
128
|
+
// recurringConfiguration é opcional
|
|
129
|
+
if (data.recurringConfiguration) {
|
|
130
|
+
const recurringConfigErrors = validateEditRecurringConfiguration(data.recurringConfiguration);
|
|
131
|
+
errors.push(...recurringConfigErrors);
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
isValid: errors.length === 0,
|
|
135
|
+
errors,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Valida creditors na edição
|
|
140
|
+
* Apenas o campo 'name' pode ser editado
|
|
141
|
+
*/
|
|
142
|
+
function validateEditCreditors(creditors) {
|
|
143
|
+
const errors = [];
|
|
144
|
+
if (!Array.isArray(creditors)) {
|
|
145
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("creditors", "Deve ser um array"));
|
|
146
|
+
return errors;
|
|
147
|
+
}
|
|
148
|
+
if (creditors.length === 0) {
|
|
149
|
+
errors.push((0, openFinanceErrors_1.createError)("PARAMETRO_INVALIDO", "Parâmetro inválido.", "Array de creditors deve conter pelo menos um item"));
|
|
150
|
+
return errors;
|
|
151
|
+
}
|
|
152
|
+
creditors.forEach((creditor, index) => {
|
|
153
|
+
if (typeof creditor !== "object" || creditor === null) {
|
|
154
|
+
errors.push((0, openFinanceErrors_1.createError)("PARAMETRO_INVALIDO", "Parâmetro inválido.", `creditors[${index}]: Deve ser um objeto`));
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// Validar que apenas 'name' pode estar presente
|
|
158
|
+
const allowedKeys = ["name"];
|
|
159
|
+
const providedKeys = Object.keys(creditor);
|
|
160
|
+
const invalidKeys = providedKeys.filter(k => !allowedKeys.includes(k));
|
|
161
|
+
if (invalidKeys.length > 0) {
|
|
162
|
+
errors.push((0, openFinanceErrors_1.createError)("CAMPO_NAO_PERMITIDO", "O(s) campo(s) solicitado(s) para edição não podem ser editados.", `creditors[${index}]: Campos ${invalidKeys.join(", ")} não podem ser editados. Apenas 'name' é permitido.`));
|
|
163
|
+
}
|
|
164
|
+
// Validar 'name' se presente
|
|
165
|
+
if (creditor.name !== undefined) {
|
|
166
|
+
if (typeof creditor.name !== "string") {
|
|
167
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`creditors[${index}].name`, "Deve ser uma string"));
|
|
168
|
+
}
|
|
169
|
+
else if (creditor.name.length > 120) {
|
|
170
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`creditors[${index}].name`, "Deve ter no máximo 120 caracteres"));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
return errors;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Valida LoggedUser na edição
|
|
178
|
+
*/
|
|
179
|
+
function validateEditLoggedUser(loggedUser) {
|
|
180
|
+
const errors = [];
|
|
181
|
+
if (typeof loggedUser !== "object" || loggedUser === null) {
|
|
182
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("loggedUser", "Deve ser um objeto"));
|
|
183
|
+
return errors;
|
|
184
|
+
}
|
|
185
|
+
if (!loggedUser.document) {
|
|
186
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("loggedUser.document"));
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
const documentErrors = validateEditLoggedUserDocument(loggedUser.document);
|
|
190
|
+
errors.push(...documentErrors);
|
|
191
|
+
}
|
|
192
|
+
return errors;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Valida documento do LoggedUser na edição
|
|
196
|
+
*/
|
|
197
|
+
function validateEditLoggedUserDocument(document) {
|
|
198
|
+
const errors = [];
|
|
199
|
+
if (typeof document !== "object" || document === null) {
|
|
200
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("loggedUser.document", "Deve ser um objeto"));
|
|
201
|
+
return errors;
|
|
202
|
+
}
|
|
203
|
+
if (!document.identification) {
|
|
204
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("loggedUser.document.identification"));
|
|
205
|
+
}
|
|
206
|
+
else if (!/^\d{11}$/.test(document.identification)) {
|
|
207
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("loggedUser.document.identification", "CPF deve ter 11 dígitos"));
|
|
208
|
+
}
|
|
209
|
+
if (!document.rel) {
|
|
210
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("loggedUser.document.rel"));
|
|
211
|
+
}
|
|
212
|
+
else if (document.rel !== "CPF") {
|
|
213
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("loggedUser.document.rel", "Deve ser 'CPF'"));
|
|
214
|
+
}
|
|
215
|
+
return errors;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Valida BusinessEntity na edição
|
|
219
|
+
*/
|
|
220
|
+
function validateEditBusinessEntity(businessEntity) {
|
|
221
|
+
const errors = [];
|
|
222
|
+
if (typeof businessEntity !== "object" || businessEntity === null) {
|
|
223
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("businessEntity", "Deve ser um objeto"));
|
|
224
|
+
return errors;
|
|
225
|
+
}
|
|
226
|
+
if (!businessEntity.document) {
|
|
227
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("businessEntity.document"));
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
const documentErrors = validateEditBusinessEntityDocument(businessEntity.document);
|
|
231
|
+
errors.push(...documentErrors);
|
|
232
|
+
}
|
|
233
|
+
return errors;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Valida documento de BusinessEntity na edição
|
|
237
|
+
*/
|
|
238
|
+
function validateEditBusinessEntityDocument(document) {
|
|
239
|
+
const errors = [];
|
|
240
|
+
if (typeof document !== "object" || document === null) {
|
|
241
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("businessEntity.document", "Deve ser um objeto"));
|
|
242
|
+
return errors;
|
|
243
|
+
}
|
|
244
|
+
if (!document.identification) {
|
|
245
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("businessEntity.document.identification"));
|
|
246
|
+
}
|
|
247
|
+
else if (!/^[0-9A-Z]{12}[0-9]{2}$/.test(document.identification)) {
|
|
248
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("businessEntity.document.identification", "CNPJ deve ter 14 caracteres"));
|
|
249
|
+
}
|
|
250
|
+
if (!document.rel) {
|
|
251
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("businessEntity.document.rel"));
|
|
252
|
+
}
|
|
253
|
+
else if (document.rel !== "CNPJ") {
|
|
254
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("businessEntity.document.rel", "Deve ser 'CNPJ'"));
|
|
255
|
+
}
|
|
256
|
+
return errors;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Valida RiskSignals para edição
|
|
260
|
+
*/
|
|
261
|
+
function validateRiskSignals(riskSignals) {
|
|
262
|
+
const errors = [];
|
|
263
|
+
if (typeof riskSignals !== "object" || riskSignals === null) {
|
|
264
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("riskSignals", "Deve ser um objeto"));
|
|
265
|
+
return errors;
|
|
266
|
+
}
|
|
267
|
+
// deviceId é obrigatório
|
|
268
|
+
if (!riskSignals.deviceId) {
|
|
269
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("riskSignals.deviceId"));
|
|
270
|
+
}
|
|
271
|
+
else if (typeof riskSignals.deviceId !== "string") {
|
|
272
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("riskSignals.deviceId", "Deve ser uma string"));
|
|
273
|
+
}
|
|
274
|
+
// osVersion é obrigatório
|
|
275
|
+
if (!riskSignals.osVersion) {
|
|
276
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("riskSignals.osVersion"));
|
|
277
|
+
}
|
|
278
|
+
else if (typeof riskSignals.osVersion !== "string") {
|
|
279
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("riskSignals.osVersion", "Deve ser uma string"));
|
|
280
|
+
}
|
|
281
|
+
// userTimeZoneOffset é obrigatório
|
|
282
|
+
if (!riskSignals.userTimeZoneOffset) {
|
|
283
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("riskSignals.userTimeZoneOffset"));
|
|
284
|
+
}
|
|
285
|
+
else if (!/^[+-]\d{2}(:\d{2})?$/.test(riskSignals.userTimeZoneOffset)) {
|
|
286
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("riskSignals.userTimeZoneOffset", "Deve estar no formato UTC offset (±hh:mm ou ±hh)"));
|
|
287
|
+
}
|
|
288
|
+
// language é obrigatório
|
|
289
|
+
if (!riskSignals.language) {
|
|
290
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("riskSignals.language"));
|
|
291
|
+
}
|
|
292
|
+
else if (!/^[a-z]{2}$/.test(riskSignals.language)) {
|
|
293
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("riskSignals.language", "Deve ser um código ISO 639-1 (ex: 'pt', 'en')"));
|
|
294
|
+
}
|
|
295
|
+
// screenDimensions é obrigatório
|
|
296
|
+
if (!riskSignals.screenDimensions) {
|
|
297
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("riskSignals.screenDimensions"));
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
const screenErrors = validateScreenDimensions(riskSignals.screenDimensions);
|
|
301
|
+
errors.push(...screenErrors);
|
|
302
|
+
}
|
|
303
|
+
// accountTenure é obrigatório
|
|
304
|
+
if (!riskSignals.accountTenure) {
|
|
305
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("riskSignals.accountTenure"));
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
const datePattern = /^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$/;
|
|
309
|
+
if (!datePattern.test(riskSignals.accountTenure)) {
|
|
310
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("riskSignals.accountTenure", "Deve estar no formato YYYY-MM-DD"));
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return errors;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Valida dimensões de tela
|
|
317
|
+
*/
|
|
318
|
+
function validateScreenDimensions(dimensions) {
|
|
319
|
+
const errors = [];
|
|
320
|
+
if (typeof dimensions !== "object" || dimensions === null) {
|
|
321
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("screenDimensions", "Deve ser um objeto"));
|
|
322
|
+
return errors;
|
|
323
|
+
}
|
|
324
|
+
if (dimensions.height === undefined) {
|
|
325
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("screenDimensions.height"));
|
|
326
|
+
}
|
|
327
|
+
else if (!Number.isInteger(dimensions.height) || dimensions.height <= 0) {
|
|
328
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("screenDimensions.height", "Deve ser um número inteiro positivo"));
|
|
329
|
+
}
|
|
330
|
+
if (dimensions.width === undefined) {
|
|
331
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("screenDimensions.width"));
|
|
332
|
+
}
|
|
333
|
+
else if (!Number.isInteger(dimensions.width) || dimensions.width <= 0) {
|
|
334
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("screenDimensions.width", "Deve ser um número inteiro positivo"));
|
|
335
|
+
}
|
|
336
|
+
return errors;
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Valida expirationDateTime na edição
|
|
340
|
+
*/
|
|
341
|
+
function validateEditExpirationDateTime(expirationDateTime) {
|
|
342
|
+
const errors = [];
|
|
343
|
+
if (typeof expirationDateTime !== "string") {
|
|
344
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("expirationDateTime", "Deve ser uma string"));
|
|
345
|
+
return errors;
|
|
346
|
+
}
|
|
347
|
+
const rfc3339Pattern = /^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$/;
|
|
348
|
+
if (!rfc3339Pattern.test(expirationDateTime)) {
|
|
349
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("expirationDateTime", "Deve estar no formato RFC-3339 com timezone UTC (YYYY-MM-DDTHH:mm:ssZ)"));
|
|
350
|
+
return errors;
|
|
351
|
+
}
|
|
352
|
+
// Validar que é às 23:59:59
|
|
353
|
+
const hourMatch = expirationDateTime.match(/T(\d{2}):(\d{2}):(\d{2})Z$/);
|
|
354
|
+
if (hourMatch) {
|
|
355
|
+
const hour = hourMatch[1];
|
|
356
|
+
const minute = hourMatch[2];
|
|
357
|
+
const second = hourMatch[3];
|
|
358
|
+
if (hour !== "23" || minute !== "59" || second !== "59") {
|
|
359
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("expirationDateTime", "Para edição, deve ser às 23:59:59 (UTC)"));
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
return errors;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Valida recurringConfiguration na edição
|
|
366
|
+
*/
|
|
367
|
+
function validateEditRecurringConfiguration(config) {
|
|
368
|
+
const errors = [];
|
|
369
|
+
if (typeof config !== "object" || config === null) {
|
|
370
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("recurringConfiguration", "Deve ser um objeto"));
|
|
371
|
+
return errors;
|
|
372
|
+
}
|
|
373
|
+
// Apenas automatic pode ser editado
|
|
374
|
+
if (config.automatic) {
|
|
375
|
+
const automaticErrors = validateEditAutomaticConfig(config.automatic);
|
|
376
|
+
errors.push(...automaticErrors);
|
|
377
|
+
}
|
|
378
|
+
else if (config.sweeping || config.vrp) {
|
|
379
|
+
errors.push((0, openFinanceErrors_1.createError)("CAMPO_NAO_PERMITIDO", "O(s) campo(s) solicitado(s) para edição não podem ser editados.", "Apenas configuração 'automatic' pode ser editada"));
|
|
380
|
+
}
|
|
381
|
+
return errors;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Valida configuração de Pix Automático na edição
|
|
385
|
+
*/
|
|
386
|
+
function validateEditAutomaticConfig(automatic) {
|
|
387
|
+
const errors = [];
|
|
388
|
+
if (typeof automatic !== "object" || automatic === null) {
|
|
389
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("automatic", "Deve ser um objeto"));
|
|
390
|
+
return errors;
|
|
391
|
+
}
|
|
392
|
+
// maximumVariableAmount é opcional
|
|
393
|
+
if (automatic.maximumVariableAmount !== undefined) {
|
|
394
|
+
if (typeof automatic.maximumVariableAmount !== "string") {
|
|
395
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("maximumVariableAmount", "Deve ser uma string"));
|
|
396
|
+
}
|
|
397
|
+
else {
|
|
398
|
+
const amountPattern = /^(\d{1,16}\.\d{2})$/;
|
|
399
|
+
if (!amountPattern.test(automatic.maximumVariableAmount)) {
|
|
400
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("maximumVariableAmount", "Deve ser um valor monetário no formato 0000000.00"));
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return errors;
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Valida operação de revogação ou rejeição
|
|
408
|
+
*/
|
|
409
|
+
function validateRevocationOrRejection(data) {
|
|
410
|
+
const errors = [];
|
|
411
|
+
const isRevocation = data.status === "REVOKED" && data.revocation;
|
|
412
|
+
const isRejection = data.status === "REJECTED" && data.rejection;
|
|
413
|
+
if (!isRevocation && !isRejection) {
|
|
414
|
+
errors.push((0, openFinanceErrors_1.createError)("PARAMETRO_INVALIDO", "Parâmetro inválido.", "Para revogação: status deve ser 'REVOKED' com objeto 'revocation'. Para rejeição: status deve ser 'REJECTED' com objeto 'rejection'"));
|
|
415
|
+
return { isValid: false, errors };
|
|
416
|
+
}
|
|
417
|
+
if (isRevocation) {
|
|
418
|
+
return validateRevocation(data);
|
|
419
|
+
}
|
|
420
|
+
if (isRejection) {
|
|
421
|
+
return validateRejection(data);
|
|
422
|
+
}
|
|
423
|
+
return { isValid: false, errors };
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Valida revogação de consentimento
|
|
427
|
+
*/
|
|
428
|
+
function validateRevocation(data) {
|
|
429
|
+
const errors = [];
|
|
430
|
+
const revocation = data.revocation;
|
|
431
|
+
if (typeof revocation !== "object" || revocation === null) {
|
|
432
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("revocation", "Deve ser um objeto"));
|
|
433
|
+
return { isValid: false, errors };
|
|
434
|
+
}
|
|
435
|
+
// revokedBy é obrigatório
|
|
436
|
+
if (!revocation.revokedBy) {
|
|
437
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("revocation.revokedBy"));
|
|
438
|
+
}
|
|
439
|
+
else if (!VALID_REVOKED_BY.includes(revocation.revokedBy)) {
|
|
440
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("revocation.revokedBy", `Deve ser um dos: ${VALID_REVOKED_BY.join(", ")}`));
|
|
441
|
+
}
|
|
442
|
+
// revokedFrom é obrigatório
|
|
443
|
+
if (!revocation.revokedFrom) {
|
|
444
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("revocation.revokedFrom"));
|
|
445
|
+
}
|
|
446
|
+
else if (!VALID_REVOKED_FROM.includes(revocation.revokedFrom)) {
|
|
447
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("revocation.revokedFrom", `Deve ser um dos: ${VALID_REVOKED_FROM.join(", ")}`));
|
|
448
|
+
}
|
|
449
|
+
// reason é obrigatório
|
|
450
|
+
if (!revocation.reason) {
|
|
451
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("revocation.reason"));
|
|
452
|
+
}
|
|
453
|
+
else {
|
|
454
|
+
const reasonErrors = validateRevocationReason(revocation.reason);
|
|
455
|
+
errors.push(...reasonErrors);
|
|
456
|
+
}
|
|
457
|
+
return {
|
|
458
|
+
isValid: errors.length === 0,
|
|
459
|
+
errors,
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Valida motivo de revogação
|
|
464
|
+
*/
|
|
465
|
+
function validateRevocationReason(reason) {
|
|
466
|
+
const errors = [];
|
|
467
|
+
if (typeof reason !== "object" || reason === null) {
|
|
468
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("reason", "Deve ser um objeto"));
|
|
469
|
+
return errors;
|
|
470
|
+
}
|
|
471
|
+
// code é obrigatório
|
|
472
|
+
if (!reason.code) {
|
|
473
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("reason.code"));
|
|
474
|
+
}
|
|
475
|
+
else if (!VALID_REVOCATION_CODES.includes(reason.code)) {
|
|
476
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("reason.code", `Deve ser um dos: ${VALID_REVOCATION_CODES.join(", ")}`));
|
|
477
|
+
}
|
|
478
|
+
// detail é obrigatório
|
|
479
|
+
if (!reason.detail) {
|
|
480
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("reason.detail"));
|
|
481
|
+
}
|
|
482
|
+
else if (typeof reason.detail !== "string") {
|
|
483
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("reason.detail", "Deve ser uma string"));
|
|
484
|
+
}
|
|
485
|
+
else if (reason.detail.length > 2048) {
|
|
486
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("reason.detail", "Deve ter no máximo 2048 caracteres"));
|
|
487
|
+
}
|
|
488
|
+
return errors;
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Valida rejeição de consentimento
|
|
492
|
+
*/
|
|
493
|
+
function validateRejection(data) {
|
|
494
|
+
const errors = [];
|
|
495
|
+
const rejection = data.rejection;
|
|
496
|
+
if (typeof rejection !== "object" || rejection === null) {
|
|
497
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("rejection", "Deve ser um objeto"));
|
|
498
|
+
return { isValid: false, errors };
|
|
499
|
+
}
|
|
500
|
+
// rejectedBy é obrigatório
|
|
501
|
+
if (!rejection.rejectedBy) {
|
|
502
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("rejection.rejectedBy"));
|
|
503
|
+
}
|
|
504
|
+
else if (!VALID_REVOKED_BY.includes(rejection.rejectedBy)) {
|
|
505
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("rejection.rejectedBy", `Deve ser um dos: ${VALID_REVOKED_BY.join(", ")}`));
|
|
506
|
+
}
|
|
507
|
+
// rejectedFrom é obrigatório
|
|
508
|
+
if (!rejection.rejectedFrom) {
|
|
509
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("rejection.rejectedFrom"));
|
|
510
|
+
}
|
|
511
|
+
else if (!VALID_REVOKED_FROM.includes(rejection.rejectedFrom)) {
|
|
512
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("rejection.rejectedFrom", `Deve ser um dos: ${VALID_REVOKED_FROM.join(", ")}`));
|
|
513
|
+
}
|
|
514
|
+
// reason é obrigatório
|
|
515
|
+
if (!rejection.reason) {
|
|
516
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("rejection.reason"));
|
|
517
|
+
}
|
|
518
|
+
else {
|
|
519
|
+
const reasonErrors = validateRejectionReason(rejection.reason);
|
|
520
|
+
errors.push(...reasonErrors);
|
|
521
|
+
}
|
|
522
|
+
return {
|
|
523
|
+
isValid: errors.length === 0,
|
|
524
|
+
errors,
|
|
525
|
+
};
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* Valida motivo de rejeição
|
|
529
|
+
*/
|
|
530
|
+
function validateRejectionReason(reason) {
|
|
531
|
+
const errors = [];
|
|
532
|
+
if (typeof reason !== "object" || reason === null) {
|
|
533
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("reason", "Deve ser um objeto"));
|
|
534
|
+
return errors;
|
|
535
|
+
}
|
|
536
|
+
// code é obrigatório
|
|
537
|
+
if (!reason.code) {
|
|
538
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("reason.code"));
|
|
539
|
+
}
|
|
540
|
+
else if (!VALID_REJECTION_CODES.includes(reason.code)) {
|
|
541
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("reason.code", `Deve ser um dos: ${VALID_REJECTION_CODES.join(", ")}`));
|
|
542
|
+
}
|
|
543
|
+
// detail é obrigatório
|
|
544
|
+
if (!reason.detail) {
|
|
545
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("reason.detail"));
|
|
546
|
+
}
|
|
547
|
+
else if (typeof reason.detail !== "string") {
|
|
548
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("reason.detail", "Deve ser uma string"));
|
|
549
|
+
}
|
|
550
|
+
else if (reason.detail.length > 2048) {
|
|
551
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("reason.detail", "Deve ter no máximo 2048 caracteres"));
|
|
552
|
+
}
|
|
553
|
+
return errors;
|
|
554
|
+
}
|
|
555
|
+
//# sourceMappingURL=patchRecurringConsent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patchRecurringConsent.js","sourceRoot":"","sources":["../../../src/recurring-payments/validators/patchRecurringConsent.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAk6BD,sEAA6B;AAh6B/B,qEAKuC;AAEvC;;GAEG;AACH,MAAM,sBAAsB,GAAG;IAC7B,oBAAoB;IACpB,kBAAkB;IAClB,eAAe;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,qBAAqB,GAAG;IAC5B,eAAe;IACf,sBAAsB;IACtB,4BAA4B;IAC5B,mBAAmB;IACnB,8BAA8B;IAC9B,6BAA6B;IAC7B,yBAAyB;IACzB,6BAA6B;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAChE,MAAM,kBAAkB,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAEvD;;GAEG;AACH,MAAM,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAErD;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AA6ElF;;GAEG;AACH,SAAS,6BAA6B,CACpC,OAAY;IAEZ,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,+BAA+B;IAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1B,wDAAwD;IACxD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;IAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;IAClD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;IAElD,uDAAuD;IACvD,MAAM,cAAc,GAAG;QACrB,SAAS,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC;QAC5C,YAAY,IAAI,CAAC,SAAS;KAC3B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAEzB,kFAAkF;IAClF,IAAI,SAAS,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC,EAAE,CAAC;QACjD,OAAO,6BAA6B,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,6CAA6C;IAC7C,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,mDAAmD;IACnD,MAAM,CAAC,IAAI,CACT,IAAA,+BAAW,EACT,oBAAoB,EACpB,qBAAqB,EACrB,+GAA+G,CAChH,CACF,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,IAAS;IAChC,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,0BAA0B;IAC1B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,MAAM,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;IAClC,CAAC;IAED,oFAAoF;IACpF,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,YAAY,CAAC,CACnD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7E,MAAM,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;IACvC,CAAC;IAED,oEAAoE;IACpE,mDAAmD;IACnD,IACE,IAAI,CAAC,kBAAkB;QACvB,IAAI,CAAC,sBAAsB;QAC3B,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,EAC3F,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CACT,IAAA,+BAAW,EACT,uCAAuC,EACvC,2FAA2F,EAC3F,iEAAiE,CAClE,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChE,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5B,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjF,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;IACnC,CAAC;IAED,oCAAoC;IACpC,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,MAAM,qBAAqB,GAAG,kCAAkC,CAC9D,IAAI,CAAC,sBAAsB,CAC5B,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;IACxC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAAC,SAAc;IAC3C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAClE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CACT,IAAA,+BAAW,EACT,oBAAoB,EACpB,qBAAqB,EACrB,mDAAmD,CACpD,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QACpC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,IAAI,CACT,IAAA,+BAAW,EACT,oBAAoB,EACpB,qBAAqB,EACrB,aAAa,KAAK,uBAAuB,CAC1C,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,gDAAgD;QAChD,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CACT,IAAA,+BAAW,EACT,qBAAqB,EACrB,iEAAiE,EACjE,aAAa,KAAK,aAAa,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,qDAAqD,CAC3G,CACF,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,aAAa,KAAK,QAAQ,EAC1B,qBAAqB,CACtB,CACF,CAAC;YACJ,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,aAAa,KAAK,QAAQ,EAC1B,mCAAmC,CACpC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,UAAe;IAC7C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,YAAY,EAAE,oBAAoB,CAAC,CACpE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,GAAG,8BAA8B,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CAAC,QAAa;IACnD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAC7E,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,oCAAoC,CAAC,CAC3E,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,oCAAoC,EACpC,yBAAyB,CAC1B,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,CAChE,CAAC;IACJ,CAAC;SAAM,IAAI,QAAQ,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,yBAAyB,EACzB,gBAAgB,CACjB,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B,CAAC,cAAmB;IACrD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAClE,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CACxE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,CAChE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,GAAG,kCAAkC,CACvD,cAAc,CAAC,QAAQ,CACxB,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,kCAAkC,CAAC,QAAa;IACvD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,CACjF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,wCAAwC,CAAC,CAC/E,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,wCAAwC,EACxC,6BAA6B,CAC9B,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,6BAA6B,CAAC,CACpE,CAAC;IACJ,CAAC;SAAM,IAAI,QAAQ,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,6BAA6B,EAC7B,iBAAiB,CAClB,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,WAAgB;IAC3C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,aAAa,EAAE,oBAAoB,CAAC,CACrE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC5E,CAAC;SAAM,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,sBAAsB,EAAE,qBAAqB,CAAC,CAC/E,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAC7E,CAAC;SAAM,IAAI,OAAO,WAAW,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAChF,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,gCAAgC,CAAC,CACvE,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACxE,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,gCAAgC,EAChC,kDAAkD,CACnD,CACF,CAAC;IACJ,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC5E,CAAC;SAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,sBAAsB,EACtB,+CAA+C,CAChD,CACF,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,8BAA8B,CAAC,CACrE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,wBAAwB,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAC/B,CAAC;IAED,8BAA8B;IAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,2BAA2B,CAAC,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GACf,sDAAsD,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,2BAA2B,EAC3B,kCAAkC,CACnC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,UAAe;IAC/C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAC1E,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,yBAAyB,CAAC,CAChE,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC1E,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,yBAAyB,EACzB,qCAAqC,CACtC,CACF,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAC/D,CAAC;IACJ,CAAC;SAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QACxE,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,wBAAwB,EACxB,qCAAqC,CACtC,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CAAC,kBAAuB;IAC7D,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,oBAAoB,EACpB,qBAAqB,CACtB,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,cAAc,GAClB,wGAAwG,CAAC;IAE3G,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,oBAAoB,EACpB,wEAAwE,CACzE,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4BAA4B;IAC5B,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACzE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAE5B,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,oBAAoB,EACpB,yCAAyC,CAC1C,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,kCAAkC,CAAC,MAAW;IACrD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,wBAAwB,EACxB,oBAAoB,CACrB,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oCAAoC;IACpC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,eAAe,GAAG,2BAA2B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;IAClC,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CACT,IAAA,+BAAW,EACT,qBAAqB,EACrB,iEAAiE,EACjE,kDAAkD,CACnD,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,SAAc;IACjD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CACnE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mCAAmC;IACnC,IAAI,SAAS,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;QAClD,IAAI,OAAO,SAAS,CAAC,qBAAqB,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,uBAAuB,EACvB,qBAAqB,CACtB,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,qBAAqB,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBACzD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,uBAAuB,EACvB,mDAAmD,CACpD,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,6BAA6B,CAAC,IAAS;IAC9C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC;IAEjE,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CACT,IAAA,+BAAW,EACT,oBAAoB,EACpB,qBAAqB,EACrB,qIAAqI,CACtI,CACF,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAS;IACnC,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IAEnC,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,YAAY,EAAE,oBAAoB,CAAC,CACpE,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC5E,CAAC;SAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,sBAAsB,EACtB,oBAAoB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClD,CACF,CAAC;IACJ,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC9E,CAAC;SAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChE,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,wBAAwB,EACxB,oBAAoB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpD,CACF,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,wBAAwB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,MAAW;IAC3C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAChE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,aAAa,EACb,oBAAoB,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxD,CACF,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,eAAe,EAAE,qBAAqB,CAAC,CACxE,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,eAAe,EACf,oCAAoC,CACrC,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAS;IAClC,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAEjC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CACnE,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpC,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAC5E,CAAC;SAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,sBAAsB,EACtB,oBAAoB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClD,CACF,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC9E,CAAC;SAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QAChE,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,wBAAwB,EACxB,oBAAoB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpD,CACF,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,MAAM,YAAY,GAAG,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAW;IAC1C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAChE,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,aAAa,EACb,oBAAoB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvD,CACF,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,eAAe,EAAE,qBAAqB,CAAC,CACxE,CAAC;IACJ,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,eAAe,EACf,oCAAoC,CACrC,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Padrão de Erros do Open Finance Brasil
|
|
3
|
+
* Seguindo a especificação da API de Consentimentos
|
|
4
|
+
*/
|
|
5
|
+
export interface ErrorDetail {
|
|
6
|
+
code: string;
|
|
7
|
+
title: string;
|
|
8
|
+
detail: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ValidationResult {
|
|
11
|
+
isValid: boolean;
|
|
12
|
+
errors: ErrorDetail[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Códigos de erro para CreateConsent e CreateConsentExtensions
|
|
16
|
+
*/
|
|
17
|
+
export declare const ConsentErrorCodes: {
|
|
18
|
+
DEPENDE_MULTIPLA_ALCADA: {
|
|
19
|
+
title: string;
|
|
20
|
+
code: string;
|
|
21
|
+
};
|
|
22
|
+
ESTADO_CONSENTIMENTO_INVALIDO: {
|
|
23
|
+
title: string;
|
|
24
|
+
code: string;
|
|
25
|
+
};
|
|
26
|
+
DATA_EXPIRACAO_INVALIDA: {
|
|
27
|
+
title: string;
|
|
28
|
+
code: string;
|
|
29
|
+
};
|
|
30
|
+
ERRO_NAO_MAPEADO: {
|
|
31
|
+
title: string;
|
|
32
|
+
code: string;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Códigos de erro para CreatePaymentConsent
|
|
37
|
+
*/
|
|
38
|
+
export declare const PaymentConsentErrorCodes: {
|
|
39
|
+
FORMA_PAGAMENTO_INVALIDA: {
|
|
40
|
+
title: string;
|
|
41
|
+
code: string;
|
|
42
|
+
};
|
|
43
|
+
DATA_PAGAMENTO_INVALIDA: {
|
|
44
|
+
title: string;
|
|
45
|
+
code: string;
|
|
46
|
+
};
|
|
47
|
+
DETALHE_PAGAMENTO_INVALIDO: {
|
|
48
|
+
title: string;
|
|
49
|
+
code: string;
|
|
50
|
+
};
|
|
51
|
+
PARAMETRO_NAO_INFORMADO: {
|
|
52
|
+
title: string;
|
|
53
|
+
code: string;
|
|
54
|
+
};
|
|
55
|
+
PARAMETRO_INVALIDO: {
|
|
56
|
+
title: string;
|
|
57
|
+
code: string;
|
|
58
|
+
};
|
|
59
|
+
ERRO_IDEMPOTENCIA: {
|
|
60
|
+
title: string;
|
|
61
|
+
code: string;
|
|
62
|
+
};
|
|
63
|
+
NAO_INFORMADO: {
|
|
64
|
+
title: string;
|
|
65
|
+
code: string;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Factory function para criar erros padronizados
|
|
70
|
+
*/
|
|
71
|
+
export declare function createError(code: string, title: string, detail: string): ErrorDetail;
|
|
72
|
+
/**
|
|
73
|
+
* Mapa de tipos de erros comuns
|
|
74
|
+
*/
|
|
75
|
+
export declare const CommonErrors: {
|
|
76
|
+
PARAMETRO_NAO_INFORMADO: (fieldName: string) => ErrorDetail;
|
|
77
|
+
PARAMETRO_INVALIDO: (fieldName: string, reason: string) => ErrorDetail;
|
|
78
|
+
DETALHE_PAGAMENTO_INVALIDO: (fieldName: string, reason: string) => ErrorDetail;
|
|
79
|
+
DATA_EXPIRACAO_INVALIDA: () => ErrorDetail;
|
|
80
|
+
FORMA_PAGAMENTO_INVALIDA: (paymentType: string) => ErrorDetail;
|
|
81
|
+
DATA_PAGAMENTO_INVALIDA: () => ErrorDetail;
|
|
82
|
+
ERRO_NAO_MAPEADO: (reason: string) => ErrorDetail;
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=openFinanceErrors.d.ts.map
|