reliant-type 1.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 (345) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1305 -0
  3. package/dist/cjs/constants/SECURITY_CONSTANTS.js +49 -0
  4. package/dist/cjs/constants/SECURITY_CONSTANTS.js.map +1 -0
  5. package/dist/cjs/constants/VALIDATION_CONSTANTS.js +103 -0
  6. package/dist/cjs/constants/VALIDATION_CONSTANTS.js.map +1 -0
  7. package/dist/cjs/core/schema/extensions/SmartInference.js +200 -0
  8. package/dist/cjs/core/schema/extensions/SmartInference.js.map +1 -0
  9. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/Docs.js +100 -0
  10. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/Docs.js.map +1 -0
  11. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/DocumentationGenerator.js +192 -0
  12. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/DocumentationGenerator.js.map +1 -0
  13. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/InteractiveDocumentationGenerator.js +174 -0
  14. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/InteractiveDocumentationGenerator.js.map +1 -0
  15. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/SchemaAnalyzer.js +54 -0
  16. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/SchemaAnalyzer.js.map +1 -0
  17. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/TypeScriptGenerator.js +50 -0
  18. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/TypeScriptGenerator.js.map +1 -0
  19. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/index.js +15 -0
  20. package/dist/cjs/core/schema/extensions/components/AutoDocumentation/index.js.map +1 -0
  21. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalBuilder.js +70 -0
  22. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalBuilder.js.map +1 -0
  23. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalElse.js +40 -0
  24. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalElse.js.map +1 -0
  25. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalThen.js +19 -0
  26. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalThen.js.map +1 -0
  27. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/MultiConditionalBuilder.js +20 -0
  28. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/MultiConditionalBuilder.js.map +1 -0
  29. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/MultiConditionalThen.js +49 -0
  30. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/MultiConditionalThen.js.map +1 -0
  31. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/index.js +98 -0
  32. package/dist/cjs/core/schema/extensions/components/ConditionalValidation/index.js.map +1 -0
  33. package/dist/cjs/core/schema/extensions/components/RealtimeValidation/FormValidator.js +85 -0
  34. package/dist/cjs/core/schema/extensions/components/RealtimeValidation/FormValidator.js.map +1 -0
  35. package/dist/cjs/core/schema/extensions/components/RealtimeValidation/LiveValidator.js +133 -0
  36. package/dist/cjs/core/schema/extensions/components/RealtimeValidation/LiveValidator.js.map +1 -0
  37. package/dist/cjs/core/schema/extensions/components/RealtimeValidation/StreamValidator.js +351 -0
  38. package/dist/cjs/core/schema/extensions/components/RealtimeValidation/StreamValidator.js.map +1 -0
  39. package/dist/cjs/core/schema/extensions/components/RealtimeValidation/index.js +109 -0
  40. package/dist/cjs/core/schema/extensions/components/RealtimeValidation/index.js.map +1 -0
  41. package/dist/cjs/core/schema/extensions/index.js +61 -0
  42. package/dist/cjs/core/schema/extensions/index.js.map +1 -0
  43. package/dist/cjs/core/schema/extensions/mods/index.js +51 -0
  44. package/dist/cjs/core/schema/extensions/mods/index.js.map +1 -0
  45. package/dist/cjs/core/schema/extensions/mods/openapi-converter.js +227 -0
  46. package/dist/cjs/core/schema/extensions/mods/openapi-converter.js.map +1 -0
  47. package/dist/cjs/core/schema/extensions/mods/typescript-generator.js +287 -0
  48. package/dist/cjs/core/schema/extensions/mods/typescript-generator.js.map +1 -0
  49. package/dist/cjs/core/schema/extensions/mods/validation-engine.js +224 -0
  50. package/dist/cjs/core/schema/extensions/mods/validation-engine.js.map +1 -0
  51. package/dist/cjs/core/schema/mode/interfaces/Interface.js +277 -0
  52. package/dist/cjs/core/schema/mode/interfaces/Interface.js.map +1 -0
  53. package/dist/cjs/core/schema/mode/interfaces/InterfaceSchema.js +1431 -0
  54. package/dist/cjs/core/schema/mode/interfaces/InterfaceSchema.js.map +1 -0
  55. package/dist/cjs/core/schema/mode/interfaces/conditional/evaluator/ConditionalEvaluator.js +520 -0
  56. package/dist/cjs/core/schema/mode/interfaces/conditional/evaluator/ConditionalEvaluator.js.map +1 -0
  57. package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalAST.js +624 -0
  58. package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalAST.js.map +1 -0
  59. package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalLexer.js +811 -0
  60. package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalLexer.js.map +1 -0
  61. package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalParser.js +599 -0
  62. package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalParser.js.map +1 -0
  63. package/dist/cjs/core/schema/mode/interfaces/conditional/types/ConditionalTypes.js +89 -0
  64. package/dist/cjs/core/schema/mode/interfaces/conditional/types/ConditionalTypes.js.map +1 -0
  65. package/dist/cjs/core/schema/mode/interfaces/errors/ErrorHandler.js +356 -0
  66. package/dist/cjs/core/schema/mode/interfaces/errors/ErrorHandler.js.map +1 -0
  67. package/dist/cjs/core/schema/mode/interfaces/errors/types/errors.type.js +80 -0
  68. package/dist/cjs/core/schema/mode/interfaces/errors/types/errors.type.js.map +1 -0
  69. package/dist/cjs/core/schema/mode/interfaces/precompilation/FieldPrecompilers.js +778 -0
  70. package/dist/cjs/core/schema/mode/interfaces/precompilation/FieldPrecompilers.js.map +1 -0
  71. package/dist/cjs/core/schema/mode/interfaces/precompilation/SchemaPrecompiler.js +523 -0
  72. package/dist/cjs/core/schema/mode/interfaces/precompilation/SchemaPrecompiler.js.map +1 -0
  73. package/dist/cjs/core/schema/mode/interfaces/typescript/ConditionalTypes.js +681 -0
  74. package/dist/cjs/core/schema/mode/interfaces/typescript/ConditionalTypes.js.map +1 -0
  75. package/dist/cjs/core/schema/mode/interfaces/typescript/IDESupport.js +430 -0
  76. package/dist/cjs/core/schema/mode/interfaces/typescript/IDESupport.js.map +1 -0
  77. package/dist/cjs/core/schema/mode/interfaces/typescript/TypeInference.js +225 -0
  78. package/dist/cjs/core/schema/mode/interfaces/typescript/TypeInference.js.map +1 -0
  79. package/dist/cjs/core/schema/mode/interfaces/typescript/index.js +44 -0
  80. package/dist/cjs/core/schema/mode/interfaces/typescript/index.js.map +1 -0
  81. package/dist/cjs/core/schema/mode/interfaces/validators/ConstraintParser.js +1134 -0
  82. package/dist/cjs/core/schema/mode/interfaces/validators/ConstraintParser.js.map +1 -0
  83. package/dist/cjs/core/schema/mode/interfaces/validators/TypeGuards.js +256 -0
  84. package/dist/cjs/core/schema/mode/interfaces/validators/TypeGuards.js.map +1 -0
  85. package/dist/cjs/core/schema/mode/interfaces/validators/TypeValidators.js +429 -0
  86. package/dist/cjs/core/schema/mode/interfaces/validators/TypeValidators.js.map +1 -0
  87. package/dist/cjs/core/schema/mode/interfaces/validators/UnionCache.js +404 -0
  88. package/dist/cjs/core/schema/mode/interfaces/validators/UnionCache.js.map +1 -0
  89. package/dist/cjs/core/schema/mode/interfaces/validators/ValidationHelpers.js +851 -0
  90. package/dist/cjs/core/schema/mode/interfaces/validators/ValidationHelpers.js.map +1 -0
  91. package/dist/cjs/core/schema/mode/interfaces/validators/mods/passValidator.js +262 -0
  92. package/dist/cjs/core/schema/mode/interfaces/validators/mods/passValidator.js.map +1 -0
  93. package/dist/cjs/core/schema/mode/interfaces/validators/mods/securityValidator.js +887 -0
  94. package/dist/cjs/core/schema/mode/interfaces/validators/mods/securityValidator.js.map +1 -0
  95. package/dist/cjs/core/schema/mode/interfaces/validators/mods/urlValidation.js +191 -0
  96. package/dist/cjs/core/schema/mode/interfaces/validators/mods/urlValidation.js.map +1 -0
  97. package/dist/cjs/core/schema/optimization/ObjectValidationCache.js +462 -0
  98. package/dist/cjs/core/schema/optimization/ObjectValidationCache.js.map +1 -0
  99. package/dist/cjs/core/schema/optimization/PerformanceMonitor.js +773 -0
  100. package/dist/cjs/core/schema/optimization/PerformanceMonitor.js.map +1 -0
  101. package/dist/cjs/core/schema/optimization/SchemaCompiler.js +600 -0
  102. package/dist/cjs/core/schema/optimization/SchemaCompiler.js.map +1 -0
  103. package/dist/cjs/core/types/ValidatorTypes.js +70 -0
  104. package/dist/cjs/core/types/ValidatorTypes.js.map +1 -0
  105. package/dist/cjs/core/types/parser.type.js +12 -0
  106. package/dist/cjs/core/types/parser.type.js.map +1 -0
  107. package/dist/cjs/core/utils/Make.js +61 -0
  108. package/dist/cjs/core/utils/Make.js.map +1 -0
  109. package/dist/cjs/core/utils/Mod.js +1033 -0
  110. package/dist/cjs/core/utils/Mod.js.map +1 -0
  111. package/dist/cjs/core/utils/UrlArgs.js +102 -0
  112. package/dist/cjs/core/utils/UrlArgs.js.map +1 -0
  113. package/dist/cjs/core/utils/arrayToEnum.js +18 -0
  114. package/dist/cjs/core/utils/arrayToEnum.js.map +1 -0
  115. package/dist/cjs/core/utils/createUrlArgsEnumFArray.js +13 -0
  116. package/dist/cjs/core/utils/createUrlArgsEnumFArray.js.map +1 -0
  117. package/dist/cjs/core/utils/securityHelpers.js +215 -0
  118. package/dist/cjs/core/utils/securityHelpers.js.map +1 -0
  119. package/dist/cjs/core/utils/securityValidatorHelpers.js +65 -0
  120. package/dist/cjs/core/utils/securityValidatorHelpers.js.map +1 -0
  121. package/dist/cjs/index.js +31 -0
  122. package/dist/cjs/index.js.map +1 -0
  123. package/dist/cjs/package.json +3 -0
  124. package/dist/esm/constants/SECURITY_CONSTANTS.js +47 -0
  125. package/dist/esm/constants/SECURITY_CONSTANTS.js.map +1 -0
  126. package/dist/esm/constants/VALIDATION_CONSTANTS.js +98 -0
  127. package/dist/esm/constants/VALIDATION_CONSTANTS.js.map +1 -0
  128. package/dist/esm/core/schema/extensions/SmartInference.js +197 -0
  129. package/dist/esm/core/schema/extensions/SmartInference.js.map +1 -0
  130. package/dist/esm/core/schema/extensions/components/AutoDocumentation/Docs.js +98 -0
  131. package/dist/esm/core/schema/extensions/components/AutoDocumentation/Docs.js.map +1 -0
  132. package/dist/esm/core/schema/extensions/components/AutoDocumentation/DocumentationGenerator.js +190 -0
  133. package/dist/esm/core/schema/extensions/components/AutoDocumentation/DocumentationGenerator.js.map +1 -0
  134. package/dist/esm/core/schema/extensions/components/AutoDocumentation/InteractiveDocumentationGenerator.js +172 -0
  135. package/dist/esm/core/schema/extensions/components/AutoDocumentation/InteractiveDocumentationGenerator.js.map +1 -0
  136. package/dist/esm/core/schema/extensions/components/AutoDocumentation/SchemaAnalyzer.js +52 -0
  137. package/dist/esm/core/schema/extensions/components/AutoDocumentation/SchemaAnalyzer.js.map +1 -0
  138. package/dist/esm/core/schema/extensions/components/AutoDocumentation/TypeScriptGenerator.js +48 -0
  139. package/dist/esm/core/schema/extensions/components/AutoDocumentation/TypeScriptGenerator.js.map +1 -0
  140. package/dist/esm/core/schema/extensions/components/AutoDocumentation/index.js +12 -0
  141. package/dist/esm/core/schema/extensions/components/AutoDocumentation/index.js.map +1 -0
  142. package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalBuilder.js +68 -0
  143. package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalBuilder.js.map +1 -0
  144. package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalElse.js +38 -0
  145. package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalElse.js.map +1 -0
  146. package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalThen.js +17 -0
  147. package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalThen.js.map +1 -0
  148. package/dist/esm/core/schema/extensions/components/ConditionalValidation/MultiConditionalBuilder.js +18 -0
  149. package/dist/esm/core/schema/extensions/components/ConditionalValidation/MultiConditionalBuilder.js.map +1 -0
  150. package/dist/esm/core/schema/extensions/components/ConditionalValidation/MultiConditionalThen.js +45 -0
  151. package/dist/esm/core/schema/extensions/components/ConditionalValidation/MultiConditionalThen.js.map +1 -0
  152. package/dist/esm/core/schema/extensions/components/ConditionalValidation/index.js +92 -0
  153. package/dist/esm/core/schema/extensions/components/ConditionalValidation/index.js.map +1 -0
  154. package/dist/esm/core/schema/extensions/components/RealtimeValidation/FormValidator.js +83 -0
  155. package/dist/esm/core/schema/extensions/components/RealtimeValidation/FormValidator.js.map +1 -0
  156. package/dist/esm/core/schema/extensions/components/RealtimeValidation/LiveValidator.js +131 -0
  157. package/dist/esm/core/schema/extensions/components/RealtimeValidation/LiveValidator.js.map +1 -0
  158. package/dist/esm/core/schema/extensions/components/RealtimeValidation/StreamValidator.js +349 -0
  159. package/dist/esm/core/schema/extensions/components/RealtimeValidation/StreamValidator.js.map +1 -0
  160. package/dist/esm/core/schema/extensions/components/RealtimeValidation/index.js +103 -0
  161. package/dist/esm/core/schema/extensions/components/RealtimeValidation/index.js.map +1 -0
  162. package/dist/esm/core/schema/extensions/index.js +53 -0
  163. package/dist/esm/core/schema/extensions/index.js.map +1 -0
  164. package/dist/esm/core/schema/extensions/mods/index.js +47 -0
  165. package/dist/esm/core/schema/extensions/mods/index.js.map +1 -0
  166. package/dist/esm/core/schema/extensions/mods/openapi-converter.js +225 -0
  167. package/dist/esm/core/schema/extensions/mods/openapi-converter.js.map +1 -0
  168. package/dist/esm/core/schema/extensions/mods/typescript-generator.js +284 -0
  169. package/dist/esm/core/schema/extensions/mods/typescript-generator.js.map +1 -0
  170. package/dist/esm/core/schema/extensions/mods/validation-engine.js +222 -0
  171. package/dist/esm/core/schema/extensions/mods/validation-engine.js.map +1 -0
  172. package/dist/esm/core/schema/mode/interfaces/Interface.js +269 -0
  173. package/dist/esm/core/schema/mode/interfaces/Interface.js.map +1 -0
  174. package/dist/esm/core/schema/mode/interfaces/InterfaceSchema.js +1429 -0
  175. package/dist/esm/core/schema/mode/interfaces/InterfaceSchema.js.map +1 -0
  176. package/dist/esm/core/schema/mode/interfaces/conditional/evaluator/ConditionalEvaluator.js +518 -0
  177. package/dist/esm/core/schema/mode/interfaces/conditional/evaluator/ConditionalEvaluator.js.map +1 -0
  178. package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalAST.js +620 -0
  179. package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalAST.js.map +1 -0
  180. package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalLexer.js +809 -0
  181. package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalLexer.js.map +1 -0
  182. package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalParser.js +597 -0
  183. package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalParser.js.map +1 -0
  184. package/dist/esm/core/schema/mode/interfaces/conditional/types/ConditionalTypes.js +89 -0
  185. package/dist/esm/core/schema/mode/interfaces/conditional/types/ConditionalTypes.js.map +1 -0
  186. package/dist/esm/core/schema/mode/interfaces/errors/ErrorHandler.js +354 -0
  187. package/dist/esm/core/schema/mode/interfaces/errors/ErrorHandler.js.map +1 -0
  188. package/dist/esm/core/schema/mode/interfaces/errors/types/errors.type.js +80 -0
  189. package/dist/esm/core/schema/mode/interfaces/errors/types/errors.type.js.map +1 -0
  190. package/dist/esm/core/schema/mode/interfaces/precompilation/FieldPrecompilers.js +776 -0
  191. package/dist/esm/core/schema/mode/interfaces/precompilation/FieldPrecompilers.js.map +1 -0
  192. package/dist/esm/core/schema/mode/interfaces/precompilation/SchemaPrecompiler.js +521 -0
  193. package/dist/esm/core/schema/mode/interfaces/precompilation/SchemaPrecompiler.js.map +1 -0
  194. package/dist/esm/core/schema/mode/interfaces/typescript/ConditionalTypes.js +681 -0
  195. package/dist/esm/core/schema/mode/interfaces/typescript/ConditionalTypes.js.map +1 -0
  196. package/dist/esm/core/schema/mode/interfaces/typescript/IDESupport.js +428 -0
  197. package/dist/esm/core/schema/mode/interfaces/typescript/IDESupport.js.map +1 -0
  198. package/dist/esm/core/schema/mode/interfaces/typescript/TypeInference.js +223 -0
  199. package/dist/esm/core/schema/mode/interfaces/typescript/TypeInference.js.map +1 -0
  200. package/dist/esm/core/schema/mode/interfaces/typescript/index.js +35 -0
  201. package/dist/esm/core/schema/mode/interfaces/typescript/index.js.map +1 -0
  202. package/dist/esm/core/schema/mode/interfaces/validators/ConstraintParser.js +1132 -0
  203. package/dist/esm/core/schema/mode/interfaces/validators/ConstraintParser.js.map +1 -0
  204. package/dist/esm/core/schema/mode/interfaces/validators/TypeGuards.js +254 -0
  205. package/dist/esm/core/schema/mode/interfaces/validators/TypeGuards.js.map +1 -0
  206. package/dist/esm/core/schema/mode/interfaces/validators/TypeValidators.js +427 -0
  207. package/dist/esm/core/schema/mode/interfaces/validators/TypeValidators.js.map +1 -0
  208. package/dist/esm/core/schema/mode/interfaces/validators/UnionCache.js +400 -0
  209. package/dist/esm/core/schema/mode/interfaces/validators/UnionCache.js.map +1 -0
  210. package/dist/esm/core/schema/mode/interfaces/validators/ValidationHelpers.js +849 -0
  211. package/dist/esm/core/schema/mode/interfaces/validators/ValidationHelpers.js.map +1 -0
  212. package/dist/esm/core/schema/mode/interfaces/validators/mods/passValidator.js +260 -0
  213. package/dist/esm/core/schema/mode/interfaces/validators/mods/passValidator.js.map +1 -0
  214. package/dist/esm/core/schema/mode/interfaces/validators/mods/securityValidator.js +881 -0
  215. package/dist/esm/core/schema/mode/interfaces/validators/mods/securityValidator.js.map +1 -0
  216. package/dist/esm/core/schema/mode/interfaces/validators/mods/urlValidation.js +189 -0
  217. package/dist/esm/core/schema/mode/interfaces/validators/mods/urlValidation.js.map +1 -0
  218. package/dist/esm/core/schema/optimization/ObjectValidationCache.js +460 -0
  219. package/dist/esm/core/schema/optimization/ObjectValidationCache.js.map +1 -0
  220. package/dist/esm/core/schema/optimization/PerformanceMonitor.js +771 -0
  221. package/dist/esm/core/schema/optimization/PerformanceMonitor.js.map +1 -0
  222. package/dist/esm/core/schema/optimization/SchemaCompiler.js +598 -0
  223. package/dist/esm/core/schema/optimization/SchemaCompiler.js.map +1 -0
  224. package/dist/esm/core/types/ValidatorTypes.js +65 -0
  225. package/dist/esm/core/types/ValidatorTypes.js.map +1 -0
  226. package/dist/esm/core/types/parser.type.js +12 -0
  227. package/dist/esm/core/types/parser.type.js.map +1 -0
  228. package/dist/esm/core/utils/Make.js +59 -0
  229. package/dist/esm/core/utils/Make.js.map +1 -0
  230. package/dist/esm/core/utils/Mod.js +1031 -0
  231. package/dist/esm/core/utils/Mod.js.map +1 -0
  232. package/dist/esm/core/utils/UrlArgs.js +98 -0
  233. package/dist/esm/core/utils/UrlArgs.js.map +1 -0
  234. package/dist/esm/core/utils/arrayToEnum.js +16 -0
  235. package/dist/esm/core/utils/arrayToEnum.js.map +1 -0
  236. package/dist/esm/core/utils/createUrlArgsEnumFArray.js +11 -0
  237. package/dist/esm/core/utils/createUrlArgsEnumFArray.js.map +1 -0
  238. package/dist/esm/core/utils/securityHelpers.js +207 -0
  239. package/dist/esm/core/utils/securityHelpers.js.map +1 -0
  240. package/dist/esm/core/utils/securityValidatorHelpers.js +62 -0
  241. package/dist/esm/core/utils/securityValidatorHelpers.js.map +1 -0
  242. package/dist/esm/index.js +12 -0
  243. package/dist/esm/index.js.map +1 -0
  244. package/dist/esm/package.json +3 -0
  245. package/dist/schema.d.ts +2595 -0
  246. package/docs/ALL_TYPES.md +120 -0
  247. package/docs/API-STABILITY.md +336 -0
  248. package/docs/CONDITIONAL-VALIDATION.md +637 -0
  249. package/docs/EXAMPLES.md +876 -0
  250. package/docs/FIELD-TYPES.md +829 -0
  251. package/docs/GETTING-STARTED.md +394 -0
  252. package/docs/LIVE-UTILITY.md +1137 -0
  253. package/docs/QUICK-REFERENCE.md +346 -0
  254. package/docs/README.md +205 -0
  255. package/docs/VSCODE-EXTENSION.md +458 -0
  256. package/package.json +219 -0
  257. package/src/bench/BENCHMARK-RESULTS.md +211 -0
  258. package/src/bench/benchmark-results.json +148 -0
  259. package/src/bench/performance-comparison.ts +218 -0
  260. package/src/bench/precompilation-benchmark.ts +218 -0
  261. package/src/constants/SECURITY_CONSTANTS.ts +44 -0
  262. package/src/constants/VALIDATION_CONSTANTS.ts +176 -0
  263. package/src/core/README.md +395 -0
  264. package/src/core/compiler/SchemaTransformer.ts +279 -0
  265. package/src/core/compiler/TypeAnalyzer.ts +378 -0
  266. package/src/core/compiler/TypeScriptCompilerIntegration.ts +220 -0
  267. package/src/core/compiler/TypeToSchemaConverter.ts +288 -0
  268. package/src/core/index.ts +70 -0
  269. package/src/core/schema/extensions/AutoDocumentation.ts +572 -0
  270. package/src/core/schema/extensions/ConditionalValidation.ts +330 -0
  271. package/src/core/schema/extensions/README.md +171 -0
  272. package/src/core/schema/extensions/RealtimeValidation.ts +656 -0
  273. package/src/core/schema/extensions/SmartInference.ts +224 -0
  274. package/src/core/schema/extensions/components/AutoDocumentation/Docs.ts +98 -0
  275. package/src/core/schema/extensions/components/AutoDocumentation/DocumentationGenerator.ts +201 -0
  276. package/src/core/schema/extensions/components/AutoDocumentation/InteractiveDocumentationGenerator.ts +176 -0
  277. package/src/core/schema/extensions/components/AutoDocumentation/OpenAPIGenerator.ts +175 -0
  278. package/src/core/schema/extensions/components/AutoDocumentation/SchemaAnalyzer.ts +49 -0
  279. package/src/core/schema/extensions/components/AutoDocumentation/TypeScriptGenerator.ts +54 -0
  280. package/src/core/schema/extensions/components/AutoDocumentation/index.ts +17 -0
  281. package/src/core/schema/extensions/components/ConditionalValidation/ConditionalBuilder.ts +101 -0
  282. package/src/core/schema/extensions/components/ConditionalValidation/ConditionalElse.ts +65 -0
  283. package/src/core/schema/extensions/components/ConditionalValidation/ConditionalThen.ts +33 -0
  284. package/src/core/schema/extensions/components/ConditionalValidation/Extend.ts +75 -0
  285. package/src/core/schema/extensions/components/ConditionalValidation/MultiConditionalBuilder.ts +16 -0
  286. package/src/core/schema/extensions/components/ConditionalValidation/MultiConditionalThen.ts +50 -0
  287. package/src/core/schema/extensions/components/ConditionalValidation/index.ts +104 -0
  288. package/src/core/schema/extensions/components/RealtimeValidation/FormValidator.ts +88 -0
  289. package/src/core/schema/extensions/components/RealtimeValidation/LiveValidator.ts +171 -0
  290. package/src/core/schema/extensions/components/RealtimeValidation/StreamValidator.ts +397 -0
  291. package/src/core/schema/extensions/components/RealtimeValidation/index.ts +114 -0
  292. package/src/core/schema/extensions/index.ts +76 -0
  293. package/src/core/schema/extensions/mods/index.ts +131 -0
  294. package/src/core/schema/extensions/mods/openapi-converter.ts +338 -0
  295. package/src/core/schema/extensions/mods/typescript-generator.ts +379 -0
  296. package/src/core/schema/extensions/mods/validation-engine.ts +295 -0
  297. package/src/core/schema/mode/interfaces/Interface.ts +364 -0
  298. package/src/core/schema/mode/interfaces/InterfaceSchema.ts +1838 -0
  299. package/src/core/schema/mode/interfaces/README.md +278 -0
  300. package/src/core/schema/mode/interfaces/conditional/evaluator/ConditionalEvaluator.ts +657 -0
  301. package/src/core/schema/mode/interfaces/conditional/parser/ConditionalAST.ts +826 -0
  302. package/src/core/schema/mode/interfaces/conditional/parser/ConditionalLexer.ts +992 -0
  303. package/src/core/schema/mode/interfaces/conditional/parser/ConditionalParser.ts +803 -0
  304. package/src/core/schema/mode/interfaces/conditional/parser/readme.md +406 -0
  305. package/src/core/schema/mode/interfaces/conditional/types/ConditionalTypes.ts +273 -0
  306. package/src/core/schema/mode/interfaces/errors/ErrorHandler.ts +624 -0
  307. package/src/core/schema/mode/interfaces/errors/types/errors.type.ts +102 -0
  308. package/src/core/schema/mode/interfaces/precompilation/FieldPrecompilers.ts +962 -0
  309. package/src/core/schema/mode/interfaces/precompilation/SchemaPrecompiler.ts +667 -0
  310. package/src/core/schema/mode/interfaces/typescript/ConditionalTypes.ts +1534 -0
  311. package/src/core/schema/mode/interfaces/typescript/IDESupport.ts +534 -0
  312. package/src/core/schema/mode/interfaces/typescript/TypeInference.ts +737 -0
  313. package/src/core/schema/mode/interfaces/typescript/index.ts +92 -0
  314. package/src/core/schema/mode/interfaces/validators/ConstraintParser.ts +1438 -0
  315. package/src/core/schema/mode/interfaces/validators/EnhancedErrorReporting.ts +227 -0
  316. package/src/core/schema/mode/interfaces/validators/TypeGuards.ts +288 -0
  317. package/src/core/schema/mode/interfaces/validators/TypeValidators.ts +660 -0
  318. package/src/core/schema/mode/interfaces/validators/UnionCache.ts +508 -0
  319. package/src/core/schema/mode/interfaces/validators/ValidationHelpers.ts +1257 -0
  320. package/src/core/schema/mode/interfaces/validators/index.ts +21 -0
  321. package/src/core/schema/mode/interfaces/validators/mods/passValidator.ts +424 -0
  322. package/src/core/schema/mode/interfaces/validators/mods/securityValidator.ts +1634 -0
  323. package/src/core/schema/mode/interfaces/validators/mods/urlValidation.ts +333 -0
  324. package/src/core/schema/optimization/ObjectValidationCache.ts +560 -0
  325. package/src/core/schema/optimization/PerformanceInitializer.ts +188 -0
  326. package/src/core/schema/optimization/PerformanceMonitor.ts +898 -0
  327. package/src/core/schema/optimization/SchemaCompiler.ts +730 -0
  328. package/src/core/testing/TestDataGenerator.ts +590 -0
  329. package/src/core/types/SchemaValidator.type.ts +210 -0
  330. package/src/core/types/ValidatorTypes.ts +93 -0
  331. package/src/core/types/extension.type.ts +109 -0
  332. package/src/core/types/objValidationCache.ts +17 -0
  333. package/src/core/types/parser.type.ts +15 -0
  334. package/src/core/types/perfoMonitor.ts +37 -0
  335. package/src/core/types/scompiler.ts +22 -0
  336. package/src/core/types/securityValidator.type.ts +10 -0
  337. package/src/core/types/types.ts +154 -0
  338. package/src/core/utils/Make.ts +97 -0
  339. package/src/core/utils/Mod.ts +1168 -0
  340. package/src/core/utils/UrlArgs.ts +124 -0
  341. package/src/core/utils/arrayToEnum.ts +89 -0
  342. package/src/core/utils/createUrlArgsEnumFArray.ts +11 -0
  343. package/src/core/utils/securityHelpers.ts +341 -0
  344. package/src/core/utils/securityValidatorHelpers.ts +76 -0
  345. package/src/index.ts +124 -0
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Validation Engine - Core validation logic for schema extensions
3
+ *
4
+ * This module provides the core validation engine that powers all schema extensions.
5
+ * It acts as a bridge between extensions and the main validation system, delegating
6
+ * actual validation to the TypeValidators module to avoid duplication.
7
+ */
8
+
9
+ import { SchemaInterface } from "../../mode/interfaces/Interface";
10
+ import { TypeValidators } from "../../mode/interfaces/validators/TypeValidators";
11
+ import { ConstraintParser } from "../../mode/interfaces/validators/ConstraintParser";
12
+ import { TypeGuards } from "../../mode/interfaces/validators/TypeGuards";
13
+ import { ValidationHelpers } from "../../mode/interfaces/validators/ValidationHelpers";
14
+ import { ErrorHandler } from "../../mode/interfaces/errors/ErrorHandler";
15
+ import { SchemaOptions } from "../../../types/SchemaValidator.type";
16
+ import { ErrorCode } from "../../mode/interfaces/errors/types/errors.type";
17
+
18
+ /**
19
+ * Core validation engine for schema validation
20
+ */
21
+ export class ValidationEngine {
22
+ /**
23
+ * Validate a value against a schema field definition
24
+ * Delegates to TypeValidators for actual validation logic
25
+ */
26
+ static validateField(fieldSchema: any, value: any): ValidationFieldResult {
27
+ if (typeof fieldSchema === "string") {
28
+ return this.validateStringSchema(fieldSchema, value);
29
+ }
30
+
31
+ if (typeof fieldSchema === "object" && !Array.isArray(fieldSchema)) {
32
+ return this.validateObjectSchema(fieldSchema, value);
33
+ }
34
+
35
+ // Default: accept any value
36
+ return { isValid: true, errors: [] };
37
+ }
38
+
39
+ /**
40
+ * Validate against string-based schema definitions
41
+ * Uses TypeValidators for consistent validation logic
42
+ */
43
+ private static validateStringSchema(
44
+ fieldSchema: string,
45
+ value: any
46
+ ): ValidationFieldResult {
47
+ // Parse the field schema using ConstraintParser
48
+ const parsed = ConstraintParser.parseConstraints(fieldSchema);
49
+ const { type, constraints, optional } = parsed;
50
+
51
+ // Handle null/undefined for optional fields
52
+ if (optional && (value === null || value === undefined)) {
53
+ return { isValid: true, errors: [] };
54
+ }
55
+
56
+ // Required field cannot be null/undefined
57
+ if (!optional && (value === null || value === undefined)) {
58
+ return {
59
+ isValid: false,
60
+ errors: [`Field is required but received ${value}`],
61
+ };
62
+ }
63
+
64
+ // Use TypeValidators for actual validation
65
+ const options: SchemaOptions = { loose: false }; // Default options
66
+ let validationResult;
67
+
68
+ try {
69
+ // Delegate to appropriate TypeValidator method based on type
70
+ switch (type) {
71
+ case "string":
72
+ validationResult = TypeValidators.validateString(
73
+ value,
74
+ options,
75
+ constraints
76
+ );
77
+ break;
78
+ case "number":
79
+ case "float":
80
+ case "double":
81
+ validationResult = TypeValidators.validateNumber(
82
+ value,
83
+ options,
84
+ constraints
85
+ );
86
+ break;
87
+ case "int":
88
+ case "integer":
89
+ case "positive":
90
+ case "negative":
91
+ validationResult = TypeValidators.validateInteger(
92
+ value,
93
+ options,
94
+ constraints,
95
+ type as any
96
+ );
97
+ break;
98
+ case "boolean":
99
+ validationResult = TypeValidators.validateBoolean(value, options, {});
100
+ break;
101
+ case "date":
102
+ validationResult = TypeValidators.validateDate(
103
+ value,
104
+ options,
105
+ {},
106
+ "date"
107
+ );
108
+ break;
109
+ case "email":
110
+ validationResult = TypeValidators.validateEmail(value);
111
+ break;
112
+ case "url":
113
+ validationResult = TypeValidators.validateUrl(value, "url.web");
114
+ break;
115
+ case "uuid":
116
+ case "guid":
117
+ validationResult = TypeValidators.validateUuid(value, type as any);
118
+ break;
119
+ default:
120
+ // Handle arrays and other complex types
121
+ if (type.includes("[]")) {
122
+ // For arrays, use ValidationHelpers.validateArrayWithConstraints
123
+ const elementType = type.replace("[]", "");
124
+ validationResult = ValidationHelpers.validateArrayWithConstraints(
125
+ value,
126
+ elementType,
127
+ constraints,
128
+ (elemType: string, elemValue: any) => {
129
+ // Recursively validate each element and convert result format
130
+ const fieldResult = this.validateStringSchema(
131
+ elemType,
132
+ elemValue
133
+ );
134
+ // Convert string errors to ValidationError objects
135
+ const validationErrors = fieldResult.errors.map((errorMsg) => {
136
+ if (typeof errorMsg === "string") {
137
+ // console.log("converting string error to ValidationError");
138
+ return ErrorHandler.convertStringToError(errorMsg, ErrorCode.VALIDATION_ERROR
139
+ );
140
+ }
141
+ // If it's already a ValidationError object, return as is
142
+ if (
143
+ errorMsg &&
144
+ typeof errorMsg === "object" &&
145
+ "message" in errorMsg
146
+ ) {
147
+ return errorMsg as any;
148
+ }
149
+ // Fallback: convert to string and then to ValidationError
150
+ // console.log(
151
+ // "converting unknown error format to ValidationError"
152
+ // );
153
+ return ErrorHandler.convertStringToError(
154
+ String(errorMsg),
155
+ ErrorCode.VALIDATION_ERROR
156
+ );
157
+ });
158
+ return {
159
+ success: fieldResult.isValid,
160
+ errors: validationErrors,
161
+ warnings: [],
162
+ data: elemValue,
163
+ };
164
+ }
165
+ );
166
+ } else {
167
+ // // Unknown type - accept any value
168
+ validationResult = {
169
+ success: true,
170
+ errors: [],
171
+ warnings: [],
172
+ data: value,
173
+ };
174
+ }
175
+ }
176
+
177
+ // Convert TypeValidators result format to ValidationEngine format
178
+ return {
179
+ isValid: validationResult.success,
180
+ errors: (validationResult.errors || []).map((error) => {
181
+ if (typeof error === "string") {
182
+ return error;
183
+ }
184
+ if (error && typeof error === "object" && error.message) {
185
+ return error.message;
186
+ }
187
+ // Fallback: try to extract meaningful information
188
+ if (error && typeof error === "object") {
189
+ if (
190
+ error.toString &&
191
+ error.toString !== Object.prototype.toString
192
+ ) {
193
+ return error.toString();
194
+ }
195
+ return JSON.stringify(error);
196
+ }
197
+ return String(error);
198
+ }),
199
+ };
200
+ } catch (error) {
201
+ return {
202
+ isValid: false,
203
+ errors: [
204
+ `Validation error: ${error instanceof Error ? error.message : "Unknown error"}`,
205
+ ],
206
+ };
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Validate against object schema definitions
212
+ */
213
+ private static validateObjectSchema(
214
+ fieldSchema: any,
215
+ value: any
216
+ ): ValidationFieldResult {
217
+ const errors: string[] = [];
218
+
219
+ if (typeof value !== "object" || value === null) {
220
+ errors.push("Expected object but received " + typeof value);
221
+ return { isValid: false, errors };
222
+ }
223
+
224
+ // Validate all nested fields
225
+ for (const [nestedField, nestedSchema] of Object.entries(fieldSchema)) {
226
+ const nestedResult = this.validateField(nestedSchema, value[nestedField]);
227
+ if (!nestedResult.isValid) {
228
+ const errRes = nestedResult.errors.map((err) => {
229
+ // Handle both string and ValidationError object cases
230
+ const errorMessage =
231
+ typeof err === "string"
232
+ ? err
233
+ : err && typeof err === "object" && "message" in err
234
+ ? (err as any).message
235
+ : JSON.stringify(err);
236
+ return `${nestedField}: ${errorMessage}`;
237
+ });
238
+ errors.push(...errRes);
239
+ }
240
+ }
241
+
242
+ return { isValid: errors.length === 0, errors };
243
+ }
244
+
245
+ // All individual validation methods removed - now delegated to TypeValidators
246
+
247
+ /**
248
+ * Validate entire object against schema
249
+ */
250
+ static validateObject(schema: SchemaInterface, data: any): ValidationResult {
251
+ const errors: Record<string, string[]> = {};
252
+ let isValid = true;
253
+
254
+ if (!data || typeof data !== "object") {
255
+ return {
256
+ isValid: false,
257
+ data,
258
+ errors: { _root: ["Expected object but received " + typeof data] },
259
+ timestamp: new Date(),
260
+ };
261
+ }
262
+
263
+ // Validate each field in the schema
264
+ for (const [fieldName, fieldSchema] of Object.entries(schema)) {
265
+ const fieldResult = this.validateField(fieldSchema, data[fieldName]);
266
+
267
+ if (!fieldResult.isValid) {
268
+ errors[fieldName] = fieldResult.errors;
269
+ isValid = false;
270
+ }
271
+ }
272
+
273
+ return {
274
+ isValid,
275
+ data,
276
+ errors,
277
+ timestamp: new Date(),
278
+ };
279
+ }
280
+ }
281
+
282
+ /**
283
+ * Type definitions
284
+ */
285
+ export interface ValidationFieldResult {
286
+ isValid: boolean;
287
+ errors: string[];
288
+ }
289
+
290
+ export interface ValidationResult {
291
+ isValid: boolean;
292
+ data: any;
293
+ errors: Record<string, string[]>;
294
+ timestamp: Date;
295
+ }
@@ -0,0 +1,364 @@
1
+ /**
2
+ * TypeScript Interface-like Schema System
3
+ *
4
+ * The most intuitive way to define schemas - just like TypeScript interfaces!
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { Interface as IF} from "reliant-type";
9
+ *
10
+ * // Define schema like a TypeScript interface
11
+ * const UserSchema = IF({
12
+ * id: "number",
13
+ * email: "email",
14
+ * name: "string",
15
+ * age: "number?", // Optional
16
+ * isActive: "boolean?", // Optional
17
+ * tags: "string[]?", // Optional array
18
+ * role: "admin", // Constant value
19
+ * profile: { // Nested object
20
+ * bio: "string?",
21
+ * avatar: "url?"
22
+ * }
23
+ * });
24
+ *
25
+ * // Validate data
26
+ * const result = UserSchema.safeParse(userData);
27
+ * ```
28
+ */
29
+
30
+ import { InterfaceSchema } from "./InterfaceSchema";
31
+ import {
32
+ ConstantValue,
33
+ OptionalConstantValue,
34
+ OptionalSchemaInterface,
35
+ SchemaInterface,
36
+ SchemaOptions,
37
+ SchemaFieldType,
38
+ UnionValue,
39
+ } from "../../../types/SchemaValidator.type";
40
+ import { InferSchemaType } from "./typescript/TypeInference";
41
+
42
+ /**
43
+ * Convert Make objects to string syntax that InterfaceSchema understands
44
+ */
45
+ function convertMakeObjectsToStrings(definition: any): any {
46
+ if (typeof definition !== "object" || definition === null) {
47
+ return definition;
48
+ }
49
+
50
+ // Handle arrays
51
+ if (Array.isArray(definition)) {
52
+ return definition.map((item) => convertMakeObjectsToStrings(item));
53
+ }
54
+
55
+ // Check if this is a Make.const() object: convert => =constVal
56
+ if (
57
+ typeof definition === "object" &&
58
+ "const" in definition &&
59
+ Object.keys(definition).length === 1
60
+ ) {
61
+ // Convert Make.const() to string syntax
62
+ return `=${definition.const}`;
63
+ }
64
+
65
+ // Check if this is a Make.union() object
66
+ if (
67
+ typeof definition === "object" &&
68
+ "union" in definition &&
69
+ Array.isArray(definition.union)
70
+ ) {
71
+ // Check if it's an optional union (Make.unionOptional)
72
+ if ("optional" in definition && definition.optional === true) {
73
+ // Convert Make.unionOptional() to string syntax with "?" suffix
74
+ return definition.union.join("|") + "?";
75
+ } else {
76
+ // Convert Make.union() to string syntax
77
+ return definition.union.join("|");
78
+ }
79
+ }
80
+
81
+ // Recursively process nested objects
82
+ const result: any = {};
83
+ for (const [key, value] of Object.entries(definition)) {
84
+ result[key] = convertMakeObjectsToStrings(value);
85
+ }
86
+ return result;
87
+ }
88
+
89
+ /**
90
+ * Create a schema using TypeScript interface-like syntax with full type inference
91
+ *
92
+ * @param definition - Schema definition using TypeScript-like syntax
93
+ * @param options - Optional validation options
94
+ * @returns InterfaceSchema instance with inferred types
95
+ *
96
+ * @example Basic Usage
97
+ * ```typescript
98
+ * const UserSchema = Interface({
99
+ * id: "number",
100
+ * email: "email",
101
+ * name: "string",
102
+ * age: "number?",
103
+ * isActive: "boolean?",
104
+ * tags: "string[]?"
105
+ * });
106
+ *
107
+ * // result is fully typed as:
108
+ * // SchemaValidationResult<{
109
+ * // id: number;
110
+ * // email: string;
111
+ * // name: string;
112
+ * // age?: number;
113
+ * // isActive?: boolean;
114
+ * // tags?: string[];
115
+ * // }>
116
+ * const result = UserSchema.safeParse(data);
117
+ * ```
118
+ *
119
+ * @example With Constraints
120
+ * ```typescript
121
+ * const UserSchema = Interface({
122
+ * username: "string(3,20)", // 3-20 characters
123
+ * age: "number(18,120)", // 18-120 years
124
+ * tags: "string[](1,10)?", // 1-10 tags, optional
125
+ * });
126
+ * ```
127
+ *
128
+ * @example Nested Objects
129
+ * ```typescript
130
+ * const OrderSchema = Interface({
131
+ * id: "number",
132
+ * customer: {
133
+ * name: "string",
134
+ * email: "email",
135
+ * address: {
136
+ * street: "string",
137
+ * city: "string",
138
+ * zipCode: "string"
139
+ * }
140
+ * },
141
+ * items: [{
142
+ * name: "string",
143
+ * price: "number",
144
+ * quantity: "int"
145
+ * }]
146
+ * });
147
+ * ```
148
+ */
149
+ export function Interface<const T extends SchemaInterface>(
150
+ definition: T,
151
+ options?: SchemaOptions
152
+ ): InterfaceSchema<InferSchemaType<T>> {
153
+ // Convert Make objects to string syntax before creating schema
154
+ const processedDefinition = convertMakeObjectsToStrings(definition);
155
+
156
+ // Debug: Log the conversion (disabled for now)
157
+ // if (process.env.NODE_ENV !== "production") {
158
+ // console.log("DEBUG: Original definition:", JSON.stringify(definition, null, 2));
159
+ // console.log("DEBUG: Processed definition:", JSON.stringify(processedDefinition, null, 2));
160
+ // }
161
+
162
+ return new InterfaceSchema<InferSchemaType<T>>(processedDefinition, options);
163
+ }
164
+
165
+ /**
166
+ * Type helper for inferring TypeScript types from schema definitions
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * const UserSchema = Interface({
171
+ * id: "number",
172
+ * email: "email",
173
+ * name: "string",
174
+ * age: "number?",
175
+ * tags: "string[]?"
176
+ * });
177
+ *
178
+ * // Infer the TypeScript type
179
+ * type User = InferType<typeof UserSchema>;
180
+ * // User = {
181
+ * // id: number;
182
+ * // email: string;
183
+ * // name: string;
184
+ * // age?: number;
185
+ * // tags?: string[];
186
+ * // }
187
+ * ```
188
+ */
189
+ export type InferType<T extends InterfaceSchema<any>> =
190
+ T extends InterfaceSchema<infer U> ? U : never;
191
+
192
+ // Export the main inference type for direct use
193
+ export type { InferSchemaType };
194
+
195
+ // Re-export types for convenience
196
+ export type {
197
+ SchemaInterface,
198
+ SchemaOptions,
199
+ SchemaFieldType,
200
+ ConstantValue,
201
+ } from "../../../types/SchemaValidator.type";
202
+ export { InterfaceSchema } from "./InterfaceSchema";
203
+
204
+ // Re-export TypeScript integration
205
+ export { TypeScriptIntegration, IDE, TypeInference } from "./typescript";
206
+ export type {
207
+ ConditionalExpression,
208
+ TypeInferenceResult,
209
+ ConditionalResult,
210
+ FieldPaths,
211
+ GetValueByPath,
212
+ ValidateConditional,
213
+ } from "./typescript";
214
+
215
+ // Re-export validators for advanced usage
216
+ export {
217
+ TypeValidators,
218
+ ConstraintParser,
219
+ TypeGuards,
220
+ ValidationHelpers,
221
+ } from "./validators";
222
+ export type { ParsedConstraints } from "./validators";
223
+
224
+ /**
225
+ * Available field types for schema definitions
226
+ */
227
+ export const FieldTypes = {
228
+ // Basic types
229
+ STRING: "string" as const,
230
+ STRING_OPTIONAL: "string?" as const,
231
+ NUMBER: "number" as const,
232
+ NUMBER_OPTIONAL: "number?" as const,
233
+ BOOLEAN: "boolean" as const,
234
+ BOOLEAN_OPTIONAL: "boolean?" as const,
235
+ DATE: "date" as const,
236
+ DATE_OPTIONAL: "date?" as const,
237
+ ANY: "any" as const,
238
+ ANY_OPTIONAL: "any?" as const,
239
+
240
+ // String formats
241
+ EMAIL: "email" as const,
242
+ EMAIL_OPTIONAL: "email?" as const,
243
+ URL: "url" as const,
244
+ URL_OPTIONAL: "url?" as const,
245
+ UUID: "uuid" as const,
246
+ UUID_OPTIONAL: "uuid?" as const,
247
+ PHONE: "phone" as const,
248
+ PHONE_OPTIONAL: "phone?" as const,
249
+ SLUG: "slug" as const,
250
+ SLUG_OPTIONAL: "slug?" as const,
251
+ USERNAME: "username" as const,
252
+ USERNAME_OPTIONAL: "username?" as const,
253
+
254
+ // Number types
255
+ INT: "int" as const,
256
+ INT_OPTIONAL: "int?" as const,
257
+ POSITIVE: "positive" as const,
258
+ POSITIVE_OPTIONAL: "positive?" as const,
259
+ FLOAT: "float" as const,
260
+ FLOAT_OPTIONAL: "float?" as const,
261
+
262
+ // Array types
263
+ STRING_ARRAY: "string[]" as const,
264
+ STRING_ARRAY_OPTIONAL: "string[]?" as const,
265
+ NUMBER_ARRAY: "number[]" as const,
266
+ NUMBER_ARRAY_OPTIONAL: "number[]?" as const,
267
+ BOOLEAN_ARRAY: "boolean[]" as const,
268
+ BOOLEAN_ARRAY_OPTIONAL: "boolean[]?" as const,
269
+ INT_ARRAY: "int[]" as const,
270
+ INT_ARRAY_OPTIONAL: "int[]?" as const,
271
+ EMAIL_ARRAY: "email[]" as const,
272
+ EMAIL_ARRAY_OPTIONAL: "email[]?" as const,
273
+ URL_ARRAY: "url[]" as const,
274
+ URL_ARRAY_OPTIONAL: "url[]?" as const,
275
+
276
+ // Record types
277
+ RECORD_STRING_ANY: "record<string,any>" as const,
278
+ RECORD_STRING_ANY_OPTIONAL: "record<string,any>?" as const,
279
+ RECORD_STRING_STRING: "record<string,string>" as const,
280
+ RECORD_STRING_STRING_OPTIONAL: "record<string,string>?" as const,
281
+ RECORD_STRING_NUMBER: "record<string,number>" as const,
282
+ RECORD_STRING_NUMBER_OPTIONAL: "record<string,number>?" as const,
283
+ } as const;
284
+
285
+ /**
286
+ * Quick schema creation helpers
287
+ */
288
+ export const QuickSchemas = {
289
+ /**
290
+ * User schema with common fields
291
+ */
292
+ User: Interface({
293
+ id: "number",
294
+ email: "email",
295
+ name: "string",
296
+ createdAt: "date?",
297
+ updatedAt: "date?",
298
+ }),
299
+
300
+ /**
301
+ * API response schema
302
+ */
303
+ APIResponse: Interface({
304
+ success: "boolean",
305
+ data: "any?",
306
+ errors: "string[]?",
307
+ timestamp: "date?",
308
+ }),
309
+
310
+ /**
311
+ * Pagination schema
312
+ */
313
+ Pagination: Interface({
314
+ page: "int",
315
+ limit: "int",
316
+ total: "int",
317
+ hasNext: "boolean?",
318
+ hasPrev: "boolean?",
319
+ }),
320
+
321
+ /**
322
+ * Address schema
323
+ */
324
+ Address: Interface({
325
+ street: "string",
326
+ city: "string",
327
+ state: "string?",
328
+ zipCode: "string",
329
+ country: "string",
330
+ }),
331
+
332
+ /**
333
+ * Contact info schema
334
+ */
335
+ Contact: Interface({
336
+ email: "email?",
337
+ phone: "phone?",
338
+ website: "url?",
339
+ }),
340
+ };
341
+
342
+ /**
343
+ * Schema modification utilities - transform and combine schemas
344
+ */
345
+ export { Mod } from "../../../utils/Mod";
346
+
347
+ /**
348
+ * Helper functions for creating schema values
349
+ */
350
+ export { Make } from "../../../utils/Make";
351
+
352
+ /**
353
+ * Custom error class for schema validation
354
+ */
355
+ export class SchemaValidationError extends Error {
356
+ constructor(
357
+ message: string,
358
+ public errors: string[],
359
+ public warnings: string[]
360
+ ) {
361
+ super(message);
362
+ this.name = "SchemaValidationError";
363
+ }
364
+ }