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