tyforge 0.1.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.

Potentially problematic release.


This version of tyforge might be problematic. Click here for more details.

Files changed (265) hide show
  1. package/dist/constants/http-status.constants.d.ts +26 -0
  2. package/dist/constants/http-status.constants.d.ts.map +1 -0
  3. package/dist/constants/http-status.constants.js +27 -0
  4. package/dist/constants/http-status.constants.js.map +1 -0
  5. package/dist/domain-models/agreggate.base.d.ts +10 -0
  6. package/dist/domain-models/agreggate.base.d.ts.map +1 -0
  7. package/dist/domain-models/agreggate.base.js +21 -0
  8. package/dist/domain-models/agreggate.base.js.map +1 -0
  9. package/dist/domain-models/base-repository.interface.d.ts +14 -0
  10. package/dist/domain-models/base-repository.interface.d.ts.map +1 -0
  11. package/dist/domain-models/base-repository.interface.js +3 -0
  12. package/dist/domain-models/base-repository.interface.js.map +1 -0
  13. package/dist/domain-models/class-domain-models.base.d.ts +19 -0
  14. package/dist/domain-models/class-domain-models.base.d.ts.map +1 -0
  15. package/dist/domain-models/class-domain-models.base.js +78 -0
  16. package/dist/domain-models/class-domain-models.base.js.map +1 -0
  17. package/dist/domain-models/class.base.d.ts +10 -0
  18. package/dist/domain-models/class.base.d.ts.map +1 -0
  19. package/dist/domain-models/class.base.js +10 -0
  20. package/dist/domain-models/class.base.js.map +1 -0
  21. package/dist/domain-models/domain-event.base.d.ts +19 -0
  22. package/dist/domain-models/domain-event.base.d.ts.map +1 -0
  23. package/dist/domain-models/domain-event.base.js +29 -0
  24. package/dist/domain-models/domain-event.base.js.map +1 -0
  25. package/dist/domain-models/dto-out-generic.d.ts +33 -0
  26. package/dist/domain-models/dto-out-generic.d.ts.map +1 -0
  27. package/dist/domain-models/dto-out-generic.js +55 -0
  28. package/dist/domain-models/dto-out-generic.js.map +1 -0
  29. package/dist/domain-models/dto-out.base.d.ts +21 -0
  30. package/dist/domain-models/dto-out.base.d.ts.map +1 -0
  31. package/dist/domain-models/dto-out.base.js +11 -0
  32. package/dist/domain-models/dto-out.base.js.map +1 -0
  33. package/dist/domain-models/dto.base.d.ts +23 -0
  34. package/dist/domain-models/dto.base.d.ts.map +1 -0
  35. package/dist/domain-models/dto.base.js +11 -0
  36. package/dist/domain-models/dto.base.js.map +1 -0
  37. package/dist/domain-models/entity.base.d.ts +11 -0
  38. package/dist/domain-models/entity.base.d.ts.map +1 -0
  39. package/dist/domain-models/entity.base.js +20 -0
  40. package/dist/domain-models/entity.base.js.map +1 -0
  41. package/dist/domain-models/value-object.base.d.ts +5 -0
  42. package/dist/domain-models/value-object.base.d.ts.map +1 -0
  43. package/dist/domain-models/value-object.base.js +13 -0
  44. package/dist/domain-models/value-object.base.js.map +1 -0
  45. package/dist/exceptions/auth.exception.d.ts +30 -0
  46. package/dist/exceptions/auth.exception.d.ts.map +1 -0
  47. package/dist/exceptions/auth.exception.js +290 -0
  48. package/dist/exceptions/auth.exception.js.map +1 -0
  49. package/dist/exceptions/base.exceptions.d.ts +36 -0
  50. package/dist/exceptions/base.exceptions.d.ts.map +1 -0
  51. package/dist/exceptions/base.exceptions.js +60 -0
  52. package/dist/exceptions/base.exceptions.js.map +1 -0
  53. package/dist/exceptions/boolean.exception.d.ts +7 -0
  54. package/dist/exceptions/boolean.exception.d.ts.map +1 -0
  55. package/dist/exceptions/boolean.exception.js +25 -0
  56. package/dist/exceptions/boolean.exception.js.map +1 -0
  57. package/dist/exceptions/business.exception.d.ts +13 -0
  58. package/dist/exceptions/business.exception.d.ts.map +1 -0
  59. package/dist/exceptions/business.exception.js +107 -0
  60. package/dist/exceptions/business.exception.js.map +1 -0
  61. package/dist/exceptions/date.exception.d.ts +8 -0
  62. package/dist/exceptions/date.exception.d.ts.map +1 -0
  63. package/dist/exceptions/date.exception.js +32 -0
  64. package/dist/exceptions/date.exception.js.map +1 -0
  65. package/dist/exceptions/db.exception.d.ts +13 -0
  66. package/dist/exceptions/db.exception.d.ts.map +1 -0
  67. package/dist/exceptions/db.exception.js +104 -0
  68. package/dist/exceptions/db.exception.js.map +1 -0
  69. package/dist/exceptions/generic.exception.d.ts +9 -0
  70. package/dist/exceptions/generic.exception.d.ts.map +1 -0
  71. package/dist/exceptions/generic.exception.js +25 -0
  72. package/dist/exceptions/generic.exception.js.map +1 -0
  73. package/dist/exceptions/id.exception.d.ts +8 -0
  74. package/dist/exceptions/id.exception.d.ts.map +1 -0
  75. package/dist/exceptions/id.exception.js +32 -0
  76. package/dist/exceptions/id.exception.js.map +1 -0
  77. package/dist/exceptions/implementation.exception.d.ts +13 -0
  78. package/dist/exceptions/implementation.exception.d.ts.map +1 -0
  79. package/dist/exceptions/implementation.exception.js +39 -0
  80. package/dist/exceptions/implementation.exception.js.map +1 -0
  81. package/dist/exceptions/index.d.ts +18 -0
  82. package/dist/exceptions/index.d.ts.map +1 -0
  83. package/dist/exceptions/index.js +41 -0
  84. package/dist/exceptions/index.js.map +1 -0
  85. package/dist/exceptions/int.exception.d.ts +7 -0
  86. package/dist/exceptions/int.exception.d.ts.map +1 -0
  87. package/dist/exceptions/int.exception.js +25 -0
  88. package/dist/exceptions/int.exception.js.map +1 -0
  89. package/dist/exceptions/interface.exception.d.ts +9 -0
  90. package/dist/exceptions/interface.exception.d.ts.map +1 -0
  91. package/dist/exceptions/interface.exception.js +27 -0
  92. package/dist/exceptions/interface.exception.js.map +1 -0
  93. package/dist/exceptions/json.exception.d.ts +8 -0
  94. package/dist/exceptions/json.exception.d.ts.map +1 -0
  95. package/dist/exceptions/json.exception.js +32 -0
  96. package/dist/exceptions/json.exception.js.map +1 -0
  97. package/dist/exceptions/not-found.exception.d.ts +9 -0
  98. package/dist/exceptions/not-found.exception.d.ts.map +1 -0
  99. package/dist/exceptions/not-found.exception.js +36 -0
  100. package/dist/exceptions/not-found.exception.js.map +1 -0
  101. package/dist/exceptions/string.exception.d.ts +8 -0
  102. package/dist/exceptions/string.exception.d.ts.map +1 -0
  103. package/dist/exceptions/string.exception.js +32 -0
  104. package/dist/exceptions/string.exception.js.map +1 -0
  105. package/dist/exceptions/text.exception.d.ts +8 -0
  106. package/dist/exceptions/text.exception.d.ts.map +1 -0
  107. package/dist/exceptions/text.exception.js +32 -0
  108. package/dist/exceptions/text.exception.js.map +1 -0
  109. package/dist/exceptions/unexpected.d.ts +17 -0
  110. package/dist/exceptions/unexpected.d.ts.map +1 -0
  111. package/dist/exceptions/unexpected.js +29 -0
  112. package/dist/exceptions/unexpected.js.map +1 -0
  113. package/dist/exceptions/validation.exception.d.ts +7 -0
  114. package/dist/exceptions/validation.exception.d.ts.map +1 -0
  115. package/dist/exceptions/validation.exception.js +24 -0
  116. package/dist/exceptions/validation.exception.js.map +1 -0
  117. package/dist/index.d.ts +46 -0
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +110 -0
  120. package/dist/index.js.map +1 -0
  121. package/dist/native-bridge.d.ts +12 -0
  122. package/dist/native-bridge.d.ts.map +1 -0
  123. package/dist/native-bridge.js +26 -0
  124. package/dist/native-bridge.js.map +1 -0
  125. package/dist/result/index.d.ts +2 -0
  126. package/dist/result/index.d.ts.map +1 -0
  127. package/dist/result/index.js +18 -0
  128. package/dist/result/index.js.map +1 -0
  129. package/dist/result/result.d.ts +29 -0
  130. package/dist/result/result.d.ts.map +1 -0
  131. package/dist/result/result.js +60 -0
  132. package/dist/result/result.js.map +1 -0
  133. package/dist/schema/index.d.ts +3 -0
  134. package/dist/schema/index.d.ts.map +1 -0
  135. package/dist/schema/index.js +19 -0
  136. package/dist/schema/index.js.map +1 -0
  137. package/dist/schema/schema-build.d.ts +20 -0
  138. package/dist/schema/schema-build.d.ts.map +1 -0
  139. package/dist/schema/schema-build.js +281 -0
  140. package/dist/schema/schema-build.js.map +1 -0
  141. package/dist/schema/schema-types.d.ts +90 -0
  142. package/dist/schema/schema-types.d.ts.map +1 -0
  143. package/dist/schema/schema-types.js +3 -0
  144. package/dist/schema/schema-types.js.map +1 -0
  145. package/dist/tools/formatting/date/date-formatting.tool.d.ts +45 -0
  146. package/dist/tools/formatting/date/date-formatting.tool.d.ts.map +1 -0
  147. package/dist/tools/formatting/date/date-formatting.tool.js +102 -0
  148. package/dist/tools/formatting/date/date-formatting.tool.js.map +1 -0
  149. package/dist/tools/index.d.ts +5 -0
  150. package/dist/tools/index.d.ts.map +1 -0
  151. package/dist/tools/index.js +25 -0
  152. package/dist/tools/index.js.map +1 -0
  153. package/dist/tools/parse/date/parse-date-ISO8601.tool.d.ts +61 -0
  154. package/dist/tools/parse/date/parse-date-ISO8601.tool.d.ts.map +1 -0
  155. package/dist/tools/parse/date/parse-date-ISO8601.tool.js +208 -0
  156. package/dist/tools/parse/date/parse-date-ISO8601.tool.js.map +1 -0
  157. package/dist/tools/parse/parse.tool.d.ts +5 -0
  158. package/dist/tools/parse/parse.tool.d.ts.map +1 -0
  159. package/dist/tools/parse/parse.tool.js +9 -0
  160. package/dist/tools/parse/parse.tool.js.map +1 -0
  161. package/dist/tools/type_guard.d.ts +28 -0
  162. package/dist/tools/type_guard.d.ts.map +1 -0
  163. package/dist/tools/type_guard.js +158 -0
  164. package/dist/tools/type_guard.js.map +1 -0
  165. package/dist/type-fields/api-key.format_vo.d.ts +23 -0
  166. package/dist/type-fields/api-key.format_vo.d.ts.map +1 -0
  167. package/dist/type-fields/api-key.format_vo.js +75 -0
  168. package/dist/type-fields/api-key.format_vo.js.map +1 -0
  169. package/dist/type-fields/bearer.format_vo.d.ts +20 -0
  170. package/dist/type-fields/bearer.format_vo.d.ts.map +1 -0
  171. package/dist/type-fields/bearer.format_vo.js +65 -0
  172. package/dist/type-fields/bearer.format_vo.js.map +1 -0
  173. package/dist/type-fields/bool-int.format_vo.d.ts +24 -0
  174. package/dist/type-fields/bool-int.format_vo.d.ts.map +1 -0
  175. package/dist/type-fields/bool-int.format_vo.js +58 -0
  176. package/dist/type-fields/bool-int.format_vo.js.map +1 -0
  177. package/dist/type-fields/boolean.format_vo.d.ts +19 -0
  178. package/dist/type-fields/boolean.format_vo.d.ts.map +1 -0
  179. package/dist/type-fields/boolean.format_vo.js +69 -0
  180. package/dist/type-fields/boolean.format_vo.js.map +1 -0
  181. package/dist/type-fields/date.format_vo.d.ts +67 -0
  182. package/dist/type-fields/date.format_vo.d.ts.map +1 -0
  183. package/dist/type-fields/date.format_vo.js +209 -0
  184. package/dist/type-fields/date.format_vo.js.map +1 -0
  185. package/dist/type-fields/descricao.format_vo.d.ts +19 -0
  186. package/dist/type-fields/descricao.format_vo.d.ts.map +1 -0
  187. package/dist/type-fields/descricao.format_vo.js +50 -0
  188. package/dist/type-fields/descricao.format_vo.js.map +1 -0
  189. package/dist/type-fields/email.format_vo.d.ts +20 -0
  190. package/dist/type-fields/email.format_vo.d.ts.map +1 -0
  191. package/dist/type-fields/email.format_vo.js +58 -0
  192. package/dist/type-fields/email.format_vo.js.map +1 -0
  193. package/dist/type-fields/http-status.format_vo.d.ts +20 -0
  194. package/dist/type-fields/http-status.format_vo.d.ts.map +1 -0
  195. package/dist/type-fields/http-status.format_vo.js +56 -0
  196. package/dist/type-fields/http-status.format_vo.js.map +1 -0
  197. package/dist/type-fields/id-req.format_vo.d.ts +19 -0
  198. package/dist/type-fields/id-req.format_vo.d.ts.map +1 -0
  199. package/dist/type-fields/id-req.format_vo.js +50 -0
  200. package/dist/type-fields/id-req.format_vo.js.map +1 -0
  201. package/dist/type-fields/id.format_vo.d.ts +21 -0
  202. package/dist/type-fields/id.format_vo.d.ts.map +1 -0
  203. package/dist/type-fields/id.format_vo.js +68 -0
  204. package/dist/type-fields/id.format_vo.js.map +1 -0
  205. package/dist/type-fields/index.d.ts +26 -0
  206. package/dist/type-fields/index.d.ts.map +1 -0
  207. package/dist/type-fields/index.js +59 -0
  208. package/dist/type-fields/index.js.map +1 -0
  209. package/dist/type-fields/int.format_vo.d.ts +19 -0
  210. package/dist/type-fields/int.format_vo.d.ts.map +1 -0
  211. package/dist/type-fields/int.format_vo.js +58 -0
  212. package/dist/type-fields/int.format_vo.js.map +1 -0
  213. package/dist/type-fields/json.format_vo.d.ts +25 -0
  214. package/dist/type-fields/json.format_vo.d.ts.map +1 -0
  215. package/dist/type-fields/json.format_vo.js +84 -0
  216. package/dist/type-fields/json.format_vo.js.map +1 -0
  217. package/dist/type-fields/nome-completo.format_vo.d.ts +19 -0
  218. package/dist/type-fields/nome-completo.format_vo.d.ts.map +1 -0
  219. package/dist/type-fields/nome-completo.format_vo.js +50 -0
  220. package/dist/type-fields/nome-completo.format_vo.js.map +1 -0
  221. package/dist/type-fields/page-number.format_vo.d.ts +19 -0
  222. package/dist/type-fields/page-number.format_vo.d.ts.map +1 -0
  223. package/dist/type-fields/page-number.format_vo.js +61 -0
  224. package/dist/type-fields/page-number.format_vo.js.map +1 -0
  225. package/dist/type-fields/page-size.format_vo.d.ts +19 -0
  226. package/dist/type-fields/page-size.format_vo.d.ts.map +1 -0
  227. package/dist/type-fields/page-size.format_vo.js +64 -0
  228. package/dist/type-fields/page-size.format_vo.js.map +1 -0
  229. package/dist/type-fields/password.format_vo.d.ts +23 -0
  230. package/dist/type-fields/password.format_vo.d.ts.map +1 -0
  231. package/dist/type-fields/password.format_vo.js +66 -0
  232. package/dist/type-fields/password.format_vo.js.map +1 -0
  233. package/dist/type-fields/public-key-pem.format_vo.d.ts +22 -0
  234. package/dist/type-fields/public-key-pem.format_vo.d.ts.map +1 -0
  235. package/dist/type-fields/public-key-pem.format_vo.js +70 -0
  236. package/dist/type-fields/public-key-pem.format_vo.js.map +1 -0
  237. package/dist/type-fields/signature.format_vo.d.ts +20 -0
  238. package/dist/type-fields/signature.format_vo.d.ts.map +1 -0
  239. package/dist/type-fields/signature.format_vo.js +61 -0
  240. package/dist/type-fields/signature.format_vo.js.map +1 -0
  241. package/dist/type-fields/status-aplicacao.format_vo.d.ts +27 -0
  242. package/dist/type-fields/status-aplicacao.format_vo.d.ts.map +1 -0
  243. package/dist/type-fields/status-aplicacao.format_vo.js +69 -0
  244. package/dist/type-fields/status-aplicacao.format_vo.js.map +1 -0
  245. package/dist/type-fields/string.format_vo.d.ts +19 -0
  246. package/dist/type-fields/string.format_vo.d.ts.map +1 -0
  247. package/dist/type-fields/string.format_vo.js +50 -0
  248. package/dist/type-fields/string.format_vo.js.map +1 -0
  249. package/dist/type-fields/text.format_vo.d.ts +19 -0
  250. package/dist/type-fields/text.format_vo.d.ts.map +1 -0
  251. package/dist/type-fields/text.format_vo.js +50 -0
  252. package/dist/type-fields/text.format_vo.js.map +1 -0
  253. package/dist/type-fields/trace-id.format_vo.d.ts +118 -0
  254. package/dist/type-fields/trace-id.format_vo.d.ts.map +1 -0
  255. package/dist/type-fields/trace-id.format_vo.js +120 -0
  256. package/dist/type-fields/trace-id.format_vo.js.map +1 -0
  257. package/dist/type-fields/type-field.base.d.ts +37 -0
  258. package/dist/type-fields/type-field.base.d.ts.map +1 -0
  259. package/dist/type-fields/type-field.base.js +108 -0
  260. package/dist/type-fields/type-field.base.js.map +1 -0
  261. package/dist/type-fields/type-field.config.d.ts +44 -0
  262. package/dist/type-fields/type-field.config.d.ts.map +1 -0
  263. package/dist/type-fields/type-field.config.js +3 -0
  264. package/dist/type-fields/type-field.config.js.map +1 -0
  265. package/package.json +44 -0
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemaBuilder = void 0;
4
+ const validation_exception_1 = require("../exceptions/validation.exception");
5
+ const result_1 = require("../result");
6
+ /** Campo no schema que define VO/Entity ou inline */
7
+ function isFieldConfig(entry) {
8
+ return entry.type !== undefined;
9
+ }
10
+ const requiredError = (path) => validation_exception_1.ExceptionValidation.create(path, "Campo obrigatório ausente.");
11
+ function compileFields(schema, basePath) {
12
+ const fields = [];
13
+ for (const key of Object.keys(schema)) {
14
+ let entry = schema[key];
15
+ const path = basePath ? `${basePath}.${key}` : key;
16
+ // Array syntax [{ type, required }]
17
+ if (Array.isArray(entry)) {
18
+ const cfg = entry[0];
19
+ entry = { type: cfg.type, required: cfg.required, isArray: true };
20
+ }
21
+ if (isFieldConfig(entry)) {
22
+ const t = entry.type;
23
+ const creatable = t;
24
+ const isCreatable = typeof creatable.create === "function";
25
+ const isArray = entry.isArray === true;
26
+ if (isArray) {
27
+ fields.push({
28
+ key,
29
+ path,
30
+ required: entry.required !== false,
31
+ kind: isCreatable ? 2 /* FieldKind.ArrayCreatable */ : 3 /* FieldKind.ArrayNestedSchema */,
32
+ creatable: isCreatable ? creatable : null,
33
+ hasAssign: isCreatable && typeof creatable.assign === "function",
34
+ nestedValidator: !isCreatable ? { fields: compileFields(t, ""), run: createRunner(t) } : null,
35
+ });
36
+ }
37
+ else {
38
+ fields.push({
39
+ key,
40
+ path,
41
+ required: entry.required !== false,
42
+ kind: isCreatable ? 0 /* FieldKind.Creatable */ : 1 /* FieldKind.NestedSchema */,
43
+ creatable: isCreatable ? creatable : null,
44
+ hasAssign: isCreatable && typeof creatable.assign === "function",
45
+ nestedValidator: !isCreatable ? { fields: compileFields(t, path), run: createRunner(t) } : null,
46
+ });
47
+ }
48
+ }
49
+ else {
50
+ // Inline nested object (no {type:...})
51
+ fields.push({
52
+ key,
53
+ path,
54
+ required: true,
55
+ kind: 1 /* FieldKind.NestedSchema */,
56
+ creatable: null,
57
+ hasAssign: false,
58
+ nestedValidator: { fields: compileFields(entry, path), run: createRunner(entry) },
59
+ });
60
+ }
61
+ }
62
+ return fields;
63
+ }
64
+ function createRunner(schema) {
65
+ let compiled = null;
66
+ return function run(data, basePath, mode) {
67
+ if (!compiled)
68
+ compiled = compileFields(schema, basePath);
69
+ if (!data || typeof data !== "object") {
70
+ return (0, result_1.err)(validation_exception_1.ExceptionValidation.create(basePath || "root", "Dados obrigatórios ausentes."));
71
+ }
72
+ const dataRecord = data;
73
+ const props = {};
74
+ for (let i = 0; i < compiled.length; i++) {
75
+ const field = compiled[i];
76
+ const value = dataRecord[field.key];
77
+ switch (field.kind) {
78
+ case 0 /* FieldKind.Creatable */: {
79
+ if (value === undefined || value === null) {
80
+ if (field.required)
81
+ return (0, result_1.err)(requiredError(field.path));
82
+ continue;
83
+ }
84
+ const res = mode === "create" || !field.hasAssign
85
+ ? field.creatable.create(value, field.path)
86
+ : field.creatable.assign(value);
87
+ if (!res.success)
88
+ return res;
89
+ props[field.key] = res.value;
90
+ break;
91
+ }
92
+ case 2 /* FieldKind.ArrayCreatable */: {
93
+ if (value === undefined || value === null) {
94
+ if (field.required)
95
+ return (0, result_1.err)(requiredError(field.path));
96
+ continue;
97
+ }
98
+ if (!Array.isArray(value)) {
99
+ return (0, result_1.err)(validation_exception_1.ExceptionValidation.create(field.path, "Esperado array."));
100
+ }
101
+ const arr = [];
102
+ for (let j = 0; j < value.length; j++) {
103
+ const item = value[j];
104
+ const idxPath = `${field.path}[${j}]`;
105
+ if (field.required && (item === undefined || item === null)) {
106
+ return (0, result_1.err)(requiredError(idxPath));
107
+ }
108
+ const res = mode === "create" || !field.hasAssign
109
+ ? field.creatable.create(item, idxPath)
110
+ : field.creatable.assign(item);
111
+ if (!res.success)
112
+ return res;
113
+ arr.push(res.value);
114
+ }
115
+ props[field.key] = arr;
116
+ break;
117
+ }
118
+ case 1 /* FieldKind.NestedSchema */: {
119
+ if (value === undefined || value === null) {
120
+ if (field.required)
121
+ return (0, result_1.err)(requiredError(field.path));
122
+ continue;
123
+ }
124
+ const nested = field.nestedValidator.run(value, field.path, mode);
125
+ if (!nested.success)
126
+ return nested;
127
+ props[field.key] = nested.value;
128
+ break;
129
+ }
130
+ case 3 /* FieldKind.ArrayNestedSchema */: {
131
+ if (value === undefined || value === null) {
132
+ if (field.required)
133
+ return (0, result_1.err)(requiredError(field.path));
134
+ continue;
135
+ }
136
+ if (!Array.isArray(value)) {
137
+ return (0, result_1.err)(validation_exception_1.ExceptionValidation.create(field.path, "Esperado array."));
138
+ }
139
+ const arr = [];
140
+ for (let j = 0; j < value.length; j++) {
141
+ const item = value[j];
142
+ const idxPath = `${field.path}[${j}]`;
143
+ if (field.required && (item === undefined || item === null)) {
144
+ return (0, result_1.err)(requiredError(idxPath));
145
+ }
146
+ const nested = field.nestedValidator.run(item, idxPath, mode);
147
+ if (!nested.success)
148
+ return nested;
149
+ arr.push(nested.value);
150
+ }
151
+ props[field.key] = arr;
152
+ break;
153
+ }
154
+ }
155
+ }
156
+ return (0, result_1.ok)(props);
157
+ };
158
+ }
159
+ class SchemaBuilder {
160
+ /**
161
+ * Compila o schema uma vez e retorna um validador otimizado.
162
+ * Uso: const validator = SchemaBuilder.compile(schema);
163
+ * validator.create(data, "user");
164
+ */
165
+ static compile(schema) {
166
+ const runner = createRunner(schema);
167
+ return {
168
+ create(data, path = "") {
169
+ return runner(data, path, "create");
170
+ },
171
+ assign(data, path = "") {
172
+ return runner(data, path, "assign");
173
+ },
174
+ };
175
+ }
176
+ /**
177
+ * Constrói props validados a partir de schema e dados JSON (não-compilado, backward compatible)
178
+ */
179
+ static build(schema, data, path = "", mode) {
180
+ const schemaKeys = Object.keys(schema);
181
+ if (schemaKeys.length > 0) {
182
+ if (!data || typeof data !== "object") {
183
+ return (0, result_1.err)(validation_exception_1.ExceptionValidation.create(path || "root", "Dados obrigatórios ausentes."));
184
+ }
185
+ }
186
+ const props = {};
187
+ for (const key of schemaKeys) {
188
+ let entry = schema[key];
189
+ const fieldPath = path ? `${path}.${key}` : key;
190
+ const value = data[key];
191
+ // Suporte à sintaxe [ { type, required } ] → converte pra isArray:true
192
+ if (Array.isArray(entry)) {
193
+ const cfg = entry[0];
194
+ entry = {
195
+ type: cfg.type,
196
+ required: cfg.required,
197
+ isArray: true,
198
+ };
199
+ }
200
+ // 1) Campo array (isArray: true)
201
+ if (isFieldConfig(entry) && entry.isArray) {
202
+ const arrayReq = entry.required !== false;
203
+ if (value === undefined || value === null) {
204
+ if (arrayReq)
205
+ return (0, result_1.err)(requiredError(fieldPath));
206
+ continue;
207
+ }
208
+ if (!Array.isArray(value))
209
+ return (0, result_1.err)(validation_exception_1.ExceptionValidation.create(fieldPath, "Esperado array."));
210
+ const itemReq = entry.required !== false;
211
+ const arr = [];
212
+ for (let i = 0; i < value.length; i++) {
213
+ const item = value[i];
214
+ const idxPath = `${fieldPath}[${i}]`;
215
+ if (itemReq && (item === undefined || item === null)) {
216
+ return (0, result_1.err)(requiredError(idxPath));
217
+ }
218
+ const t = entry.type;
219
+ const creatable = t;
220
+ if (typeof creatable.create === "function") {
221
+ const res = mode === "create"
222
+ ? creatable.create(item, idxPath)
223
+ : typeof creatable.assign === "function"
224
+ ? creatable.assign(item)
225
+ : creatable.create(item, idxPath);
226
+ if ((0, result_1.isFailure)(res))
227
+ return res;
228
+ arr.push(res.value);
229
+ }
230
+ else {
231
+ const nested = SchemaBuilder.build(t, item, idxPath, mode);
232
+ if ((0, result_1.isFailure)(nested))
233
+ return nested;
234
+ arr.push(nested.value);
235
+ }
236
+ }
237
+ props[key] = arr;
238
+ continue;
239
+ }
240
+ // 2) Campo simples (VO/Entity ou inline objeto)
241
+ if (isFieldConfig(entry)) {
242
+ const isReq = entry.required !== false;
243
+ if (value === undefined || value === null) {
244
+ if (isReq)
245
+ return (0, result_1.err)(requiredError(fieldPath));
246
+ continue;
247
+ }
248
+ const t = entry.type;
249
+ const creatableField = t;
250
+ if (typeof creatableField.create === "function") {
251
+ const res = mode === "create"
252
+ ? creatableField.create(value, fieldPath)
253
+ : typeof creatableField.assign === "function"
254
+ ? creatableField.assign(value)
255
+ : creatableField.create(value, fieldPath);
256
+ if ((0, result_1.isFailure)(res))
257
+ return res;
258
+ props[key] = res.value;
259
+ }
260
+ else {
261
+ const nested = SchemaBuilder.build(t, value, fieldPath, mode);
262
+ if ((0, result_1.isFailure)(nested))
263
+ return nested;
264
+ props[key] = nested.value;
265
+ }
266
+ continue;
267
+ }
268
+ // 3) Objeto aninhado pelo próprio schema (sem {type:...})
269
+ if (value === undefined || value === null) {
270
+ return (0, result_1.err)(requiredError(fieldPath));
271
+ }
272
+ const nested = SchemaBuilder.build(entry, value, fieldPath, mode);
273
+ if ((0, result_1.isFailure)(nested))
274
+ return nested;
275
+ props[key] = nested.value;
276
+ }
277
+ return (0, result_1.ok)(props);
278
+ }
279
+ }
280
+ exports.SchemaBuilder = SchemaBuilder;
281
+ //# sourceMappingURL=schema-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-build.js","sourceRoot":"","sources":["../../src/schema/schema-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { Result } from "../tools";
2
+ import { TypeField } from "../type-fields/type-field.base";
3
+ import { Entity, IEntityPropsBase } from "../domain-models/entity.base";
4
+ import { Exceptions } from "../exceptions/base.exceptions";
5
+ /**
6
+ * Interface para tipos TypeField com método estático `create`
7
+ */
8
+ export interface ValueObjectStatic<TPrimitive, TInstance extends TypeField<TPrimitive>> {
9
+ create(value: TPrimitive, fieldPath?: string): Result<TInstance, Exceptions>;
10
+ }
11
+ /**
12
+ * Interface para entidades que implementam o método `create`
13
+ */
14
+ export interface EntityStatic<TInstance extends Entity<IEntityPropsBase, unknown>> {
15
+ create(value: unknown, fieldPath?: string): Result<TInstance, Exceptions>;
16
+ }
17
+ /**
18
+ * Representa a configuração de um campo do schema.
19
+ * Se `isArray === true`, o valor de entrada deve ser um array,
20
+ * e a inferência resultará num array de primitivos/VOs/Entidades.
21
+ */
22
+ export interface ISchemaFieldConfig {
23
+ type: ValueObjectStatic<unknown, TypeField<unknown>> | EntityStatic<Entity<IEntityPropsBase, unknown>> | ISchemaInlineObject;
24
+ required?: boolean;
25
+ isArray?: boolean;
26
+ expose?: "public" | "private" | "redacted";
27
+ label?: string;
28
+ description?: string;
29
+ }
30
+ /**
31
+ * Representa um objeto inline de schema, com campos aninhados.
32
+ */
33
+ export interface ISchemaInlineObject {
34
+ [key: string]: ISchemaAllowedEntry;
35
+ }
36
+ /**
37
+ * Tudo que pode aparecer como valor em um schema:
38
+ * - um field config (com ou sem isArray)
39
+ * - um objeto inline (aninhado)
40
+ */
41
+ export type ISchemaAllowedEntry = ISchemaFieldConfig | ISchemaInlineObject;
42
+ /**
43
+ * EXTRAÇÃO DO PRIMITIVO A PARTIR DO TYPE (para JSON):
44
+ * - se for VO, pega TPrimitive da classe TypeField
45
+ * - se for Entity, usa `unknown` (o caller deve especializar)
46
+ * - se for objeto inline, usa recursão
47
+ */
48
+ type InferPrimitive<T> = T extends ValueObjectStatic<infer TP, TypeField<infer TP>> ? TP : T extends EntityStatic<Entity<IEntityPropsBase, unknown>> ? unknown : T extends ISchemaInlineObject ? ISchemaInferJson<T> : never;
49
+ /**
50
+ * MONTA O TIPO DE JSON DE ENTRADA:
51
+ * - para cada campo, se `isArray` então InferPrimitive[]; senão InferPrimitive
52
+ * - campos `required: false` viram opcionais (`?`)
53
+ */
54
+ export type ISchemaInferJson<TSchema extends ISchemaInlineObject> = {
55
+ [K in keyof TSchema as TSchema[K] extends {
56
+ required: false;
57
+ } ? K : never]?: TSchema[K] extends ISchemaFieldConfig ? TSchema[K] extends {
58
+ isArray: true;
59
+ } ? InferPrimitive<TSchema[K]["type"]>[] : InferPrimitive<TSchema[K]["type"]> : TSchema[K] extends ISchemaInlineObject ? ISchemaInferJson<TSchema[K]> : never;
60
+ } & {
61
+ [K in keyof TSchema as TSchema[K] extends {
62
+ required: false;
63
+ } ? never : K]: TSchema[K] extends ISchemaFieldConfig ? TSchema[K] extends {
64
+ isArray: true;
65
+ } ? InferPrimitive<TSchema[K]["type"]>[] : InferPrimitive<TSchema[K]["type"]> : TSchema[K] extends ISchemaInlineObject ? ISchemaInferJson<TSchema[K]> : never;
66
+ };
67
+ export type EnsureExtends<T extends U, U> = T;
68
+ /**
69
+ * EXTRAÇÃO DA INSTÂNCIA (VO ou Entity) PARA PROPS:
70
+ */
71
+ type InferInstance<T> = T extends ValueObjectStatic<unknown, infer TI> ? TI : T extends EntityStatic<infer TE> ? TE : T extends ISchemaInlineObject ? ISchemaInferProps<T> : never;
72
+ /**
73
+ * MONTA O TIPO FINAL DE PROPS:
74
+ * - análogo ao ISchemaInferJson, mas usa InferInstance
75
+ */
76
+ export type ISchemaInferProps<TSchema extends ISchemaInlineObject> = {
77
+ [K in keyof TSchema as TSchema[K] extends {
78
+ required: false;
79
+ } ? K : never]?: TSchema[K] extends ISchemaFieldConfig ? TSchema[K] extends {
80
+ isArray: true;
81
+ } ? InferInstance<TSchema[K]["type"]>[] : InferInstance<TSchema[K]["type"]> : TSchema[K] extends ISchemaInlineObject ? ISchemaInferProps<TSchema[K]> : never;
82
+ } & {
83
+ [K in keyof TSchema as TSchema[K] extends {
84
+ required: false;
85
+ } ? never : K]: TSchema[K] extends ISchemaFieldConfig ? TSchema[K] extends {
86
+ isArray: true;
87
+ } ? InferInstance<TSchema[K]["type"]>[] : InferInstance<TSchema[K]["type"]> : TSchema[K] extends ISchemaInlineObject ? ISchemaInferProps<TSchema[K]> : never;
88
+ };
89
+ export {};
90
+ //# sourceMappingURL=schema-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-types.d.ts","sourceRoot":"","sources":["../../src/schema/schema-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=schema-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-types.js","sourceRoot":"","sources":["../../src/schema/schema-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ export declare class ToolFormattingDateISO8601 {
2
+ private static pad;
3
+ /**
4
+ * Converte uma data para UTC-3 (Brasília).
5
+ * Para datas que já estão em UTC (como as vindas de parseDateCompact),
6
+ * apenas subtrai 3 horas para converter para UTC-3.
7
+ */
8
+ private static toUTCMinus3;
9
+ /**
10
+ * ISO 8601 com milissegundos e sufixo Z (UTC real).
11
+ * Exemplo: "2024-04-09T18:00:00.123Z"
12
+ */
13
+ static formatDateTimeUTC(value: Date): string;
14
+ /**
15
+ * Data e hora no formato ISO 8601 em UTC-3.
16
+ * Exemplo: "2024-04-09T15:00:00"
17
+ */
18
+ static formatDateTime(value: Date): string;
19
+ /**
20
+ * Apenas data (YYYY-MM-DD) em UTC-3.
21
+ * Exemplo: "2024-04-09"
22
+ */
23
+ static formatDate(value: Date): string;
24
+ /**
25
+ * Data compacta (YYYYMMDD) em UTC.
26
+ * Exemplo: "20240409"
27
+ */
28
+ static formatDateCompact(value: Date): string;
29
+ /**
30
+ * Data e hora compacta com separador T em UTC-3.
31
+ * Exemplo: "20240409T153000"
32
+ */
33
+ static formatDateTimeCompactWithT(value: Date): string;
34
+ /**
35
+ * Data e hora compacta sem separadores em UTC-3.
36
+ * Exemplo: "20240409153000"
37
+ */
38
+ static formatDateTimeCompact(value: Date): string;
39
+ /**
40
+ * Data e hora com milissegundos (ISO8601 Zulu com .sssZ).
41
+ * Exemplo: "2024-04-09T18:00:00.123Z"
42
+ */
43
+ static formatDateTimeZuluWithMillis(value: Date): string;
44
+ }
45
+ //# sourceMappingURL=date-formatting.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-formatting.tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/formatting/date/date-formatting.tool.ts"],"names":[],"mappings":"AAAA,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAC,GAAG;IAIlB;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;IAI7C;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;IAY1C;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;IAgBtC;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;IAQ7C;;;OAGG;IACH,MAAM,CAAC,0BAA0B,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;IAYtD;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;IAWjD;;;OAGG;IACH,MAAM,CAAC,4BAA4B,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;CAGzD"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToolFormattingDateISO8601 = void 0;
4
+ class ToolFormattingDateISO8601 {
5
+ static pad(num) {
6
+ return num.toString().padStart(2, "0");
7
+ }
8
+ /**
9
+ * Converte uma data para UTC-3 (Brasília).
10
+ * Para datas que já estão em UTC (como as vindas de parseDateCompact),
11
+ * apenas subtrai 3 horas para converter para UTC-3.
12
+ */
13
+ static toUTCMinus3(date) {
14
+ // Para datas que vêm de parseDateCompact (que já estão em UTC),
15
+ // apenas subtraímos 3 horas para converter para UTC-3
16
+ return new Date(date.getTime() - 3 * 60 * 60 * 1000);
17
+ }
18
+ /**
19
+ * ISO 8601 com milissegundos e sufixo Z (UTC real).
20
+ * Exemplo: "2024-04-09T18:00:00.123Z"
21
+ */
22
+ static formatDateTimeUTC(value) {
23
+ return value.toISOString();
24
+ }
25
+ /**
26
+ * Data e hora no formato ISO 8601 em UTC-3.
27
+ * Exemplo: "2024-04-09T15:00:00"
28
+ */
29
+ static formatDateTime(value) {
30
+ const d = ToolFormattingDateISO8601.toUTCMinus3(value);
31
+ const year = d.getUTCFullYear();
32
+ const month = ToolFormattingDateISO8601.pad(d.getUTCMonth() + 1);
33
+ const day = ToolFormattingDateISO8601.pad(d.getUTCDate());
34
+ const hours = ToolFormattingDateISO8601.pad(d.getUTCHours());
35
+ const minutes = ToolFormattingDateISO8601.pad(d.getUTCMinutes());
36
+ const seconds = ToolFormattingDateISO8601.pad(d.getUTCSeconds());
37
+ return `${year}-${month}-${day}T${hours}:${minutes}:${seconds}`;
38
+ }
39
+ /**
40
+ * Apenas data (YYYY-MM-DD) em UTC-3.
41
+ * Exemplo: "2024-04-09"
42
+ */
43
+ static formatDate(value) {
44
+ if (!(value instanceof Date) || isNaN(value.getTime())) {
45
+ throw new Error("Invalid Date input");
46
+ }
47
+ // Adjust to UTC-3 by subtracting 3 hours (3 * 60 * 60 * 1000 milliseconds)
48
+ const utcMinus3 = new Date(value.getTime() - 3 * 60 * 60 * 1000);
49
+ // Extract year, month, day in UTC
50
+ const year = utcMinus3.getUTCFullYear();
51
+ const month = String(utcMinus3.getUTCMonth() + 1).padStart(2, "0");
52
+ const day = String(utcMinus3.getUTCDate()).padStart(2, "0");
53
+ return `${year}-${month}-${day}`;
54
+ }
55
+ /**
56
+ * Data compacta (YYYYMMDD) em UTC.
57
+ * Exemplo: "20240409"
58
+ */
59
+ static formatDateCompact(value) {
60
+ const year = value.getUTCFullYear();
61
+ const month = ToolFormattingDateISO8601.pad(value.getUTCMonth() + 1);
62
+ const day = ToolFormattingDateISO8601.pad(value.getUTCDate());
63
+ return `${year}${month}${day}`;
64
+ }
65
+ /**
66
+ * Data e hora compacta com separador T em UTC-3.
67
+ * Exemplo: "20240409T153000"
68
+ */
69
+ static formatDateTimeCompactWithT(value) {
70
+ const d = ToolFormattingDateISO8601.toUTCMinus3(value);
71
+ const year = d.getUTCFullYear();
72
+ const month = ToolFormattingDateISO8601.pad(d.getUTCMonth() + 1);
73
+ const day = ToolFormattingDateISO8601.pad(d.getUTCDate());
74
+ const hours = ToolFormattingDateISO8601.pad(d.getUTCHours());
75
+ const minutes = ToolFormattingDateISO8601.pad(d.getUTCMinutes());
76
+ const seconds = ToolFormattingDateISO8601.pad(d.getUTCSeconds());
77
+ return `${year}${month}${day}T${hours}${minutes}${seconds}`;
78
+ }
79
+ /**
80
+ * Data e hora compacta sem separadores em UTC-3.
81
+ * Exemplo: "20240409153000"
82
+ */
83
+ static formatDateTimeCompact(value) {
84
+ const d = ToolFormattingDateISO8601.toUTCMinus3(value);
85
+ const year = d.getUTCFullYear();
86
+ const month = ToolFormattingDateISO8601.pad(d.getUTCMonth() + 1);
87
+ const day = ToolFormattingDateISO8601.pad(d.getUTCDate());
88
+ const hours = ToolFormattingDateISO8601.pad(d.getUTCHours());
89
+ const minutes = ToolFormattingDateISO8601.pad(d.getUTCMinutes());
90
+ const seconds = ToolFormattingDateISO8601.pad(d.getUTCSeconds());
91
+ return `${year}${month}${day}${hours}${minutes}${seconds}`;
92
+ }
93
+ /**
94
+ * Data e hora com milissegundos (ISO8601 Zulu com .sssZ).
95
+ * Exemplo: "2024-04-09T18:00:00.123Z"
96
+ */
97
+ static formatDateTimeZuluWithMillis(value) {
98
+ return value.toISOString(); // já inclui milissegundos e sufixo Z
99
+ }
100
+ }
101
+ exports.ToolFormattingDateISO8601 = ToolFormattingDateISO8601;
102
+ //# sourceMappingURL=date-formatting.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-formatting.tool.js","sourceRoot":"","sources":["../../../../src/tools/formatting/date/date-formatting.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { TypeGuard } from "./type_guard";
2
+ export { ToolParse } from "./parse/parse.tool";
3
+ export { ToolFormattingDateISO8601 } from "./formatting/date/date-formatting.tool";
4
+ export * from "../result/result";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ToolFormattingDateISO8601 = exports.ToolParse = exports.TypeGuard = void 0;
18
+ var type_guard_1 = require("./type_guard");
19
+ Object.defineProperty(exports, "TypeGuard", { enumerable: true, get: function () { return type_guard_1.TypeGuard; } });
20
+ var parse_tool_1 = require("./parse/parse.tool");
21
+ Object.defineProperty(exports, "ToolParse", { enumerable: true, get: function () { return parse_tool_1.ToolParse; } });
22
+ var date_formatting_tool_1 = require("./formatting/date/date-formatting.tool");
23
+ Object.defineProperty(exports, "ToolFormattingDateISO8601", { enumerable: true, get: function () { return date_formatting_tool_1.ToolFormattingDateISO8601; } });
24
+ __exportStar(require("../result/result"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,iDAA+C;AAAtC,uGAAA,SAAS,OAAA;AAClB,+EAAmF;AAA1E,iIAAA,yBAAyB,OAAA;AAClC,mDAAiC"}