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.
Files changed (86) hide show
  1. package/README.md +143 -0
  2. package/dist/consent/index.d.ts +9 -0
  3. package/dist/consent/index.d.ts.map +1 -0
  4. package/dist/consent/index.js +12 -0
  5. package/dist/consent/index.js.map +1 -0
  6. package/dist/consent/successResponses/index.d.ts +89 -0
  7. package/dist/consent/successResponses/index.d.ts.map +1 -0
  8. package/dist/consent/successResponses/index.js +6 -0
  9. package/dist/consent/successResponses/index.js.map +1 -0
  10. package/dist/consent/validators/createConsent.d.ts +31 -0
  11. package/dist/consent/validators/createConsent.d.ts.map +1 -0
  12. package/dist/consent/validators/createConsent.js +205 -0
  13. package/dist/consent/validators/createConsent.js.map +1 -0
  14. package/dist/consent/validators/createConsentExtensions.d.ts +33 -0
  15. package/dist/consent/validators/createConsentExtensions.d.ts.map +1 -0
  16. package/dist/consent/validators/createConsentExtensions.js +193 -0
  17. package/dist/consent/validators/createConsentExtensions.js.map +1 -0
  18. package/dist/index.d.ts +7 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +60 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/payments/index.d.ts +11 -0
  23. package/dist/payments/index.d.ts.map +1 -0
  24. package/dist/payments/index.js +18 -0
  25. package/dist/payments/index.js.map +1 -0
  26. package/dist/payments/successResponses/index.d.ts +129 -0
  27. package/dist/payments/successResponses/index.d.ts.map +1 -0
  28. package/dist/payments/successResponses/index.js +6 -0
  29. package/dist/payments/successResponses/index.js.map +1 -0
  30. package/dist/payments/validators/createPaymentConsent.d.ts +66 -0
  31. package/dist/payments/validators/createPaymentConsent.d.ts.map +1 -0
  32. package/dist/payments/validators/createPaymentConsent.js +508 -0
  33. package/dist/payments/validators/createPaymentConsent.js.map +1 -0
  34. package/dist/payments/validators/createPixPayment.d.ts +35 -0
  35. package/dist/payments/validators/createPixPayment.d.ts.map +1 -0
  36. package/dist/payments/validators/createPixPayment.js +342 -0
  37. package/dist/payments/validators/createPixPayment.js.map +1 -0
  38. package/dist/payments/validators/patchPixPayment.d.ts +40 -0
  39. package/dist/payments/validators/patchPixPayment.d.ts.map +1 -0
  40. package/dist/payments/validators/patchPixPayment.js +191 -0
  41. package/dist/payments/validators/patchPixPayment.js.map +1 -0
  42. package/dist/recurring-payments/index.d.ts +13 -0
  43. package/dist/recurring-payments/index.d.ts.map +1 -0
  44. package/dist/recurring-payments/index.js +17 -0
  45. package/dist/recurring-payments/index.js.map +1 -0
  46. package/dist/recurring-payments/successResponses/index.d.ts +175 -0
  47. package/dist/recurring-payments/successResponses/index.d.ts.map +1 -0
  48. package/dist/recurring-payments/successResponses/index.js +6 -0
  49. package/dist/recurring-payments/successResponses/index.js.map +1 -0
  50. package/dist/recurring-payments/validators/createRecurringConsent.d.ts +96 -0
  51. package/dist/recurring-payments/validators/createRecurringConsent.d.ts.map +1 -0
  52. package/dist/recurring-payments/validators/createRecurringConsent.js +663 -0
  53. package/dist/recurring-payments/validators/createRecurringConsent.js.map +1 -0
  54. package/dist/recurring-payments/validators/createRecurringRetryPixPayment.d.ts +19 -0
  55. package/dist/recurring-payments/validators/createRecurringRetryPixPayment.d.ts.map +1 -0
  56. package/dist/recurring-payments/validators/createRecurringRetryPixPayment.js +41 -0
  57. package/dist/recurring-payments/validators/createRecurringRetryPixPayment.js.map +1 -0
  58. package/dist/recurring-payments/validators/patchPixPayment.d.ts +38 -0
  59. package/dist/recurring-payments/validators/patchPixPayment.d.ts.map +1 -0
  60. package/dist/recurring-payments/validators/patchPixPayment.js +123 -0
  61. package/dist/recurring-payments/validators/patchPixPayment.js.map +1 -0
  62. package/dist/recurring-payments/validators/patchRecurringConsent.d.ts +87 -0
  63. package/dist/recurring-payments/validators/patchRecurringConsent.d.ts.map +1 -0
  64. package/dist/recurring-payments/validators/patchRecurringConsent.js +555 -0
  65. package/dist/recurring-payments/validators/patchRecurringConsent.js.map +1 -0
  66. package/dist/utils/openFinanceErrors.d.ts +84 -0
  67. package/dist/utils/openFinanceErrors.d.ts.map +1 -0
  68. package/dist/utils/openFinanceErrors.js +85 -0
  69. package/dist/utils/openFinanceErrors.js.map +1 -0
  70. package/dist/utils/paymentErrors.d.ts +9 -0
  71. package/dist/utils/paymentErrors.d.ts.map +1 -0
  72. package/dist/utils/paymentErrors.js +13 -0
  73. package/dist/utils/paymentErrors.js.map +1 -0
  74. package/dist/utils/successResponses.d.ts +52 -0
  75. package/dist/utils/successResponses.d.ts.map +1 -0
  76. package/dist/utils/successResponses.js +6 -0
  77. package/dist/utils/successResponses.js.map +1 -0
  78. package/dist/utils/validateHeaderParameters.d.ts +51 -0
  79. package/dist/utils/validateHeaderParameters.d.ts.map +1 -0
  80. package/dist/utils/validateHeaderParameters.js +142 -0
  81. package/dist/utils/validateHeaderParameters.js.map +1 -0
  82. package/dist/utils/validationHelpers.d.ts +89 -0
  83. package/dist/utils/validationHelpers.d.ts.map +1 -0
  84. package/dist/utils/validationHelpers.js +376 -0
  85. package/dist/utils/validationHelpers.js.map +1 -0
  86. 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":"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"}
@@ -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