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,773 @@
1
+ 'use strict';
2
+
3
+ var UnionCache = require('../mode/interfaces/validators/UnionCache.js');
4
+ var ObjectValidationCache = require('./ObjectValidationCache.js');
5
+ var SchemaCompiler = require('./SchemaCompiler.js');
6
+
7
+ /**
8
+ * Smart Performance Monitor & Auto-Optimizer
9
+ *
10
+ * Monitors validation performance in real-time and automatically
11
+ * applies optimizations based on usage patterns and bottlenecks.
12
+ */
13
+ class PerformanceMonitor {
14
+ /**
15
+ * Start performance monitoring
16
+ */
17
+ static startMonitoring(customThresholds) {
18
+ if (this.isMonitoring)
19
+ return;
20
+ if (customThresholds) {
21
+ Object.assign(this.thresholds, customThresholds);
22
+ }
23
+ this.isMonitoring = true;
24
+ // Start periodic analysis
25
+ this.analysisTimer = setInterval(() => {
26
+ this.performAnalysis();
27
+ }, this.ANALYSIS_INTERVAL);
28
+ // Start cleanup routine
29
+ this.cleanupTimer = setInterval(() => {
30
+ this.cleanupOldMetrics();
31
+ }, this.CLEANUP_INTERVAL);
32
+ }
33
+ /**
34
+ * Stop performance monitoring
35
+ */
36
+ static stopMonitoring() {
37
+ this.isMonitoring = false;
38
+ if (this.analysisTimer) {
39
+ clearInterval(this.analysisTimer);
40
+ this.analysisTimer = undefined;
41
+ }
42
+ if (this.cleanupTimer) {
43
+ clearInterval(this.cleanupTimer);
44
+ this.cleanupTimer = undefined;
45
+ }
46
+ }
47
+ /**
48
+ * Register optimization callback
49
+ */
50
+ static registerOptimization(type, callback) {
51
+ this.optimizationCallbacks.set(type, callback);
52
+ }
53
+ /**
54
+ * Record a validation operation
55
+ */
56
+ static recordOperation(operationId, duration, schemaComplexity, cacheHit = false, optimizationApplied) {
57
+ if (!this.isMonitoring)
58
+ return;
59
+ const memoryUsage = this.getMemoryUsage();
60
+ const metric = {
61
+ operationId,
62
+ duration,
63
+ timestamp: Date.now(),
64
+ schemaComplexity,
65
+ cacheHit,
66
+ optimizationApplied,
67
+ memoryUsage
68
+ };
69
+ this.metrics.push(metric);
70
+ // Immediate cleanup if we exceed limits
71
+ if (this.metrics.length > this.MAX_METRICS * 1.2) {
72
+ this.cleanupOldMetrics();
73
+ }
74
+ // Real-time optimization for performance issues
75
+ this.handleOperationResult(metric);
76
+ }
77
+ /**
78
+ * Analyze performance and generate recommendations
79
+ */
80
+ static analyzePerformance() {
81
+ if (this.metrics.length === 0) {
82
+ return this.getEmptyProfile();
83
+ }
84
+ const recentMetrics = this.getRecentMetrics(300000); // Last 5 minutes
85
+ return this.calculatePerformanceProfile(recentMetrics);
86
+ }
87
+ /**
88
+ * Get performance report
89
+ */
90
+ static getPerformanceReport() {
91
+ const profile = this.analyzePerformance();
92
+ return {
93
+ profile,
94
+ optimizationHistory: this.optimizationHistory.slice(-20), // Last 20 optimizations
95
+ totalMetrics: this.metrics.length,
96
+ monitoringStatus: this.isMonitoring,
97
+ thresholds: { ...this.thresholds }
98
+ };
99
+ }
100
+ /**
101
+ * Clear performance data
102
+ */
103
+ static clearData() {
104
+ this.metrics = [];
105
+ this.optimizationHistory = [];
106
+ }
107
+ /**
108
+ * Private methods
109
+ */
110
+ static async performAnalysis() {
111
+ try {
112
+ const profile = this.analyzePerformance();
113
+ // Generate and apply optimizations
114
+ const recommendations = this.generateRecommendations(this.getRecentMetrics(300000));
115
+ await this.autoApplyOptimizations(recommendations);
116
+ }
117
+ catch (error) {
118
+ // console.error('Performance analysis failed:', error);
119
+ }
120
+ }
121
+ static calculatePerformanceProfile(metrics) {
122
+ if (metrics.length === 0)
123
+ return this.getEmptyProfile();
124
+ const durations = metrics.map(m => m.duration).sort((a, b) => a - b);
125
+ const cacheHits = metrics.filter(m => m.cacheHit).length;
126
+ const memoryUsages = metrics.map(m => m.memoryUsage || 0);
127
+ const averageDuration = durations.reduce((sum, d) => sum + d, 0) / durations.length;
128
+ const p95Index = Math.max(0, Math.floor(durations.length * 0.95) - 1);
129
+ const p99Index = Math.max(0, Math.floor(durations.length * 0.99) - 1);
130
+ const timeSpan = Math.max(1, (metrics[metrics.length - 1].timestamp - metrics[0].timestamp) / 1000);
131
+ const throughput = metrics.length / timeSpan;
132
+ const avgMemoryUsage = memoryUsages.reduce((sum, m) => sum + m, 0) / memoryUsages.length;
133
+ const profile = {
134
+ averageDuration,
135
+ p95Duration: durations[p95Index] || 0,
136
+ p99Duration: durations[p99Index] || 0,
137
+ throughput,
138
+ cacheHitRate: metrics.length > 0 ? cacheHits / metrics.length : 0,
139
+ memoryUsage: avgMemoryUsage,
140
+ bottlenecks: this.identifyBottlenecks(metrics),
141
+ recommendations: []
142
+ };
143
+ profile.recommendations = this.generateRecommendations(metrics);
144
+ return profile;
145
+ }
146
+ static identifyBottlenecks(metrics) {
147
+ const bottlenecks = [];
148
+ // Group by operation
149
+ const operationGroups = this.groupBy(metrics, 'operationId');
150
+ for (const [operationId, operationMetrics] of Object.entries(operationGroups)) {
151
+ const avgDuration = operationMetrics.reduce((sum, m) => sum + m.duration, 0) / operationMetrics.length;
152
+ if (avgDuration > this.thresholds.slowOperationMs) {
153
+ bottlenecks.push(`Slow operation: ${operationId} (${avgDuration.toFixed(2)}ms avg)`);
154
+ }
155
+ }
156
+ // Cache performance
157
+ const cacheHitRate = metrics.filter(m => m.cacheHit).length / metrics.length;
158
+ if (cacheHitRate < this.thresholds.minCacheHitRate) {
159
+ bottlenecks.push(`Low cache hit rate: ${(cacheHitRate * 100).toFixed(1)}%`);
160
+ }
161
+ // Memory usage
162
+ const avgMemory = metrics.reduce((sum, m) => sum + (m.memoryUsage || 0), 0) / metrics.length;
163
+ if (avgMemory > this.thresholds.maxMemoryMB) {
164
+ bottlenecks.push(`High memory usage: ${avgMemory.toFixed(1)}MB avg`);
165
+ }
166
+ // Complexity correlation
167
+ const complexMetrics = metrics.filter(m => m.schemaComplexity > 15);
168
+ if (complexMetrics.length > 0) {
169
+ const avgComplexDuration = complexMetrics.reduce((sum, m) => sum + m.duration, 0) / complexMetrics.length;
170
+ if (avgComplexDuration > this.thresholds.slowOperationMs * 1.5) {
171
+ bottlenecks.push(`Complex schemas are slow: ${avgComplexDuration.toFixed(2)}ms avg`);
172
+ }
173
+ }
174
+ return bottlenecks;
175
+ }
176
+ static generateRecommendations(metrics) {
177
+ const recommendations = [];
178
+ // Cache optimization
179
+ const cacheHitRate = metrics.filter(m => m.cacheHit).length / metrics.length;
180
+ if (cacheHitRate < this.thresholds.minCacheHitRate) {
181
+ recommendations.push({
182
+ type: 'cache',
183
+ priority: 'high',
184
+ description: `Improve cache hit rate from ${(cacheHitRate * 100).toFixed(1)}% to 90%+`,
185
+ estimatedImprovement: Math.min(50, (0.9 - cacheHitRate) * 100),
186
+ implementation: async () => this.executeOptimization('cache')
187
+ });
188
+ }
189
+ // Memory optimization
190
+ const avgMemory = metrics.reduce((sum, m) => sum + (m.memoryUsage || 0), 0) / metrics.length;
191
+ if (avgMemory > this.thresholds.maxMemoryMB) {
192
+ recommendations.push({
193
+ type: 'memory',
194
+ priority: 'critical',
195
+ description: `Reduce memory usage from ${avgMemory.toFixed(1)}MB`,
196
+ estimatedImprovement: 30,
197
+ implementation: async () => this.executeOptimization('memory')
198
+ });
199
+ }
200
+ // Precompilation
201
+ const operationCounts = this.countOperations(metrics);
202
+ const frequentOperations = Object.entries(operationCounts)
203
+ .filter(([_, count]) => count > 50)
204
+ .map(([op, _]) => op);
205
+ if (frequentOperations.length > 0) {
206
+ recommendations.push({
207
+ type: 'precompile',
208
+ priority: 'medium',
209
+ description: `Precompile ${frequentOperations.length} frequently used schemas`,
210
+ estimatedImprovement: Math.min(40, frequentOperations.length * 5),
211
+ implementation: async () => this.executeOptimization('precompile', frequentOperations)
212
+ });
213
+ }
214
+ // Hot path optimization
215
+ const slowOperations = metrics
216
+ .filter(m => m.duration > this.thresholds.slowOperationMs)
217
+ .map(m => m.operationId);
218
+ const uniqueSlowOps = [...new Set(slowOperations)];
219
+ if (uniqueSlowOps.length > 0) {
220
+ recommendations.push({
221
+ type: 'hotpath',
222
+ priority: 'critical',
223
+ description: `Optimize ${uniqueSlowOps.length} slow validation paths`,
224
+ estimatedImprovement: Math.min(60, uniqueSlowOps.length * 10),
225
+ implementation: async () => this.executeOptimization('hotpath', uniqueSlowOps)
226
+ });
227
+ }
228
+ return recommendations.sort((a, b) => {
229
+ const priorityOrder = { critical: 4, high: 3, medium: 2, low: 1 };
230
+ return priorityOrder[b.priority] - priorityOrder[a.priority];
231
+ });
232
+ }
233
+ static async autoApplyOptimizations(recommendations) {
234
+ for (const rec of recommendations) {
235
+ if (rec.priority === 'critical' && rec.estimatedImprovement > this.thresholds.autoOptimizeThreshold * 100) {
236
+ await this.applyOptimization(rec);
237
+ }
238
+ }
239
+ }
240
+ static async applyOptimization(recommendation) {
241
+ const startTime = Date.now();
242
+ let success = false;
243
+ try {
244
+ await recommendation.implementation();
245
+ success = true;
246
+ }
247
+ catch (error) {
248
+ // console.error(`Failed to apply ${recommendation.type} optimization:`, error);
249
+ }
250
+ this.optimizationHistory.push({
251
+ timestamp: startTime,
252
+ type: recommendation.type,
253
+ improvement: success ? recommendation.estimatedImprovement : 0,
254
+ success
255
+ });
256
+ }
257
+ static async executeOptimization(type, data) {
258
+ const callback = this.optimizationCallbacks.get(type);
259
+ if (callback) {
260
+ await callback();
261
+ }
262
+ else {
263
+ // Default optimization behavior
264
+ switch (type) {
265
+ case 'cache':
266
+ this.optimizeCache();
267
+ break;
268
+ case 'memory':
269
+ this.optimizeMemory();
270
+ break;
271
+ case 'precompile':
272
+ this.precompileSchemas(data || []);
273
+ break;
274
+ case 'hotpath':
275
+ this.optimizeHotPaths(data || []);
276
+ break;
277
+ }
278
+ }
279
+ }
280
+ static handleOperationResult(metric) {
281
+ if (metric.duration > this.thresholds.criticalOperationMs) {
282
+ // Handle critical performance issue
283
+ this.handleCriticalPerformance(metric);
284
+ }
285
+ }
286
+ static async handleCriticalPerformance(metric) {
287
+ // Apply immediate optimization for critical issues
288
+ const emergencyOptimization = {
289
+ type: 'hotpath',
290
+ priority: 'critical',
291
+ description: `Emergency optimization for ${metric.operationId}`,
292
+ estimatedImprovement: 50,
293
+ implementation: async () => this.executeOptimization('hotpath', [metric.operationId])
294
+ };
295
+ await this.applyOptimization(emergencyOptimization);
296
+ }
297
+ static optimizeCache() {
298
+ try {
299
+ // Get current cache statistics
300
+ const cacheStats = ObjectValidationCache.ObjectValidationCache.getStats();
301
+ const unionStats = UnionCache.UnionCache.getCacheStats();
302
+ // console.log(`📊 Union cache: ${unionStats.size} entries`);
303
+ // console.log(`🔧 Cache optimization: Hit rate ${(cacheStats.hitRate * 100).toFixed(1)}%`);
304
+ // Optimize based on hit rates
305
+ if (cacheStats.hitRate < 0.7) {
306
+ // Pre-warm cache with common validation patterns
307
+ const commonPatterns = [
308
+ 'string', 'number', 'boolean', 'email', 'url',
309
+ 'string?', 'number?', 'boolean?',
310
+ 'active|inactive', 'pending|approved|rejected',
311
+ 'low|medium|high', 'user|admin|moderator'
312
+ ];
313
+ UnionCache.UnionCache.preWarmCache(commonPatterns);
314
+ // console.log('✅ Cache pre-warmed with common patterns');
315
+ }
316
+ // Clean up old cache entries if memory usage is high
317
+ if (cacheStats.cacheSize > 3000) {
318
+ ObjectValidationCache.ObjectValidationCache.clearCache();
319
+ // console.log('🧹 Cache cleared due to high memory usage');
320
+ }
321
+ // console.log('✅ Cache optimization completed');
322
+ }
323
+ catch (error) {
324
+ // console.error('❌ Cache optimization failed:', error);
325
+ }
326
+ }
327
+ static optimizeMemory() {
328
+ try {
329
+ // Clean up old metrics more aggressively
330
+ this.cleanupOldMetrics(0.5);
331
+ // Clear caches if memory usage is high
332
+ const memoryUsage = this.getMemoryUsage();
333
+ if (memoryUsage > 100) { // > 100MB
334
+ ObjectValidationCache.ObjectValidationCache.clearCache();
335
+ UnionCache.UnionCache.clearCache();
336
+ // console.log(`🧹 Memory optimization: Cleared caches (was ${memoryUsage.toFixed(1)}MB)`);
337
+ }
338
+ // Force garbage collection if available
339
+ if (global.gc) {
340
+ global.gc();
341
+ // console.log('🗑️ Garbage collection triggered');
342
+ }
343
+ // console.log('✅ Memory optimization completed');
344
+ }
345
+ catch (error) {
346
+ // console.error('❌ Memory optimization failed:', error);
347
+ }
348
+ }
349
+ /**
350
+ * Get current memory usage in MB
351
+ */
352
+ static getMemoryUsage() {
353
+ if (typeof process !== 'undefined' && process.memoryUsage) {
354
+ return process.memoryUsage().heapUsed / 1024 / 1024;
355
+ }
356
+ return 0;
357
+ }
358
+ static precompileSchemas(operations) {
359
+ try {
360
+ // console.log(`🔧 Precompiling ${operations.length} frequently used schemas`);
361
+ // Get schema definitions for frequent operations
362
+ const schemasToCompile = this.getSchemaDefinitionsForOperations(operations);
363
+ let compiledCount = 0;
364
+ for (const [operationId, schemaDefinition] of schemasToCompile) {
365
+ try {
366
+ SchemaCompiler.SchemaCompiler.compileSchema(schemaDefinition, { enableOptimizations: true });
367
+ compiledCount++;
368
+ }
369
+ catch (error) {
370
+ // console.warn(`⚠️ Failed to precompile schema for ${operationId}:`, error);
371
+ }
372
+ }
373
+ }
374
+ catch (error) {
375
+ // // console.error('❌ Schema precompilation failed:', error);
376
+ }
377
+ }
378
+ static optimizeHotPaths(operations) {
379
+ try {
380
+ // Mark operations as hot paths for caching priority
381
+ for (const operationId of operations) {
382
+ // Create optimized validators for hot paths
383
+ this.createHotPathValidator(operationId);
384
+ }
385
+ // Pre-warm cache for hot paths
386
+ const hotPathData = this.generateHotPathTestData(operations);
387
+ for (const [operationId, testData] of hotPathData) {
388
+ try {
389
+ // Trigger validation to warm up cache
390
+ ObjectValidationCache.ObjectValidationCache.getCachedValidation(testData, (value) => ({ success: true, errors: [], warnings: [], data: value }), [operationId]);
391
+ }
392
+ catch (error) {
393
+ // // console.warn(`⚠️ Failed to warm cache for ${operationId}:`, error);
394
+ }
395
+ }
396
+ // console.log('✅ Hot path optimization completed');
397
+ }
398
+ catch (error) {
399
+ // console.error('❌ Hot path optimization failed:', error);
400
+ }
401
+ }
402
+ /**
403
+ * Get schema definitions for operations from integrated schema registry
404
+ */
405
+ static getSchemaDefinitionsForOperations(operations) {
406
+ const schemas = new Map();
407
+ // Try to get schemas from the global schema registry first
408
+ const schemaRegistry = this.getSchemaRegistry();
409
+ for (const operationId of operations) {
410
+ let schema = null;
411
+ // 1. Try to get from registered schemas
412
+ if (schemaRegistry.has(operationId)) {
413
+ schema = schemaRegistry.get(operationId);
414
+ }
415
+ // 2. Try to infer from operation metrics
416
+ else if (!schema) {
417
+ schema = this.inferSchemaFromMetrics(operationId);
418
+ }
419
+ // 3. Fallback to pattern-based schema generation
420
+ if (!schema) {
421
+ schema = this.generateSchemaFromPattern(operationId);
422
+ }
423
+ if (schema) {
424
+ schemas.set(operationId, schema);
425
+ }
426
+ }
427
+ return schemas;
428
+ }
429
+ /**
430
+ * Get the global schema registry (integrates with existing Interface schemas)
431
+ */
432
+ static getSchemaRegistry() {
433
+ // Use a module-level registry to avoid globalThis type issues
434
+ if (!this.schemaRegistry) {
435
+ this.schemaRegistry = new Map();
436
+ }
437
+ return this.schemaRegistry;
438
+ }
439
+ /**
440
+ * Infer schema structure from historical validation metrics
441
+ */
442
+ static inferSchemaFromMetrics(operationId) {
443
+ // Analyze historical metrics to infer schema structure
444
+ const relatedMetrics = this.metrics.filter(m => m.operationId === operationId);
445
+ if (relatedMetrics.length === 0) {
446
+ return null;
447
+ }
448
+ // Analyze complexity patterns to infer schema structure
449
+ const avgComplexity = relatedMetrics.reduce((sum, m) => sum + m.schemaComplexity, 0) / relatedMetrics.length;
450
+ const avgDuration = relatedMetrics.reduce((sum, m) => sum + m.duration, 0) / relatedMetrics.length;
451
+ // Infer schema based on performance characteristics
452
+ if (avgComplexity < 5 && avgDuration < 2) {
453
+ // Simple schema
454
+ return {
455
+ id: 'number',
456
+ name: 'string',
457
+ active: 'boolean'
458
+ };
459
+ }
460
+ else if (avgComplexity < 15 && avgDuration < 10) {
461
+ // Medium complexity schema
462
+ return {
463
+ id: 'number',
464
+ data: {
465
+ name: 'string',
466
+ email: 'email',
467
+ status: 'active|inactive|pending'
468
+ },
469
+ metadata: {
470
+ created: 'date',
471
+ updated: 'date?'
472
+ }
473
+ };
474
+ }
475
+ else {
476
+ // Complex schema
477
+ return {
478
+ id: 'number',
479
+ user: {
480
+ profile: {
481
+ name: 'string(2,50)',
482
+ email: 'email',
483
+ address: {
484
+ street: 'string',
485
+ city: 'string',
486
+ country: 'string(2,3)'
487
+ }
488
+ },
489
+ preferences: {
490
+ theme: 'light|dark|auto',
491
+ notifications: 'boolean'
492
+ }
493
+ },
494
+ metadata: {
495
+ created: 'date',
496
+ updated: 'date?',
497
+ tags: 'string[]?'
498
+ }
499
+ };
500
+ }
501
+ }
502
+ /**
503
+ * Generate schema based on operation ID patterns
504
+ */
505
+ static generateSchemaFromPattern(operationId) {
506
+ const lowerOp = operationId.toLowerCase();
507
+ // User-related operations
508
+ if (lowerOp.includes('user') || lowerOp.includes('profile') || lowerOp.includes('account')) {
509
+ return {
510
+ id: 'positive',
511
+ email: 'email',
512
+ name: 'string(2,100)',
513
+ status: 'active|inactive|pending|suspended',
514
+ role: 'user|admin|moderator|guest',
515
+ profile: {
516
+ firstName: 'string(1,50)',
517
+ lastName: 'string(1,50)',
518
+ avatar: 'url?',
519
+ bio: 'string(0,500)?'
520
+ },
521
+ preferences: {
522
+ theme: 'light|dark|auto',
523
+ language: 'string(2,5)',
524
+ notifications: 'boolean'
525
+ },
526
+ metadata: {
527
+ created: 'date',
528
+ updated: 'date?',
529
+ lastLogin: 'date?'
530
+ }
531
+ };
532
+ }
533
+ // Order/transaction operations
534
+ if (lowerOp.includes('order') || lowerOp.includes('transaction') || lowerOp.includes('payment')) {
535
+ return {
536
+ id: 'positive',
537
+ userId: 'positive',
538
+ total: 'number(0,999999.99)',
539
+ currency: 'string(3,3)',
540
+ status: 'pending|processing|completed|cancelled|refunded',
541
+ items: [{
542
+ id: 'positive',
543
+ name: 'string(1,200)',
544
+ quantity: 'positive',
545
+ price: 'number(0,99999.99)'
546
+ }],
547
+ billing: {
548
+ address: 'string',
549
+ city: 'string',
550
+ country: 'string(2,3)',
551
+ postalCode: 'string'
552
+ },
553
+ metadata: {
554
+ created: 'date',
555
+ updated: 'date?',
556
+ notes: 'string?'
557
+ }
558
+ };
559
+ }
560
+ // Product/catalog operations
561
+ if (lowerOp.includes('product') || lowerOp.includes('item') || lowerOp.includes('catalog')) {
562
+ return {
563
+ id: 'positive',
564
+ name: 'string(1,200)',
565
+ description: 'string(0,2000)?',
566
+ price: 'number(0,99999.99)',
567
+ category: 'string',
568
+ status: 'active|inactive|discontinued',
569
+ inventory: {
570
+ quantity: 'number(0,999999)',
571
+ reserved: 'number(0,999999)',
572
+ available: 'number(0,999999)'
573
+ },
574
+ attributes: {
575
+ weight: 'number?',
576
+ dimensions: {
577
+ length: 'number?',
578
+ width: 'number?',
579
+ height: 'number?'
580
+ }
581
+ },
582
+ metadata: {
583
+ created: 'date',
584
+ updated: 'date?',
585
+ tags: 'string[]?'
586
+ }
587
+ };
588
+ }
589
+ // API/request operations
590
+ if (lowerOp.includes('api') || lowerOp.includes('request') || lowerOp.includes('response')) {
591
+ return {
592
+ method: 'GET|POST|PUT|DELETE|PATCH',
593
+ path: 'string',
594
+ headers: 'any?',
595
+ body: 'any?',
596
+ query: 'any?',
597
+ params: 'any?',
598
+ metadata: {
599
+ timestamp: 'date',
600
+ userAgent: 'string?',
601
+ ip: 'string?'
602
+ }
603
+ };
604
+ }
605
+ // Generic fallback schema
606
+ return {
607
+ id: 'number',
608
+ type: 'string',
609
+ data: 'any',
610
+ status: 'active|inactive',
611
+ metadata: {
612
+ created: 'date',
613
+ updated: 'date?'
614
+ }
615
+ };
616
+ }
617
+ /**
618
+ * Create optimized validator for hot path with real implementation
619
+ */
620
+ static createHotPathValidator(operationId) {
621
+ try {
622
+ // Get schema for this operation
623
+ const schemaDefinition = this.getSchemaDefinitionsForOperations([operationId]).get(operationId);
624
+ if (!schemaDefinition) {
625
+ // console.warn(`⚠️ No schema found for hot path: ${operationId}`);
626
+ return;
627
+ }
628
+ // Pre-compile the schema for maximum performance
629
+ const compiledValidator = SchemaCompiler.SchemaCompiler.compileSchema(schemaDefinition, {
630
+ enableOptimizations: true,
631
+ cacheValidation: true,
632
+ hotPath: true
633
+ });
634
+ // Store the compiled validator in the hot path cache
635
+ this.hotPathValidators.set(operationId, compiledValidator);
636
+ // Mark this path for priority caching
637
+ ObjectValidationCache.ObjectValidationCache.getCachedValidation(this.generateSampleData(schemaDefinition), compiledValidator.validate.bind(compiledValidator), [operationId, 'hotpath']);
638
+ }
639
+ catch (error) {
640
+ // console.error(`❌ Failed to create hot path validator for ${operationId}:`, error);
641
+ }
642
+ }
643
+ /**
644
+ * Generate sample data for schema pre-warming
645
+ */
646
+ static generateSampleData(schemaDefinition) {
647
+ const sampleData = {};
648
+ for (const [key, fieldType] of Object.entries(schemaDefinition)) {
649
+ if (typeof fieldType === 'string') {
650
+ sampleData[key] = this.generateSampleValue(fieldType);
651
+ }
652
+ else if (typeof fieldType === 'object' && fieldType !== null && !Array.isArray(fieldType)) {
653
+ sampleData[key] = this.generateSampleData(fieldType);
654
+ }
655
+ else if (Array.isArray(fieldType) && fieldType.length === 1) {
656
+ if (typeof fieldType[0] === 'object') {
657
+ sampleData[key] = [this.generateSampleData(fieldType[0])];
658
+ }
659
+ else {
660
+ sampleData[key] = [this.generateSampleValue(fieldType[0])];
661
+ }
662
+ }
663
+ }
664
+ return sampleData;
665
+ }
666
+ /**
667
+ * Generate sample value for a field type
668
+ */
669
+ static generateSampleValue(fieldType) {
670
+ const cleanType = fieldType.replace('?', '').split('(')[0];
671
+ switch (cleanType) {
672
+ case 'string': return 'sample_string';
673
+ case 'number': return 42;
674
+ case 'positive': return 1;
675
+ case 'boolean': return true;
676
+ case 'date': return new Date();
677
+ case 'email': return 'test@example.com';
678
+ case 'url': return 'https://example.com';
679
+ case 'any': return 'sample_data';
680
+ default:
681
+ if (fieldType.includes('|')) {
682
+ const options = fieldType.split('|');
683
+ return options[0].trim();
684
+ }
685
+ return 'sample_value';
686
+ }
687
+ }
688
+ /**
689
+ * Generate test data for hot path warming
690
+ */
691
+ static generateHotPathTestData(operations) {
692
+ const testData = new Map();
693
+ for (const operationId of operations) {
694
+ if (operationId.includes('user')) {
695
+ testData.set(operationId, {
696
+ id: 1,
697
+ email: 'test@example.com',
698
+ name: 'Test User',
699
+ status: 'active'
700
+ });
701
+ }
702
+ else if (operationId.includes('order')) {
703
+ testData.set(operationId, {
704
+ id: 1,
705
+ total: 99.99,
706
+ status: 'pending'
707
+ });
708
+ }
709
+ else {
710
+ testData.set(operationId, {
711
+ id: 1,
712
+ data: 'test'
713
+ });
714
+ }
715
+ }
716
+ return testData;
717
+ }
718
+ static cleanupOldMetrics(ratio = 0.8) {
719
+ if (this.metrics.length > this.MAX_METRICS) {
720
+ const keepCount = Math.floor(this.MAX_METRICS * ratio);
721
+ this.metrics = this.metrics.slice(-keepCount);
722
+ }
723
+ }
724
+ static getRecentMetrics(timeWindow) {
725
+ const cutoff = Date.now() - timeWindow;
726
+ return this.metrics.filter(m => m.timestamp > cutoff);
727
+ }
728
+ static groupBy(array, key) {
729
+ return array.reduce((groups, item) => {
730
+ const groupKey = String(item[key]);
731
+ if (!groups[groupKey])
732
+ groups[groupKey] = [];
733
+ groups[groupKey].push(item);
734
+ return groups;
735
+ }, {});
736
+ }
737
+ static countOperations(metrics) {
738
+ return metrics.reduce((counts, metric) => {
739
+ counts[metric.operationId] = (counts[metric.operationId] || 0) + 1;
740
+ return counts;
741
+ }, {});
742
+ }
743
+ static getEmptyProfile() {
744
+ return {
745
+ averageDuration: 0,
746
+ p95Duration: 0,
747
+ p99Duration: 0,
748
+ throughput: 0,
749
+ cacheHitRate: 0,
750
+ memoryUsage: 0,
751
+ bottlenecks: [],
752
+ recommendations: []
753
+ };
754
+ }
755
+ }
756
+ PerformanceMonitor.metrics = [];
757
+ PerformanceMonitor.MAX_METRICS = 5000; // Reduced for better memory usage
758
+ PerformanceMonitor.ANALYSIS_INTERVAL = 60000; // 1 minute
759
+ PerformanceMonitor.CLEANUP_INTERVAL = 300000; // 5 minutes
760
+ PerformanceMonitor.thresholds = {
761
+ slowOperationMs: 5,
762
+ criticalOperationMs: 20,
763
+ minCacheHitRate: 0.8,
764
+ maxMemoryMB: 100,
765
+ autoOptimizeThreshold: 0.15 // 15% improvement threshold
766
+ };
767
+ PerformanceMonitor.isMonitoring = false;
768
+ PerformanceMonitor.optimizationHistory = [];
769
+ PerformanceMonitor.optimizationCallbacks = new Map();
770
+ PerformanceMonitor.hotPathValidators = new Map();
771
+
772
+ exports.PerformanceMonitor = PerformanceMonitor;
773
+ //# sourceMappingURL=PerformanceMonitor.js.map