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,1137 @@
1
+ # Live Utility - Comprehensive Guide
2
+
3
+ The Live utility transforms ReliantType into a powerful real-time validation system with full EventEmitter-like interface, data transformation pipelines, and stream control methods. This guide covers all features and use cases.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Overview](#overview)
8
+ - [Installation & Setup](#installation--setup)
9
+ - [Core Components](#core-components)
10
+ - [EventEmitter Interface](#eventemitter-interface)
11
+ - [Data Transformation Pipeline](#data-transformation-pipeline)
12
+ - [Stream Control Methods](#stream-control-methods)
13
+ - [Form Integration](#form-integration)
14
+ - [Performance Monitoring](#performance-monitoring)
15
+ - [Real-World Examples](#real-world-examples)
16
+ - [Best Practices](#best-practices)
17
+ - [API Reference](#api-reference)
18
+
19
+ ## Overview
20
+
21
+ The Live utility provides three main components:
22
+
23
+ - **LiveValidator** - Real-time field validation for forms and UI
24
+ - **StreamValidator** - Advanced stream processing with EventEmitter interface
25
+ - **FormValidator** - Complete form integration with field binding
26
+
27
+ ### Key Features
28
+
29
+ ✅ **100% Stream Methods Coverage**
30
+
31
+ - `.on()`, `.emit()`, `.off()`, `.once()` - Full EventEmitter interface
32
+ - `.transform()`, `.filter()`, `.map()` - Data transformation pipeline
33
+ - `.pipe()` - Stream piping and chaining
34
+ - `.pause()`, `.resume()`, `.destroy()` - Stream control
35
+
36
+ ✅ **Perfect InterfaceSchema Synchronization**
37
+
38
+ - Identical validation results with Interface.safeParse()
39
+ - Consistent error handling and type inference
40
+ - Full support for conditional validation
41
+
42
+ ✅ **Production-Ready Features**
43
+
44
+ - Performance monitoring and statistics
45
+ - Error handling and graceful degradation
46
+ - Memory management and cleanup
47
+
48
+ ## Installation & Setup
49
+
50
+ ```typescript
51
+ import { Live, Interface } from "reliant-type";
52
+
53
+ // Define your schema
54
+ const UserSchema = Interface({
55
+ id: "number",
56
+ name: "string(2,50)",
57
+ email: "email",
58
+ age: "number(18,120)",
59
+ profile: {
60
+ bio: "string?",
61
+ website: "url?",
62
+ verified: "boolean",
63
+ },
64
+ });
65
+ ```
66
+
67
+ ## Core Components
68
+
69
+ ### LiveValidator - Real-time Field Validation
70
+
71
+ Perfect for form validation and real-time UI feedback:
72
+
73
+ ```typescript
74
+ const liveValidator = Live.validator(UserSchema);
75
+
76
+ // Listen for validation changes
77
+ liveValidator.onValidation((result) => {
78
+ console.log("Overall valid:", result.isValid);
79
+ console.log("Field errors:", result.errors);
80
+
81
+ // Update UI based on validation state
82
+ updateFormUI(result);
83
+ });
84
+
85
+ // Validate individual fields
86
+ liveValidator.validateField("email", "user@example.com");
87
+ liveValidator.validateField("name", "John Doe");
88
+ liveValidator.validateField("age", 25);
89
+
90
+ // Get current validation state
91
+ console.log("Is valid:", liveValidator.isValid);
92
+ console.log("All errors:", liveValidator.errors);
93
+
94
+ // Validate entire object
95
+ const fullResult = liveValidator.validateAll(userData);
96
+ ```
97
+
98
+ ### StreamValidator - Advanced Stream Processing
99
+
100
+ Full EventEmitter interface with data transformation:
101
+
102
+ ```typescript
103
+ const streamValidator = Live.stream(UserSchema);
104
+
105
+ // EventEmitter methods
106
+ streamValidator.on("valid", (data) => {
107
+ console.log("✅ Valid data:", data);
108
+ });
109
+
110
+ streamValidator.on("invalid", (data, errors) => {
111
+ console.log("❌ Invalid data:", errors);
112
+ });
113
+
114
+ streamValidator.on("error", (error) => {
115
+ console.error("Stream error:", error);
116
+ });
117
+
118
+ // Process data
119
+ streamValidator.validate(userData);
120
+ ```
121
+
122
+ ### FormValidator - Complete Form Integration
123
+
124
+ Designed for HTML form integration:
125
+
126
+ ```typescript
127
+ const formValidator = Live.form(UserSchema);
128
+
129
+ // Bind form fields
130
+ formValidator.bindField("email", document.getElementById("email"));
131
+ formValidator.bindField("name", document.getElementById("name"));
132
+
133
+ // Enable automatic validation
134
+ formValidator.enableAutoValidation();
135
+
136
+ // Handle form submission
137
+ formValidator.onSubmit((isValid, data, errors) => {
138
+ if (isValid) {
139
+ // Submit to API
140
+ submitToAPI(data);
141
+ } else {
142
+ // Display errors
143
+ displayFormErrors(errors);
144
+ }
145
+ });
146
+ ```
147
+
148
+ ## EventEmitter Interface
149
+
150
+ The StreamValidator provides a complete EventEmitter-like interface:
151
+
152
+ ### Basic Event Methods
153
+
154
+ ```typescript
155
+ const validator = Live.stream(UserSchema);
156
+
157
+ // .on() - Add event listener
158
+ validator.on("valid", (data) => {
159
+ console.log("Valid data received:", data);
160
+ });
161
+
162
+ // .once() - One-time event listener
163
+ validator.once("invalid", (data, errors) => {
164
+ console.log("First invalid data:", errors);
165
+ });
166
+
167
+ // .emit() - Emit custom events
168
+ validator.emit("custom-event", "Hello World!");
169
+
170
+ // .off() - Remove event listeners
171
+ validator.off("valid", specificListener);
172
+ validator.off("invalid"); // Remove all listeners for event
173
+ ```
174
+
175
+ ### Built-in Events
176
+
177
+ The StreamValidator emits these events automatically:
178
+
179
+ ```typescript
180
+ // Data processing events
181
+ validator.on("data", (data) => {
182
+ console.log("Data received for validation");
183
+ });
184
+
185
+ validator.on("validated", (data, result) => {
186
+ console.log("Validation completed:", result.isValid);
187
+ });
188
+
189
+ // Validation result events
190
+ validator.on("valid", (data) => {
191
+ console.log("Data passed validation");
192
+ });
193
+
194
+ validator.on("invalid", (data, errors) => {
195
+ console.log("Data failed validation:", errors);
196
+ });
197
+
198
+ // Transformation events
199
+ validator.on("filtered", (data) => {
200
+ console.log("Data filtered out by pipeline");
201
+ });
202
+
203
+ // Stream control events
204
+ validator.on("pause", () => {
205
+ console.log("Stream paused");
206
+ });
207
+
208
+ validator.on("resume", () => {
209
+ console.log("Stream resumed");
210
+ });
211
+
212
+ validator.on("destroy", () => {
213
+ console.log("Stream destroyed");
214
+ });
215
+
216
+ // Queue events
217
+ validator.on("queued", (data) => {
218
+ console.log("Data queued (stream paused)");
219
+ });
220
+
221
+ // Error events
222
+ validator.on("error", (error) => {
223
+ console.error("Stream error:", error);
224
+ });
225
+ ```
226
+
227
+ ## Data Transformation Pipeline
228
+
229
+ Build powerful data processing pipelines:
230
+
231
+ ### Basic Transformations
232
+
233
+ ```typescript
234
+ const validator = Live.stream(UserSchema)
235
+ .transform((data) => {
236
+ // Add metadata
237
+ return {
238
+ ...data,
239
+ timestamp: Date.now(),
240
+ source: "api",
241
+ version: "1.0",
242
+ };
243
+ })
244
+ .filter((data) => {
245
+ // Business logic filtering
246
+ return data.age >= 21 && data.email.includes("@company.com");
247
+ })
248
+ .map((data) => {
249
+ // Data format transformation
250
+ return {
251
+ ...data,
252
+ name: data.name.toUpperCase(),
253
+ email: data.email.toLowerCase(),
254
+ displayName: `${data.name} (${data.age})`,
255
+ };
256
+ });
257
+
258
+ // Listen for pipeline results
259
+ validator.on("valid", (data) => {
260
+ console.log("Processed data:", data);
261
+ // Data has been transformed, filtered, and validated
262
+ });
263
+
264
+ validator.on("filtered", (data) => {
265
+ console.log("Data filtered out:", data);
266
+ // Data didn't pass filter conditions
267
+ });
268
+
269
+ validator.on("invalid", (data, errors) => {
270
+ console.log("Validation failed after transformation:", errors);
271
+ });
272
+ ```
273
+
274
+ ### Advanced Pipeline Example
275
+
276
+ ```typescript
277
+ const advancedValidator = Live.stream(UserSchema)
278
+ // Step 1: Normalize data
279
+ .transform((data) => ({
280
+ ...data,
281
+ email: data.email?.toLowerCase().trim(),
282
+ name: data.name?.trim(),
283
+ phone: data.phone?.replace(/\D/g, ""), // Remove non-digits
284
+ }))
285
+
286
+ // Step 2: Add computed fields
287
+ .transform((data) => ({
288
+ ...data,
289
+ fullName: `${data.firstName} ${data.lastName}`,
290
+ isAdult: data.age >= 18,
291
+ emailDomain: data.email?.split("@")[1],
292
+ }))
293
+
294
+ // Step 3: Business logic filtering
295
+ .filter((data) => {
296
+ // Only process users from allowed domains
297
+ const allowedDomains = ["company.com", "partner.com"];
298
+ return allowedDomains.includes(data.emailDomain);
299
+ })
300
+
301
+ // Step 4: Final formatting
302
+ .map((data) => ({
303
+ ...data,
304
+ displayName: data.isAdult ? `${data.fullName} (Adult)` : data.fullName,
305
+ contactInfo: `${data.email} | ${data.phone}`,
306
+ }));
307
+
308
+ // Process data through pipeline
309
+ advancedValidator.validate(rawUserData);
310
+ ```
311
+
312
+ ## Stream Control Methods
313
+
314
+ Control data flow with pause, resume, and destroy:
315
+
316
+ ### Basic Stream Control
317
+
318
+ ```typescript
319
+ const validator = Live.stream(UserSchema);
320
+
321
+ // Pause stream (incoming data gets queued)
322
+ validator.pause();
323
+ console.log("Stream paused:", validator.paused); // true
324
+
325
+ // Send data while paused
326
+ validator.validate(userData1); // Queued
327
+ validator.validate(userData2); // Queued
328
+ validator.validate(userData3); // Queued
329
+
330
+ console.log("Queue length:", validator.queueLength); // 3
331
+
332
+ // Resume stream (processes all queued data)
333
+ validator.resume();
334
+ console.log("Stream resumed, queue processed");
335
+ console.log("Queue length:", validator.queueLength); // 0
336
+
337
+ // Destroy stream (cleanup and prevent further use)
338
+ validator.destroy();
339
+ console.log("Stream destroyed:", validator.destroyed); // true
340
+ ```
341
+
342
+ ### Advanced Stream Control
343
+
344
+ ```typescript
345
+ const controlValidator = Live.stream(UserSchema);
346
+
347
+ // Listen for control events
348
+ controlValidator.on("pause", () => {
349
+ console.log("⏸️ Stream paused - data will be queued");
350
+ });
351
+
352
+ controlValidator.on("resume", () => {
353
+ console.log("▶️ Stream resumed - processing queue");
354
+ });
355
+
356
+ controlValidator.on("queued", (data) => {
357
+ console.log(
358
+ `📦 Data queued: ${data.name} (queue: ${controlValidator.queueLength})`
359
+ );
360
+ });
361
+
362
+ controlValidator.on("destroy", () => {
363
+ console.log("💥 Stream destroyed - cleanup completed");
364
+ });
365
+
366
+ // Conditional pause/resume based on load
367
+ let processedCount = 0;
368
+ controlValidator.on("valid", () => {
369
+ processedCount++;
370
+
371
+ // Pause if processing too fast
372
+ if (processedCount % 100 === 0) {
373
+ controlValidator.pause();
374
+ setTimeout(() => controlValidator.resume(), 1000);
375
+ }
376
+ });
377
+ ```
378
+
379
+ ## Stream Piping
380
+
381
+ Connect validators for complex workflows:
382
+
383
+ ### Basic Piping
384
+
385
+ ```typescript
386
+ const sourceValidator = Live.stream(InputSchema);
387
+ const destinationValidator = Live.stream(OutputSchema);
388
+
389
+ // Pipe valid data from source to destination
390
+ sourceValidator.pipe(destinationValidator);
391
+
392
+ // Data flows: source → destination
393
+ sourceValidator.validate(inputData);
394
+ // If valid, automatically sent to destinationValidator
395
+ ```
396
+
397
+ ### Multi-Stage Pipeline
398
+
399
+ ```typescript
400
+ const rawDataValidator = Live.stream(RawDataSchema);
401
+ const cleanDataValidator = Live.stream(CleanDataSchema);
402
+ const processedDataValidator = Live.stream(ProcessedDataSchema);
403
+ const finalValidator = Live.stream(FinalSchema);
404
+
405
+ // Create processing pipeline
406
+ const pipeline = rawDataValidator
407
+ .transform((data) => cleanData(data))
408
+ .pipe(cleanDataValidator)
409
+ .transform((data) => processData(data))
410
+ .pipe(processedDataValidator)
411
+ .transform((data) => finalizeData(data))
412
+ .pipe(finalValidator);
413
+
414
+ // Listen at each stage
415
+ rawDataValidator.on("valid", (data) => console.log("✅ Raw data valid"));
416
+ cleanDataValidator.on("valid", (data) => console.log("✅ Clean data valid"));
417
+ processedDataValidator.on("valid", (data) =>
418
+ console.log("✅ Processed data valid")
419
+ );
420
+ finalValidator.on("valid", (data) => console.log("✅ Final data ready"));
421
+
422
+ // Start the pipeline
423
+ rawDataValidator.validate(inputData);
424
+ ```
425
+
426
+ ## Performance Monitoring
427
+
428
+ Built-in performance tracking and statistics:
429
+
430
+ ### Basic Statistics
431
+
432
+ ```typescript
433
+ const validator = Live.stream(UserSchema);
434
+
435
+ // Listen for statistics updates
436
+ validator.onStats((stats) => {
437
+ console.log("📊 Validation Statistics:");
438
+ console.log(`- Total validated: ${stats.totalValidated}`);
439
+ console.log(`- Valid count: ${stats.validCount}`);
440
+ console.log(`- Invalid count: ${stats.invalidCount}`);
441
+ console.log(`- Error rate: ${(stats.errorRate * 100).toFixed(2)}%`);
442
+ console.log(`- Running since: ${stats.startTime}`);
443
+ });
444
+
445
+ // Get current statistics
446
+ const currentStats = validator.getStats();
447
+ console.log("Current performance:", currentStats);
448
+ ```
449
+
450
+ ### Performance Monitoring Dashboard
451
+
452
+ ```typescript
453
+ class ValidationDashboard {
454
+ private validators: Map<string, any> = new Map();
455
+
456
+ addValidator(name: string, validator: any) {
457
+ this.validators.set(name, validator);
458
+
459
+ validator.onStats((stats) => {
460
+ this.updateDashboard(name, stats);
461
+ });
462
+ }
463
+
464
+ updateDashboard(name: string, stats: any) {
465
+ console.log(`📊 ${name} Performance:`);
466
+ console.log(` Throughput: ${stats.validCount}/${stats.totalValidated}`);
467
+ console.log(
468
+ ` Success Rate: ${((1 - stats.errorRate) * 100).toFixed(1)}%`
469
+ );
470
+ console.log(` Queue Length: ${this.validators.get(name).queueLength}`);
471
+ }
472
+
473
+ getOverallStats() {
474
+ let totalValidated = 0;
475
+ let totalValid = 0;
476
+
477
+ for (const [name, validator] of this.validators) {
478
+ const stats = validator.getStats();
479
+ totalValidated += stats.totalValidated;
480
+ totalValid += stats.validCount;
481
+ }
482
+
483
+ return {
484
+ totalValidated,
485
+ totalValid,
486
+ overallSuccessRate: totalValidated > 0 ? totalValid / totalValidated : 0,
487
+ };
488
+ }
489
+ }
490
+
491
+ // Usage
492
+ const dashboard = new ValidationDashboard();
493
+ dashboard.addValidator("users", Live.stream(UserSchema));
494
+ dashboard.addValidator("products", Live.stream(ProductSchema));
495
+ dashboard.addValidator("orders", Live.stream(OrderSchema));
496
+ ```
497
+
498
+ ## Real-World Examples
499
+
500
+ ### E-commerce Order Processing
501
+
502
+ ```typescript
503
+ const OrderSchema = Interface({
504
+ orderId: "uuid",
505
+ customerId: "uuid",
506
+ items: "array",
507
+ total: "number(0.01,)",
508
+ status: "pending|processing|shipped|delivered",
509
+ shippingAddress: {
510
+ street: "string",
511
+ city: "string",
512
+ zipCode: "string(/^\\d{5}$/)",
513
+ country: "string",
514
+ },
515
+ });
516
+
517
+ const orderProcessor = Live.stream(OrderSchema)
518
+ .transform((order) => ({
519
+ ...order,
520
+ processedAt: new Date(),
521
+ estimatedDelivery: calculateDelivery(order.shippingAddress),
522
+ }))
523
+ .filter((order) => {
524
+ // Only process orders with valid payment
525
+ return validatePayment(order.customerId, order.total);
526
+ })
527
+ .map((order) => ({
528
+ ...order,
529
+ trackingNumber: generateTrackingNumber(),
530
+ status: "processing",
531
+ }));
532
+
533
+ orderProcessor.on("valid", (order) => {
534
+ console.log(`✅ Order ${order.orderId} processed successfully`);
535
+ updateInventory(order.items);
536
+ sendConfirmationEmail(order.customerId);
537
+ });
538
+
539
+ orderProcessor.on("filtered", (order) => {
540
+ console.log(`❌ Order ${order.orderId} payment failed`);
541
+ notifyPaymentFailure(order.customerId);
542
+ });
543
+
544
+ orderProcessor.on("invalid", (order, errors) => {
545
+ console.log(`❌ Order ${order.orderId} validation failed:`, errors);
546
+ logOrderError(order, errors);
547
+ });
548
+ ```
549
+
550
+ ### Real-time Chat Message Validation
551
+
552
+ ```typescript
553
+ const MessageSchema = Interface({
554
+ messageId: "uuid",
555
+ userId: "uuid",
556
+ channelId: "uuid",
557
+ content: "string(1,1000)",
558
+ type: "text|image|file",
559
+ timestamp: "date",
560
+ });
561
+
562
+ const chatValidator = Live.stream(MessageSchema)
563
+ .transform((message) => ({
564
+ ...message,
565
+ content: sanitizeContent(message.content),
566
+ wordCount: message.content.split(" ").length,
567
+ }))
568
+ .filter((message) => {
569
+ // Filter spam and inappropriate content
570
+ return (
571
+ !isSpam(message.content) && !hasInappropriateContent(message.content)
572
+ );
573
+ })
574
+ .map((message) => ({
575
+ ...message,
576
+ displayContent: formatMessage(message.content),
577
+ mentions: extractMentions(message.content),
578
+ }));
579
+
580
+ chatValidator.on("valid", (message) => {
581
+ broadcastMessage(message);
582
+ updateChannelActivity(message.channelId);
583
+ });
584
+
585
+ chatValidator.on("filtered", (message) => {
586
+ notifyModerators(message);
587
+ sendWarningToUser(message.userId);
588
+ });
589
+
590
+ // Real-time message processing
591
+ websocket.on("message", (rawMessage) => {
592
+ chatValidator.validate(rawMessage);
593
+ });
594
+ ```
595
+
596
+ ## Best Practices
597
+
598
+ ### 1. Error Handling
599
+
600
+ ```typescript
601
+ const validator = Live.stream(UserSchema);
602
+
603
+ // Always handle errors gracefully
604
+ validator.on("error", (error) => {
605
+ console.error("Validation error:", error);
606
+
607
+ // Log for debugging
608
+ logger.error("Stream validation error", {
609
+ error: error.message,
610
+ stack: error.stack,
611
+ });
612
+
613
+ // Don't let errors crash the application
614
+ // Emit a recovery event or restart the stream if needed
615
+ });
616
+ ```
617
+
618
+ ### 2. Memory Management
619
+
620
+ ```typescript
621
+ // Clean up validators when done
622
+ const validator = Live.stream(UserSchema);
623
+
624
+ // Use the validator...
625
+
626
+ // Clean up when component unmounts or process ends
627
+ validator.destroy();
628
+ ```
629
+
630
+ ### 3. Performance Optimization
631
+
632
+ ```typescript
633
+ // Use pause/resume for backpressure control
634
+ const validator = Live.stream(UserSchema);
635
+
636
+ let queueSize = 0;
637
+ validator.on("queued", () => {
638
+ queueSize++;
639
+ if (queueSize > 1000) {
640
+ console.warn("Queue getting large, consider scaling");
641
+ }
642
+ });
643
+
644
+ validator.on("valid", () => {
645
+ queueSize = Math.max(0, queueSize - 1);
646
+ });
647
+ ```
648
+
649
+ ### 4. Testing
650
+
651
+ ```typescript
652
+ // Test validators in isolation
653
+ describe("User Validator", () => {
654
+ let validator;
655
+
656
+ beforeEach(() => {
657
+ validator = Live.stream(UserSchema);
658
+ });
659
+
660
+ afterEach(() => {
661
+ validator.destroy();
662
+ });
663
+
664
+ it("should validate correct user data", (done) => {
665
+ validator.on("valid", (data) => {
666
+ expect(data.name).toBe("John Doe");
667
+ done();
668
+ });
669
+
670
+ validator.validate({
671
+ name: "John Doe",
672
+ email: "john@example.com",
673
+ age: 25,
674
+ });
675
+ });
676
+ });
677
+ ```
678
+
679
+ ## API Reference
680
+
681
+ ### Live.validator(schema)
682
+
683
+ Creates a LiveValidator for real-time field validation.
684
+
685
+ ### Live.stream(schema)
686
+
687
+ Creates a StreamValidator with full EventEmitter interface.
688
+
689
+ ### Live.form(schema)
690
+
691
+ Creates a FormValidator for HTML form integration.
692
+
693
+ ### StreamValidator Methods
694
+
695
+ #### Event Methods
696
+
697
+ - `.on(event, listener)` - Add event listener
698
+ - `.once(event, listener)` - Add one-time listener
699
+ - `.off(event, listener?)` - Remove listener(s)
700
+ - `.emit(event, ...args)` - Emit event
701
+
702
+ #### Transformation Methods
703
+
704
+ - `.transform(fn)` - Add data transformer
705
+ - `.filter(fn)` - Add data filter
706
+ - `.map(fn)` - Add data mapper
707
+
708
+ #### Control Methods
709
+
710
+ - `.pause()` - Pause stream (queue data)
711
+ - `.resume()` - Resume stream (process queue)
712
+ - `.destroy()` - Destroy stream (cleanup)
713
+ - `.pipe(destination)` - Pipe to another validator
714
+
715
+ #### Properties
716
+
717
+ - `.paused` - Boolean, stream pause state
718
+ - `.destroyed` - Boolean, stream destroy state
719
+ - `.queueLength` - Number, current queue size
720
+
721
+ #### Statistics
722
+
723
+ - `.onStats(listener)` - Listen for statistics
724
+ - `.getStats()` - Get current statistics
725
+
726
+ The Live utility provides a complete, production-ready solution for real-time validation with perfect InterfaceSchema synchronization.
727
+
728
+ ### Stream Control Events
729
+
730
+ ```typescript
731
+ const validator = Live.stream(UserSchema);
732
+
733
+ // Listen for control events
734
+ validator.on("pause", () => {
735
+ console.log("⏸️ Stream paused - data will be queued");
736
+ });
737
+
738
+ validator.on("resume", () => {
739
+ console.log("▶️ Stream resumed - processing queue");
740
+ });
741
+
742
+ validator.on("queued", (data) => {
743
+ console.log(`📦 Data queued (queue: ${validator.queueLength})`);
744
+ });
745
+
746
+ validator.on("destroy", () => {
747
+ console.log("💥 Stream destroyed - cleanup completed");
748
+ });
749
+
750
+ // Pause and send data
751
+ validator.pause();
752
+ validator.validate({ name: "John", email: "john@example.com", age: 25 });
753
+ // Output: 📦 Data queued (queue: 1)
754
+
755
+ validator.resume();
756
+ // Output: ▶️ Stream resumed - processing queue
757
+ ```
758
+
759
+ ## Stream Piping
760
+
761
+ Connect validators for complex workflows:
762
+
763
+ ### Basic Piping
764
+
765
+ ```typescript
766
+ const sourceValidator = Live.stream(InputSchema);
767
+ const destinationValidator = Live.stream(OutputSchema);
768
+
769
+ // Pipe valid data from source to destination
770
+ sourceValidator.pipe(destinationValidator);
771
+
772
+ // Listen for results
773
+ destinationValidator.on("valid", (data) => {
774
+ console.log("Final processed data:", data);
775
+ });
776
+
777
+ // Data flows: source → destination
778
+ sourceValidator.validate(inputData);
779
+ ```
780
+
781
+ ### Multi-Stage Pipeline
782
+
783
+ ```typescript
784
+ const rawDataValidator = Live.stream(RawDataSchema);
785
+ const cleanDataValidator = Live.stream(CleanDataSchema);
786
+ const enrichedDataValidator = Live.stream(EnrichedDataSchema);
787
+ const finalValidator = Live.stream(FinalSchema);
788
+
789
+ // Build processing pipeline
790
+ rawDataValidator
791
+ .transform((data) => cleanData(data))
792
+ .pipe(cleanDataValidator)
793
+ .transform((data) => enrichData(data))
794
+ .pipe(enrichedDataValidator)
795
+ .transform((data) => finalizeData(data))
796
+ .pipe(finalValidator);
797
+
798
+ // Listen at each stage
799
+ rawDataValidator.on("valid", (data) => console.log("Raw data valid"));
800
+ cleanDataValidator.on("valid", (data) => console.log("Clean data valid"));
801
+ enrichedDataValidator.on("valid", (data) => console.log("Enriched data valid"));
802
+ finalValidator.on("valid", (data) => console.log("Final data ready:", data));
803
+
804
+ // Start the pipeline
805
+ rawDataValidator.validate(inputData);
806
+ ```
807
+
808
+ ## Performance Monitoring
809
+
810
+ Built-in performance tracking and statistics:
811
+
812
+ ### Basic Statistics
813
+
814
+ ```typescript
815
+ const validator = Live.stream(UserSchema);
816
+
817
+ // Listen for statistics updates
818
+ validator.onStats((stats) => {
819
+ console.log("📊 Validation Statistics:");
820
+ console.log(`- Total validated: ${stats.totalValidated}`);
821
+ console.log(`- Valid count: ${stats.validCount}`);
822
+ console.log(`- Invalid count: ${stats.invalidCount}`);
823
+ console.log(`- Error rate: ${(stats.errorRate * 100).toFixed(2)}%`);
824
+ console.log(`- Running since: ${stats.startTime}`);
825
+ });
826
+
827
+ // Get current statistics
828
+ const currentStats = validator.getStats();
829
+ console.log("Current performance:", currentStats);
830
+ ```
831
+
832
+ ### Performance Monitoring Dashboard
833
+
834
+ ```typescript
835
+ class ValidationDashboard {
836
+ constructor(validator) {
837
+ this.validator = validator;
838
+ this.setupMonitoring();
839
+ }
840
+
841
+ setupMonitoring() {
842
+ // Real-time statistics
843
+ this.validator.onStats((stats) => {
844
+ this.updateDashboard(stats);
845
+ });
846
+
847
+ // Performance alerts
848
+ this.validator.onStats((stats) => {
849
+ if (stats.errorRate > 0.1) {
850
+ // 10% error rate
851
+ console.warn("⚠️ High error rate detected:", stats.errorRate);
852
+ }
853
+
854
+ if (stats.totalValidated > 10000) {
855
+ console.info("🎉 Processed 10k+ validations");
856
+ }
857
+ });
858
+
859
+ // Error tracking
860
+ this.validator.on("error", (error) => {
861
+ this.logError(error);
862
+ });
863
+ }
864
+
865
+ updateDashboard(stats) {
866
+ const throughput =
867
+ stats.totalValidated / ((Date.now() - stats.startTime.getTime()) / 1000);
868
+
869
+ console.log(`📈 Throughput: ${throughput.toFixed(2)} validations/sec`);
870
+ console.log(
871
+ `✅ Success rate: ${((1 - stats.errorRate) * 100).toFixed(2)}%`
872
+ );
873
+ }
874
+
875
+ logError(error) {
876
+ console.error("🚨 Validation error:", {
877
+ message: error.message,
878
+ timestamp: new Date().toISOString(),
879
+ stack: error.stack,
880
+ });
881
+ }
882
+ }
883
+
884
+ // Usage
885
+ const validator = Live.stream(UserSchema);
886
+ const dashboard = new ValidationDashboard(validator);
887
+ ```
888
+
889
+ ## Real-World Examples
890
+
891
+ ### E-commerce Order Processing
892
+
893
+ ```typescript
894
+ const OrderSchema = Interface({
895
+ orderId: "uuid",
896
+ customerId: "uuid",
897
+ items: "array",
898
+ total: "number(0.01,)",
899
+ status: "pending|processing|shipped|delivered",
900
+ shippingAddress: {
901
+ street: "string",
902
+ city: "string",
903
+ zipCode: "string(/^\\d{5}$/)",
904
+ country: "string",
905
+ },
906
+ });
907
+
908
+ const orderProcessor = Live.stream(OrderSchema)
909
+ .transform((order) => ({
910
+ ...order,
911
+ processedAt: new Date(),
912
+ estimatedDelivery: calculateDelivery(order.shippingAddress),
913
+ }))
914
+ .filter((order) => {
915
+ // Only process orders with valid payment
916
+ return validatePayment(order.customerId, order.total);
917
+ })
918
+ .map((order) => ({
919
+ ...order,
920
+ trackingNumber: generateTrackingNumber(),
921
+ status: "processing",
922
+ }));
923
+
924
+ // Handle processed orders
925
+ orderProcessor.on("valid", (order) => {
926
+ console.log("✅ Order processed:", order.orderId);
927
+ updateInventory(order.items);
928
+ sendConfirmationEmail(order);
929
+ });
930
+
931
+ orderProcessor.on("filtered", (order) => {
932
+ console.log("💳 Payment failed for order:", order.orderId);
933
+ notifyPaymentFailure(order);
934
+ });
935
+
936
+ orderProcessor.on("invalid", (order, errors) => {
937
+ console.log("❌ Invalid order data:", errors);
938
+ logOrderError(order, errors);
939
+ });
940
+ ```
941
+
942
+ ### Real-time Chat Message Validation
943
+
944
+ ```typescript
945
+ const MessageSchema = Interface({
946
+ messageId: "uuid",
947
+ userId: "uuid",
948
+ content: "string(1,1000)",
949
+ timestamp: "date",
950
+ channelId: "uuid",
951
+ messageType: "text|image|file|system",
952
+ });
953
+
954
+ const messageValidator = Live.stream(MessageSchema)
955
+ .transform((message) => ({
956
+ ...message,
957
+ content: sanitizeContent(message.content),
958
+ wordCount: message.content.split(" ").length,
959
+ }))
960
+ .filter((message) => {
961
+ // Content moderation
962
+ return !containsProfanity(message.content) && !isSpam(message.content);
963
+ })
964
+ .map((message) => ({
965
+ ...message,
966
+ formattedContent: formatMessage(message.content),
967
+ mentions: extractMentions(message.content),
968
+ }));
969
+
970
+ // Real-time message processing
971
+ messageValidator.on("valid", (message) => {
972
+ broadcastMessage(message);
973
+ updateChannelActivity(message.channelId);
974
+ });
975
+
976
+ messageValidator.on("filtered", (message) => {
977
+ console.log("🚫 Message filtered:", message.messageId);
978
+ notifyModerationAction(message.userId);
979
+ });
980
+
981
+ // Process incoming messages
982
+ websocket.on("message", (rawMessage) => {
983
+ messageValidator.validate(rawMessage);
984
+ });
985
+ ```
986
+
987
+ ## Best Practices
988
+
989
+ ### 1. Error Handling
990
+
991
+ ```typescript
992
+ const validator = Live.stream(UserSchema);
993
+
994
+ // Always handle errors gracefully
995
+ validator.on("error", (error) => {
996
+ console.error("Validation error:", error);
997
+
998
+ // Don't let errors crash the application
999
+ if (error.code === "VALIDATION_TIMEOUT") {
1000
+ validator.resume(); // Retry
1001
+ } else {
1002
+ // Log and continue
1003
+ logError(error);
1004
+ }
1005
+ });
1006
+ ```
1007
+
1008
+ ### 2. Memory Management
1009
+
1010
+ ```typescript
1011
+ // Clean up when done
1012
+ function cleanupValidator(validator) {
1013
+ validator.destroy();
1014
+
1015
+ // Remove all listeners
1016
+ validator.off("valid");
1017
+ validator.off("invalid");
1018
+ validator.off("error");
1019
+ }
1020
+
1021
+ // Use try-finally for cleanup
1022
+ try {
1023
+ const validator = Live.stream(UserSchema);
1024
+ // Use validator...
1025
+ } finally {
1026
+ cleanupValidator(validator);
1027
+ }
1028
+ ```
1029
+
1030
+ ### 3. Performance Optimization
1031
+
1032
+ ```typescript
1033
+ // Use pause/resume for batch processing
1034
+ const validator = Live.stream(UserSchema);
1035
+
1036
+ async function processBatch(dataArray) {
1037
+ validator.pause();
1038
+
1039
+ // Queue all data
1040
+ dataArray.forEach((data) => validator.validate(data));
1041
+
1042
+ // Process batch
1043
+ validator.resume();
1044
+ }
1045
+ ```
1046
+
1047
+ ### 4. Type Safety
1048
+
1049
+ ```typescript
1050
+ // Maintain type safety with TypeScript
1051
+ interface User {
1052
+ id: number;
1053
+ name: string;
1054
+ email: string;
1055
+ age: number;
1056
+ }
1057
+
1058
+ const validator = Live.stream(UserSchema);
1059
+
1060
+ validator.on("valid", (data: User) => {
1061
+ // data is fully typed
1062
+ console.log(data.name.toUpperCase());
1063
+ });
1064
+ ```
1065
+
1066
+ ## API Reference
1067
+
1068
+ ### Live.validator(schema)
1069
+
1070
+ Creates a LiveValidator for real-time field validation.
1071
+
1072
+ **Returns:** `LiveValidator`
1073
+
1074
+ **Methods:**
1075
+
1076
+ - `validateField(fieldName: string, value: any): FieldValidationResult`
1077
+ - `validateAll(data: any): ValidationResult`
1078
+ - `onValidation(callback: (result: ValidationResult) => void): void`
1079
+ - `get isValid(): boolean`
1080
+ - `get errors(): Record<string, string[]>`
1081
+
1082
+ ### Live.stream(schema)
1083
+
1084
+ Creates a StreamValidator with full EventEmitter interface.
1085
+
1086
+ **Returns:** `StreamValidator`
1087
+
1088
+ **EventEmitter Methods:**
1089
+
1090
+ - `on(event: string, listener: (...args: any[]) => void): this`
1091
+ - `once(event: string, listener: (...args: any[]) => void): this`
1092
+ - `off(event: string, listener?: (...args: any[]) => void): this`
1093
+ - `emit(event: string, ...args: any[]): boolean`
1094
+
1095
+ **Transformation Methods:**
1096
+
1097
+ - `transform(transformer: (data: any) => any): this`
1098
+ - `filter(predicate: (data: any) => boolean): this`
1099
+ - `map(mapper: (data: any) => any): this`
1100
+
1101
+ **Stream Control Methods:**
1102
+
1103
+ - `pause(): this`
1104
+ - `resume(): this`
1105
+ - `destroy(): this`
1106
+ - `pipe(destination: StreamValidator): StreamValidator`
1107
+
1108
+ **Validation Methods:**
1109
+
1110
+ - `validate(data: any): void`
1111
+ - `onValid(callback: (data: any) => void): void`
1112
+ - `onInvalid(callback: (data: any, errors: Record<string, string[]>) => void): void`
1113
+ - `onStats(callback: (stats: ValidationStats) => void): void`
1114
+ - `getStats(): ValidationStats`
1115
+
1116
+ **Properties:**
1117
+
1118
+ - `get destroyed(): boolean`
1119
+ - `get paused(): boolean`
1120
+ - `get queueLength(): number`
1121
+
1122
+ ### Live.form(schema)
1123
+
1124
+ Creates a FormValidator for HTML form integration.
1125
+
1126
+ **Returns:** `FormValidator`
1127
+
1128
+ **Methods:**
1129
+
1130
+ - `bindField(fieldName: string, element: HTMLElement): void`
1131
+ - `enableAutoValidation(): void`
1132
+ - `onSubmit(callback: (isValid: boolean, data: any, errors: Record<string, string[]>) => void): void`
1133
+ - `validateForm(): ValidationResult`
1134
+
1135
+ ---
1136
+
1137
+ The Live utility provides a complete real-time validation solution with **100% stream methods coverage** and **perfect InterfaceSchema synchronization**. Use it to build reactive, high-performance validation systems for modern applications.