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,681 @@
1
+ /**
2
+ * Unified Conditional Types and Operators System
3
+ *
4
+ * A robust, maintainable, and extensible TypeScript conditional types system
5
+ * with improved error handling, better organization, and type safety.
6
+ */
7
+ // ============================================================================
8
+ // OPERATOR SYSTEM - with validation and metadata
9
+ // ============================================================================
10
+ /**
11
+ * Comprehensive operator definitions with strict typing
12
+ */
13
+ var Operators;
14
+ (function (Operators) {
15
+ // Comprehensive operator configuration
16
+ Operators.OPERATOR_CONFIG = {
17
+ // Existence operators (highest precedence)
18
+ "!exists": {
19
+ precedence: 100,
20
+ requiresValue: false,
21
+ typeSupport: ["string", "number", "boolean", "array", "object", "date"],
22
+ description: "Field does not exist or is undefined",
23
+ examples: ["name!exists", "user.email!exists"],
24
+ },
25
+ exists: {
26
+ precedence: 99,
27
+ requiresValue: false,
28
+ typeSupport: ["string", "number", "boolean", "array", "object", "date"],
29
+ description: "Field exists and is not undefined",
30
+ examples: ["name exists", "user.email exists"],
31
+ },
32
+ // State operators
33
+ "!empty": {
34
+ precedence: 98,
35
+ requiresValue: false,
36
+ typeSupport: ["string", "array", "object"],
37
+ description: "Field is not empty (non-zero length)",
38
+ examples: ["name!empty", "items!empty"],
39
+ },
40
+ empty: {
41
+ precedence: 97,
42
+ requiresValue: false,
43
+ typeSupport: ["string", "array", "object"],
44
+ description: "Field is empty (zero length)",
45
+ examples: ["name empty", "items empty"],
46
+ },
47
+ "!null": {
48
+ precedence: 96,
49
+ requiresValue: false,
50
+ typeSupport: ["string", "number", "boolean", "array", "object", "date"],
51
+ description: "Field is not null",
52
+ examples: ["value!null", "user.id!null"],
53
+ },
54
+ null: {
55
+ precedence: 95,
56
+ requiresValue: false,
57
+ typeSupport: ["string", "number", "boolean", "array", "object", "date"],
58
+ description: "Field is null",
59
+ examples: ["value null", "user.id null"],
60
+ },
61
+ // Inclusion operators
62
+ "!in": {
63
+ precedence: 94,
64
+ requiresValue: true,
65
+ typeSupport: ["string", "number", "boolean"],
66
+ description: "Field value is not in the provided list",
67
+ examples: ["status!in(active,pending)", "priority!in(1,2,3)"],
68
+ },
69
+ in: {
70
+ precedence: 93,
71
+ requiresValue: true,
72
+ typeSupport: ["string", "number", "boolean"],
73
+ description: "Field value is in the provided list",
74
+ examples: ["status in(active,pending)", "priority in(1,2,3)"],
75
+ },
76
+ // Regex operators
77
+ "!~": {
78
+ precedence: 92,
79
+ requiresValue: true,
80
+ typeSupport: ["string"],
81
+ description: "Field value does not match the regex pattern",
82
+ examples: ["email!~^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"],
83
+ },
84
+ "~": {
85
+ precedence: 91,
86
+ requiresValue: true,
87
+ typeSupport: ["string"],
88
+ description: "Field value matches the regex pattern",
89
+ examples: ["email~^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$"],
90
+ },
91
+ // String operators
92
+ "!contains": {
93
+ precedence: 90,
94
+ requiresValue: true,
95
+ typeSupport: ["string"],
96
+ description: "Field value does not contain the substring",
97
+ examples: ["name!contains John", "description!contains urgent"],
98
+ },
99
+ contains: {
100
+ precedence: 89,
101
+ requiresValue: true,
102
+ typeSupport: ["string"],
103
+ description: "Field value contains the substring",
104
+ examples: ["name contains John", "description contains urgent"],
105
+ },
106
+ endsWith: {
107
+ precedence: 88,
108
+ requiresValue: true,
109
+ typeSupport: ["string"],
110
+ description: "Field value ends with the substring",
111
+ examples: ["filename endsWith .pdf", "email endsWith @company.com"],
112
+ },
113
+ startsWith: {
114
+ precedence: 87,
115
+ requiresValue: true,
116
+ typeSupport: ["string"],
117
+ description: "Field value starts with the substring",
118
+ examples: ["name startsWith Mr.", "path startsWith /api/"],
119
+ },
120
+ // Comparison operators (lowest precedence)
121
+ "!=": {
122
+ precedence: 86,
123
+ requiresValue: true,
124
+ typeSupport: ["string", "number", "boolean", "date"],
125
+ description: "Field value is not equal to the provided value",
126
+ examples: ["status!=active", "count!=0", "isEnabled!=true"],
127
+ },
128
+ ">=": {
129
+ precedence: 85,
130
+ requiresValue: true,
131
+ typeSupport: ["number", "date"],
132
+ description: "Field value is greater than or equal to the provided value",
133
+ examples: ["age>=18", "score>=80"],
134
+ },
135
+ "<=": {
136
+ precedence: 84,
137
+ requiresValue: true,
138
+ typeSupport: ["number", "date"],
139
+ description: "Field value is less than or equal to the provided value",
140
+ examples: ["age<=65", "score<=100"],
141
+ },
142
+ ">": {
143
+ precedence: 83,
144
+ requiresValue: true,
145
+ typeSupport: ["number", "date"],
146
+ description: "Field value is greater than the provided value",
147
+ examples: ["age>18", "score>80"],
148
+ },
149
+ "<": {
150
+ precedence: 82,
151
+ requiresValue: true,
152
+ typeSupport: ["number", "date"],
153
+ description: "Field value is less than the provided value",
154
+ examples: ["age<65", "score<100"],
155
+ },
156
+ "=": {
157
+ precedence: 81,
158
+ requiresValue: true,
159
+ typeSupport: ["string", "number", "boolean", "date"],
160
+ description: "Field value is equal to the provided value",
161
+ examples: ["status=active", "count=0", "isEnabled=true"],
162
+ },
163
+ };
164
+ // Utility functions for operator validation
165
+ function isValidOperator(op) {
166
+ return op in Operators.OPERATOR_CONFIG;
167
+ }
168
+ Operators.isValidOperator = isValidOperator;
169
+ function getOperatorsByPrecedence() {
170
+ return Object.entries(Operators.OPERATOR_CONFIG)
171
+ .sort(([, a], [, b]) => b.precedence - a.precedence)
172
+ .map(([op]) => op);
173
+ }
174
+ Operators.getOperatorsByPrecedence = getOperatorsByPrecedence;
175
+ function validateOperatorForType(operator, type) {
176
+ return Operators.OPERATOR_CONFIG[operator].typeSupport.includes(type);
177
+ }
178
+ Operators.validateOperatorForType = validateOperatorForType;
179
+ })(Operators || (Operators = {}));
180
+ // ============================================================================
181
+ // RUNTIME UTILITIES - Implementation helpers
182
+ // ============================================================================
183
+ /**
184
+ * Runtime utilities for working with conditional expressions
185
+ */
186
+ var Runtime;
187
+ (function (Runtime) {
188
+ // Runtime condition evaluator
189
+ function evaluateCondition(fieldValue, operator, conditionValue) {
190
+ switch (operator) {
191
+ // Existence operators
192
+ case "exists":
193
+ return fieldValue !== undefined && fieldValue !== null;
194
+ case "!exists":
195
+ return fieldValue === undefined || fieldValue === null;
196
+ // State operators
197
+ case "empty":
198
+ if (typeof fieldValue === "string")
199
+ return fieldValue.length === 0;
200
+ if (Array.isArray(fieldValue))
201
+ return fieldValue.length === 0;
202
+ if (typeof fieldValue === "object" && fieldValue !== null) {
203
+ return Object.keys(fieldValue).length === 0;
204
+ }
205
+ return false;
206
+ case "!empty":
207
+ if (typeof fieldValue === "string")
208
+ return fieldValue.length > 0;
209
+ if (Array.isArray(fieldValue))
210
+ return fieldValue.length > 0;
211
+ if (typeof fieldValue === "object" && fieldValue !== null) {
212
+ return Object.keys(fieldValue).length > 0;
213
+ }
214
+ return true;
215
+ case "null":
216
+ return fieldValue === null;
217
+ case "!null":
218
+ return fieldValue !== null;
219
+ // Comparison operators
220
+ case "=":
221
+ return String(fieldValue) === conditionValue;
222
+ case "!=":
223
+ return String(fieldValue) !== conditionValue;
224
+ case ">":
225
+ return Number(fieldValue) > Number(conditionValue);
226
+ case ">=":
227
+ return Number(fieldValue) >= Number(conditionValue);
228
+ case "<":
229
+ return Number(fieldValue) < Number(conditionValue);
230
+ case "<=":
231
+ return Number(fieldValue) <= Number(conditionValue);
232
+ // String operators
233
+ case "contains":
234
+ return String(fieldValue).includes(conditionValue);
235
+ case "!contains":
236
+ return !String(fieldValue).includes(conditionValue);
237
+ case "startsWith":
238
+ return String(fieldValue).startsWith(conditionValue);
239
+ case "endsWith":
240
+ return String(fieldValue).endsWith(conditionValue);
241
+ // Regex operators
242
+ case "~":
243
+ try {
244
+ return new RegExp(conditionValue).test(String(fieldValue));
245
+ }
246
+ catch {
247
+ return false;
248
+ }
249
+ case "!~":
250
+ try {
251
+ return !new RegExp(conditionValue).test(String(fieldValue));
252
+ }
253
+ catch {
254
+ return true;
255
+ }
256
+ // Inclusion operators
257
+ case "in":
258
+ const inValues = conditionValue.split(",").map((v) => v.trim());
259
+ return inValues.includes(String(fieldValue));
260
+ case "!in":
261
+ const notInValues = conditionValue.split(",").map((v) => v.trim());
262
+ return !notInValues.includes(String(fieldValue));
263
+ default:
264
+ return false;
265
+ }
266
+ }
267
+ Runtime.evaluateCondition = evaluateCondition;
268
+ // Runtime field value extraction with path support
269
+ function getFieldValue(data, path) {
270
+ if (!path || typeof data !== "object" || data === null) {
271
+ return undefined;
272
+ }
273
+ const keys = path.split(".");
274
+ let current = data;
275
+ for (const key of keys) {
276
+ if (current === null || current === undefined) {
277
+ return undefined;
278
+ }
279
+ // Handle array indices
280
+ if (/^\d+$/.test(key)) {
281
+ const index = parseInt(key, 10);
282
+ if (Array.isArray(current) && index >= 0 && index < current.length) {
283
+ current = current[index];
284
+ }
285
+ else {
286
+ return undefined;
287
+ }
288
+ }
289
+ else {
290
+ current = current[key];
291
+ }
292
+ }
293
+ return current;
294
+ }
295
+ Runtime.getFieldValue = getFieldValue;
296
+ // Runtime conditional expression parser
297
+ function parseCondition(conditionStr) {
298
+ const trimmed = conditionStr.trim();
299
+ // Try operators in precedence order
300
+ for (const operator of Operators.getOperatorsByPrecedence()) {
301
+ const config = Operators.OPERATOR_CONFIG[operator];
302
+ if (!config.requiresValue) {
303
+ // For operators that don't require a value (exists, empty, null)
304
+ if (trimmed.endsWith(operator)) {
305
+ const field = trimmed.slice(0, -operator.length);
306
+ return { field, operator, value: "" };
307
+ }
308
+ }
309
+ else {
310
+ // For operators that require a value
311
+ const operatorIndex = trimmed.indexOf(operator);
312
+ if (operatorIndex > 0) {
313
+ const field = trimmed.slice(0, operatorIndex);
314
+ const value = trimmed.slice(operatorIndex + operator.length);
315
+ return { field, operator, value };
316
+ }
317
+ }
318
+ }
319
+ return null;
320
+ }
321
+ Runtime.parseCondition = parseCondition;
322
+ // Runtime conditional expression evaluator
323
+ function evaluateConditionalExpression(data, expression) {
324
+ // Parse different syntax formats
325
+ let condition, thenValue, elseValue;
326
+ // syntax: when condition *? then : else
327
+ let match = expression.match(/when\s+(.+?)\s*\*\?\s*(.+?)\s*:\s*(.+)/);
328
+ if (match) {
329
+ [, condition, thenValue, elseValue] = match;
330
+ }
331
+ else {
332
+ // Parentheses syntax: when(condition) then(value) else(value)
333
+ match = expression.match(/when\((.+?)\)\s*then\((.+?)\)\s*else\((.+?)\)/);
334
+ if (match) {
335
+ [, condition, thenValue, elseValue] = match;
336
+ }
337
+ else {
338
+ // Legacy syntax: when:condition:then:else
339
+ match = expression.match(/when:(.+?):(.+?):(.+)/);
340
+ if (match) {
341
+ [, condition, thenValue, elseValue] = match;
342
+ }
343
+ else {
344
+ throw new Error(`Invalid conditional expression format: ${expression}`);
345
+ }
346
+ }
347
+ }
348
+ // Parse the condition
349
+ const parsedCondition = parseCondition(condition.trim());
350
+ if (!parsedCondition) {
351
+ throw new Error(`Could not parse condition: ${condition}`);
352
+ }
353
+ // Get field value
354
+ const fieldValue = getFieldValue(data, parsedCondition.field);
355
+ // Evaluate condition
356
+ const conditionResult = evaluateCondition(fieldValue, parsedCondition.operator, parsedCondition.value);
357
+ // Return appropriate value
358
+ return conditionResult
359
+ ? parseValue(thenValue.trim())
360
+ : parseValue(elseValue.trim());
361
+ }
362
+ Runtime.evaluateConditionalExpression = evaluateConditionalExpression;
363
+ // Parse value with type coercion
364
+ function parseValue(value) {
365
+ const trimmed = value.trim();
366
+ // Handle quoted strings
367
+ if ((trimmed.startsWith('"') && trimmed.endsWith('"')) ||
368
+ (trimmed.startsWith("'") && trimmed.endsWith("'"))) {
369
+ return trimmed.slice(1, -1);
370
+ }
371
+ // Handle booleans
372
+ if (trimmed === "true")
373
+ return true;
374
+ if (trimmed === "false")
375
+ return false;
376
+ // Handle null/undefined
377
+ if (trimmed === "null")
378
+ return null;
379
+ if (trimmed === "undefined")
380
+ return undefined;
381
+ // Handle numbers
382
+ if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
383
+ return Number(trimmed);
384
+ }
385
+ // Handle arrays (simple comma-separated values)
386
+ if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
387
+ const arrayContent = trimmed.slice(1, -1);
388
+ if (arrayContent.trim() === "")
389
+ return [];
390
+ return arrayContent.split(",").map((item) => parseValue(item.trim()));
391
+ }
392
+ // Default to string
393
+ return trimmed;
394
+ }
395
+ // Validation helper
396
+ function validateConditionSyntax(condition) {
397
+ const errors = [];
398
+ const warnings = [];
399
+ try {
400
+ const parsed = parseCondition(condition);
401
+ if (!parsed) {
402
+ errors.push("Could not parse condition syntax");
403
+ return { isValid: false, errors, warnings };
404
+ }
405
+ // Validate operator
406
+ if (!Operators.isValidOperator(parsed.operator)) {
407
+ errors.push(`Unknown operator: ${parsed.operator}`);
408
+ }
409
+ // Validate value requirement
410
+ const config = Operators.OPERATOR_CONFIG[parsed.operator];
411
+ if (config.requiresValue && !parsed.value) {
412
+ errors.push(`Operator '${parsed.operator}' requires a value`);
413
+ }
414
+ // Check for common mistakes
415
+ if (parsed.field.includes(" ")) {
416
+ warnings.push("Field names with spaces may cause issues");
417
+ }
418
+ if (parsed.operator === "~" || parsed.operator === "!~") {
419
+ try {
420
+ new RegExp(parsed.value);
421
+ }
422
+ catch {
423
+ errors.push("Invalid regex pattern");
424
+ }
425
+ }
426
+ }
427
+ catch (error) {
428
+ errors.push(`Validation error: ${error instanceof Error ? error.message : "Unknown error"}`);
429
+ }
430
+ return {
431
+ isValid: errors.length === 0,
432
+ errors,
433
+ warnings,
434
+ };
435
+ }
436
+ Runtime.validateConditionSyntax = validateConditionSyntax;
437
+ })(Runtime || (Runtime = {}));
438
+ // ============================================================================
439
+ // FACTORY FUNCTIONS - Convenient creation helpers
440
+ // ============================================================================
441
+ /**
442
+ * Factory functions for creating conditional expressions
443
+ */
444
+ var Factory;
445
+ (function (Factory) {
446
+ function createConditionalBuilder() {
447
+ return {
448
+ when(field) {
449
+ return createFieldBuilder(field);
450
+ },
451
+ };
452
+ }
453
+ Factory.createConditionalBuilder = createConditionalBuilder;
454
+ function createFieldBuilder(field) {
455
+ return {
456
+ equals: (value) => createThenBuilder(field, "=", value),
457
+ notEquals: (value) => createThenBuilder(field, "!=", value),
458
+ greaterThan: (value) => createThenBuilder(field, ">", value),
459
+ greaterEqual: (value) => createThenBuilder(field, ">=", value),
460
+ lessThan: (value) => createThenBuilder(field, "<", value),
461
+ lessEqual: (value) => createThenBuilder(field, "<=", value),
462
+ matches: (pattern) => createThenBuilder(field, "~", pattern),
463
+ contains: (value) => createThenBuilder(field, "contains", value),
464
+ startsWith: (value) => createThenBuilder(field, "startsWith", value),
465
+ endsWith: (value) => createThenBuilder(field, "endsWith", value),
466
+ in: (...values) => createThenBuilder(field, "in", values.join(",")),
467
+ notIn: (...values) => createThenBuilder(field, "!in", values.join(",")),
468
+ exists: () => createThenBuilder(field, "exists", undefined),
469
+ notExists: () => createThenBuilder(field, "!exists", undefined),
470
+ empty: () => createThenBuilder(field, "empty", undefined),
471
+ notEmpty: () => createThenBuilder(field, "!empty", undefined),
472
+ isNull: () => createThenBuilder(field, "null", undefined),
473
+ notNull: () => createThenBuilder(field, "!null", undefined),
474
+ };
475
+ }
476
+ function createThenBuilder(field, operator, value) {
477
+ return {
478
+ then: (thenValue) => createElseBuilder(field, operator, value, thenValue),
479
+ thenType: (type) => createElseBuilder(field, operator, value, type),
480
+ };
481
+ }
482
+ function createElseBuilder(field, operator, value, thenType) {
483
+ return {
484
+ else: (elseValue) => createConditionalExpression(field, operator, value, thenType, elseValue),
485
+ elseType: (type) => createConditionalExpression(field, operator, value, thenType, type),
486
+ elseWhen: (field2) => createFieldBuilder(field2),
487
+ };
488
+ }
489
+ function createConditionalExpression(field, operator, value, thenType, elseType) {
490
+ const valueStr = value === undefined ? "" : String(value);
491
+ const condition = `${field}${operator}${valueStr}`;
492
+ const expression = `when ${condition} *? ${thenType} : ${elseType}`;
493
+ return {
494
+ expression,
495
+ resultType: (thenType || elseType),
496
+ metadata: {
497
+ field,
498
+ operator,
499
+ value,
500
+ validation: Runtime.validateConditionSyntax(condition),
501
+ },
502
+ toString: () => expression,
503
+ validate: () => ({
504
+ isValid: true,
505
+ errors: [],
506
+ warnings: [],
507
+ result: (thenType || elseType),
508
+ }),
509
+ };
510
+ }
511
+ // Quick creation helpers
512
+ function when() {
513
+ return createConditionalBuilder();
514
+ }
515
+ Factory.when = when;
516
+ function condition(conditionStr) {
517
+ return {
518
+ then: (thenValue) => ({
519
+ else: (elseValue) => `when ${conditionStr} *? ${thenValue} : ${elseValue}`,
520
+ elseType: (elseType) => `when ${conditionStr} *? ${thenValue} : ${elseType}`,
521
+ }),
522
+ thenType: (thenType) => ({
523
+ else: (elseValue) => `when ${conditionStr} *? ${thenType} : ${elseValue}`,
524
+ elseType: (elseType) => `when ${conditionStr} *? ${thenType} : ${elseType}`,
525
+ }),
526
+ };
527
+ }
528
+ Factory.condition = condition;
529
+ })(Factory || (Factory = {}));
530
+ // ============================================================================
531
+ // TESTING UTILITIES - For development and debugging
532
+ // ============================================================================
533
+ /**
534
+ * Testing and debugging utilities
535
+ */
536
+ var Testing;
537
+ (function (Testing) {
538
+ function runTest(testCase) {
539
+ try {
540
+ const actual = Runtime.evaluateConditionalExpression(testCase.data, testCase.expression);
541
+ const passed = JSON.stringify(actual) === JSON.stringify(testCase.expected);
542
+ return {
543
+ passed,
544
+ actual,
545
+ expected: testCase.expected,
546
+ };
547
+ }
548
+ catch (error) {
549
+ return {
550
+ passed: false,
551
+ actual: undefined,
552
+ expected: testCase.expected,
553
+ error: error instanceof Error ? error.message : "Unknown error",
554
+ };
555
+ }
556
+ }
557
+ Testing.runTest = runTest;
558
+ function runTestSuite(testCases) {
559
+ const results = testCases.map((testCase) => ({
560
+ testCase,
561
+ result: runTest(testCase),
562
+ }));
563
+ const passed = results.filter((r) => r.result.passed).length;
564
+ const failed = results.length - passed;
565
+ return { passed, failed, results };
566
+ }
567
+ Testing.runTestSuite = runTestSuite;
568
+ // Example test cases
569
+ Testing.EXAMPLE_TESTS = [
570
+ {
571
+ name: "Simple equality",
572
+ data: { status: "active" },
573
+ expression: "when status=active *? enabled : disabled",
574
+ expected: "enabled",
575
+ },
576
+ {
577
+ name: "Numeric comparison",
578
+ data: { age: 25 },
579
+ expression: "when age>=18 *? adult : minor",
580
+ expected: "adult",
581
+ },
582
+ {
583
+ name: "String contains",
584
+ data: { email: "user@example.com" },
585
+ expression: "when email contains @ *? valid : invalid",
586
+ expected: "valid",
587
+ },
588
+ {
589
+ name: "Existence check",
590
+ data: { name: "John" },
591
+ expression: "when name exists *? present : missing",
592
+ expected: "present",
593
+ },
594
+ {
595
+ name: "Array inclusion",
596
+ data: { role: "admin" },
597
+ expression: "when role in(admin,moderator) *? authorized : unauthorized",
598
+ expected: "authorized",
599
+ },
600
+ ];
601
+ })(Testing || (Testing = {}));
602
+ // ============================================================================
603
+ // DOCUMENTATION HELPERS - Auto-generated docs
604
+ // ============================================================================
605
+ /**
606
+ * Documentation generation utilities
607
+ */
608
+ var Documentation;
609
+ (function (Documentation) {
610
+ function generateOperatorDocs() {
611
+ let docs = "# Conditional Operators Reference\n\n";
612
+ const groupedOps = {
613
+ "Existence Operators": ["exists", "!exists"],
614
+ "State Operators": ["empty", "!empty", "null", "!null"],
615
+ "Inclusion Operators": ["in", "!in"],
616
+ "String Operators": [
617
+ "contains",
618
+ "!contains",
619
+ "startsWith",
620
+ "endsWith",
621
+ ],
622
+ "Regex Operators": ["~", "!~"],
623
+ "Comparison Operators": ["=", "!=", ">", ">=", "<", "<="],
624
+ };
625
+ Object.entries(groupedOps).forEach(([group, operators]) => {
626
+ docs += `## ${group}\n\n`;
627
+ operators.forEach((op) => {
628
+ const config = Operators.OPERATOR_CONFIG[op];
629
+ docs += `### \`${op}\`\n`;
630
+ docs += `${config.description}\n\n`;
631
+ docs += `**Type Support:** ${config.typeSupport.join(", ")}\n`;
632
+ docs += `**Requires Value:** ${config.requiresValue ? "Yes" : "No"}\n`;
633
+ docs += `**Examples:**\n`;
634
+ config.examples.forEach((example) => {
635
+ docs += `- \`${example}\`\n`;
636
+ });
637
+ docs += "\n";
638
+ });
639
+ });
640
+ return docs;
641
+ }
642
+ Documentation.generateOperatorDocs = generateOperatorDocs;
643
+ function generateSyntaxDocs() {
644
+ return `# Conditional Syntax Reference
645
+
646
+ ## Syntax (Recommended)
647
+ \`\`\`
648
+ when <condition> *? <then_value> : <else_value>
649
+ \`\`\`
650
+
651
+ Example:
652
+ \`\`\`
653
+ when status=active *? enabled : disabled
654
+ \`\`\`
655
+
656
+ ## Parentheses Syntax
657
+ \`\`\`
658
+ when(<condition>) then(<then_value>) else(<else_value>)
659
+ \`\`\`
660
+
661
+ Example:
662
+ \`\`\`
663
+ when(status=active) then(enabled) else(disabled)
664
+ \`\`\`
665
+
666
+ ## Legacy Syntax
667
+ \`\`\`
668
+ when:<condition>:<then_value>:<else_value>
669
+ \`\`\`
670
+
671
+ Example:
672
+ \`\`\`
673
+ when:status=active:enabled:disabled
674
+ \`\`\`
675
+ `;
676
+ }
677
+ Documentation.generateSyntaxDocs = generateSyntaxDocs;
678
+ })(Documentation || (Documentation = {}));
679
+
680
+ export { Documentation, Factory, Operators, Runtime, Testing };
681
+ //# sourceMappingURL=ConditionalTypes.js.map