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 @@
1
+ {"version":3,"file":"openFinanceErrors.d.ts","sourceRoot":"","sources":["../../src/utils/openFinanceErrors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAiB7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,WAAW,CAMb;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;yCACc,MAAM;oCAOX,MAAM,UAAU,MAAM;4CAOd,MAAM,UAAU,MAAM;;4CActB,MAAM;;+BAcnB,MAAM;CAMlC,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /**
3
+ * Padrão de Erros do Open Finance Brasil
4
+ * Seguindo a especificação da API de Consentimentos
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CommonErrors = exports.PaymentConsentErrorCodes = exports.ConsentErrorCodes = void 0;
8
+ exports.createError = createError;
9
+ /**
10
+ * Códigos de erro para CreateConsent e CreateConsentExtensions
11
+ */
12
+ exports.ConsentErrorCodes = {
13
+ DEPENDE_MULTIPLA_ALCADA: {
14
+ title: "Necessário aprovação de múltipla alçada.",
15
+ code: "DEPENDE_MULTIPLA_ALCADA",
16
+ },
17
+ ESTADO_CONSENTIMENTO_INVALIDO: {
18
+ title: "Estado inválido do consentimento.",
19
+ code: "ESTADO_CONSENTIMENTO_INVALIDO",
20
+ },
21
+ DATA_EXPIRACAO_INVALIDA: {
22
+ title: "Nova data para expiração do consentimento é inválida.",
23
+ code: "DATA_EXPIRACAO_INVALIDA",
24
+ },
25
+ ERRO_NAO_MAPEADO: {
26
+ title: "Erro não mapeado.",
27
+ code: "ERRO_NAO_MAPEADO",
28
+ },
29
+ };
30
+ /**
31
+ * Códigos de erro para CreatePaymentConsent
32
+ */
33
+ exports.PaymentConsentErrorCodes = {
34
+ FORMA_PAGAMENTO_INVALIDA: {
35
+ title: "Forma de pagamento inválida.",
36
+ code: "FORMA_PAGAMENTO_INVALIDA",
37
+ },
38
+ DATA_PAGAMENTO_INVALIDA: {
39
+ title: "Data de pagamento inválida.",
40
+ code: "DATA_PAGAMENTO_INVALIDA",
41
+ },
42
+ DETALHE_PAGAMENTO_INVALIDO: {
43
+ title: "Detalhe do pagamento inválido.",
44
+ code: "DETALHE_PAGAMENTO_INVALIDO",
45
+ },
46
+ PARAMETRO_NAO_INFORMADO: {
47
+ title: "Parâmetro não informado.",
48
+ code: "PARAMETRO_NAO_INFORMADO",
49
+ },
50
+ PARAMETRO_INVALIDO: {
51
+ title: "Parâmetro inválido.",
52
+ code: "PARAMETRO_INVALIDO",
53
+ },
54
+ ERRO_IDEMPOTENCIA: {
55
+ title: "Erro idempotência.",
56
+ code: "ERRO_IDEMPOTENCIA",
57
+ },
58
+ NAO_INFORMADO: {
59
+ title: "Não informado.",
60
+ code: "NAO_INFORMADO",
61
+ },
62
+ };
63
+ /**
64
+ * Factory function para criar erros padronizados
65
+ */
66
+ function createError(code, title, detail) {
67
+ return {
68
+ code,
69
+ title,
70
+ detail,
71
+ };
72
+ }
73
+ /**
74
+ * Mapa de tipos de erros comuns
75
+ */
76
+ exports.CommonErrors = {
77
+ PARAMETRO_NAO_INFORMADO: (fieldName) => createError("PARAMETRO_NAO_INFORMADO", "Parâmetro não informado.", `Parâmetro [${fieldName}] obrigatório não informado.`),
78
+ PARAMETRO_INVALIDO: (fieldName, reason) => createError("PARAMETRO_INVALIDO", "Parâmetro inválido.", `Parâmetro [${fieldName}] não obedece as regras de formatação esperadas. ${reason}`),
79
+ DETALHE_PAGAMENTO_INVALIDO: (fieldName, reason) => createError("DETALHE_PAGAMENTO_INVALIDO", "Detalhe do pagamento inválido.", `Parâmetro [${fieldName}] não obedece às regras de negócio. ${reason}`),
80
+ DATA_EXPIRACAO_INVALIDA: () => createError("DATA_EXPIRACAO_INVALIDA", "Nova data para expiração do consentimento é inválida.", "A data de expiração deve estar no formato RFC-3339 com timezone UTC (YYYY-MM-DDTHH:mm:ssZ)"),
81
+ FORMA_PAGAMENTO_INVALIDA: (paymentType) => createError("FORMA_PAGAMENTO_INVALIDA", "Forma de pagamento inválida.", `Forma de pagamento [${paymentType}] não suportada. O tipo de pagamento deve ser PIX.`),
82
+ DATA_PAGAMENTO_INVALIDA: () => createError("DATA_PAGAMENTO_INVALIDA", "Data de pagamento inválida.", "Data de pagamento inválida para a forma de pagamento selecionada. Deve estar no formato YYYY-MM-DD."),
83
+ ERRO_NAO_MAPEADO: (reason) => createError("ERRO_NAO_MAPEADO", "Erro não mapeado.", `Erro não mapeado: ${reason}`),
84
+ };
85
+ //# sourceMappingURL=openFinanceErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openFinanceErrors.js","sourceRoot":"","sources":["../../src/utils/openFinanceErrors.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAwEH,kCAUC;AArED;;GAEG;AACU,QAAA,iBAAiB,GAAG;IAC/B,uBAAuB,EAAE;QACvB,KAAK,EAAE,0CAA0C;QACjD,IAAI,EAAE,yBAAyB;KAChC;IACD,6BAA6B,EAAE;QAC7B,KAAK,EAAE,mCAAmC;QAC1C,IAAI,EAAE,+BAA+B;KACtC;IACD,uBAAuB,EAAE;QACvB,KAAK,EAAE,uDAAuD;QAC9D,IAAI,EAAE,yBAAyB;KAChC;IACD,gBAAgB,EAAE;QAChB,KAAK,EAAE,mBAAmB;QAC1B,IAAI,EAAE,kBAAkB;KACzB;CACF,CAAC;AAEF;;GAEG;AACU,QAAA,wBAAwB,GAAG;IACtC,wBAAwB,EAAE;QACxB,KAAK,EAAE,8BAA8B;QACrC,IAAI,EAAE,0BAA0B;KACjC;IACD,uBAAuB,EAAE;QACvB,KAAK,EAAE,6BAA6B;QACpC,IAAI,EAAE,yBAAyB;KAChC;IACD,0BAA0B,EAAE;QAC1B,KAAK,EAAE,gCAAgC;QACvC,IAAI,EAAE,4BAA4B;KACnC;IACD,uBAAuB,EAAE;QACvB,KAAK,EAAE,0BAA0B;QACjC,IAAI,EAAE,yBAAyB;KAChC;IACD,kBAAkB,EAAE;QAClB,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,oBAAoB;KAC3B;IACD,iBAAiB,EAAE;QACjB,KAAK,EAAE,oBAAoB;QAC3B,IAAI,EAAE,mBAAmB;KAC1B;IACD,aAAa,EAAE;QACb,KAAK,EAAE,gBAAgB;QACvB,IAAI,EAAE,eAAe;KACtB;CACF,CAAC;AAEF;;GAEG;AACH,SAAgB,WAAW,CACzB,IAAY,EACZ,KAAa,EACb,MAAc;IAEd,OAAO;QACL,IAAI;QACJ,KAAK;QACL,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,uBAAuB,EAAE,CAAC,SAAiB,EAAE,EAAE,CAC7C,WAAW,CACT,yBAAyB,EACzB,0BAA0B,EAC1B,cAAc,SAAS,8BAA8B,CACtD;IAEH,kBAAkB,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE,CACxD,WAAW,CACT,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,SAAS,oDAAoD,MAAM,EAAE,CACpF;IAEH,0BAA0B,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE,CAChE,WAAW,CACT,4BAA4B,EAC5B,gCAAgC,EAChC,cAAc,SAAS,uCAAuC,MAAM,EAAE,CACvE;IAEH,uBAAuB,EAAE,GAAG,EAAE,CAC5B,WAAW,CACT,yBAAyB,EACzB,uDAAuD,EACvD,4FAA4F,CAC7F;IAEH,wBAAwB,EAAE,CAAC,WAAmB,EAAE,EAAE,CAChD,WAAW,CACT,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,WAAW,oDAAoD,CACvF;IAEH,uBAAuB,EAAE,GAAG,EAAE,CAC5B,WAAW,CACT,yBAAyB,EACzB,6BAA6B,EAC7B,qGAAqG,CACtG;IAEH,gBAAgB,EAAE,CAAC,MAAc,EAAE,EAAE,CACnC,WAAW,CACT,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,MAAM,EAAE,CAC9B;CACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Erros específicos para validação de Payment Consent
3
+ */
4
+ export declare const PaymentErrors: {
5
+ FORMA_PAGAMENTO_INVALIDA: (paymentType: string) => import("./openFinanceErrors").ErrorDetail;
6
+ DATA_PAGAMENTO_INVALIDA: () => import("./openFinanceErrors").ErrorDetail;
7
+ DETALHE_PAGAMENTO_INVALIDO: (fieldName: string, reason: string) => import("./openFinanceErrors").ErrorDetail;
8
+ };
9
+ //# sourceMappingURL=paymentErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paymentErrors.d.ts","sourceRoot":"","sources":["../../src/utils/paymentErrors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,aAAa;4CACgB,MAAM;;4CAcN,MAAM,UAAU,MAAM;CAM/D,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ /**
3
+ * Erros específicos para validação de Payment Consent
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PaymentErrors = void 0;
7
+ const openFinanceErrors_1 = require("./openFinanceErrors");
8
+ exports.PaymentErrors = {
9
+ FORMA_PAGAMENTO_INVALIDA: (paymentType) => (0, openFinanceErrors_1.createError)("FORMA_PAGAMENTO_INVALIDA", "Forma de pagamento inválida.", `Forma de pagamento [${paymentType}] não suportada. O tipo de pagamento deve ser PIX.`),
10
+ DATA_PAGAMENTO_INVALIDA: () => (0, openFinanceErrors_1.createError)("DATA_PAGAMENTO_INVALIDA", "Data de pagamento inválida.", "Data de pagamento inválida para a forma de pagamento selecionada. Deve estar no formato YYYY-MM-DD."),
11
+ DETALHE_PAGAMENTO_INVALIDO: (fieldName, reason) => (0, openFinanceErrors_1.createError)("DETALHE_PAGAMENTO_INVALIDO", "Detalhe do pagamento inválido.", `Parâmetro [${fieldName}] não obedece às regras de negócio. ${reason}`),
12
+ };
13
+ //# sourceMappingURL=paymentErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paymentErrors.js","sourceRoot":"","sources":["../../src/utils/paymentErrors.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,2DAAkD;AAErC,QAAA,aAAa,GAAG;IAC3B,wBAAwB,EAAE,CAAC,WAAmB,EAAE,EAAE,CAChD,IAAA,+BAAW,EACT,0BAA0B,EAC1B,8BAA8B,EAC9B,uBAAuB,WAAW,oDAAoD,CACvF;IAEH,uBAAuB,EAAE,GAAG,EAAE,CAC5B,IAAA,+BAAW,EACT,yBAAyB,EACzB,6BAA6B,EAC7B,qGAAqG,CACtG;IAEH,0BAA0B,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE,CAChE,IAAA,+BAAW,EACT,4BAA4B,EAC5B,gCAAgC,EAChC,cAAc,SAAS,uCAAuC,MAAM,EAAE,CACvE;CACJ,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Interfaces genéricas de Sucesso para respostas da Open Finance Brasil
3
+ */
4
+ /**
5
+ * Interface genérica de sucesso para qualquer resposta
6
+ */
7
+ export interface SuccessResponse<T> {
8
+ data: T;
9
+ links?: {
10
+ self: string;
11
+ first?: string;
12
+ prev?: string;
13
+ next?: string;
14
+ last?: string;
15
+ };
16
+ meta?: {
17
+ totalRecords?: number;
18
+ totalPages?: number;
19
+ requestDateTime: string;
20
+ };
21
+ }
22
+ /**
23
+ * Resposta de sucesso genérica com dados de paginação
24
+ */
25
+ export interface PaginatedSuccessResponse<T> {
26
+ data: T[];
27
+ links?: {
28
+ self: string;
29
+ first: string;
30
+ prev?: string;
31
+ next?: string;
32
+ last: string;
33
+ };
34
+ meta: {
35
+ totalRecords: number;
36
+ totalPages: number;
37
+ requestDateTime: string;
38
+ };
39
+ }
40
+ /**
41
+ * Resposta de sucesso genérica simples
42
+ */
43
+ export interface SimpleSuccessResponse<T> {
44
+ data: T;
45
+ links?: {
46
+ self: string;
47
+ };
48
+ meta?: {
49
+ requestDateTime: string;
50
+ };
51
+ }
52
+ //# sourceMappingURL=successResponses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"successResponses.d.ts","sourceRoot":"","sources":["../../src/utils/successResponses.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CAAC,CAAC;IACzC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,EAAE;QACJ,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,CAAC,EAAE;QACL,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Interfaces genéricas de Sucesso para respostas da Open Finance Brasil
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=successResponses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"successResponses.js","sourceRoot":"","sources":["../../src/utils/successResponses.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Validador de Headers de Requisição HTTP
3
+ * Valida headers enviados no request contra regras de Open Finance Brasil
4
+ */
5
+ import { ErrorDetail } from "./openFinanceErrors";
6
+ interface HeaderValidationRule {
7
+ name: string;
8
+ headerName: string;
9
+ required: boolean;
10
+ pattern?: string;
11
+ minLength?: number;
12
+ maxLength?: number;
13
+ format?: string;
14
+ }
15
+ /**
16
+ * Regras de validação para headers de Open Finance Brasil
17
+ */
18
+ declare const HEADER_VALIDATION_RULES: HeaderValidationRule[];
19
+ /**
20
+ * Valida todos os headers de uma requisição
21
+ */
22
+ export declare function validateHeaders(headers: Record<string, string | string[] | undefined>): {
23
+ isValid: boolean;
24
+ errors: ErrorDetail[];
25
+ };
26
+ /**
27
+ * Valida um header específico
28
+ * @param headerName - Nome do header (ex: 'x-fapi-interaction-id')
29
+ * @param headerValue - Valor do header
30
+ * @param required - Se verdadeiro, força o header como obrigatório; se falso, força como opcional; se undefined, usa a regra padrão
31
+ */
32
+ export declare function validateHeader(headerName: string, headerValue: any, required?: boolean): {
33
+ isValid: boolean;
34
+ errors: ErrorDetail[];
35
+ };
36
+ /**
37
+ * Valida um header como obrigatório
38
+ */
39
+ export declare function validateHeaderRequired(headerName: string, headerValue: any): {
40
+ isValid: boolean;
41
+ errors: ErrorDetail[];
42
+ };
43
+ /**
44
+ * Valida um header como opcional
45
+ */
46
+ export declare function validateHeaderOptional(headerName: string, headerValue: any): {
47
+ isValid: boolean;
48
+ errors: ErrorDetail[];
49
+ };
50
+ export { HEADER_VALIDATION_RULES, HeaderValidationRule };
51
+ //# sourceMappingURL=validateHeaderParameters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateHeaderParameters.d.ts","sourceRoot":"","sources":["../../src/utils/validateHeaderParameters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAgB,MAAM,qBAAqB,CAAC;AAEhE,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,QAAA,MAAM,uBAAuB,EAAE,oBAAoB,EA6ClD,CAAC;AAiEF;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAa7C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,GAAG,EAChB,QAAQ,CAAC,EAAE,OAAO,GACjB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAkB7C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,GAAG,GACf;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAE7C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,GAAG,GACf;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAE7C;AAED,OAAO,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ /**
3
+ * Validador de Headers de Requisição HTTP
4
+ * Valida headers enviados no request contra regras de Open Finance Brasil
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.HEADER_VALIDATION_RULES = void 0;
8
+ exports.validateHeaders = validateHeaders;
9
+ exports.validateHeader = validateHeader;
10
+ exports.validateHeaderRequired = validateHeaderRequired;
11
+ exports.validateHeaderOptional = validateHeaderOptional;
12
+ const openFinanceErrors_1 = require("./openFinanceErrors");
13
+ /**
14
+ * Regras de validação para headers de Open Finance Brasil
15
+ */
16
+ const HEADER_VALIDATION_RULES = [
17
+ {
18
+ name: 'xFapiInteractionId',
19
+ headerName: 'x-fapi-interaction-id',
20
+ required: true,
21
+ pattern: '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$',
22
+ minLength: 36,
23
+ maxLength: 36,
24
+ format: 'uuid',
25
+ },
26
+ {
27
+ name: 'XIdempotencyKey',
28
+ headerName: 'X-Idempotency-Key',
29
+ required: false,
30
+ maxLength: 36,
31
+ },
32
+ {
33
+ name: 'xFapiAuthDate',
34
+ headerName: 'x-fapi-auth-date',
35
+ required: false,
36
+ pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \\d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d{4} \\d{2}:\\d{2}:\\d{2} (GMT|UTC)$',
37
+ minLength: 29,
38
+ maxLength: 29,
39
+ },
40
+ {
41
+ name: 'xFapiCustomerIpAddress',
42
+ headerName: 'x-fapi-customer-ip-address',
43
+ required: false,
44
+ maxLength: 100,
45
+ },
46
+ {
47
+ name: 'xCustomerUserAgent',
48
+ headerName: 'x-customer-user-agent',
49
+ required: false,
50
+ pattern: '^[^\\s](.*[^\\s])?$',
51
+ minLength: 1,
52
+ maxLength: 255,
53
+ },
54
+ {
55
+ name: 'Authorization',
56
+ headerName: 'Authorization',
57
+ required: true,
58
+ minLength: 1,
59
+ maxLength: 2048,
60
+ },
61
+ ];
62
+ exports.HEADER_VALIDATION_RULES = HEADER_VALIDATION_RULES;
63
+ /**
64
+ * Valida um header específico com opção de customizar obrigatoriedade
65
+ */
66
+ function validateSingleHeader(headerValue, rule, options) {
67
+ const errors = [];
68
+ // Usar requiredOverride se fornecido, caso contrário usar a regra padrão
69
+ const isRequired = options?.requiredOverride !== undefined ? options.requiredOverride : rule.required;
70
+ // Verificar se é obrigatório
71
+ if (isRequired && (!headerValue || headerValue.trim() === '')) {
72
+ return [
73
+ openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(rule.headerName, `Header ${rule.headerName} é obrigatório`),
74
+ ];
75
+ }
76
+ // Se não é obrigatório e não foi enviado, é válido
77
+ if (!isRequired && (!headerValue || headerValue.trim() === '')) {
78
+ return [];
79
+ }
80
+ const value = String(headerValue).trim();
81
+ // Validar tamanho mínimo
82
+ if (rule.minLength && value.length < rule.minLength) {
83
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(rule.headerName, `Deve ter no mínimo ${rule.minLength} caracteres (${value.length})`));
84
+ }
85
+ // Validar tamanho máximo
86
+ if (rule.maxLength && value.length > rule.maxLength) {
87
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(rule.headerName, `Deve ter no máximo ${rule.maxLength} caracteres (${value.length})`));
88
+ }
89
+ // Validar padrão (regex)
90
+ if (rule.pattern && !new RegExp(rule.pattern).test(value)) {
91
+ errors.push(openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO(rule.headerName, `Formato inválido (esperado: ${rule.pattern})`));
92
+ }
93
+ return errors;
94
+ }
95
+ /**
96
+ * Valida todos os headers de uma requisição
97
+ */
98
+ function validateHeaders(headers) {
99
+ const errors = [];
100
+ HEADER_VALIDATION_RULES.forEach((rule) => {
101
+ const headerValue = headers[rule.headerName];
102
+ const headerErrors = validateSingleHeader(headerValue, rule);
103
+ errors.push(...headerErrors);
104
+ });
105
+ return {
106
+ isValid: errors.length === 0,
107
+ errors,
108
+ };
109
+ }
110
+ /**
111
+ * Valida um header específico
112
+ * @param headerName - Nome do header (ex: 'x-fapi-interaction-id')
113
+ * @param headerValue - Valor do header
114
+ * @param required - Se verdadeiro, força o header como obrigatório; se falso, força como opcional; se undefined, usa a regra padrão
115
+ */
116
+ function validateHeader(headerName, headerValue, required) {
117
+ const rule = HEADER_VALIDATION_RULES.find((r) => r.headerName.toLowerCase() === headerName.toLowerCase());
118
+ if (!rule) {
119
+ return {
120
+ isValid: true,
121
+ errors: [],
122
+ };
123
+ }
124
+ const errors = validateSingleHeader(headerValue, rule, { requiredOverride: required });
125
+ return {
126
+ isValid: errors.length === 0,
127
+ errors,
128
+ };
129
+ }
130
+ /**
131
+ * Valida um header como obrigatório
132
+ */
133
+ function validateHeaderRequired(headerName, headerValue) {
134
+ return validateHeader(headerName, headerValue, true);
135
+ }
136
+ /**
137
+ * Valida um header como opcional
138
+ */
139
+ function validateHeaderOptional(headerName, headerValue) {
140
+ return validateHeader(headerName, headerValue, false);
141
+ }
142
+ //# sourceMappingURL=validateHeaderParameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateHeaderParameters.js","sourceRoot":"","sources":["../../src/utils/validateHeaderParameters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ import { ErrorDetail } from "./openFinanceErrors";
2
+ /**
3
+ * Validadores compartilhados para reutilização em todos os validadores
4
+ */
5
+ /**
6
+ * Valida CPF (11 dígitos)
7
+ */
8
+ export declare function validateCPF(cpf: any, fieldName?: string): ErrorDetail[];
9
+ /**
10
+ * Valida CNPJ (14 caracteres alfanuméricos)
11
+ */
12
+ export declare function validateCNPJ(cnpj: any, fieldName?: string): ErrorDetail[];
13
+ /**
14
+ * Valida documento (CPF ou CNPJ)
15
+ */
16
+ export declare function validateDocumentIdentification(identification: any, fieldName?: string): ErrorDetail[];
17
+ /**
18
+ * Valida tipo de documento (CPF ou CNPJ)
19
+ */
20
+ export declare function validateDocumentType(rel: any, fieldName?: string, allowedTypes?: string[]): ErrorDetail[];
21
+ /**
22
+ * Valida data no formato YYYY-MM-DD
23
+ */
24
+ export declare function validateDate(date: any, fieldName?: string): ErrorDetail[];
25
+ /**
26
+ * Valida data/hora no formato RFC-3339 (YYYY-MM-DDTHH:mm:ssZ)
27
+ */
28
+ export declare function validateDateTime(dateTime: any, fieldName?: string, maxLength?: number): ErrorDetail[];
29
+ /**
30
+ * Valida hora especificada (formato HH:mm:ss)
31
+ */
32
+ export declare function validateTimeFormat(time: string, expectedHour: number, expectedMinute: number, expectedSecond: number, fieldName?: string): boolean;
33
+ /**
34
+ * Valida amount (formato monetário: \d{1,16}\.\d{2})
35
+ */
36
+ export declare function validateAmount(amount: any, fieldName?: string, maxLength?: number): ErrorDetail[];
37
+ /**
38
+ * Valida moeda (deve ser BRL)
39
+ */
40
+ export declare function validateCurrency(currency: any, fieldName?: string): ErrorDetail[];
41
+ /**
42
+ * Valida ISPB (8 caracteres)
43
+ */
44
+ export declare function validateISPB(ispb: any, fieldName?: string): ErrorDetail[];
45
+ /**
46
+ * Valida número de conta (1-20 dígitos)
47
+ */
48
+ export declare function validateAccountNumber(number: any, fieldName?: string): ErrorDetail[];
49
+ /**
50
+ * Valida issuer/agência (1-4 dígitos)
51
+ */
52
+ export declare function validateIssuer(issuer: any, fieldName?: string): ErrorDetail[];
53
+ /**
54
+ * Valida tipo de conta
55
+ */
56
+ export declare function validateAccountType(accountType: any, fieldName?: string, validTypes?: string[]): ErrorDetail[];
57
+ /**
58
+ * Valida string contra enum
59
+ */
60
+ export declare function validateEnum(value: any, validValues: string[], fieldName: string): ErrorDetail[];
61
+ /**
62
+ * Valida offset de timezone (±hh:mm ou ±hh)
63
+ */
64
+ export declare function validateTimeZoneOffset(offset: any, fieldName?: string): ErrorDetail[];
65
+ /**
66
+ * Valida dimensões de tela (height e width inteiros)
67
+ */
68
+ export declare function validateScreenDimensions(dimensions: any, fieldName?: string): ErrorDetail[];
69
+ /**
70
+ * Valida string com tamanho máximo
71
+ */
72
+ export declare function validateString(value: any, fieldName: string, maxLength?: number, minLength?: number): ErrorDetail[];
73
+ /**
74
+ * Valida EndToEndId no formato Pix (32 caracteres)
75
+ */
76
+ export declare function validateEndToEndId(endToEndId: any, fieldName?: string, exact32?: boolean): ErrorDetail[];
77
+ /**
78
+ * Valida transactionIdentification (1-35 caracteres alfanuméricos)
79
+ */
80
+ export declare function validateTransactionIdentification(transId: any, fieldName?: string): ErrorDetail[];
81
+ /**
82
+ * Valida que um objeto é do tipo correto
83
+ */
84
+ export declare function validateObjectType(value: any, fieldName: string): ErrorDetail[];
85
+ /**
86
+ * Exportação da função de validação de headers de requisição
87
+ */
88
+ export { validateHeaders, validateHeader, validateHeaderRequired, validateHeaderOptional, HEADER_VALIDATION_RULES } from './validateHeaderParameters';
89
+ //# sourceMappingURL=validationHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validationHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/validationHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,qBAAqB,CAAC;AAEhE;;GAEG;AAEH;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,GAAE,MAAc,GAAG,WAAW,EAAE,CAuB9E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,GAAE,MAAe,GAAG,WAAW,EAAE,CAuBjF;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,GAAG,EACnB,SAAS,GAAE,MAAyB,GACnC,WAAW,EAAE,CAuBf;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,GAAG,EACR,SAAS,GAAE,MAAc,EACzB,YAAY,GAAE,MAAM,EAAoB,GACvC,WAAW,EAAE,CAoBf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,GAAG,EACT,SAAS,GAAE,MAAe,GACzB,WAAW,EAAE,CAsBf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,GAAG,EACb,SAAS,GAAE,MAAmB,EAC9B,SAAS,GAAE,MAAW,GACrB,WAAW,EAAE,CA+Bf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,SAAS,GAAE,MAAe,GACzB,OAAO,CAST;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,GAAG,EACX,SAAS,GAAE,MAAiB,EAC5B,SAAS,GAAE,MAAW,GACrB,WAAW,EAAE,CA2Bf;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,GAAG,EACb,SAAS,GAAE,MAAmB,GAC7B,WAAW,EAAE,CAyBf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,GAAG,EACT,SAAS,GAAE,MAAe,GACzB,WAAW,EAAE,CA8Bf;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,GAAG,EACX,SAAS,GAAE,MAAiB,GAC3B,WAAW,EAAE,CA2Bf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,GAAG,EACX,SAAS,GAAE,MAAiB,GAC3B,WAAW,EAAE,CA2Bf;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,GAAG,EAChB,SAAS,GAAE,MAAsB,EACjC,UAAU,GAAE,MAAM,EAA6B,GAC9C,WAAW,EAAE,CAoBf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,GAAG,EACV,WAAW,EAAE,MAAM,EAAE,EACrB,SAAS,EAAE,MAAM,GAChB,WAAW,EAAE,CAoBf;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,GAAG,EACX,SAAS,GAAE,MAA6B,GACvC,WAAW,EAAE,CAkBf;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,GAAG,EACf,SAAS,GAAE,MAA2B,GACrC,WAAW,EAAE,CAqCf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,GAAE,MAAU,GACpB,WAAW,EAAE,CA6Bf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,GAAG,EACf,SAAS,GAAE,MAAqB,EAChC,OAAO,GAAE,OAAc,GACtB,WAAW,EAAE,CAoDf;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,GAAG,EACZ,SAAS,GAAE,MAAoC,GAC9C,WAAW,EAAE,CA8Bf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,MAAM,GAChB,WAAW,EAAE,CAUf;AAED;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC"}