@77sol-lab/form-schemas 1.7.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/{chunk-HMC73HBG.mjs → chunk-4T4DDJJZ.mjs} +7 -7
  2. package/{chunk-DIYEI2PA.mjs → chunk-65WB3CQB.mjs} +9 -9
  3. package/{chunk-VP4HT24O.mjs → chunk-6AISIJ3O.mjs} +7 -7
  4. package/{chunk-LU5ODSGQ.mjs → chunk-7ULQG7YJ.mjs} +9 -9
  5. package/{chunk-QMODZE4A.mjs → chunk-7VU2KIBV.mjs} +7 -7
  6. package/chunk-BXLQYGEB.mjs +105 -0
  7. package/{chunk-VDFDTLU5.mjs → chunk-CGBX6OCD.mjs} +7 -7
  8. package/{chunk-ENDOIQ32.mjs → chunk-CJSJ3VDW.mjs} +138 -60
  9. package/{chunk-6ZUOXZY3.mjs → chunk-EG5RVHCZ.mjs} +9 -9
  10. package/{chunk-5EHEC3RT.mjs → chunk-F4RMWUXJ.mjs} +10 -10
  11. package/{chunk-KJTTMDZP.mjs → chunk-GBKY6QE3.mjs} +7 -7
  12. package/{chunk-AM7HTUI3.mjs → chunk-HF7G6PTH.mjs} +9 -9
  13. package/{chunk-65EE5FW3.mjs → chunk-HX5UJCA2.mjs} +7 -7
  14. package/{chunk-L3OISOZA.mjs → chunk-HXHJSQ2X.mjs} +9 -9
  15. package/{chunk-UF45URAJ.mjs → chunk-IVY6IQXZ.mjs} +9 -9
  16. package/{chunk-FBDTG3WD.mjs → chunk-K3QXEL6M.mjs} +20 -21
  17. package/{chunk-CPDLICOP.mjs → chunk-LDL7QLPB.mjs} +7 -7
  18. package/{chunk-ORQ52KPA.mjs → chunk-LRIO6V7H.mjs} +7 -7
  19. package/{chunk-MM6LQXI6.mjs → chunk-OIGZEDM3.mjs} +7 -7
  20. package/{chunk-PDBPFNAN.mjs → chunk-OJUTNXHL.mjs} +136 -39
  21. package/{chunk-KBILM3GO.mjs → chunk-OKAMQBUN.mjs} +7 -7
  22. package/{chunk-TDL42FZZ.mjs → chunk-PCTF5JYB.mjs} +9 -9
  23. package/{chunk-2BHUMNK5.mjs → chunk-PCXYLWDD.mjs} +9 -9
  24. package/chunk-QEPJ2RLU.mjs +18 -0
  25. package/{chunk-5P6NWFTX.mjs → chunk-QQCSQ3L4.mjs} +10 -10
  26. package/{chunk-TKHIBI4R.mjs → chunk-R5TJYTTO.mjs} +9 -9
  27. package/{chunk-U4ZDMJX2.mjs → chunk-T2FBV7WO.mjs} +10 -10
  28. package/{chunk-RWOX5QO3.mjs → chunk-TNZ33455.mjs} +7 -7
  29. package/{chunk-Y67MNG2X.mjs → chunk-TWOBBIQC.mjs} +9 -9
  30. package/{chunk-22SYVROO.mjs → chunk-TZEPVIC4.mjs} +9 -9
  31. package/{chunk-FIPFWGBQ.mjs → chunk-UK62IINL.mjs} +7 -7
  32. package/{chunk-BYAXV4TG.mjs → chunk-VTTNXB64.mjs} +7 -7
  33. package/{chunk-DJDG3UYR.mjs → chunk-VWKF4I2L.mjs} +9 -9
  34. package/financing/formalization/index.d.cts +4848 -19624
  35. package/financing/formalization/index.d.ts +4848 -19624
  36. package/financing/formalization/index.js +516 -278
  37. package/financing/formalization/index.mjs +33 -33
  38. package/financing/formalization/schemas/AlfaPFSchema.d.cts +107 -395
  39. package/financing/formalization/schemas/AlfaPFSchema.d.ts +107 -395
  40. package/financing/formalization/schemas/AlfaPFSchema.js +127 -47
  41. package/financing/formalization/schemas/AlfaPFSchema.mjs +3 -3
  42. package/financing/formalization/schemas/AlfaPJSchema.d.cts +119 -621
  43. package/financing/formalization/schemas/AlfaPJSchema.d.ts +119 -621
  44. package/financing/formalization/schemas/AlfaPJSchema.js +188 -46
  45. package/financing/formalization/schemas/AlfaPJSchema.mjs +2 -2
  46. package/financing/formalization/schemas/BancoDoBrasilPFSchema.d.cts +107 -395
  47. package/financing/formalization/schemas/BancoDoBrasilPFSchema.d.ts +107 -395
  48. package/financing/formalization/schemas/BancoDoBrasilPFSchema.js +127 -47
  49. package/financing/formalization/schemas/BancoDoBrasilPFSchema.mjs +3 -3
  50. package/financing/formalization/schemas/BancoDoBrasilPJSchema.d.cts +119 -621
  51. package/financing/formalization/schemas/BancoDoBrasilPJSchema.d.ts +119 -621
  52. package/financing/formalization/schemas/BancoDoBrasilPJSchema.js +188 -46
  53. package/financing/formalization/schemas/BancoDoBrasilPJSchema.mjs +2 -2
  54. package/financing/formalization/schemas/BtgPFSchema.d.cts +107 -395
  55. package/financing/formalization/schemas/BtgPFSchema.d.ts +107 -395
  56. package/financing/formalization/schemas/BtgPFSchema.js +127 -47
  57. package/financing/formalization/schemas/BtgPFSchema.mjs +3 -3
  58. package/financing/formalization/schemas/BtgPJSchema.d.cts +147 -747
  59. package/financing/formalization/schemas/BtgPJSchema.d.ts +147 -747
  60. package/financing/formalization/schemas/BtgPJSchema.js +193 -47
  61. package/financing/formalization/schemas/BtgPJSchema.mjs +3 -3
  62. package/financing/formalization/schemas/BvPFSchema.d.cts +125 -477
  63. package/financing/formalization/schemas/BvPFSchema.d.ts +125 -477
  64. package/financing/formalization/schemas/BvPFSchema.js +129 -49
  65. package/financing/formalization/schemas/BvPFSchema.mjs +3 -3
  66. package/financing/formalization/schemas/BvPJSchema.d.cts +149 -819
  67. package/financing/formalization/schemas/BvPJSchema.d.ts +149 -819
  68. package/financing/formalization/schemas/BvPJSchema.js +193 -47
  69. package/financing/formalization/schemas/BvPJSchema.mjs +3 -3
  70. package/financing/formalization/schemas/CaixaEconomicaFederalPFSchema.d.cts +107 -395
  71. package/financing/formalization/schemas/CaixaEconomicaFederalPFSchema.d.ts +107 -395
  72. package/financing/formalization/schemas/CaixaEconomicaFederalPFSchema.js +127 -47
  73. package/financing/formalization/schemas/CaixaEconomicaFederalPFSchema.mjs +3 -3
  74. package/financing/formalization/schemas/CaixaEconomicaFederalPJSchema.d.cts +119 -621
  75. package/financing/formalization/schemas/CaixaEconomicaFederalPJSchema.d.ts +119 -621
  76. package/financing/formalization/schemas/CaixaEconomicaFederalPJSchema.js +188 -46
  77. package/financing/formalization/schemas/CaixaEconomicaFederalPJSchema.mjs +2 -2
  78. package/financing/formalization/schemas/CashMePFSchema.d.cts +107 -395
  79. package/financing/formalization/schemas/CashMePFSchema.d.ts +107 -395
  80. package/financing/formalization/schemas/CashMePFSchema.js +127 -47
  81. package/financing/formalization/schemas/CashMePFSchema.mjs +3 -3
  82. package/financing/formalization/schemas/CashMePJSchema.d.cts +119 -621
  83. package/financing/formalization/schemas/CashMePJSchema.d.ts +119 -621
  84. package/financing/formalization/schemas/CashMePJSchema.js +188 -46
  85. package/financing/formalization/schemas/CashMePJSchema.mjs +2 -2
  86. package/financing/formalization/schemas/Credito77PFSchema.d.cts +107 -395
  87. package/financing/formalization/schemas/Credito77PFSchema.d.ts +107 -395
  88. package/financing/formalization/schemas/Credito77PFSchema.js +127 -47
  89. package/financing/formalization/schemas/Credito77PFSchema.mjs +3 -3
  90. package/financing/formalization/schemas/Credito77PJSchema.d.cts +119 -621
  91. package/financing/formalization/schemas/Credito77PJSchema.d.ts +119 -621
  92. package/financing/formalization/schemas/Credito77PJSchema.js +188 -46
  93. package/financing/formalization/schemas/Credito77PJSchema.mjs +2 -2
  94. package/financing/formalization/schemas/EosPFSchema.d.cts +107 -395
  95. package/financing/formalization/schemas/EosPFSchema.d.ts +107 -395
  96. package/financing/formalization/schemas/EosPFSchema.js +127 -47
  97. package/financing/formalization/schemas/EosPFSchema.mjs +3 -3
  98. package/financing/formalization/schemas/EosPJSchema.d.cts +119 -621
  99. package/financing/formalization/schemas/EosPJSchema.d.ts +119 -621
  100. package/financing/formalization/schemas/EosPJSchema.js +188 -46
  101. package/financing/formalization/schemas/EosPJSchema.mjs +2 -2
  102. package/financing/formalization/schemas/HdtEnergyPFSchema.d.cts +107 -395
  103. package/financing/formalization/schemas/HdtEnergyPFSchema.d.ts +107 -395
  104. package/financing/formalization/schemas/HdtEnergyPFSchema.js +127 -47
  105. package/financing/formalization/schemas/HdtEnergyPFSchema.mjs +3 -3
  106. package/financing/formalization/schemas/HdtEnergyPJSchema.d.cts +119 -621
  107. package/financing/formalization/schemas/HdtEnergyPJSchema.d.ts +119 -621
  108. package/financing/formalization/schemas/HdtEnergyPJSchema.js +188 -46
  109. package/financing/formalization/schemas/HdtEnergyPJSchema.mjs +2 -2
  110. package/financing/formalization/schemas/LosangoPFSchema.d.cts +107 -395
  111. package/financing/formalization/schemas/LosangoPFSchema.d.ts +107 -395
  112. package/financing/formalization/schemas/LosangoPFSchema.js +127 -47
  113. package/financing/formalization/schemas/LosangoPFSchema.mjs +3 -3
  114. package/financing/formalization/schemas/LosangoPJSchema.d.cts +119 -621
  115. package/financing/formalization/schemas/LosangoPJSchema.d.ts +119 -621
  116. package/financing/formalization/schemas/LosangoPJSchema.js +188 -46
  117. package/financing/formalization/schemas/LosangoPJSchema.mjs +2 -2
  118. package/financing/formalization/schemas/SafraPFSchema.d.cts +107 -395
  119. package/financing/formalization/schemas/SafraPFSchema.d.ts +107 -395
  120. package/financing/formalization/schemas/SafraPFSchema.js +127 -47
  121. package/financing/formalization/schemas/SafraPFSchema.mjs +3 -3
  122. package/financing/formalization/schemas/SafraPJSchema.d.cts +119 -621
  123. package/financing/formalization/schemas/SafraPJSchema.d.ts +119 -621
  124. package/financing/formalization/schemas/SafraPJSchema.js +188 -46
  125. package/financing/formalization/schemas/SafraPJSchema.mjs +2 -2
  126. package/financing/formalization/schemas/SantanderPFSchema.d.cts +107 -395
  127. package/financing/formalization/schemas/SantanderPFSchema.d.ts +107 -395
  128. package/financing/formalization/schemas/SantanderPFSchema.js +127 -47
  129. package/financing/formalization/schemas/SantanderPFSchema.mjs +3 -3
  130. package/financing/formalization/schemas/SantanderPJSchema.d.cts +119 -621
  131. package/financing/formalization/schemas/SantanderPJSchema.d.ts +119 -621
  132. package/financing/formalization/schemas/SantanderPJSchema.js +188 -46
  133. package/financing/formalization/schemas/SantanderPJSchema.mjs +2 -2
  134. package/financing/formalization/schemas/SolAgoraPFSchema.d.cts +107 -395
  135. package/financing/formalization/schemas/SolAgoraPFSchema.d.ts +107 -395
  136. package/financing/formalization/schemas/SolAgoraPFSchema.js +127 -47
  137. package/financing/formalization/schemas/SolAgoraPFSchema.mjs +3 -3
  138. package/financing/formalization/schemas/SolAgoraPJSchema.d.cts +145 -725
  139. package/financing/formalization/schemas/SolAgoraPJSchema.d.ts +145 -725
  140. package/financing/formalization/schemas/SolAgoraPJSchema.js +193 -47
  141. package/financing/formalization/schemas/SolAgoraPJSchema.mjs +3 -3
  142. package/financing/formalization/schemas/SolfacilPFSchema.d.cts +107 -395
  143. package/financing/formalization/schemas/SolfacilPFSchema.d.ts +107 -395
  144. package/financing/formalization/schemas/SolfacilPFSchema.js +127 -47
  145. package/financing/formalization/schemas/SolfacilPFSchema.mjs +3 -3
  146. package/financing/formalization/schemas/SolfacilPJSchema.d.cts +131 -679
  147. package/financing/formalization/schemas/SolfacilPJSchema.d.ts +131 -679
  148. package/financing/formalization/schemas/SolfacilPJSchema.js +188 -46
  149. package/financing/formalization/schemas/SolfacilPJSchema.mjs +2 -2
  150. package/financing/formalization/schemas/UnifiedPFSchema.d.cts +185 -557
  151. package/financing/formalization/schemas/UnifiedPFSchema.d.ts +185 -557
  152. package/financing/formalization/schemas/UnifiedPFSchema.js +141 -61
  153. package/financing/formalization/schemas/UnifiedPFSchema.mjs +3 -3
  154. package/financing/formalization/schemas/UnifiedPJSchema.d.cts +265 -1269
  155. package/financing/formalization/schemas/UnifiedPJSchema.d.ts +265 -1269
  156. package/financing/formalization/schemas/UnifiedPJSchema.js +238 -92
  157. package/financing/formalization/schemas/UnifiedPJSchema.mjs +3 -3
  158. package/index.d.cts +2 -1
  159. package/index.d.ts +2 -1
  160. package/index.js +516 -278
  161. package/index.mjs +33 -33
  162. package/package.json +2 -2
  163. package/chunk-4PZYGTUU.mjs +0 -105
  164. package/chunk-JZ7DY7SU.mjs +0 -13
