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,338 @@
1
+ /**
2
+ * OpenAPI Converter - Convert schemas to OpenAPI specifications
3
+ *
4
+ * This module provides utilities to convert ReliantType definitions
5
+ * to OpenAPI 3.0 specifications for API documentation.
6
+ */
7
+
8
+ import { SchemaInterface } from "../../mode/interfaces/Interface";
9
+
10
+ /**
11
+ * OpenAPI converter for schema definitions
12
+ */
13
+ export class OpenAPIConverter {
14
+ /**
15
+ * Convert a schema to OpenAPI format
16
+ */
17
+ static convertSchema(schema: SchemaInterface): OpenAPISchemaObject {
18
+ const properties: Record<string, any> = {};
19
+ const required: string[] = [];
20
+
21
+ Object.entries(schema).forEach(([fieldName, fieldType]) => {
22
+ const openApiProperty = this.convertField(fieldType);
23
+ properties[fieldName] = openApiProperty.schema;
24
+
25
+ if (openApiProperty.required) {
26
+ required.push(fieldName);
27
+ }
28
+ });
29
+
30
+ return {
31
+ type: "object",
32
+ properties,
33
+ required: required.length > 0 ? required : undefined
34
+ };
35
+ }
36
+
37
+ /**
38
+ * Convert a single field to OpenAPI property
39
+ */
40
+ private static convertField(fieldType: any): { schema: any; required: boolean } {
41
+ if (typeof fieldType === "string") {
42
+ return this.convertStringField(fieldType);
43
+ }
44
+
45
+ if (typeof fieldType === "object" && !Array.isArray(fieldType)) {
46
+ return this.convertObjectField(fieldType);
47
+ }
48
+
49
+ // Fallback
50
+ return {
51
+ schema: { type: "string" },
52
+ required: true
53
+ };
54
+ }
55
+
56
+ /**
57
+ * Convert string-based field definitions
58
+ */
59
+ private static convertStringField(fieldType: string): { schema: any; required: boolean } {
60
+ const isOptional = fieldType.includes("?");
61
+ const cleanType = fieldType.replace("?", "");
62
+
63
+ // Handle string types with constraints
64
+ if (cleanType.startsWith("string")) {
65
+ const constraints = this.parseStringConstraints(cleanType);
66
+ return {
67
+ schema: {
68
+ type: "string",
69
+ ...constraints
70
+ },
71
+ required: !isOptional
72
+ };
73
+ }
74
+
75
+ // Handle specific string formats
76
+ const formatMappings: Record<string, any> = {
77
+ email: { type: "string", format: "email" },
78
+ url: { type: "string", format: "uri" },
79
+ uuid: { type: "string", format: "uuid" },
80
+ date: { type: "string", format: "date-time" },
81
+ phone: { type: "string", pattern: "^\\+?[1-9]\\d{1,14}$" }
82
+ };
83
+
84
+ if (formatMappings[cleanType]) {
85
+ return {
86
+ schema: formatMappings[cleanType],
87
+ required: !isOptional
88
+ };
89
+ }
90
+
91
+ // Handle number types
92
+ if (cleanType === "number") {
93
+ return {
94
+ schema: { type: "number" },
95
+ required: !isOptional
96
+ };
97
+ }
98
+
99
+ if (cleanType === "positive") {
100
+ return {
101
+ schema: {
102
+ type: "number",
103
+ minimum: 0,
104
+ exclusiveMinimum: true
105
+ },
106
+ required: !isOptional
107
+ };
108
+ }
109
+
110
+ if (cleanType === "int") {
111
+ return {
112
+ schema: { type: "integer" },
113
+ required: !isOptional
114
+ };
115
+ }
116
+
117
+ // Handle boolean
118
+ if (cleanType === "boolean") {
119
+ return {
120
+ schema: { type: "boolean" },
121
+ required: !isOptional
122
+ };
123
+ }
124
+
125
+ // Handle arrays
126
+ if (cleanType.includes("[]")) {
127
+ const itemType = cleanType.replace("[]", "");
128
+ const itemSchema = this.convertField(itemType).schema;
129
+ return {
130
+ schema: {
131
+ type: "array",
132
+ items: itemSchema
133
+ },
134
+ required: !isOptional
135
+ };
136
+ }
137
+
138
+ // Default to string
139
+ return {
140
+ schema: { type: "string" },
141
+ required: !isOptional
142
+ };
143
+ }
144
+
145
+ /**
146
+ * Convert object field definitions
147
+ */
148
+ private static convertObjectField(fieldType: any): { schema: any; required: boolean } {
149
+ const nestedProperties: Record<string, any> = {};
150
+ const nestedRequired: string[] = [];
151
+
152
+ Object.entries(fieldType).forEach(([nestedField, nestedType]) => {
153
+ const nestedProperty = this.convertField(nestedType);
154
+ nestedProperties[nestedField] = nestedProperty.schema;
155
+ if (nestedProperty.required) {
156
+ nestedRequired.push(nestedField);
157
+ }
158
+ });
159
+
160
+ return {
161
+ schema: {
162
+ type: "object",
163
+ properties: nestedProperties,
164
+ required: nestedRequired.length > 0 ? nestedRequired : undefined
165
+ },
166
+ required: true
167
+ };
168
+ }
169
+
170
+ /**
171
+ * Parse string constraints from string(min,max) format
172
+ */
173
+ private static parseStringConstraints(stringType: string): any {
174
+ const constraints: any = {};
175
+
176
+ const match = stringType.match(/string\((\d+)?,?(\d+)?\)/);
177
+ if (match) {
178
+ if (match[1]) constraints.minLength = parseInt(match[1]);
179
+ if (match[2]) constraints.maxLength = parseInt(match[2]);
180
+ }
181
+
182
+ return constraints;
183
+ }
184
+
185
+ /**
186
+ * Generate complete OpenAPI specification
187
+ */
188
+ static generateOpenAPISpec(
189
+ schema: SchemaInterface,
190
+ options: OpenAPISpecOptions
191
+ ): OpenAPISpecification {
192
+ const schemaObject = this.convertSchema(schema);
193
+
194
+ return {
195
+ openapi: "3.0.0",
196
+ info: {
197
+ title: options.title,
198
+ version: options.version,
199
+ description: options.description
200
+ },
201
+ servers: options.servers?.map(url => ({ url })) || [],
202
+ components: {
203
+ schemas: {
204
+ [options.schemaName || options.title]: schemaObject
205
+ }
206
+ },
207
+ paths: options.paths || {}
208
+ };
209
+ }
210
+
211
+ /**
212
+ * Generate schema reference for use in OpenAPI paths
213
+ */
214
+ static generateSchemaReference(schemaName: string): OpenAPIReference {
215
+ return {
216
+ $ref: `#/components/schemas/${schemaName}`
217
+ };
218
+ }
219
+
220
+ /**
221
+ * Generate request body specification
222
+ */
223
+ static generateRequestBody(
224
+ schema: SchemaInterface,
225
+ options: RequestBodyOptions = {}
226
+ ): OpenAPIRequestBody {
227
+ const schemaObject = this.convertSchema(schema);
228
+
229
+ return {
230
+ description: options.description || "Request body",
231
+ required: options.required !== false,
232
+ content: {
233
+ "application/json": {
234
+ schema: schemaObject,
235
+ examples: options.examples
236
+ }
237
+ }
238
+ };
239
+ }
240
+
241
+ /**
242
+ * Generate response specification
243
+ */
244
+ static generateResponse(
245
+ schema: SchemaInterface,
246
+ options: ResponseOptions = {}
247
+ ): OpenAPIResponse {
248
+ const schemaObject = this.convertSchema(schema);
249
+
250
+ return {
251
+ description: options.description || "Successful response",
252
+ content: {
253
+ "application/json": {
254
+ schema: schemaObject,
255
+ examples: options.examples
256
+ }
257
+ },
258
+ headers: options.headers
259
+ };
260
+ }
261
+ }
262
+
263
+ /**
264
+ * Type definitions
265
+ */
266
+ export interface OpenAPISchemaObject {
267
+ type: string;
268
+ properties?: Record<string, any>;
269
+ required?: string[];
270
+ items?: any;
271
+ format?: string;
272
+ pattern?: string;
273
+ minimum?: number;
274
+ maximum?: number;
275
+ exclusiveMinimum?: boolean;
276
+ exclusiveMaximum?: boolean;
277
+ minLength?: number;
278
+ maxLength?: number;
279
+ minItems?: number;
280
+ maxItems?: number;
281
+ }
282
+
283
+ export interface OpenAPISpecOptions {
284
+ title: string;
285
+ version: string;
286
+ description?: string;
287
+ schemaName?: string;
288
+ servers?: string[];
289
+ paths?: Record<string, any>;
290
+ }
291
+
292
+ export interface OpenAPISpecification {
293
+ openapi: string;
294
+ info: {
295
+ title: string;
296
+ version: string;
297
+ description?: string;
298
+ };
299
+ servers?: Array<{ url: string }>;
300
+ components: {
301
+ schemas: Record<string, OpenAPISchemaObject>;
302
+ };
303
+ paths: Record<string, any>;
304
+ }
305
+
306
+ export interface OpenAPIReference {
307
+ $ref: string;
308
+ }
309
+
310
+ export interface RequestBodyOptions {
311
+ description?: string;
312
+ required?: boolean;
313
+ examples?: Record<string, any>;
314
+ }
315
+
316
+ export interface OpenAPIRequestBody {
317
+ description: string;
318
+ required: boolean;
319
+ content: Record<string, {
320
+ schema: OpenAPISchemaObject;
321
+ examples?: Record<string, any>;
322
+ }>;
323
+ }
324
+
325
+ export interface ResponseOptions {
326
+ description?: string;
327
+ examples?: Record<string, any>;
328
+ headers?: Record<string, any>;
329
+ }
330
+
331
+ export interface OpenAPIResponse {
332
+ description: string;
333
+ content: Record<string, {
334
+ schema: OpenAPISchemaObject;
335
+ examples?: Record<string, any>;
336
+ }>;
337
+ headers?: Record<string, any>;
338
+ }
@@ -0,0 +1,379 @@
1
+ /**
2
+ * TypeScript Generator - Generate TypeScript type definitions from schemas
3
+ *
4
+ * This module provides utilities to convert ReliantType definitions
5
+ * to TypeScript type definitions and interfaces.
6
+ */
7
+
8
+ import { SchemaInterface } from "../../mode/interfaces/Interface";
9
+
10
+ /**
11
+ * TypeScript code generator for schema definitions
12
+ */
13
+ export class TypeScriptGenerator {
14
+ /**
15
+ * Generate TypeScript interface from schema
16
+ */
17
+ static generateInterface(
18
+ schema: SchemaInterface,
19
+ options: TypeScriptOptions = {}
20
+ ): string {
21
+ const { exportName = "Schema", namespace, exportType = "interface" } = options;
22
+
23
+ // Extract the actual field definitions from the schema
24
+ const fieldDefinitions = this.extractFieldDefinitions(schema);
25
+
26
+ let output = "";
27
+
28
+ // Add namespace if specified
29
+ if (namespace) {
30
+ output += `export namespace ${namespace} {\n`;
31
+ }
32
+
33
+ // Generate interface or type
34
+ if (exportType === "interface") {
35
+ output += this.generateInterfaceDefinition(fieldDefinitions, exportName, namespace ? 1 : 0);
36
+ } else {
37
+ output += this.generateTypeDefinition(fieldDefinitions, exportName, namespace ? 1 : 0);
38
+ }
39
+
40
+ // Close namespace if specified
41
+ if (namespace) {
42
+ output += "}\n";
43
+ }
44
+
45
+ return output;
46
+ }
47
+
48
+ /**
49
+ * Extract field definitions from schema object
50
+ */
51
+ private static extractFieldDefinitions(schema: any): Record<string, any> {
52
+ // If schema has a definition property, use that
53
+ if (schema && typeof schema === 'object' && schema.definition) {
54
+ return schema.definition;
55
+ }
56
+
57
+ // Otherwise, assume the schema itself contains the field definitions
58
+ return schema;
59
+ }
60
+
61
+ /**
62
+ * Generate interface definition
63
+ */
64
+ private static generateInterfaceDefinition(
65
+ schema: SchemaInterface,
66
+ name: string,
67
+ indentLevel: number = 0
68
+ ): string {
69
+ const indent = " ".repeat(indentLevel);
70
+ let output = `${indent}export interface ${name} {\n`;
71
+
72
+ Object.entries(schema).forEach(([fieldName, fieldType]) => {
73
+ const tsType = this.convertToTypeScript(fieldType);
74
+ const optional = this.isOptionalField(fieldType) ? "?" : "";
75
+ output += `${indent} ${fieldName}${optional}: ${tsType};\n`;
76
+ });
77
+
78
+ output += `${indent}}\n`;
79
+ return output;
80
+ }
81
+
82
+ /**
83
+ * Generate type alias definition
84
+ */
85
+ private static generateTypeDefinition(
86
+ schema: SchemaInterface,
87
+ name: string,
88
+ indentLevel: number = 0
89
+ ): string {
90
+ const indent = " ".repeat(indentLevel);
91
+ const objectType = this.convertObjectToTypeScript(schema);
92
+ return `${indent}export type ${name} = ${objectType};\n`;
93
+ }
94
+
95
+ /**
96
+ * Convert schema field to TypeScript type
97
+ */
98
+ private static convertToTypeScript(fieldType: any): string {
99
+ if (typeof fieldType === "string") {
100
+ return this.convertStringToTypeScript(fieldType);
101
+ }
102
+
103
+ if (typeof fieldType === "object" && !Array.isArray(fieldType)) {
104
+ // Handle Make.union() objects
105
+ if (fieldType.union && Array.isArray(fieldType.union)) {
106
+ return fieldType.union.map((value: any) => `"${value}"`).join(" | ");
107
+ }
108
+
109
+ // Handle Make.const() objects
110
+ if (fieldType.const !== undefined) {
111
+ return `"${fieldType.const}"`;
112
+ }
113
+
114
+ return this.convertObjectToTypeScript(fieldType);
115
+ }
116
+
117
+ return "any";
118
+ }
119
+
120
+ /**
121
+ * Convert string-based field to TypeScript type
122
+ */
123
+ private static convertStringToTypeScript(fieldType: string): string {
124
+ const cleanType = fieldType.replace("?", "");
125
+
126
+ // Handle arrays FIRST - before other checks
127
+ if (cleanType.includes("[]")) {
128
+ const elementType = cleanType.replace("[]", "").replace(/\([^)]*\)/, ""); // Remove constraints
129
+ const tsElementType = this.convertStringToTypeScript(elementType);
130
+ return `${tsElementType}[]`;
131
+ }
132
+
133
+ // Handle number types with constraints
134
+ if (cleanType.startsWith("number(") || cleanType.includes("number(")) {
135
+ return "number";
136
+ }
137
+
138
+ // Basic type mappings
139
+ const typeMappings: Record<string, string> = {
140
+ email: "string",
141
+ url: "string",
142
+ uuid: "string",
143
+ phone: "string",
144
+ date: "Date",
145
+ number: "number",
146
+ positive: "number",
147
+ int: "number",
148
+ boolean: "boolean",
149
+ string: "string"
150
+ };
151
+
152
+ // Check for direct mapping
153
+ if (typeMappings[cleanType]) {
154
+ return typeMappings[cleanType];
155
+ }
156
+
157
+ // Handle string with constraints
158
+ if (cleanType.startsWith("string")) {
159
+ return "string";
160
+ }
161
+
162
+ // Handle union types (pipe-separated values)
163
+ if (cleanType.includes("|")) {
164
+ const unionTypes = cleanType.split("|").map(t => `"${t.trim()}"`);
165
+ return unionTypes.join(" | ");
166
+ }
167
+
168
+ return "string";
169
+ }
170
+
171
+ /**
172
+ * Convert object to TypeScript type
173
+ */
174
+ private static convertObjectToTypeScript(obj: any): string {
175
+ if (typeof obj !== "object" || obj === null) {
176
+ return "any";
177
+ }
178
+
179
+ const properties: string[] = [];
180
+
181
+ Object.entries(obj).forEach(([key, value]) => {
182
+ const tsType = this.convertToTypeScript(value);
183
+ const optional = this.isOptionalField(value) ? "?" : "";
184
+ properties.push(`${key}${optional}: ${tsType}`);
185
+ });
186
+
187
+ return `{\n ${properties.join(";\n ")};\n}`;
188
+ }
189
+
190
+ /**
191
+ * Check if field is optional
192
+ */
193
+ private static isOptionalField(fieldType: any): boolean {
194
+ if (typeof fieldType === "string") {
195
+ return fieldType.includes("?");
196
+ }
197
+ return false;
198
+ }
199
+
200
+ /**
201
+ * Generate utility types for schema
202
+ */
203
+ static generateUtilityTypes(
204
+ schema: SchemaInterface,
205
+ baseName: string
206
+ ): string {
207
+ let output = "";
208
+
209
+ // Generate partial type
210
+ output += `export type Partial${baseName} = Partial<${baseName}>;\n\n`;
211
+
212
+ // Generate required type
213
+ output += `export type Required${baseName} = Required<${baseName}>;\n\n`;
214
+
215
+ // Generate pick types for common field combinations
216
+ const fields = Object.keys(schema);
217
+ if (fields.length > 1) {
218
+ output += `export type ${baseName}Keys = keyof ${baseName};\n\n`;
219
+
220
+ // Generate create type (without optional fields)
221
+ const requiredFields = fields.filter(field =>
222
+ !this.isOptionalField(schema[field])
223
+ );
224
+
225
+ if (requiredFields.length > 0 && requiredFields.length < fields.length) {
226
+ output += `export type Create${baseName} = Pick<${baseName}, ${
227
+ requiredFields.map(f => `"${f}"`).join(" | ")
228
+ }>;\n\n`;
229
+ }
230
+ }
231
+
232
+ return output;
233
+ }
234
+
235
+ /**
236
+ * Generate validation function types
237
+ */
238
+ static generateValidationTypes(baseName: string): string {
239
+ return `
240
+ export interface ${baseName}ValidationResult {
241
+ isValid: boolean;
242
+ data: ${baseName};
243
+ errors: Record<string, string[]>;
244
+ }
245
+
246
+ export type ${baseName}Validator = (data: any) => ${baseName}ValidationResult;
247
+
248
+ export interface ${baseName}ParseResult {
249
+ success: boolean;
250
+ data?: ${baseName};
251
+ error?: {
252
+ issues: Array<{
253
+ path: string[];
254
+ message: string;
255
+ }>;
256
+ };
257
+ }
258
+ `;
259
+ }
260
+
261
+ /**
262
+ * Generate complete TypeScript module
263
+ */
264
+ static generateModule(
265
+ schema: SchemaInterface,
266
+ options: ModuleOptions
267
+ ): string {
268
+ const {
269
+ moduleName,
270
+ exportName = "Schema",
271
+ includeUtilities = true,
272
+ includeValidation = true,
273
+ header
274
+ } = options;
275
+
276
+ let output = "";
277
+
278
+ // Add header comment
279
+ if (header) {
280
+ output += `/**\n * ${header}\n */\n\n`;
281
+ }
282
+
283
+ // Generate main interface
284
+ output += this.generateInterface(schema, { exportName });
285
+ output += "\n";
286
+
287
+ // Generate utility types
288
+ if (includeUtilities) {
289
+ output += this.generateUtilityTypes(schema, exportName);
290
+ }
291
+
292
+ // Generate validation types
293
+ if (includeValidation) {
294
+ output += this.generateValidationTypes(exportName);
295
+ }
296
+
297
+ // Add module export
298
+ if (moduleName) {
299
+ output += `\nexport const ${moduleName} = {\n`;
300
+ output += ` name: "${exportName}",\n`;
301
+ output += ` fields: ${JSON.stringify(Object.keys(schema), null, 2)}\n`;
302
+ output += "};\n";
303
+ }
304
+
305
+ return output;
306
+ }
307
+
308
+ /**
309
+ * Generate JSDoc comments for schema fields
310
+ */
311
+ static generateJSDoc(schema: SchemaInterface): Record<string, string> {
312
+ const docs: Record<string, string> = {};
313
+
314
+ Object.entries(schema).forEach(([fieldName, fieldType]) => {
315
+ docs[fieldName] = this.generateFieldJSDoc(fieldName, fieldType);
316
+ });
317
+
318
+ return docs;
319
+ }
320
+
321
+ /**
322
+ * Generate JSDoc for a single field
323
+ */
324
+ private static generateFieldJSDoc(fieldName: string, fieldType: any): string {
325
+ if (typeof fieldType === "string") {
326
+ const cleanType = fieldType.replace("?", "");
327
+ const isOptional = fieldType.includes("?");
328
+
329
+ let description = `${fieldName} field`;
330
+
331
+ // Add type-specific descriptions
332
+ if (cleanType === "email") description = "Email address";
333
+ else if (cleanType === "url") description = "URL address";
334
+ else if (cleanType === "uuid") description = "Unique identifier";
335
+ else if (cleanType === "date") description = "Date and time";
336
+ else if (cleanType === "positive") description = "Positive number";
337
+ else if (cleanType.startsWith("string")) description = "Text value";
338
+ else if (cleanType.includes("[]")) description = "Array of values";
339
+
340
+ let jsdoc = `/**\n * ${description}`;
341
+
342
+ if (isOptional) {
343
+ jsdoc += "\n * @optional";
344
+ }
345
+
346
+ // Add constraints info
347
+ if (cleanType.includes("(")) {
348
+ const match = cleanType.match(/\(([^)]+)\)/);
349
+ if (match) {
350
+ jsdoc += `\n * @constraints ${match[1]}`;
351
+ }
352
+ }
353
+
354
+ jsdoc += "\n */";
355
+ return jsdoc;
356
+ }
357
+
358
+ return `/**\n * ${fieldName} field\n */`;
359
+ }
360
+ }
361
+
362
+ /**
363
+ * Type definitions
364
+ */
365
+ export interface TypeScriptOptions {
366
+ exportName?: string;
367
+ namespace?: string;
368
+ exportType?: "interface" | "type";
369
+ }
370
+
371
+ export interface ModuleOptions {
372
+ moduleName?: string;
373
+ exportName?: string;
374
+ includeUtilities?: boolean;
375
+ includeValidation?: boolean;
376
+ header?: string;
377
+ }
378
+
379
+ export {TypeScriptGenerator as TSGenerator}