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,342 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Validações para CreatePixPayment
|
|
4
|
+
* Segue as regras especificadas no Open Finance Brasil para Criação de Pagamento PIX
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.validateCreatePixPayment = validateCreatePixPayment;
|
|
8
|
+
const openFinanceErrors_1 = require("../../utils/openFinanceErrors");
|
|
9
|
+
// Valid local instruments for PIX
|
|
10
|
+
const VALID_LOCAL_INSTRUMENTS = ["MANU", "DICT", "QRDN", "QRES", "INIC", "APES", "APDN"];
|
|
11
|
+
// Valid authorization flows
|
|
12
|
+
const VALID_AUTHORISATION_FLOWS = ["HYBRID_FLOW", "CIBA_FLOW", "FIDO_FLOW"];
|
|
13
|
+
// Account types
|
|
14
|
+
const VALID_ACCOUNT_TYPES = [
|
|
15
|
+
"CACC",
|
|
16
|
+
"SVGS",
|
|
17
|
+
"TRAD",
|
|
18
|
+
"ODSL",
|
|
19
|
+
"OTHR",
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* Valida o payload de criação de pagamento PIX
|
|
23
|
+
*/
|
|
24
|
+
function validateCreatePixPayment(payload) {
|
|
25
|
+
const errors = [];
|
|
26
|
+
// Validação: data deve existir e ser um array
|
|
27
|
+
if (!payload.data) {
|
|
28
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data"));
|
|
29
|
+
return { isValid: false, errors };
|
|
30
|
+
}
|
|
31
|
+
if (!Array.isArray(payload.data)) {
|
|
32
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data", "deve ser um array"));
|
|
33
|
+
return { isValid: false, errors };
|
|
34
|
+
}
|
|
35
|
+
if (payload.data.length === 0) {
|
|
36
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data", "deve conter pelo menos 1 item"));
|
|
37
|
+
return { isValid: false, errors };
|
|
38
|
+
}
|
|
39
|
+
// Validar cada item do array
|
|
40
|
+
payload.data.forEach((item, index) => {
|
|
41
|
+
const itemErrors = validatePixPaymentData(item, index);
|
|
42
|
+
errors.push(...itemErrors);
|
|
43
|
+
});
|
|
44
|
+
return {
|
|
45
|
+
isValid: errors.length === 0,
|
|
46
|
+
errors,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Valida um item individual de pagamento PIX
|
|
51
|
+
*/
|
|
52
|
+
function validatePixPaymentData(data, index) {
|
|
53
|
+
const errors = [];
|
|
54
|
+
const prefix = `data[${index}]`;
|
|
55
|
+
if (typeof data !== "object" || data === null) {
|
|
56
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(prefix, "deve ser um objeto"));
|
|
57
|
+
return errors;
|
|
58
|
+
}
|
|
59
|
+
// endToEndId é obrigatório
|
|
60
|
+
if (!data.endToEndId) {
|
|
61
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.endToEndId`));
|
|
62
|
+
}
|
|
63
|
+
else if (typeof data.endToEndId !== "string") {
|
|
64
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.endToEndId`, "deve ser uma string"));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
const endToEndErrors = validateEndToEndId(data.endToEndId, prefix);
|
|
68
|
+
errors.push(...endToEndErrors);
|
|
69
|
+
}
|
|
70
|
+
// localInstrument é obrigatório
|
|
71
|
+
if (!data.localInstrument) {
|
|
72
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.localInstrument`));
|
|
73
|
+
}
|
|
74
|
+
else if (typeof data.localInstrument !== "string") {
|
|
75
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.localInstrument`, "deve ser uma string"));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
if (!VALID_LOCAL_INSTRUMENTS.includes(data.localInstrument)) {
|
|
79
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.localInstrument`, `deve ser um de: ${VALID_LOCAL_INSTRUMENTS.join(", ")}`));
|
|
80
|
+
}
|
|
81
|
+
// Validações condicionais baseadas em localInstrument
|
|
82
|
+
if (data.localInstrument === "MANU") {
|
|
83
|
+
// MANU não deve ter proxy
|
|
84
|
+
if (data.proxy) {
|
|
85
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.proxy`, "não deve ser preenchido quando localInstrument é MANU"));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
else if (["INIC", "DICT", "APDN", "APES", "QRDN", "QRES"].includes(data.localInstrument)) {
|
|
89
|
+
// Estes instrumentos devem ter proxy
|
|
90
|
+
if (!data.proxy) {
|
|
91
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.proxy`));
|
|
92
|
+
}
|
|
93
|
+
else if (typeof data.proxy !== "string") {
|
|
94
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.proxy`, "deve ser uma string"));
|
|
95
|
+
}
|
|
96
|
+
else if (data.proxy.length > 77) {
|
|
97
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.proxy`, "deve ter no máximo 77 caracteres"));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// QRCode obrigatório para QRDN, APDN, QRES, APES
|
|
101
|
+
if (["QRDN", "APDN", "QRES", "APES"].includes(data.localInstrument)) {
|
|
102
|
+
if (!data.qrCode) {
|
|
103
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.qrCode`));
|
|
104
|
+
}
|
|
105
|
+
else if (typeof data.qrCode !== "string") {
|
|
106
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.qrCode`, "deve ser uma string"));
|
|
107
|
+
}
|
|
108
|
+
else if (data.qrCode.length > 512) {
|
|
109
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.qrCode`, "deve ter no máximo 512 caracteres"));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
// payment é obrigatório
|
|
114
|
+
if (!data.payment) {
|
|
115
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.payment`));
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
const paymentErrors = validatePaymentPix(data.payment, prefix);
|
|
119
|
+
errors.push(...paymentErrors);
|
|
120
|
+
}
|
|
121
|
+
// creditorAccount é obrigatório
|
|
122
|
+
if (!data.creditorAccount) {
|
|
123
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.creditorAccount`));
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
const accountErrors = validateCreditorAccount(data.creditorAccount, prefix);
|
|
127
|
+
errors.push(...accountErrors);
|
|
128
|
+
}
|
|
129
|
+
// cnpjInitiator é obrigatório
|
|
130
|
+
if (!data.cnpjInitiator) {
|
|
131
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.cnpjInitiator`));
|
|
132
|
+
}
|
|
133
|
+
else if (typeof data.cnpjInitiator !== "string") {
|
|
134
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.cnpjInitiator`, "deve ser uma string"));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
const cnpjErrors = validateCnpj(data.cnpjInitiator, `${prefix}.cnpjInitiator`);
|
|
138
|
+
errors.push(...cnpjErrors);
|
|
139
|
+
}
|
|
140
|
+
// remittanceInformation (opcional)
|
|
141
|
+
if (data.remittanceInformation) {
|
|
142
|
+
if (typeof data.remittanceInformation !== "string") {
|
|
143
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.remittanceInformation`, "deve ser uma string"));
|
|
144
|
+
}
|
|
145
|
+
else if (data.remittanceInformation.length > 140) {
|
|
146
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.remittanceInformation`, "deve ter no máximo 140 caracteres"));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// authorisationFlow (opcional)
|
|
150
|
+
if (data.authorisationFlow) {
|
|
151
|
+
if (typeof data.authorisationFlow !== "string") {
|
|
152
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.authorisationFlow`, "deve ser uma string"));
|
|
153
|
+
}
|
|
154
|
+
else if (!VALID_AUTHORISATION_FLOWS.includes(data.authorisationFlow)) {
|
|
155
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.authorisationFlow`, `deve ser um de: ${VALID_AUTHORISATION_FLOWS.join(", ")}`));
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// transactionIdentification (opcional)
|
|
159
|
+
if (data.transactionIdentification) {
|
|
160
|
+
if (typeof data.transactionIdentification !== "string") {
|
|
161
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.transactionIdentification`, "deve ser uma string"));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// consentId (opcional)
|
|
165
|
+
if (data.consentId) {
|
|
166
|
+
if (typeof data.consentId !== "string") {
|
|
167
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.consentId`, "deve ser uma string"));
|
|
168
|
+
}
|
|
169
|
+
else if (data.consentId.length > 256) {
|
|
170
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.consentId`, "deve ter no máximo 256 caracteres"));
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
// Validar padrão URN
|
|
174
|
+
const urnPattern = /^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$/;
|
|
175
|
+
if (!urnPattern.test(data.consentId)) {
|
|
176
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.consentId`, "deve estar no formato URN válido"));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return errors;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Valida EndToEndId
|
|
184
|
+
*/
|
|
185
|
+
function validateEndToEndId(endToEndId, prefix) {
|
|
186
|
+
const errors = [];
|
|
187
|
+
if (endToEndId.length !== 32) {
|
|
188
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.endToEndId`, "deve ter exatamente 32 caracteres"));
|
|
189
|
+
}
|
|
190
|
+
// Padrão: E + 8 chars + 4 dígitos + data/hora + 11 chars
|
|
191
|
+
const pattern = /^([E])([0-9A-Z]{8})([0-9]{4})(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])(2[0-3]|[01][0-9])([0-5][0-9])([a-zA-Z0-9]{11})$/;
|
|
192
|
+
if (!pattern.test(endToEndId)) {
|
|
193
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.endToEndId`, "deve estar no formato ExxxxxxxxyyyyMMddHHmmkkkkkkkkkkk (case-sensitive)"));
|
|
194
|
+
}
|
|
195
|
+
return errors;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Valida objeto Payment PIX
|
|
199
|
+
*/
|
|
200
|
+
function validatePaymentPix(payment, prefix) {
|
|
201
|
+
const errors = [];
|
|
202
|
+
if (typeof payment !== "object" || payment === null) {
|
|
203
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.payment`, "deve ser um objeto"));
|
|
204
|
+
return errors;
|
|
205
|
+
}
|
|
206
|
+
// amount é obrigatório
|
|
207
|
+
if (!payment.amount) {
|
|
208
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.payment.amount`));
|
|
209
|
+
}
|
|
210
|
+
else if (typeof payment.amount !== "string") {
|
|
211
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.payment.amount`, "deve ser uma string"));
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
const amountErrors = validateAmount(payment.amount, `${prefix}.payment.amount`);
|
|
215
|
+
errors.push(...amountErrors);
|
|
216
|
+
}
|
|
217
|
+
// currency é obrigatório
|
|
218
|
+
if (!payment.currency) {
|
|
219
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.payment.currency`));
|
|
220
|
+
}
|
|
221
|
+
else if (typeof payment.currency !== "string") {
|
|
222
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.payment.currency`, "deve ser uma string"));
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
if (payment.currency.length !== 3) {
|
|
226
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.payment.currency`, "deve ter exatamente 3 caracteres"));
|
|
227
|
+
}
|
|
228
|
+
if (!/^[A-Z]{3}$/.test(payment.currency)) {
|
|
229
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.payment.currency`, "deve ser um código ISO-4217 (3 letras maiúsculas, ex: BRL)"));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return errors;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Valida Amount
|
|
236
|
+
*/
|
|
237
|
+
function validateAmount(amount, fieldName) {
|
|
238
|
+
const errors = [];
|
|
239
|
+
if (amount.length < 4 || amount.length > 19) {
|
|
240
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(fieldName, "deve ter entre 4 e 19 caracteres"));
|
|
241
|
+
}
|
|
242
|
+
// Padrão: até 16 dígitos antes do ponto e 2 depois
|
|
243
|
+
const amountPattern = /^(\d{1,16}\.\d{2})$/;
|
|
244
|
+
if (!amountPattern.test(amount)) {
|
|
245
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(fieldName, "deve estar no formato: número com até 16 dígitos antes do ponto e 2 dígitos após (ex: 100000.12)"));
|
|
246
|
+
}
|
|
247
|
+
return errors;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Valida CreditorAccount
|
|
251
|
+
*/
|
|
252
|
+
function validateCreditorAccount(account, prefix) {
|
|
253
|
+
const errors = [];
|
|
254
|
+
if (typeof account !== "object" || account === null) {
|
|
255
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.creditorAccount`, "deve ser um objeto"));
|
|
256
|
+
return errors;
|
|
257
|
+
}
|
|
258
|
+
// ispb é obrigatório
|
|
259
|
+
if (!account.ispb) {
|
|
260
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.creditorAccount.ispb`));
|
|
261
|
+
}
|
|
262
|
+
else if (typeof account.ispb !== "string") {
|
|
263
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.creditorAccount.ispb`, "deve ser uma string"));
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
const ispbErrors = validateIspb(account.ispb, `${prefix}.creditorAccount.ispb`);
|
|
267
|
+
errors.push(...ispbErrors);
|
|
268
|
+
}
|
|
269
|
+
// number é obrigatório
|
|
270
|
+
if (!account.number) {
|
|
271
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.creditorAccount.number`));
|
|
272
|
+
}
|
|
273
|
+
else if (typeof account.number !== "string") {
|
|
274
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.creditorAccount.number`, "deve ser uma string"));
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
if (account.number.length < 1 || account.number.length > 20) {
|
|
278
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.creditorAccount.number`, "deve ter entre 1 e 20 caracteres"));
|
|
279
|
+
}
|
|
280
|
+
if (!/^\d{1,20}$/.test(account.number)) {
|
|
281
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.creditorAccount.number`, "deve conter apenas dígitos"));
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// accountType é obrigatório
|
|
285
|
+
if (!account.accountType) {
|
|
286
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.creditorAccount.accountType`));
|
|
287
|
+
}
|
|
288
|
+
else if (typeof account.accountType !== "string") {
|
|
289
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.creditorAccount.accountType`, "deve ser uma string"));
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
if (!VALID_ACCOUNT_TYPES.includes(account.accountType)) {
|
|
293
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.creditorAccount.accountType`, `deve ser um de: ${VALID_ACCOUNT_TYPES.join(", ")}`));
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// issuer (opcional) - obrigatório para CACC e SVGS
|
|
297
|
+
if (account.issuer) {
|
|
298
|
+
if (typeof account.issuer !== "string") {
|
|
299
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.creditorAccount.issuer`, "deve ser uma string"));
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
if (account.issuer.length < 1 || account.issuer.length > 4) {
|
|
303
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.creditorAccount.issuer`, "deve ter entre 1 e 4 caracteres"));
|
|
304
|
+
}
|
|
305
|
+
if (!/^\d{1,4}$/.test(account.issuer)) {
|
|
306
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(`${prefix}.creditorAccount.issuer`, "deve conter apenas dígitos"));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
else if (["CACC", "SVGS"].includes(account.accountType)) {
|
|
311
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO(`${prefix}.creditorAccount.issuer`));
|
|
312
|
+
}
|
|
313
|
+
return errors;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Valida ISPB
|
|
317
|
+
*/
|
|
318
|
+
function validateIspb(ispb, fieldName) {
|
|
319
|
+
const errors = [];
|
|
320
|
+
if (ispb.length !== 8) {
|
|
321
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(fieldName, "deve ter exatamente 8 caracteres"));
|
|
322
|
+
}
|
|
323
|
+
if (!/^[0-9A-Z]{8}$/.test(ispb)) {
|
|
324
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(fieldName, "deve conter apenas números e letras maiúsculas"));
|
|
325
|
+
}
|
|
326
|
+
return errors;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Valida CNPJ
|
|
330
|
+
*/
|
|
331
|
+
function validateCnpj(cnpj, fieldName) {
|
|
332
|
+
const errors = [];
|
|
333
|
+
if (cnpj.length !== 14) {
|
|
334
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(fieldName, "deve ter exatamente 14 caracteres"));
|
|
335
|
+
}
|
|
336
|
+
const pattern = /^[0-9A-Z]{12}[0-9]{2}$/;
|
|
337
|
+
if (!pattern.test(cnpj)) {
|
|
338
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(fieldName, "deve estar no padrão [0-9A-Z]{12}[0-9]{2}"));
|
|
339
|
+
}
|
|
340
|
+
return errors;
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=createPixPayment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createPixPayment.js","sourceRoot":"","sources":["../../../src/payments/validators/createPixPayment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validações para PatchPixPayment
|
|
3
|
+
* Segue as regras especificadas no Open Finance Brasil para Cancelamento de Pagamento PIX
|
|
4
|
+
*/
|
|
5
|
+
import { ErrorDetail, ValidationResult } from "../../utils/openFinanceErrors";
|
|
6
|
+
interface PatchPixPaymentDocument {
|
|
7
|
+
identification: string;
|
|
8
|
+
rel: string;
|
|
9
|
+
}
|
|
10
|
+
interface PatchPixPaymentCancelledBy {
|
|
11
|
+
document: PatchPixPaymentDocument;
|
|
12
|
+
}
|
|
13
|
+
interface PatchPixPaymentCancellation {
|
|
14
|
+
cancelledBy: PatchPixPaymentCancelledBy;
|
|
15
|
+
}
|
|
16
|
+
interface PatchPixPaymentData {
|
|
17
|
+
status: string;
|
|
18
|
+
cancellation: PatchPixPaymentCancellation;
|
|
19
|
+
}
|
|
20
|
+
interface PatchPixPaymentPayload {
|
|
21
|
+
data: PatchPixPaymentData;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Valida o payload de cancelamento de pagamento PIX
|
|
25
|
+
*/
|
|
26
|
+
export declare function validatePatchPixPayment(payload: any): ValidationResult;
|
|
27
|
+
/**
|
|
28
|
+
* Valida motivo do cancelamento (usado em respostas)
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateCancellationReason(reason: string): ErrorDetail[];
|
|
31
|
+
/**
|
|
32
|
+
* Valida origem do cancelamento (usado em respostas)
|
|
33
|
+
*/
|
|
34
|
+
export declare function validateCancellationFrom(from: string): ErrorDetail[];
|
|
35
|
+
/**
|
|
36
|
+
* Valida data/hora de cancelamento (RFC-3339)
|
|
37
|
+
*/
|
|
38
|
+
export declare function validateCancellationDateTime(dateTime: string): ErrorDetail[];
|
|
39
|
+
export { PatchPixPaymentPayload, PatchPixPaymentData, PatchPixPaymentCancellation, PatchPixPaymentCancelledBy, PatchPixPaymentDocument, };
|
|
40
|
+
//# sourceMappingURL=patchPixPayment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patchPixPayment.d.ts","sourceRoot":"","sources":["../../../src/payments/validators/patchPixPayment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,WAAW,EACX,gBAAgB,EAGjB,MAAM,+BAA+B,CAAC;AAGvC,UAAU,uBAAuB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,0BAA0B;IAClC,QAAQ,EAAE,uBAAuB,CAAC;CACnC;AAED,UAAU,2BAA2B;IACnC,WAAW,EAAE,0BAA0B,CAAC;CACzC;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,2BAA2B,CAAC;CAC3C;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAoBD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,GAAG,GAAG,gBAAgB,CA0CtE;AAyJD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAoBxE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAoBpE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAwB5E;AAED,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,GACxB,CAAC"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Validações para PatchPixPayment
|
|
4
|
+
* Segue as regras especificadas no Open Finance Brasil para Cancelamento de Pagamento PIX
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.validatePatchPixPayment = validatePatchPixPayment;
|
|
8
|
+
exports.validateCancellationReason = validateCancellationReason;
|
|
9
|
+
exports.validateCancellationFrom = validateCancellationFrom;
|
|
10
|
+
exports.validateCancellationDateTime = validateCancellationDateTime;
|
|
11
|
+
const openFinanceErrors_1 = require("../../utils/openFinanceErrors");
|
|
12
|
+
// Valid cancellation status values according to OFB spec
|
|
13
|
+
const VALID_CANCELLATION_STATUS = ["CANC"];
|
|
14
|
+
// Valid cancellation reason types
|
|
15
|
+
const VALID_CANCELLATION_REASONS = [
|
|
16
|
+
"USER",
|
|
17
|
+
"ACCOUNT",
|
|
18
|
+
"CREDITOR",
|
|
19
|
+
"CREDITOR_AGENT",
|
|
20
|
+
"DEBTOR",
|
|
21
|
+
"DEBTOR_AGENT",
|
|
22
|
+
"PAYMENT_FAILURE",
|
|
23
|
+
"COMPLIANCE",
|
|
24
|
+
];
|
|
25
|
+
// Valid cancellation sources
|
|
26
|
+
const VALID_CANCELLATION_FROM = ["DEBTOR", "CREDITOR"];
|
|
27
|
+
/**
|
|
28
|
+
* Valida o payload de cancelamento de pagamento PIX
|
|
29
|
+
*/
|
|
30
|
+
function validatePatchPixPayment(payload) {
|
|
31
|
+
const errors = [];
|
|
32
|
+
// Validação: data deve existir
|
|
33
|
+
if (!payload.data) {
|
|
34
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data"));
|
|
35
|
+
return { isValid: false, errors };
|
|
36
|
+
}
|
|
37
|
+
const data = payload.data;
|
|
38
|
+
// Validação: status é obrigatório
|
|
39
|
+
if (!data.status) {
|
|
40
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data.status"));
|
|
41
|
+
}
|
|
42
|
+
else if (typeof data.status !== "string") {
|
|
43
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.status", "deve ser uma string"));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// Validar status contra valores permitidos
|
|
47
|
+
if (!VALID_CANCELLATION_STATUS.includes(data.status)) {
|
|
48
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.status", `deve ser um de: ${VALID_CANCELLATION_STATUS.join(", ")}`));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Validação: cancellation é obrigatório
|
|
52
|
+
if (!data.cancellation) {
|
|
53
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data.cancellation"));
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
const cancellationErrors = validateCancellation(data.cancellation);
|
|
57
|
+
errors.push(...cancellationErrors);
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
isValid: errors.length === 0,
|
|
61
|
+
errors,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Valida objeto Cancellation
|
|
66
|
+
*/
|
|
67
|
+
function validateCancellation(cancellation) {
|
|
68
|
+
const errors = [];
|
|
69
|
+
if (typeof cancellation !== "object" || cancellation === null) {
|
|
70
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.cancellation", "deve ser um objeto"));
|
|
71
|
+
return errors;
|
|
72
|
+
}
|
|
73
|
+
// cancelledBy é obrigatório
|
|
74
|
+
if (!cancellation.cancelledBy) {
|
|
75
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data.cancellation.cancelledBy"));
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const cancelledByErrors = validateCancelledBy(cancellation.cancelledBy);
|
|
79
|
+
errors.push(...cancelledByErrors);
|
|
80
|
+
}
|
|
81
|
+
return errors;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Valida objeto CancelledBy
|
|
85
|
+
*/
|
|
86
|
+
function validateCancelledBy(cancelledBy) {
|
|
87
|
+
const errors = [];
|
|
88
|
+
if (typeof cancelledBy !== "object" || cancelledBy === null) {
|
|
89
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.cancellation.cancelledBy", "deve ser um objeto"));
|
|
90
|
+
return errors;
|
|
91
|
+
}
|
|
92
|
+
// document é obrigatório
|
|
93
|
+
if (!cancelledBy.document) {
|
|
94
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data.cancellation.cancelledBy.document"));
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
const documentErrors = validateDocument(cancelledBy.document);
|
|
98
|
+
errors.push(...documentErrors);
|
|
99
|
+
}
|
|
100
|
+
return errors;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Valida documento do usuário que cancelou
|
|
104
|
+
*/
|
|
105
|
+
function validateDocument(document) {
|
|
106
|
+
const errors = [];
|
|
107
|
+
if (typeof document !== "object" || document === null) {
|
|
108
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.cancellation.cancelledBy.document", "deve ser um objeto"));
|
|
109
|
+
return errors;
|
|
110
|
+
}
|
|
111
|
+
// identification é obrigatório
|
|
112
|
+
if (!document.identification) {
|
|
113
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data.cancellation.cancelledBy.document.identification"));
|
|
114
|
+
}
|
|
115
|
+
else if (typeof document.identification !== "string") {
|
|
116
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.cancellation.cancelledBy.document.identification", "deve ser uma string"));
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
// Validar maxLength: 11
|
|
120
|
+
if (document.identification.length > 11) {
|
|
121
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.cancellation.cancelledBy.document.identification", "deve ter no máximo 11 caracteres"));
|
|
122
|
+
}
|
|
123
|
+
// Validar padrão: ^\d{11}$ (11 dígitos)
|
|
124
|
+
if (!/^\d{11}$/.test(document.identification)) {
|
|
125
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.cancellation.cancelledBy.document.identification", "deve conter apenas 11 dígitos"));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// rel é obrigatório
|
|
129
|
+
if (!document.rel) {
|
|
130
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data.cancellation.cancelledBy.document.rel"));
|
|
131
|
+
}
|
|
132
|
+
else if (typeof document.rel !== "string") {
|
|
133
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.cancellation.cancelledBy.document.rel", "deve ser uma string"));
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Validar maxLength: 3
|
|
137
|
+
if (document.rel.length > 3) {
|
|
138
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.cancellation.cancelledBy.document.rel", "deve ter no máximo 3 caracteres"));
|
|
139
|
+
}
|
|
140
|
+
// Validar padrão: ^[A-Z]{3}$ (3 letras maiúsculas)
|
|
141
|
+
if (!/^[A-Z]{3}$/.test(document.rel)) {
|
|
142
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("data.cancellation.cancelledBy.document.rel", "deve conter 3 letras maiúsculas (ex: CPF)"));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return errors;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Valida motivo do cancelamento (usado em respostas)
|
|
149
|
+
*/
|
|
150
|
+
function validateCancellationReason(reason) {
|
|
151
|
+
const errors = [];
|
|
152
|
+
if (!reason || typeof reason !== "string") {
|
|
153
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("reason", "deve ser uma string não vazia"));
|
|
154
|
+
return errors;
|
|
155
|
+
}
|
|
156
|
+
if (!VALID_CANCELLATION_REASONS.includes(reason)) {
|
|
157
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("reason", `deve ser um de: ${VALID_CANCELLATION_REASONS.join(", ")}`));
|
|
158
|
+
}
|
|
159
|
+
return errors;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Valida origem do cancelamento (usado em respostas)
|
|
163
|
+
*/
|
|
164
|
+
function validateCancellationFrom(from) {
|
|
165
|
+
const errors = [];
|
|
166
|
+
if (!from || typeof from !== "string") {
|
|
167
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("cancelledFrom", "deve ser uma string não vazia"));
|
|
168
|
+
return errors;
|
|
169
|
+
}
|
|
170
|
+
if (!VALID_CANCELLATION_FROM.includes(from)) {
|
|
171
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("cancelledFrom", `deve ser um de: ${VALID_CANCELLATION_FROM.join(", ")}`));
|
|
172
|
+
}
|
|
173
|
+
return errors;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Valida data/hora de cancelamento (RFC-3339)
|
|
177
|
+
*/
|
|
178
|
+
function validateCancellationDateTime(dateTime) {
|
|
179
|
+
const errors = [];
|
|
180
|
+
if (!dateTime || typeof dateTime !== "string") {
|
|
181
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("cancelledAt", "deve ser uma data/hora válida em RFC-3339"));
|
|
182
|
+
return errors;
|
|
183
|
+
}
|
|
184
|
+
// Validar formato RFC-3339 básico
|
|
185
|
+
const rfc3339Pattern = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d{3})?Z$/;
|
|
186
|
+
if (!rfc3339Pattern.test(dateTime)) {
|
|
187
|
+
errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("cancelledAt", "deve estar no formato RFC-3339 (ex: 2023-12-22T10:30:00Z)"));
|
|
188
|
+
}
|
|
189
|
+
return errors;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=patchPixPayment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patchPixPayment.js","sourceRoot":"","sources":["../../../src/payments/validators/patchPixPayment.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAqDH,0DA0CC;AA4JD,gEAoBC;AAKD,4DAoBC;AAKD,oEAwBC;AAnUD,qEAKuC;AAyBvC,yDAAyD;AACzD,MAAM,yBAAyB,GAAG,CAAC,MAAM,CAAC,CAAC;AAE3C,kCAAkC;AAClC,MAAM,0BAA0B,GAAG;IACjC,MAAM;IACN,SAAS;IACT,UAAU;IACV,gBAAgB;IAChB,QAAQ;IACR,cAAc;IACd,iBAAiB;IACjB,YAAY;CACb,CAAC;AAEF,6BAA6B;AAC7B,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAEvD;;GAEG;AACH,SAAgB,uBAAuB,CAAC,OAAY;IAClD,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,kCAAkC;IAClC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,aAAa,EAAE,qBAAqB,CAAC,CACtE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,2CAA2C;QAC3C,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,aAAa,EACb,mBAAmB,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1D,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,gCAAY,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;IACrC,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,YAAiB;IAC7C,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,mBAAmB,EACnB,oBAAoB,CACrB,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAAC,+BAA+B,CAAC,CACtE,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;IACpC,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,CAC7B,+BAA+B,EAC/B,oBAAoB,CACrB,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB;IACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAClC,wCAAwC,CACzC,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,cAAc,GAAG,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,QAAa;IACrC,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,CAC7B,wCAAwC,EACxC,oBAAoB,CACrB,CACF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,+BAA+B;IAC/B,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAClC,uDAAuD,CACxD,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,QAAQ,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,uDAAuD,EACvD,qBAAqB,CACtB,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,wBAAwB;QACxB,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,uDAAuD,EACvD,kCAAkC,CACnC,CACF,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,uDAAuD,EACvD,+BAA+B,CAChC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,uBAAuB,CAClC,4CAA4C,CAC7C,CACF,CAAC;IACJ,CAAC;SAAM,IAAI,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,4CAA4C,EAC5C,qBAAqB,CACtB,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,uBAAuB;QACvB,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,4CAA4C,EAC5C,iCAAiC,CAClC,CACF,CAAC;QACJ,CAAC;QAED,mDAAmD;QACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,4CAA4C,EAC5C,2CAA2C,CAC5C,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CAAC,MAAc;IACvD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAC3E,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,QAAQ,EACR,mBAAmB,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3D,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,IAAY;IACnD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,eAAe,EAAE,+BAA+B,CAAC,CAClF,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,eAAe,EACf,mBAAmB,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxD,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,4BAA4B,CAAC,QAAgB;IAC3D,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAAC,aAAa,EAAE,2CAA2C,CAAC,CAC5F,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kCAAkC;IAClC,MAAM,cAAc,GAClB,iDAAiD,CAAC;IAEpD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CACT,gCAAY,CAAC,kBAAkB,CAC7B,aAAa,EACb,2DAA2D,CAC5D,CACF,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recurring Payments Module - Exports all validators and success responses
|
|
3
|
+
*/
|
|
4
|
+
export { validateCreateRecurringConsent } from "./validators/createRecurringConsent";
|
|
5
|
+
export type { CreateRecurringConsentPayload } from "./validators/createRecurringConsent";
|
|
6
|
+
export { validatePatchRecurringConsent } from "./validators/patchRecurringConsent";
|
|
7
|
+
export type { PatchRecurringConsentPayload } from "./validators/patchRecurringConsent";
|
|
8
|
+
export { validateCreateRecurringRetryPixPayment } from "./validators/createRecurringRetryPixPayment";
|
|
9
|
+
export type { CreateRecurringRetryPixPaymentPayload } from "./validators/createRecurringRetryPixPayment";
|
|
10
|
+
export { validatePatchRecurringPixPayment } from "./validators/patchPixPayment";
|
|
11
|
+
export type { PatchRecurringPixPaymentPayload } from "./validators/patchPixPayment";
|
|
12
|
+
export type { CreateRecurringConsentSuccessResponse, GetRecurringConsentSuccessResponse, PatchRecurringConsentSuccessResponse, CreateRecurringPixPaymentSuccessResponse, GetRecurringPixPaymentSuccessResponse, CreateRecurringRetryPixPaymentSuccessResponse, PatchRecurringPixPaymentSuccessResponse, } from "./successResponses";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/recurring-payments/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,YAAY,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AAEzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,YAAY,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAGvF,OAAO,EAAE,sCAAsC,EAAE,MAAM,6CAA6C,CAAC;AACrG,YAAY,EAAE,qCAAqC,EAAE,MAAM,6CAA6C,CAAC;AAEzG,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAChF,YAAY,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAGpF,YAAY,EACV,qCAAqC,EACrC,kCAAkC,EAClC,oCAAoC,EACpC,wCAAwC,EACxC,qCAAqC,EACrC,6CAA6C,EAC7C,uCAAuC,GACxC,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Recurring Payments Module - Exports all validators and success responses
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.validatePatchRecurringPixPayment = exports.validateCreateRecurringRetryPixPayment = exports.validatePatchRecurringConsent = exports.validateCreateRecurringConsent = void 0;
|
|
7
|
+
// Consent Validators
|
|
8
|
+
var createRecurringConsent_1 = require("./validators/createRecurringConsent");
|
|
9
|
+
Object.defineProperty(exports, "validateCreateRecurringConsent", { enumerable: true, get: function () { return createRecurringConsent_1.validateCreateRecurringConsent; } });
|
|
10
|
+
var patchRecurringConsent_1 = require("./validators/patchRecurringConsent");
|
|
11
|
+
Object.defineProperty(exports, "validatePatchRecurringConsent", { enumerable: true, get: function () { return patchRecurringConsent_1.validatePatchRecurringConsent; } });
|
|
12
|
+
// Payment Validators
|
|
13
|
+
var createRecurringRetryPixPayment_1 = require("./validators/createRecurringRetryPixPayment");
|
|
14
|
+
Object.defineProperty(exports, "validateCreateRecurringRetryPixPayment", { enumerable: true, get: function () { return createRecurringRetryPixPayment_1.validateCreateRecurringRetryPixPayment; } });
|
|
15
|
+
var patchPixPayment_1 = require("./validators/patchPixPayment");
|
|
16
|
+
Object.defineProperty(exports, "validatePatchRecurringPixPayment", { enumerable: true, get: function () { return patchPixPayment_1.validatePatchRecurringPixPayment; } });
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/recurring-payments/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qBAAqB;AACrB,8EAAqF;AAA5E,wIAAA,8BAA8B,OAAA;AAGvC,4EAAmF;AAA1E,sIAAA,6BAA6B,OAAA;AAGtC,qBAAqB;AACrB,8FAAqG;AAA5F,wJAAA,sCAAsC,OAAA;AAG/C,gEAAgF;AAAvE,mIAAA,gCAAgC,OAAA"}
|