@@ -2,48 +2,85 @@
2
2
 
3
3
  var zod = require('zod');
4
4
 
5
- // src/domains/financing/formalization/schemas/BtgPJSchema.ts
5
+ // src/shared/fields/primitives.ts
6
6
  var REQUIRED_MESSAGE = "Campo obrigat\xF3rio";
7
- var REQUIRED_STRING_PARAMS = {
8
- required_error: REQUIRED_MESSAGE,
9
- invalid_type_error: REQUIRED_MESSAGE
10
- };
11
7
  function requiredString() {
12
- return zod.z.string(REQUIRED_STRING_PARAMS);
8
+ return zod.z.string({ error: REQUIRED_MESSAGE });
13
9
  }
14
- function textField(maxLength) {
15
- const base = requiredString().trim().min(1, REQUIRED_MESSAGE);
16
- return maxLength === void 0 ? base : base.max(maxLength, `M\xE1ximo ${maxLength} caracteres`);
10
+ var DEFAULT_TEXT_MAX_LENGTH = 255;
11
+ function textField(maxLength = DEFAULT_TEXT_MAX_LENGTH) {
12
+ return requiredString().trim().min(1, REQUIRED_MESSAGE).max(maxLength, `M\xE1ximo ${maxLength} caracteres`);
17
13
  }
18
- zod.z.number({ required_error: REQUIRED_MESSAGE, invalid_type_error: "Valor num\xE9rico inv\xE1lido" }).nonnegative("Valor n\xE3o pode ser negativo");
19
- zod.z.number({ required_error: REQUIRED_MESSAGE, invalid_type_error: "Valor num\xE9rico inv\xE1lido" }).int("Deve ser um n\xFAmero inteiro").nonnegative("Valor n\xE3o pode ser negativo");
20
- function enumField(values) {
21
- return zod.z.enum(values, {
22
- errorMap: (issue, ctx) => {
23
- if (issue.code === zod.z.ZodIssueCode.invalid_type || issue.code === zod.z.ZodIssueCode.invalid_enum_value && issue.received === "") {
24
- return { message: REQUIRED_MESSAGE };
14
+ function requiredNumber(invalidTypeMessage) {
15
+ return zod.z.number({
16
+ error: (issue) => issue.input === void 0 ? REQUIRED_MESSAGE : invalidTypeMessage
17
+ });
18
+ }
19
+ requiredNumber("Valor num\xE9rico inv\xE1lido").nonnegative(
20
+ "Valor n\xE3o pode ser negativo"
21
+ );
22
+ requiredNumber("Valor num\xE9rico inv\xE1lido").int("Deve ser um n\xFAmero inteiro").nonnegative("Valor n\xE3o pode ser negativo");
23
+ function optionalField(schema) {
24
+ return zod.z.preprocess(
25
+ (value) => typeof value === "string" && value.trim() === "" ? void 0 : value,
26
+ schema.optional()
27
+ );
28
+ }
29
+ function unrecognizedKeysMessage(keys) {
30
+ const list = keys.map((key) => `"${key}"`).join(", ");
31
+ return keys.length === 1 ? `Campo n\xE3o reconhecido: ${list}` : `Campos n\xE3o reconhecidos: ${list}`;
32
+ }
33
+ function requiredObject(shape) {
34
+ return zod.z.object(shape, {
35
+ error: (issue) => {
36
+ if (issue.code === "invalid_type") {
37
+ return REQUIRED_MESSAGE;
38
+ }
39
+ if (issue.code === "unrecognized_keys") {
40
+ return unrecognizedKeysMessage(issue.keys);
25
41
  }
26
- return { message: ctx.defaultError };
42
+ return void 0;
27
43
  }
28
44
  });
29
45
  }
46
+ function requiredArray(element) {
47
+ return zod.z.array(element, {
48
+ error: (issue) => issue.code === "invalid_type" ? REQUIRED_MESSAGE : void 0
49
+ });
50
+ }
51
+ function enumField(values) {
52
+ return zod.z.enum(values, {
53
+ // No zod 4 todo input fora da lista (inclusive undefined/null) gera um único
54
+ // issue `invalid_value`. Tratamos ausência, tipo inválido e string vazia
55
+ // (select não preenchido) como "obrigatório"; um valor de fato inválido cai
56
+ // na mensagem padrão do zod (retornar undefined delega ao error map default).
57
+ error: (issue) => typeof issue.input !== "string" || issue.input === "" ? REQUIRED_MESSAGE : void 0
58
+ });
59
+ }
30
60
  var MAX_UPLOAD_BYTES = 5 * 1024 * 1024;
31
61
  var ACCEPTED_UPLOAD_MIME = ["image/jpeg", "image/png", "application/pdf"];
32
- var fileUploadField = zod.z.object(
33
- {
34
- url: zod.z.string().url().optional(),
35
- mime: zod.z.enum(ACCEPTED_UPLOAD_MIME, {
36
- errorMap: () => ({ message: "Formato deve ser JPEG, PNG ou PDF" })
37
- }),
38
- sizeBytes: zod.z.number().max(MAX_UPLOAD_BYTES, "Arquivo deve ter no m\xE1ximo 5MB")
39
- },
40
- REQUIRED_STRING_PARAMS
41
- );
62
+ var UPLOAD_URL_PROTOCOL = /^https$/;
63
+ var UPLOAD_URL_HOSTNAME = /^(?!localhost$)(?!(\d{1,3}\.){3}\d{1,3}$)[a-z0-9.-]+$/i;
64
+ var fileUploadField = requiredObject({
65
+ url: optionalField(
66
+ zod.z.url({
67
+ protocol: UPLOAD_URL_PROTOCOL,
68
+ hostname: UPLOAD_URL_HOSTNAME,
69
+ error: "URL do arquivo inv\xE1lida"
70
+ })
71
+ ),
72
+ mime: zod.z.enum(ACCEPTED_UPLOAD_MIME, { error: "Formato deve ser JPEG, PNG ou PDF" }),
73
+ sizeBytes: requiredNumber("Tamanho do arquivo inv\xE1lido").int("Tamanho do arquivo deve ser um n\xFAmero inteiro").positive("Tamanho do arquivo deve ser positivo").max(MAX_UPLOAD_BYTES, "Arquivo deve ter no m\xE1ximo 5MB")
74
+ });
42
75
 
43
76
  // src/shared/enums/document-type.ts
44
77
  var DocumentTypeEnum = enumField([
45
78
  "documento_de_identidade",
46
- "carteira_nacional_de_habilita\xE7\xE3o"
79
+ "carteira_nacional_de_habilita\xE7\xE3o",
80
+ // Exigido pela RN-015 para nacionalidade estrangeira. Sem este membro a
81
+ // regra seria insatisfazível: todo schema é .strict() com type_doc
82
+ // restrito a este enum.
83
+ "registro_de_estrangeiro"
47
84
  ]);
48
85
 
49
86
  // src/shared/enums/nationality.ts
@@ -117,7 +154,10 @@ var PATTERNS = {
117
154
  cep: /^\d{8}$/,
118
155
  phoneBR: /^\d{11}$/,
119
156
  email: /^[^\s@]+@[^\s@]+\.[^\s@]+$/,
120
- dateDMY: /^\d{2}\/\d{2}\/\d{4}$/};
157
+ dateDMY: /^\d{2}\/\d{2}\/\d{4}$/,
158
+ // Formato do RNE, exigido pela RN-015 para nacionalidade estrangeira.
159
+ rneNumber: /^[A-Za-z0-9]+$/
160
+ };
121
161
 
122
162
  // src/shared/regex/validators.ts
123
163
  function onlyDigits(value) {
@@ -197,6 +237,13 @@ function isNotFutureDMY(value, reference = /* @__PURE__ */ new Date()) {
197
237
  }
198
238
  return date.getTime() <= reference.getTime();
199
239
  }
240
+ function yearsSinceDMY(value, reference = /* @__PURE__ */ new Date()) {
241
+ const date = parseDMY(value);
242
+ if (!date) {
243
+ return null;
244
+ }
245
+ return ageInYears(date, reference);
246
+ }
200
247
 
201
248
  // src/shared/regex/index.ts
202
249
  function requiredFormatString() {
@@ -227,27 +274,63 @@ function parseBRLCurrency(value) {
227
274
  if (typeof value !== "string") {
228
275
  return value;
229
276
  }
230
- const trimmed = value.trim();
231
- if (trimmed === "") {
277
+ const normalized = value.replace(/R\$/gi, "").replace(/\s/g, "").replace(/\./g, "").replace(",", ".");
278
+ if (normalized === "") {
232
279
  return void 0;
233
280
  }
234
- const normalized = trimmed.replace(/R\$/gi, "").replace(/\s/g, "").replace(/\./g, "").replace(",", ".");
235
281
  const parsed = Number(normalized);
236
282
  return Number.isNaN(parsed) ? value : parsed;
237
283
  }
238
- var currencySchema = zod.z.preprocess(
239
- parseBRLCurrency,
240
- zod.z.number({ required_error: REQUIRED_MESSAGE, invalid_type_error: "Valor monet\xE1rio inv\xE1lido" }).positive("Valor deve ser positivo")
241
- );
242
- zod.z.number({ required_error: REQUIRED_MESSAGE, invalid_type_error: "Valor num\xE9rico inv\xE1lido" }).int("Deve ser um n\xFAmero inteiro").min(1, "M\xEDnimo 1").max(28, "M\xE1ximo 28");
284
+ function brlAmount() {
285
+ return requiredNumber("Valor monet\xE1rio inv\xE1lido").positive("Valor deve ser positivo");
286
+ }
287
+ var currencySchema = zod.z.preprocess(parseBRLCurrency, brlAmount());
288
+ zod.z.preprocess(parseBRLCurrency, brlAmount().optional());
289
+ requiredNumber("Valor num\xE9rico inv\xE1lido").int("Deve ser um n\xFAmero inteiro").min(1, "M\xEDnimo 1").max(28, "M\xE1ximo 28");
243
290
  var formalizationExtras = {
244
291
  voucher_local_installation_address: fileUploadField,
245
- proof_kinship_type: ProofKinshipTypeEnum.optional(),
292
+ proof_kinship_type: optionalField(ProofKinshipTypeEnum),
246
293
  proof_kinship: fileUploadField.optional(),
247
294
  document_front_upload: fileUploadField,
248
295
  document_back_upload: fileUploadField,
249
296
  rd_re_insurance_toggle: zod.z.boolean().default(true)
250
297
  };
298
+
299
+ // src/domains/financing/enums/civil-status.ts
300
+ var CIVIL_STATUS_REQUIRING_PARTNER = ["casado"];
301
+ var PARTNER_FIELDS = [
302
+ "partner_name",
303
+ "partner_birth",
304
+ "partner_type_doc",
305
+ "partner_doc",
306
+ "partner_cpf",
307
+ "partner_city",
308
+ "communion_regime"
309
+ ];
310
+
311
+ // src/domains/financing/enums/occupation.ts
312
+ var OCCUPATIONS_REQUIRING_CNPJ = ["empresario", "empresario_ou_proprietario"];
313
+
314
+ // src/domains/financing/formalization/refinements.ts
315
+ var RG_MAX_EMISSION_YEARS = 10;
316
+ function applyPartnerRefinement(data, ctx) {
317
+ const civilStatus = data.civil_status;
318
+ const requiresPartner = typeof civilStatus === "string" && CIVIL_STATUS_REQUIRING_PARTNER.includes(civilStatus);
319
+ if (!requiresPartner) {
320
+ return;
321
+ }
322
+ for (const field of PARTNER_FIELDS) {
323
+ const value = data[field];
324
+ const isEmpty = value === void 0 || value === null || typeof value === "string" && value.trim().length === 0;
325
+ if (isEmpty) {
326
+ ctx.addIssue({
327
+ code: "custom",
328
+ path: [field],
329
+ message: "Campo obrigat\xF3rio para o estado civil informado"
330
+ });
331
+ }
332
+ }
333
+ }
251
334
  function applyCommonRefinements(data, ctx) {
252
335
  const accountInThirdPartyName = data.energy_account_in_requester_name === "sim";
253
336
  if (!accountInThirdPartyName) {
@@ -255,27 +338,90 @@ function applyCommonRefinements(data, ctx) {
255
338
  }
256
339
  if (!data.proof_kinship_type) {
257
340
  ctx.addIssue({
258
- code: zod.z.ZodIssueCode.custom,
341
+ code: "custom",
259
342
  path: ["proof_kinship_type"],
260
343
  message: "Tipo de comprovante \xE9 obrigat\xF3rio quando a conta est\xE1 em nome de terceiro"
261
344
  });
262
345
  }
263
346
  if (!data.proof_kinship) {
264
347
  ctx.addIssue({
265
- code: zod.z.ZodIssueCode.custom,
348
+ code: "custom",
266
349
  path: ["proof_kinship"],
267
350
  message: "Documento de v\xEDnculo \xE9 obrigat\xF3rio quando a conta est\xE1 em nome de terceiro"
268
351
  });
269
352
  }
270
353
  }
354
+ var FOREIGN_DOCUMENT_TYPE = "registro_de_estrangeiro";
355
+ function applyForeignDocumentRefinement(data, ctx) {
356
+ const nationality = data.nationality;
357
+ const isForeign = typeof nationality === "string" && nationality.toLowerCase() !== NATIONALITY_BRAZIL;
358
+ if (!isForeign || !("type_doc" in data)) {
359
+ return;
360
+ }
361
+ if (data.type_doc !== FOREIGN_DOCUMENT_TYPE) {
362
+ ctx.addIssue({
363
+ code: "custom",
364
+ path: ["type_doc"],
365
+ message: "Para nacionalidade estrangeira, o documento deve ser Registro de Estrangeiro (RNE)"
366
+ });
367
+ return;
368
+ }
369
+ if (typeof data.doc === "string" && !PATTERNS.rneNumber.test(data.doc)) {
370
+ ctx.addIssue({
371
+ code: "custom",
372
+ path: ["doc"],
373
+ message: "RNE deve conter apenas letras e n\xFAmeros"
374
+ });
375
+ }
376
+ }
377
+ function isRecord(data) {
378
+ return typeof data === "object" && data !== null;
379
+ }
380
+ function applyPfRefinements(data, ctx) {
381
+ if (!isRecord(data)) {
382
+ return;
383
+ }
384
+ applyCommonRefinements(data, ctx);
385
+ applyPartnerRefinement(data, ctx);
386
+ if ("nature_of_occupation" in data && typeof data.nature_of_occupation === "string" && OCCUPATIONS_REQUIRING_CNPJ.includes(data.nature_of_occupation) && !data.cnpj_proprietary) {
387
+ ctx.addIssue({
388
+ code: "custom",
389
+ path: ["cnpj_proprietary"],
390
+ message: "CNPJ do propriet\xE1rio \xE9 obrigat\xF3rio para esta ocupa\xE7\xE3o"
391
+ });
392
+ }
393
+ if (data.type_doc === "documento_de_identidade" && typeof data.doc_issue_date === "string") {
394
+ const years = yearsSinceDMY(data.doc_issue_date);
395
+ if (years !== null && years > RG_MAX_EMISSION_YEARS) {
396
+ ctx.addIssue({
397
+ code: "custom",
398
+ path: ["doc_issue_date"],
399
+ message: `RG deve ter no m\xE1ximo ${RG_MAX_EMISSION_YEARS} anos de emiss\xE3o`
400
+ });
401
+ }
402
+ }
403
+ applyForeignDocumentRefinement(data, ctx);
404
+ }
271
405
  function applyPjRefinements(data, ctx) {
406
+ if (!isRecord(data)) {
407
+ return;
408
+ }
272
409
  applyCommonRefinements(data, ctx);
273
410
  }
411
+ function onlyUnknownKeysAborted(payload) {
412
+ return payload.aborted !== true && !payload.issues.some((issue) => issue.continue !== true && issue.code !== "unrecognized_keys");
413
+ }
414
+ zod.z.superRefine(applyPfRefinements, {
415
+ when: onlyUnknownKeysAborted
416
+ });
417
+ var pjRefinement = zod.z.superRefine(applyPjRefinements, {
418
+ when: onlyUnknownKeysAborted
419
+ });
274
420
 
275
421
  // src/domains/financing/formalization/schemas/BtgPJSchema.ts
276
- var btgPjObject = zod.z.object({
422
+ var btgPjObject = requiredObject({
277
423
  ...formalizationExtras,
278
- financing_company: zod.z.object({
424
+ financing_company: requiredObject({
279
425
  corporate_name: textField(),
280
426
  cep: cepSchema,
281
427
  address: textField(),
@@ -283,7 +429,7 @@ var btgPjObject = zod.z.object({
283
429
  number: textField(),
284
430
  cnpj: cnpjSchema,
285
431
  email: emailSchema,
286
- complement: textField(15).optional(),
432
+ complement: optionalField(textField(15)),
287
433
  phone: phoneBRSchema,
288
434
  district: textField(),
289
435
  legal_nature: textField(),
@@ -293,15 +439,15 @@ var btgPjObject = zod.z.object({
293
439
  economic_activity: textField(),
294
440
  monthly_income: currencySchema
295
441
  }).strict(),
296
- financing_company_guarantor: zod.z.array(
297
- zod.z.object({
442
+ financing_company_guarantor: requiredArray(
443
+ requiredObject({
298
444
  name: textField(),
299
445
  cep: cepSchema,
300
446
  cpf: cpfSchema,
301
447
  address: textField(),
302
448
  birth_date: birthDateSchema,
303
449
  number: textField(),
304
- complement: textField(15).optional(),
450
+ complement: optionalField(textField(15)),
305
451
  cellphone: phoneBRSchema,
306
452
  phone: phoneBRSchema,
307
453
  email: emailSchema,
@@ -325,7 +471,7 @@ var btgPjObject = zod.z.object({
325
471
  }).strict()
326
472
  )
327
473
  });
328
- var btgPjSchema = btgPjObject.strict().superRefine(applyPjRefinements);
474
+ var btgPjSchema = btgPjObject.strict().check(pjRefinement);
329
475
 
330
476
  exports.btgPjObject = btgPjObject;
331
477
  exports.btgPjSchema = btgPjSchema;
@@ -1,3 +1,3 @@
1
- export { btgPjObject, btgPjSchema } from '../../../chunk-U4ZDMJX2.mjs';
2
- import '../../../chunk-JZ7DY7SU.mjs';
3
- import '../../../chunk-ENDOIQ32.mjs';
1
+ export { btgPjObject, btgPjSchema } from '../../../chunk-T2FBV7WO.mjs';
2
+ import '../../../chunk-QEPJ2RLU.mjs';
3
+ import '../../../chunk-CJSJ3VDW.mjs';