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,175 @@
1
+ import { OpenAPIOptions, OpenAPISpec } from "../../../../types/extension.type";
2
+ import { SchemaInterface } from "../../../../types/SchemaValidator.type";
3
+
4
+ /**
5
+ * OpenAPI generator
6
+ */
7
+ export class OpenAPIGenerator {
8
+ constructor(
9
+ private schema: SchemaInterface,
10
+ private options: OpenAPIOptions
11
+ ) {}
12
+
13
+ generate(): OpenAPISpec {
14
+ return {
15
+ openapi: "3.0.0",
16
+ info: {
17
+ title: this.options.title,
18
+ version: this.options.version
19
+ },
20
+ servers: this.options.servers?.map(url => ({ url })) || [],
21
+ components: {
22
+ schemas: {
23
+ [this.options.title]: this.convertSchema()
24
+ }
25
+ }
26
+ };
27
+ }
28
+
29
+ private convertSchema(): any {
30
+ const properties: any = {};
31
+ const required: string[] = [];
32
+
33
+ Object.entries(this.schema).forEach(([fieldName, fieldType]) => {
34
+ const openApiProperty = this.convertFieldToOpenAPIProperty(fieldName, fieldType);
35
+ properties[fieldName] = openApiProperty.schema;
36
+
37
+ if (openApiProperty.required) {
38
+ required.push(fieldName);
39
+ }
40
+ });
41
+
42
+ return {
43
+ type: "object",
44
+ properties,
45
+ required: required.length > 0 ? required : undefined
46
+ };
47
+ }
48
+
49
+ private convertFieldToOpenAPIProperty(_fieldName: string, fieldType: any): { schema: any; required: boolean } {
50
+ if (typeof fieldType === "string") {
51
+ const isOptional = fieldType.includes("?");
52
+ const cleanType = fieldType.replace("?", "");
53
+
54
+ // Handle string types with constraints
55
+ if (cleanType.startsWith("string")) {
56
+ const constraints = this.parseStringConstraints(cleanType);
57
+ return {
58
+ schema: {
59
+ type: "string",
60
+ ...constraints
61
+ },
62
+ required: !isOptional
63
+ };
64
+ }
65
+
66
+ // Handle specific string formats
67
+ if (cleanType === "email") {
68
+ return {
69
+ schema: { type: "string", format: "email" },
70
+ required: !isOptional
71
+ };
72
+ }
73
+
74
+ if (cleanType === "url") {
75
+ return {
76
+ schema: { type: "string", format: "uri" },
77
+ required: !isOptional
78
+ };
79
+ }
80
+
81
+ if (cleanType === "uuid") {
82
+ return {
83
+ schema: { type: "string", format: "uuid" },
84
+ required: !isOptional
85
+ };
86
+ }
87
+
88
+ if (cleanType === "date") {
89
+ return {
90
+ schema: { type: "string", format: "date-time" },
91
+ required: !isOptional
92
+ };
93
+ }
94
+
95
+ // Handle number types
96
+ if (cleanType === "number" || cleanType === "positive" || cleanType === "int") {
97
+ const schema: any = { type: cleanType === "int" ? "integer" : "number" };
98
+ if (cleanType === "positive") {
99
+ schema.minimum = 0;
100
+ schema.exclusiveMinimum = true;
101
+ }
102
+ return { schema, required: !isOptional };
103
+ }
104
+
105
+ // Handle boolean
106
+ if (cleanType === "boolean") {
107
+ return {
108
+ schema: { type: "boolean" },
109
+ required: !isOptional
110
+ };
111
+ }
112
+
113
+ // Handle arrays
114
+ if (cleanType.includes("[]")) {
115
+ const itemType = cleanType.replace("[]", "");
116
+ const itemSchema = this.convertFieldToOpenAPIProperty("item", itemType).schema;
117
+ return {
118
+ schema: {
119
+ type: "array",
120
+ items: itemSchema
121
+ },
122
+ required: !isOptional
123
+ };
124
+ }
125
+
126
+ // Default to string
127
+ return {
128
+ schema: { type: "string" },
129
+ required: !isOptional
130
+ };
131
+ }
132
+
133
+ // Handle object types
134
+ if (typeof fieldType === "object" && !Array.isArray(fieldType)) {
135
+ const nestedProperties: any = {};
136
+ const nestedRequired: string[] = [];
137
+
138
+ Object.entries(fieldType).forEach(([nestedField, nestedType]) => {
139
+ const nestedProperty = this.convertFieldToOpenAPIProperty(nestedField, nestedType);
140
+ nestedProperties[nestedField] = nestedProperty.schema;
141
+ if (nestedProperty.required) {
142
+ nestedRequired.push(nestedField);
143
+ }
144
+ });
145
+
146
+ return {
147
+ schema: {
148
+ type: "object",
149
+ properties: nestedProperties,
150
+ required: nestedRequired.length > 0 ? nestedRequired : undefined
151
+ },
152
+ required: true
153
+ };
154
+ }
155
+
156
+ // Fallback
157
+ return {
158
+ schema: { type: "string" },
159
+ required: true
160
+ };
161
+ }
162
+
163
+ private parseStringConstraints(stringType: string): any {
164
+ const constraints: any = {};
165
+
166
+ // Parse string(min,max) format
167
+ const match = stringType.match(/string\((\d+)?,?(\d+)?\)/);
168
+ if (match) {
169
+ if (match[1]) constraints.minLength = parseInt(match[1]);
170
+ if (match[2]) constraints.maxLength = parseInt(match[2]);
171
+ }
172
+
173
+ return constraints;
174
+ }
175
+ }
@@ -0,0 +1,49 @@
1
+ import { FieldInfo, SchemaAnalysis } from "../../../../types/extension.type";
2
+ import { SchemaInterface } from "../../../../types/SchemaValidator.type";
3
+
4
+ /**
5
+ * Schema analyzer for extracting field information
6
+ */
7
+ export class SchemaAnalyzer {
8
+ constructor(private schema: SchemaInterface) {}
9
+
10
+ analyze(): SchemaAnalysis {
11
+ const fields: FieldInfo[] = [];
12
+
13
+ Object.entries(this.schema).forEach(([name, type]) => {
14
+ fields.push(this.analyzeField(name, type));
15
+ });
16
+
17
+ return {
18
+ fields,
19
+ totalFields: fields.length,
20
+ requiredFields: fields.filter(f => f.required).length,
21
+ optionalFields: fields.filter(f => !f.required).length
22
+ };
23
+ }
24
+
25
+ private analyzeField(name: string, type: any): FieldInfo {
26
+ const typeStr = typeof type === "string" ? type : JSON.stringify(type);
27
+ const required = !typeStr.includes("?");
28
+
29
+ return {
30
+ name,
31
+ type: typeStr,
32
+ required,
33
+ description: this.generateFieldDescription(name, typeStr)
34
+ };
35
+ }
36
+
37
+ private generateFieldDescription(name: string, type: string): string {
38
+ if (type === "email") return "Email address";
39
+ if (type === "uuid") return "Unique identifier";
40
+ if (type === "url") return "URL address";
41
+ if (type.includes("string")) return "Text value";
42
+ if (type.includes("number")) return "Numeric value";
43
+ if (type === "boolean") return "True/false value";
44
+ if (type === "date") return "Date and time";
45
+ if (type.includes("[]")) return "Array of values";
46
+
47
+ return `${name} field`;
48
+ }
49
+ }
@@ -0,0 +1,54 @@
1
+ import { SchemaInterface } from "../../../../types/SchemaValidator.type";
2
+ import { TypeScriptOptions } from "../../mods";
3
+
4
+ /**
5
+ * TypeScript generator
6
+ */
7
+ export class TypeScriptGenerator {
8
+ constructor(
9
+ private schema: SchemaInterface,
10
+ private options: TypeScriptOptions
11
+ ) {}
12
+
13
+ generate(): string {
14
+ const { exportName = "Schema", namespace } = this.options;
15
+
16
+ let output = "";
17
+
18
+ if (namespace) {
19
+ output += `export namespace ${namespace} {\n`;
20
+ }
21
+
22
+ output += `export interface ${exportName} {\n`;
23
+
24
+ Object.entries(this.schema).forEach(([name, type]) => {
25
+ const tsType = this.convertToTypeScript(type);
26
+ const optional = typeof type === "string" && type.includes("?") ? "?" : "";
27
+ output += ` ${name}${optional}: ${tsType};\n`;
28
+ });
29
+
30
+ output += "}\n";
31
+
32
+ if (namespace) {
33
+ output += "}\n";
34
+ }
35
+
36
+ return output;
37
+ }
38
+
39
+ private convertToTypeScript(type: any): string {
40
+ if (typeof type === "string") {
41
+ const cleanType = type.replace("?", "");
42
+
43
+ if (cleanType === "email" || cleanType === "uuid" || cleanType === "url") return "string";
44
+ if (cleanType.startsWith("string")) return "string";
45
+ if (cleanType.includes("number") || cleanType === "positive" || cleanType === "int") return "number";
46
+ if (cleanType === "boolean") return "boolean";
47
+ if (cleanType === "date") return "Date";
48
+ if (cleanType.includes("[]")) return `${this.convertToTypeScript(cleanType.replace("[]", ""))}[]`;
49
+ }
50
+
51
+ return "any";
52
+ }
53
+ }
54
+
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Auto Documentation - schema documentation generator
3
+ *
4
+ * This module automatically generates beautiful documentation from schemas,
5
+ * including API docs, type definitions, and interactive examples.
6
+ *
7
+ */
8
+ import { Docs } from "./Docs";
9
+
10
+ export { DocumentationGenerator } from "./DocumentationGenerator";
11
+ export { SchemaAnalyzer } from "./SchemaAnalyzer";
12
+ export { TypeScriptGenerator } from "./TypeScriptGenerator";
13
+ export { OpenAPIGenerator } from "./OpenAPIGenerator";
14
+ export { InteractiveDocumentationGenerator } from "./InteractiveDocumentationGenerator";
15
+ export { Docs } from "./Docs";
16
+
17
+ export default Docs;
@@ -0,0 +1,101 @@
1
+ import { ConditionalThen } from "./ConditionalThen";
2
+
3
+ // Type helper to infer field types from schema strings
4
+ type InferFieldType<T extends string> =
5
+ T extends "string" ? string :
6
+ T extends "string?" ? string | undefined :
7
+ T extends "number" ? number :
8
+ T extends "number?" ? number | undefined :
9
+ T extends "boolean" ? boolean :
10
+ T extends "boolean?" ? boolean | undefined :
11
+ T extends "string[]" ? string[] :
12
+ T extends "string[]?" ? string[] | undefined :
13
+ T extends "number[]" ? number[] :
14
+ T extends "number[]?" ? number[] | undefined :
15
+ T extends "boolean[]" ? boolean[] :
16
+ T extends "boolean[]?" ? boolean[] | undefined :
17
+ T extends `${string}|${string}` ? string :
18
+ any;
19
+
20
+ // Type-safe conditional builder result
21
+ type ConditionalBuilderResult<TThen extends string, TElse extends string = never> =
22
+ TElse extends never
23
+ ? { __conditional: true; __inferredType: InferFieldType<TThen> }
24
+ : { __conditional: true; __inferredType: InferFieldType<TThen> | InferFieldType<TElse> };
25
+
26
+ /**
27
+ * Builder for single field conditional validation with TypeScript inference
28
+ */
29
+ export class ConditionalBuilder {
30
+ private conditions: Array<{
31
+ condition: (value: any) => boolean;
32
+ schema: any;
33
+ }> = [];
34
+ private defaultSchema: any = null;
35
+
36
+ constructor(private fieldName: string) {}
37
+
38
+ /**
39
+ * Check if field equals specific value
40
+ */
41
+ is(value: any): ConditionalThen {
42
+ return new ConditionalThen(this, (fieldValue) => fieldValue === value);
43
+ }
44
+
45
+ /**
46
+ * Check if field does not equal specific value
47
+ */
48
+ isNot(value: any): ConditionalThen {
49
+ return new ConditionalThen(this, (fieldValue) => fieldValue !== value);
50
+ }
51
+
52
+ /**
53
+ * Check if field exists (not null/undefined)
54
+ */
55
+ exists(): ConditionalThen {
56
+ return new ConditionalThen(this, (fieldValue) => fieldValue != null);
57
+ }
58
+
59
+ /**
60
+ * Check if field matches pattern
61
+ */
62
+ matches(pattern: RegExp): ConditionalThen {
63
+ return new ConditionalThen(this, (fieldValue) =>
64
+ typeof fieldValue === "string" && pattern.test(fieldValue)
65
+ );
66
+ }
67
+
68
+ /**
69
+ * Check if field is in array of values
70
+ */
71
+ in(values: any[]): ConditionalThen {
72
+ return new ConditionalThen(this, (fieldValue) => values.includes(fieldValue));
73
+ }
74
+
75
+ /**
76
+ * Custom condition function
77
+ */
78
+ when(condition: (value: any) => boolean): ConditionalThen {
79
+ return new ConditionalThen(this, condition);
80
+ }
81
+
82
+ addCondition(condition: (value: any) => boolean, schema: any): this {
83
+ this.conditions.push({ condition, schema });
84
+ return this;
85
+ }
86
+
87
+ default(schema: any): any {
88
+ this.defaultSchema = schema;
89
+ return this.build();
90
+ }
91
+
92
+ build(): any {
93
+ // Return a special object that the validation engine can recognize
94
+ return {
95
+ __conditional: true,
96
+ fieldName: this.fieldName,
97
+ conditions: this.conditions,
98
+ default: this.defaultSchema
99
+ };
100
+ }
101
+ }
@@ -0,0 +1,65 @@
1
+ import { ConditionalBuilder } from "./ConditionalBuilder";
2
+
3
+ // Type helper to infer field types from schema strings
4
+ type InferFieldType<T extends string> =
5
+ T extends "string" ? string :
6
+ T extends "string?" ? string | undefined :
7
+ T extends "number" ? number :
8
+ T extends "number?" ? number | undefined :
9
+ T extends "boolean" ? boolean :
10
+ T extends "boolean?" ? boolean | undefined :
11
+ T extends "string[]" ? string[] :
12
+ T extends "string[]?" ? string[] | undefined :
13
+ T extends "number[]" ? number[] :
14
+ T extends "number[]?" ? number[] | undefined :
15
+ T extends "boolean[]" ? boolean[] :
16
+ T extends "boolean[]?" ? boolean[] | undefined :
17
+ T extends `${string}|${string}` ? string :
18
+ any;
19
+
20
+ // Type-safe conditional result with proper inference
21
+ type ConditionalResult<TThen extends string, TElse extends string> = {
22
+ __conditional: true;
23
+ __inferredType: InferFieldType<TThen> | InferFieldType<TElse>;
24
+ };
25
+
26
+ /**
27
+ * Builder for the "else" part of conditional validation with TypeScript inference
28
+ * This class is returned after calling .then() and provides the .else() method
29
+ */
30
+ export class ConditionalElse<TThen extends string = string> {
31
+ constructor(
32
+ private builder: ConditionalBuilder,
33
+ private condition: (value: any) => boolean,
34
+ private thenSchema: TThen
35
+ ) {}
36
+
37
+ /**
38
+ * Specify the schema to use when the condition is false
39
+ */
40
+ else<TElse extends string>(elseSchema: TElse): ConditionalResult<TThen, TElse> {
41
+ // Add the condition with the "then" schema
42
+ this.builder.addCondition(this.condition, this.thenSchema);
43
+
44
+ // Set the default schema (used when condition is false)
45
+ const result = this.builder.default(elseSchema);
46
+
47
+ // Return with type information for TypeScript inference
48
+ return result as ConditionalResult<TThen, TElse>;
49
+ }
50
+
51
+ /**
52
+ * Alias for else() - for backward compatibility
53
+ */
54
+ default<TElse extends string>(defaultSchema: TElse): ConditionalResult<TThen, TElse> {
55
+ return this.else(defaultSchema);
56
+ }
57
+
58
+ /**
59
+ * Build without else clause (same as calling .else(undefined))
60
+ */
61
+ build(): any {
62
+ this.builder.addCondition(this.condition, this.thenSchema);
63
+ return this.builder.build();
64
+ }
65
+ }
@@ -0,0 +1,33 @@
1
+ import { ConditionalBuilder } from "./ConditionalBuilder";
2
+ import { ConditionalElse } from "./ConditionalElse";
3
+
4
+ // Type helper to infer field types from schema strings
5
+ type InferFieldType<T extends string> =
6
+ T extends "string" ? string :
7
+ T extends "string?" ? string | undefined :
8
+ T extends "number" ? number :
9
+ T extends "number?" ? number | undefined :
10
+ T extends "boolean" ? boolean :
11
+ T extends "boolean?" ? boolean | undefined :
12
+ T extends "string[]" ? string[] :
13
+ T extends "string[]?" ? string[] | undefined :
14
+ T extends "number[]" ? number[] :
15
+ T extends "number[]?" ? number[] | undefined :
16
+ T extends "boolean[]" ? boolean[] :
17
+ T extends "boolean[]?" ? boolean[] | undefined :
18
+ T extends `${string}|${string}` ? string :
19
+ any;
20
+
21
+ /**
22
+ * Builder for the "then" part of conditional validation with TypeScript inference
23
+ */
24
+ export class ConditionalThen {
25
+ constructor(
26
+ private builder: ConditionalBuilder,
27
+ private condition: (value: any) => boolean
28
+ ) {}
29
+
30
+ then<T extends string>(schema: T): ConditionalElse<T> {
31
+ return new ConditionalElse(this.builder, this.condition, schema);
32
+ }
33
+ }
@@ -0,0 +1,75 @@
1
+ import { SchemaInterface } from "../../../../types/SchemaValidator.type";
2
+
3
+ /**
4
+ * schema composition with inheritance
5
+ */
6
+ export const Extend = {
7
+ /**
8
+ * Create schema inheritance with method-like syntax
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const BaseEntitySchema = Interface({
13
+ * id: "uuid",
14
+ * createdAt: "date",
15
+ * updatedAt: "date"
16
+ * });
17
+ *
18
+ * const UserSchema = Extend.from(BaseEntitySchema).with({
19
+ * email: "email",
20
+ * username: "string(3,20)",
21
+ * profile: {
22
+ * firstName: "string",
23
+ * lastName: "string"
24
+ * }
25
+ * });
26
+ *
27
+ * const AdminSchema = Extend.from(UserSchema).with({
28
+ * permissions: "string[]",
29
+ * role: Make.const("admin")
30
+ * }).override({
31
+ * email: "email(,254)" // Override with more specific validation
32
+ * });
33
+ * ```
34
+ */
35
+ from(baseSchema: SchemaInterface): ExtendBuilder {
36
+ return new ExtendBuilder(baseSchema);
37
+ },
38
+ };
39
+
40
+ /**
41
+ * Builder for schema extension
42
+ */
43
+ export class ExtendBuilder {
44
+ constructor(private baseSchema: SchemaInterface) {}
45
+
46
+ with(additionalFields: any): ExtendWithBuilder {
47
+ return new ExtendWithBuilder(this.baseSchema, additionalFields);
48
+ }
49
+ }
50
+
51
+ /**
52
+ * Builder for extended schema with additional methods
53
+ */
54
+ export class ExtendWithBuilder {
55
+ constructor(
56
+ private baseSchema: SchemaInterface,
57
+ private additionalFields: any
58
+ ) {}
59
+
60
+ override(overrides: any): SchemaInterface {
61
+ // Merge base schema, additional fields, and overrides
62
+ return {
63
+ ...this.baseSchema,
64
+ ...this.additionalFields,
65
+ ...overrides,
66
+ } as SchemaInterface;
67
+ }
68
+
69
+ build(): SchemaInterface {
70
+ return {
71
+ ...this.baseSchema,
72
+ ...this.additionalFields,
73
+ } as SchemaInterface;
74
+ }
75
+ }
@@ -0,0 +1,16 @@
1
+ import { MultiConditionalThen } from "./MultiConditionalThen";
2
+
3
+ /**
4
+ * Builder for multi-field conditional validation
5
+ */
6
+ export class MultiConditionalBuilder {
7
+ private matchConditions: any = {};
8
+
9
+ constructor(private fieldNames: string[]) {}
10
+
11
+ match(conditions: Record<string, any>): MultiConditionalThen {
12
+ this.matchConditions = conditions;
13
+ return new MultiConditionalThen(this, conditions);
14
+ }
15
+ }
16
+
@@ -0,0 +1,50 @@
1
+ import { MultiConditionalBuilder } from "./MultiConditionalBuilder";
2
+
3
+ /**
4
+ * Builder for multi-field "then" part
5
+ */
6
+ export class MultiConditionalThen {
7
+ constructor(
8
+ private builder: MultiConditionalBuilder,
9
+ private conditions: Record<string, any>
10
+ ) {}
11
+
12
+ then(schema: any): MultiConditionalElse {
13
+ return new MultiConditionalElse(schema, null);
14
+ }
15
+ }
16
+
17
+
18
+
19
+
20
+ /**
21
+ * Builder for multi-field "else" part
22
+ */
23
+ export class MultiConditionalElse {
24
+ constructor(
25
+ private thenSchema: any,
26
+ private elseSchema: any
27
+ ) {}
28
+
29
+ else(schema: any): any {
30
+ return {
31
+ __multiConditional: true,
32
+ then: this.thenSchema,
33
+ else: schema
34
+ };
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Custom validator builder
40
+ */
41
+ export class CustomValidator {
42
+ constructor(private validator: (data: any) => { valid: true } | { error: string }) {}
43
+
44
+ build(): any {
45
+ return {
46
+ __customValidator: true,
47
+ validator: this.validator
48
+ };
49
+ }
50
+ }