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.
- package/LICENSE +21 -0
- package/README.md +1305 -0
- package/dist/cjs/constants/SECURITY_CONSTANTS.js +49 -0
- package/dist/cjs/constants/SECURITY_CONSTANTS.js.map +1 -0
- package/dist/cjs/constants/VALIDATION_CONSTANTS.js +103 -0
- package/dist/cjs/constants/VALIDATION_CONSTANTS.js.map +1 -0
- package/dist/cjs/core/schema/extensions/SmartInference.js +200 -0
- package/dist/cjs/core/schema/extensions/SmartInference.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/Docs.js +100 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/Docs.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/DocumentationGenerator.js +192 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/DocumentationGenerator.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/InteractiveDocumentationGenerator.js +174 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/InteractiveDocumentationGenerator.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/SchemaAnalyzer.js +54 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/SchemaAnalyzer.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/TypeScriptGenerator.js +50 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/TypeScriptGenerator.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/index.js +15 -0
- package/dist/cjs/core/schema/extensions/components/AutoDocumentation/index.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalBuilder.js +70 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalBuilder.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalElse.js +40 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalElse.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalThen.js +19 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/ConditionalThen.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/MultiConditionalBuilder.js +20 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/MultiConditionalBuilder.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/MultiConditionalThen.js +49 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/MultiConditionalThen.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/index.js +98 -0
- package/dist/cjs/core/schema/extensions/components/ConditionalValidation/index.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/RealtimeValidation/FormValidator.js +85 -0
- package/dist/cjs/core/schema/extensions/components/RealtimeValidation/FormValidator.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/RealtimeValidation/LiveValidator.js +133 -0
- package/dist/cjs/core/schema/extensions/components/RealtimeValidation/LiveValidator.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/RealtimeValidation/StreamValidator.js +351 -0
- package/dist/cjs/core/schema/extensions/components/RealtimeValidation/StreamValidator.js.map +1 -0
- package/dist/cjs/core/schema/extensions/components/RealtimeValidation/index.js +109 -0
- package/dist/cjs/core/schema/extensions/components/RealtimeValidation/index.js.map +1 -0
- package/dist/cjs/core/schema/extensions/index.js +61 -0
- package/dist/cjs/core/schema/extensions/index.js.map +1 -0
- package/dist/cjs/core/schema/extensions/mods/index.js +51 -0
- package/dist/cjs/core/schema/extensions/mods/index.js.map +1 -0
- package/dist/cjs/core/schema/extensions/mods/openapi-converter.js +227 -0
- package/dist/cjs/core/schema/extensions/mods/openapi-converter.js.map +1 -0
- package/dist/cjs/core/schema/extensions/mods/typescript-generator.js +287 -0
- package/dist/cjs/core/schema/extensions/mods/typescript-generator.js.map +1 -0
- package/dist/cjs/core/schema/extensions/mods/validation-engine.js +224 -0
- package/dist/cjs/core/schema/extensions/mods/validation-engine.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/Interface.js +277 -0
- package/dist/cjs/core/schema/mode/interfaces/Interface.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/InterfaceSchema.js +1431 -0
- package/dist/cjs/core/schema/mode/interfaces/InterfaceSchema.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/conditional/evaluator/ConditionalEvaluator.js +520 -0
- package/dist/cjs/core/schema/mode/interfaces/conditional/evaluator/ConditionalEvaluator.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalAST.js +624 -0
- package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalAST.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalLexer.js +811 -0
- package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalLexer.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalParser.js +599 -0
- package/dist/cjs/core/schema/mode/interfaces/conditional/parser/ConditionalParser.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/conditional/types/ConditionalTypes.js +89 -0
- package/dist/cjs/core/schema/mode/interfaces/conditional/types/ConditionalTypes.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/errors/ErrorHandler.js +356 -0
- package/dist/cjs/core/schema/mode/interfaces/errors/ErrorHandler.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/errors/types/errors.type.js +80 -0
- package/dist/cjs/core/schema/mode/interfaces/errors/types/errors.type.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/precompilation/FieldPrecompilers.js +778 -0
- package/dist/cjs/core/schema/mode/interfaces/precompilation/FieldPrecompilers.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/precompilation/SchemaPrecompiler.js +523 -0
- package/dist/cjs/core/schema/mode/interfaces/precompilation/SchemaPrecompiler.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/typescript/ConditionalTypes.js +681 -0
- package/dist/cjs/core/schema/mode/interfaces/typescript/ConditionalTypes.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/typescript/IDESupport.js +430 -0
- package/dist/cjs/core/schema/mode/interfaces/typescript/IDESupport.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/typescript/TypeInference.js +225 -0
- package/dist/cjs/core/schema/mode/interfaces/typescript/TypeInference.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/typescript/index.js +44 -0
- package/dist/cjs/core/schema/mode/interfaces/typescript/index.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/ConstraintParser.js +1134 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/ConstraintParser.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/TypeGuards.js +256 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/TypeGuards.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/TypeValidators.js +429 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/TypeValidators.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/UnionCache.js +404 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/UnionCache.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/ValidationHelpers.js +851 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/ValidationHelpers.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/mods/passValidator.js +262 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/mods/passValidator.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/mods/securityValidator.js +887 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/mods/securityValidator.js.map +1 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/mods/urlValidation.js +191 -0
- package/dist/cjs/core/schema/mode/interfaces/validators/mods/urlValidation.js.map +1 -0
- package/dist/cjs/core/schema/optimization/ObjectValidationCache.js +462 -0
- package/dist/cjs/core/schema/optimization/ObjectValidationCache.js.map +1 -0
- package/dist/cjs/core/schema/optimization/PerformanceMonitor.js +773 -0
- package/dist/cjs/core/schema/optimization/PerformanceMonitor.js.map +1 -0
- package/dist/cjs/core/schema/optimization/SchemaCompiler.js +600 -0
- package/dist/cjs/core/schema/optimization/SchemaCompiler.js.map +1 -0
- package/dist/cjs/core/types/ValidatorTypes.js +70 -0
- package/dist/cjs/core/types/ValidatorTypes.js.map +1 -0
- package/dist/cjs/core/types/parser.type.js +12 -0
- package/dist/cjs/core/types/parser.type.js.map +1 -0
- package/dist/cjs/core/utils/Make.js +61 -0
- package/dist/cjs/core/utils/Make.js.map +1 -0
- package/dist/cjs/core/utils/Mod.js +1033 -0
- package/dist/cjs/core/utils/Mod.js.map +1 -0
- package/dist/cjs/core/utils/UrlArgs.js +102 -0
- package/dist/cjs/core/utils/UrlArgs.js.map +1 -0
- package/dist/cjs/core/utils/arrayToEnum.js +18 -0
- package/dist/cjs/core/utils/arrayToEnum.js.map +1 -0
- package/dist/cjs/core/utils/createUrlArgsEnumFArray.js +13 -0
- package/dist/cjs/core/utils/createUrlArgsEnumFArray.js.map +1 -0
- package/dist/cjs/core/utils/securityHelpers.js +215 -0
- package/dist/cjs/core/utils/securityHelpers.js.map +1 -0
- package/dist/cjs/core/utils/securityValidatorHelpers.js +65 -0
- package/dist/cjs/core/utils/securityValidatorHelpers.js.map +1 -0
- package/dist/cjs/index.js +31 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/esm/constants/SECURITY_CONSTANTS.js +47 -0
- package/dist/esm/constants/SECURITY_CONSTANTS.js.map +1 -0
- package/dist/esm/constants/VALIDATION_CONSTANTS.js +98 -0
- package/dist/esm/constants/VALIDATION_CONSTANTS.js.map +1 -0
- package/dist/esm/core/schema/extensions/SmartInference.js +197 -0
- package/dist/esm/core/schema/extensions/SmartInference.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/Docs.js +98 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/Docs.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/DocumentationGenerator.js +190 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/DocumentationGenerator.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/InteractiveDocumentationGenerator.js +172 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/InteractiveDocumentationGenerator.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/SchemaAnalyzer.js +52 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/SchemaAnalyzer.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/TypeScriptGenerator.js +48 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/TypeScriptGenerator.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/index.js +12 -0
- package/dist/esm/core/schema/extensions/components/AutoDocumentation/index.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalBuilder.js +68 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalBuilder.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalElse.js +38 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalElse.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalThen.js +17 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/ConditionalThen.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/MultiConditionalBuilder.js +18 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/MultiConditionalBuilder.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/MultiConditionalThen.js +45 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/MultiConditionalThen.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/index.js +92 -0
- package/dist/esm/core/schema/extensions/components/ConditionalValidation/index.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/RealtimeValidation/FormValidator.js +83 -0
- package/dist/esm/core/schema/extensions/components/RealtimeValidation/FormValidator.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/RealtimeValidation/LiveValidator.js +131 -0
- package/dist/esm/core/schema/extensions/components/RealtimeValidation/LiveValidator.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/RealtimeValidation/StreamValidator.js +349 -0
- package/dist/esm/core/schema/extensions/components/RealtimeValidation/StreamValidator.js.map +1 -0
- package/dist/esm/core/schema/extensions/components/RealtimeValidation/index.js +103 -0
- package/dist/esm/core/schema/extensions/components/RealtimeValidation/index.js.map +1 -0
- package/dist/esm/core/schema/extensions/index.js +53 -0
- package/dist/esm/core/schema/extensions/index.js.map +1 -0
- package/dist/esm/core/schema/extensions/mods/index.js +47 -0
- package/dist/esm/core/schema/extensions/mods/index.js.map +1 -0
- package/dist/esm/core/schema/extensions/mods/openapi-converter.js +225 -0
- package/dist/esm/core/schema/extensions/mods/openapi-converter.js.map +1 -0
- package/dist/esm/core/schema/extensions/mods/typescript-generator.js +284 -0
- package/dist/esm/core/schema/extensions/mods/typescript-generator.js.map +1 -0
- package/dist/esm/core/schema/extensions/mods/validation-engine.js +222 -0
- package/dist/esm/core/schema/extensions/mods/validation-engine.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/Interface.js +269 -0
- package/dist/esm/core/schema/mode/interfaces/Interface.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/InterfaceSchema.js +1429 -0
- package/dist/esm/core/schema/mode/interfaces/InterfaceSchema.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/conditional/evaluator/ConditionalEvaluator.js +518 -0
- package/dist/esm/core/schema/mode/interfaces/conditional/evaluator/ConditionalEvaluator.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalAST.js +620 -0
- package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalAST.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalLexer.js +809 -0
- package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalLexer.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalParser.js +597 -0
- package/dist/esm/core/schema/mode/interfaces/conditional/parser/ConditionalParser.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/conditional/types/ConditionalTypes.js +89 -0
- package/dist/esm/core/schema/mode/interfaces/conditional/types/ConditionalTypes.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/errors/ErrorHandler.js +354 -0
- package/dist/esm/core/schema/mode/interfaces/errors/ErrorHandler.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/errors/types/errors.type.js +80 -0
- package/dist/esm/core/schema/mode/interfaces/errors/types/errors.type.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/precompilation/FieldPrecompilers.js +776 -0
- package/dist/esm/core/schema/mode/interfaces/precompilation/FieldPrecompilers.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/precompilation/SchemaPrecompiler.js +521 -0
- package/dist/esm/core/schema/mode/interfaces/precompilation/SchemaPrecompiler.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/typescript/ConditionalTypes.js +681 -0
- package/dist/esm/core/schema/mode/interfaces/typescript/ConditionalTypes.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/typescript/IDESupport.js +428 -0
- package/dist/esm/core/schema/mode/interfaces/typescript/IDESupport.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/typescript/TypeInference.js +223 -0
- package/dist/esm/core/schema/mode/interfaces/typescript/TypeInference.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/typescript/index.js +35 -0
- package/dist/esm/core/schema/mode/interfaces/typescript/index.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/validators/ConstraintParser.js +1132 -0
- package/dist/esm/core/schema/mode/interfaces/validators/ConstraintParser.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/validators/TypeGuards.js +254 -0
- package/dist/esm/core/schema/mode/interfaces/validators/TypeGuards.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/validators/TypeValidators.js +427 -0
- package/dist/esm/core/schema/mode/interfaces/validators/TypeValidators.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/validators/UnionCache.js +400 -0
- package/dist/esm/core/schema/mode/interfaces/validators/UnionCache.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/validators/ValidationHelpers.js +849 -0
- package/dist/esm/core/schema/mode/interfaces/validators/ValidationHelpers.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/validators/mods/passValidator.js +260 -0
- package/dist/esm/core/schema/mode/interfaces/validators/mods/passValidator.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/validators/mods/securityValidator.js +881 -0
- package/dist/esm/core/schema/mode/interfaces/validators/mods/securityValidator.js.map +1 -0
- package/dist/esm/core/schema/mode/interfaces/validators/mods/urlValidation.js +189 -0
- package/dist/esm/core/schema/mode/interfaces/validators/mods/urlValidation.js.map +1 -0
- package/dist/esm/core/schema/optimization/ObjectValidationCache.js +460 -0
- package/dist/esm/core/schema/optimization/ObjectValidationCache.js.map +1 -0
- package/dist/esm/core/schema/optimization/PerformanceMonitor.js +771 -0
- package/dist/esm/core/schema/optimization/PerformanceMonitor.js.map +1 -0
- package/dist/esm/core/schema/optimization/SchemaCompiler.js +598 -0
- package/dist/esm/core/schema/optimization/SchemaCompiler.js.map +1 -0
- package/dist/esm/core/types/ValidatorTypes.js +65 -0
- package/dist/esm/core/types/ValidatorTypes.js.map +1 -0
- package/dist/esm/core/types/parser.type.js +12 -0
- package/dist/esm/core/types/parser.type.js.map +1 -0
- package/dist/esm/core/utils/Make.js +59 -0
- package/dist/esm/core/utils/Make.js.map +1 -0
- package/dist/esm/core/utils/Mod.js +1031 -0
- package/dist/esm/core/utils/Mod.js.map +1 -0
- package/dist/esm/core/utils/UrlArgs.js +98 -0
- package/dist/esm/core/utils/UrlArgs.js.map +1 -0
- package/dist/esm/core/utils/arrayToEnum.js +16 -0
- package/dist/esm/core/utils/arrayToEnum.js.map +1 -0
- package/dist/esm/core/utils/createUrlArgsEnumFArray.js +11 -0
- package/dist/esm/core/utils/createUrlArgsEnumFArray.js.map +1 -0
- package/dist/esm/core/utils/securityHelpers.js +207 -0
- package/dist/esm/core/utils/securityHelpers.js.map +1 -0
- package/dist/esm/core/utils/securityValidatorHelpers.js +62 -0
- package/dist/esm/core/utils/securityValidatorHelpers.js.map +1 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/schema.d.ts +2595 -0
- package/docs/ALL_TYPES.md +120 -0
- package/docs/API-STABILITY.md +336 -0
- package/docs/CONDITIONAL-VALIDATION.md +637 -0
- package/docs/EXAMPLES.md +876 -0
- package/docs/FIELD-TYPES.md +829 -0
- package/docs/GETTING-STARTED.md +394 -0
- package/docs/LIVE-UTILITY.md +1137 -0
- package/docs/QUICK-REFERENCE.md +346 -0
- package/docs/README.md +205 -0
- package/docs/VSCODE-EXTENSION.md +458 -0
- package/package.json +219 -0
- package/src/bench/BENCHMARK-RESULTS.md +211 -0
- package/src/bench/benchmark-results.json +148 -0
- package/src/bench/performance-comparison.ts +218 -0
- package/src/bench/precompilation-benchmark.ts +218 -0
- package/src/constants/SECURITY_CONSTANTS.ts +44 -0
- package/src/constants/VALIDATION_CONSTANTS.ts +176 -0
- package/src/core/README.md +395 -0
- package/src/core/compiler/SchemaTransformer.ts +279 -0
- package/src/core/compiler/TypeAnalyzer.ts +378 -0
- package/src/core/compiler/TypeScriptCompilerIntegration.ts +220 -0
- package/src/core/compiler/TypeToSchemaConverter.ts +288 -0
- package/src/core/index.ts +70 -0
- package/src/core/schema/extensions/AutoDocumentation.ts +572 -0
- package/src/core/schema/extensions/ConditionalValidation.ts +330 -0
- package/src/core/schema/extensions/README.md +171 -0
- package/src/core/schema/extensions/RealtimeValidation.ts +656 -0
- package/src/core/schema/extensions/SmartInference.ts +224 -0
- package/src/core/schema/extensions/components/AutoDocumentation/Docs.ts +98 -0
- package/src/core/schema/extensions/components/AutoDocumentation/DocumentationGenerator.ts +201 -0
- package/src/core/schema/extensions/components/AutoDocumentation/InteractiveDocumentationGenerator.ts +176 -0
- package/src/core/schema/extensions/components/AutoDocumentation/OpenAPIGenerator.ts +175 -0
- package/src/core/schema/extensions/components/AutoDocumentation/SchemaAnalyzer.ts +49 -0
- package/src/core/schema/extensions/components/AutoDocumentation/TypeScriptGenerator.ts +54 -0
- package/src/core/schema/extensions/components/AutoDocumentation/index.ts +17 -0
- package/src/core/schema/extensions/components/ConditionalValidation/ConditionalBuilder.ts +101 -0
- package/src/core/schema/extensions/components/ConditionalValidation/ConditionalElse.ts +65 -0
- package/src/core/schema/extensions/components/ConditionalValidation/ConditionalThen.ts +33 -0
- package/src/core/schema/extensions/components/ConditionalValidation/Extend.ts +75 -0
- package/src/core/schema/extensions/components/ConditionalValidation/MultiConditionalBuilder.ts +16 -0
- package/src/core/schema/extensions/components/ConditionalValidation/MultiConditionalThen.ts +50 -0
- package/src/core/schema/extensions/components/ConditionalValidation/index.ts +104 -0
- package/src/core/schema/extensions/components/RealtimeValidation/FormValidator.ts +88 -0
- package/src/core/schema/extensions/components/RealtimeValidation/LiveValidator.ts +171 -0
- package/src/core/schema/extensions/components/RealtimeValidation/StreamValidator.ts +397 -0
- package/src/core/schema/extensions/components/RealtimeValidation/index.ts +114 -0
- package/src/core/schema/extensions/index.ts +76 -0
- package/src/core/schema/extensions/mods/index.ts +131 -0
- package/src/core/schema/extensions/mods/openapi-converter.ts +338 -0
- package/src/core/schema/extensions/mods/typescript-generator.ts +379 -0
- package/src/core/schema/extensions/mods/validation-engine.ts +295 -0
- package/src/core/schema/mode/interfaces/Interface.ts +364 -0
- package/src/core/schema/mode/interfaces/InterfaceSchema.ts +1838 -0
- package/src/core/schema/mode/interfaces/README.md +278 -0
- package/src/core/schema/mode/interfaces/conditional/evaluator/ConditionalEvaluator.ts +657 -0
- package/src/core/schema/mode/interfaces/conditional/parser/ConditionalAST.ts +826 -0
- package/src/core/schema/mode/interfaces/conditional/parser/ConditionalLexer.ts +992 -0
- package/src/core/schema/mode/interfaces/conditional/parser/ConditionalParser.ts +803 -0
- package/src/core/schema/mode/interfaces/conditional/parser/readme.md +406 -0
- package/src/core/schema/mode/interfaces/conditional/types/ConditionalTypes.ts +273 -0
- package/src/core/schema/mode/interfaces/errors/ErrorHandler.ts +624 -0
- package/src/core/schema/mode/interfaces/errors/types/errors.type.ts +102 -0
- package/src/core/schema/mode/interfaces/precompilation/FieldPrecompilers.ts +962 -0
- package/src/core/schema/mode/interfaces/precompilation/SchemaPrecompiler.ts +667 -0
- package/src/core/schema/mode/interfaces/typescript/ConditionalTypes.ts +1534 -0
- package/src/core/schema/mode/interfaces/typescript/IDESupport.ts +534 -0
- package/src/core/schema/mode/interfaces/typescript/TypeInference.ts +737 -0
- package/src/core/schema/mode/interfaces/typescript/index.ts +92 -0
- package/src/core/schema/mode/interfaces/validators/ConstraintParser.ts +1438 -0
- package/src/core/schema/mode/interfaces/validators/EnhancedErrorReporting.ts +227 -0
- package/src/core/schema/mode/interfaces/validators/TypeGuards.ts +288 -0
- package/src/core/schema/mode/interfaces/validators/TypeValidators.ts +660 -0
- package/src/core/schema/mode/interfaces/validators/UnionCache.ts +508 -0
- package/src/core/schema/mode/interfaces/validators/ValidationHelpers.ts +1257 -0
- package/src/core/schema/mode/interfaces/validators/index.ts +21 -0
- package/src/core/schema/mode/interfaces/validators/mods/passValidator.ts +424 -0
- package/src/core/schema/mode/interfaces/validators/mods/securityValidator.ts +1634 -0
- package/src/core/schema/mode/interfaces/validators/mods/urlValidation.ts +333 -0
- package/src/core/schema/optimization/ObjectValidationCache.ts +560 -0
- package/src/core/schema/optimization/PerformanceInitializer.ts +188 -0
- package/src/core/schema/optimization/PerformanceMonitor.ts +898 -0
- package/src/core/schema/optimization/SchemaCompiler.ts +730 -0
- package/src/core/testing/TestDataGenerator.ts +590 -0
- package/src/core/types/SchemaValidator.type.ts +210 -0
- package/src/core/types/ValidatorTypes.ts +93 -0
- package/src/core/types/extension.type.ts +109 -0
- package/src/core/types/objValidationCache.ts +17 -0
- package/src/core/types/parser.type.ts +15 -0
- package/src/core/types/perfoMonitor.ts +37 -0
- package/src/core/types/scompiler.ts +22 -0
- package/src/core/types/securityValidator.type.ts +10 -0
- package/src/core/types/types.ts +154 -0
- package/src/core/utils/Make.ts +97 -0
- package/src/core/utils/Mod.ts +1168 -0
- package/src/core/utils/UrlArgs.ts +124 -0
- package/src/core/utils/arrayToEnum.ts +89 -0
- package/src/core/utils/createUrlArgsEnumFArray.ts +11 -0
- package/src/core/utils/securityHelpers.ts +341 -0
- package/src/core/utils/securityValidatorHelpers.ts +76 -0
- package/src/index.ts +124 -0
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
import { ValidationStats } from "../../../../types/extension.type";
|
|
2
|
+
import { SchemaInterface } from "../../../../types/SchemaValidator.type";
|
|
3
|
+
import { ValidationEngine } from "../../mods";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Enhanced Stream Validator with full EventEmitter-like interface
|
|
7
|
+
* Supports all standard stream methods (.on, .emit, .pipe, etc.)
|
|
8
|
+
* Synchronized with InterfaceSchema modules
|
|
9
|
+
*/
|
|
10
|
+
export class StreamValidator {
|
|
11
|
+
private validListeners: Array<(data: any) => void> = [];
|
|
12
|
+
private invalidListeners: Array<
|
|
13
|
+
(data: any, errors: Record<string, string[]>) => void
|
|
14
|
+
> = [];
|
|
15
|
+
private statsListeners: Array<(stats: ValidationStats) => void> = [];
|
|
16
|
+
|
|
17
|
+
// Enhanced event system
|
|
18
|
+
private eventListeners: Map<string, Array<(...args: any[]) => void>> =
|
|
19
|
+
new Map();
|
|
20
|
+
private onceListeners: Map<string, Array<(...args: any[]) => void>> =
|
|
21
|
+
new Map();
|
|
22
|
+
|
|
23
|
+
// Stream control
|
|
24
|
+
private isPaused: boolean = false;
|
|
25
|
+
private isDestroyed: boolean = false;
|
|
26
|
+
private dataQueue: any[] = [];
|
|
27
|
+
|
|
28
|
+
// Data transformation pipeline
|
|
29
|
+
private transformers: Array<(data: any) => any> = [];
|
|
30
|
+
private filters: Array<(data: any) => boolean> = [];
|
|
31
|
+
private mappers: Array<(data: any) => any> = [];
|
|
32
|
+
|
|
33
|
+
private stats: ValidationStats = {
|
|
34
|
+
totalValidated: 0,
|
|
35
|
+
validCount: 0,
|
|
36
|
+
invalidCount: 0,
|
|
37
|
+
errorRate: 0,
|
|
38
|
+
startTime: new Date(),
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
constructor(private schema: SchemaInterface) {}
|
|
42
|
+
|
|
43
|
+
// =================================================================
|
|
44
|
+
// CORE EVENT EMITTER METHODS
|
|
45
|
+
// =================================================================
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Generic event listener (EventEmitter-like interface)
|
|
49
|
+
*/
|
|
50
|
+
on(event: string, listener: (...args: any[]) => void): this {
|
|
51
|
+
if (this.isDestroyed) throw new Error("StreamValidator is destroyed");
|
|
52
|
+
|
|
53
|
+
if (!this.eventListeners.has(event)) {
|
|
54
|
+
this.eventListeners.set(event, []);
|
|
55
|
+
}
|
|
56
|
+
this.eventListeners.get(event)!.push(listener);
|
|
57
|
+
return this;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* One-time event listener
|
|
62
|
+
*/
|
|
63
|
+
once(event: string, listener: (...args: any[]) => void): this {
|
|
64
|
+
if (this.isDestroyed) throw new Error("StreamValidator is destroyed");
|
|
65
|
+
|
|
66
|
+
if (!this.onceListeners.has(event)) {
|
|
67
|
+
this.onceListeners.set(event, []);
|
|
68
|
+
}
|
|
69
|
+
this.onceListeners.get(event)!.push(listener);
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Remove event listener
|
|
75
|
+
*/
|
|
76
|
+
off(event: string, listener?: (...args: any[]) => void): this {
|
|
77
|
+
if (listener) {
|
|
78
|
+
// Remove specific listener
|
|
79
|
+
const listeners = this.eventListeners.get(event);
|
|
80
|
+
if (listeners) {
|
|
81
|
+
const index = listeners.indexOf(listener);
|
|
82
|
+
if (index > -1) listeners.splice(index, 1);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const onceListeners = this.onceListeners.get(event);
|
|
86
|
+
if (onceListeners) {
|
|
87
|
+
const index = onceListeners.indexOf(listener);
|
|
88
|
+
if (index > -1) onceListeners.splice(index, 1);
|
|
89
|
+
}
|
|
90
|
+
} else {
|
|
91
|
+
// Remove all listeners for event
|
|
92
|
+
this.eventListeners.delete(event);
|
|
93
|
+
this.onceListeners.delete(event);
|
|
94
|
+
}
|
|
95
|
+
return this;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Emit event to all listeners
|
|
100
|
+
*/
|
|
101
|
+
emit(event: string, ...args: any[]): boolean {
|
|
102
|
+
if (this.isDestroyed) return false;
|
|
103
|
+
|
|
104
|
+
let hasListeners = false;
|
|
105
|
+
|
|
106
|
+
// Regular listeners
|
|
107
|
+
const listeners = this.eventListeners.get(event);
|
|
108
|
+
if (listeners && listeners.length > 0) {
|
|
109
|
+
hasListeners = true;
|
|
110
|
+
listeners.forEach((listener) => {
|
|
111
|
+
try {
|
|
112
|
+
listener(...args);
|
|
113
|
+
} catch (error) {
|
|
114
|
+
this.emit("error", error);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Once listeners
|
|
120
|
+
const onceListeners = this.onceListeners.get(event);
|
|
121
|
+
if (onceListeners && onceListeners.length > 0) {
|
|
122
|
+
hasListeners = true;
|
|
123
|
+
onceListeners.forEach((listener) => {
|
|
124
|
+
try {
|
|
125
|
+
listener(...args);
|
|
126
|
+
} catch (error) {
|
|
127
|
+
this.emit("error", error);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
this.onceListeners.delete(event); // Clear once listeners
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return hasListeners;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// =================================================================
|
|
137
|
+
// ENHANCED VALIDATION WITH STREAM CONTROL
|
|
138
|
+
// =================================================================
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Enhanced validate method with stream control and InterfaceSchema sync
|
|
142
|
+
*/
|
|
143
|
+
validate(data: any): void {
|
|
144
|
+
if (this.isDestroyed) {
|
|
145
|
+
this.emit("error", new Error("Cannot validate on destroyed stream"));
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (this.isPaused) {
|
|
150
|
+
this.dataQueue.push(data);
|
|
151
|
+
this.emit("queued", data);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
this._processData(data);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
private _processData(data: any): void {
|
|
159
|
+
this.stats.totalValidated++;
|
|
160
|
+
this.emit("data", data);
|
|
161
|
+
|
|
162
|
+
try {
|
|
163
|
+
// Apply data transformation pipeline
|
|
164
|
+
let processedData = this._applyTransformations(data);
|
|
165
|
+
|
|
166
|
+
// Apply filters
|
|
167
|
+
if (!this._passesFilters(processedData)) {
|
|
168
|
+
this.emit("filtered", processedData);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// FIXED: Use InterfaceSchema.safeParse for proper validation sync
|
|
173
|
+
let validationResult;
|
|
174
|
+
if (typeof this.schema.safeParse === "function") {
|
|
175
|
+
// Use InterfaceSchema validation
|
|
176
|
+
const result = this.schema.safeParse(processedData);
|
|
177
|
+
validationResult = {
|
|
178
|
+
isValid: result.success,
|
|
179
|
+
errors: result.success ? {} : this._formatErrors(result.errors),
|
|
180
|
+
};
|
|
181
|
+
} else {
|
|
182
|
+
// Fallback to ValidationEngine
|
|
183
|
+
validationResult = ValidationEngine.validateObject(
|
|
184
|
+
this.schema,
|
|
185
|
+
processedData
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (validationResult.isValid) {
|
|
190
|
+
this.stats.validCount++;
|
|
191
|
+
this.validListeners.forEach((listener) => listener(processedData));
|
|
192
|
+
this.emit("valid", processedData);
|
|
193
|
+
} else {
|
|
194
|
+
this.stats.invalidCount++;
|
|
195
|
+
this.invalidListeners.forEach((listener) =>
|
|
196
|
+
listener(processedData, validationResult.errors)
|
|
197
|
+
);
|
|
198
|
+
this.emit("invalid", processedData, validationResult.errors);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
this.updateStats();
|
|
202
|
+
this.emit("validated", processedData, validationResult);
|
|
203
|
+
} catch (error) {
|
|
204
|
+
this.emit("error", error);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
private _formatErrors(errors: any[]): Record<string, string[]> {
|
|
209
|
+
const formatted: Record<string, string[]> = {};
|
|
210
|
+
errors.forEach((error) => {
|
|
211
|
+
const field = error.path || "unknown";
|
|
212
|
+
if (!formatted[field]) formatted[field] = [];
|
|
213
|
+
formatted[field].push(error.message || error.toString());
|
|
214
|
+
});
|
|
215
|
+
return formatted;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
private _applyTransformations(data: any): any {
|
|
219
|
+
let result = data;
|
|
220
|
+
for (const transformer of this.transformers) {
|
|
221
|
+
result = transformer(result);
|
|
222
|
+
}
|
|
223
|
+
for (const mapper of this.mappers) {
|
|
224
|
+
result = mapper(result);
|
|
225
|
+
}
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
private _passesFilters(data: any): boolean {
|
|
230
|
+
return this.filters.every((filter) => filter(data));
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Listen for valid data
|
|
235
|
+
*/
|
|
236
|
+
onValid(listener: (data: any) => void): void {
|
|
237
|
+
this.validListeners.push(listener);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Listen for invalid data
|
|
242
|
+
*/
|
|
243
|
+
onInvalid(
|
|
244
|
+
listener: (data: any, errors: Record<string, string[]>) => void
|
|
245
|
+
): void {
|
|
246
|
+
this.invalidListeners.push(listener);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Listen for validation statistics
|
|
251
|
+
*/
|
|
252
|
+
onStats(listener: (stats: ValidationStats) => void): void {
|
|
253
|
+
this.statsListeners.push(listener);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Get current validation statistics
|
|
258
|
+
*/
|
|
259
|
+
getStats(): ValidationStats {
|
|
260
|
+
return { ...this.stats };
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
private updateStats(): void {
|
|
264
|
+
this.stats.errorRate =
|
|
265
|
+
this.stats.totalValidated > 0
|
|
266
|
+
? this.stats.invalidCount / this.stats.totalValidated
|
|
267
|
+
: 0;
|
|
268
|
+
|
|
269
|
+
this.statsListeners.forEach((listener) => listener(this.stats));
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// =================================================================
|
|
273
|
+
// DATA TRANSFORMATION METHODS
|
|
274
|
+
// =================================================================
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Add data transformer to pipeline
|
|
278
|
+
*/
|
|
279
|
+
transform(transformer: (data: any) => any): this {
|
|
280
|
+
if (this.isDestroyed) throw new Error("StreamValidator is destroyed");
|
|
281
|
+
this.transformers.push(transformer);
|
|
282
|
+
return this;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Add data filter to pipeline
|
|
287
|
+
*/
|
|
288
|
+
filter(predicate: (data: any) => boolean): this {
|
|
289
|
+
if (this.isDestroyed) throw new Error("StreamValidator is destroyed");
|
|
290
|
+
this.filters.push(predicate);
|
|
291
|
+
return this;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Add data mapper to pipeline
|
|
296
|
+
*/
|
|
297
|
+
map(mapper: (data: any) => any): this {
|
|
298
|
+
if (this.isDestroyed) throw new Error("StreamValidator is destroyed");
|
|
299
|
+
this.mappers.push(mapper);
|
|
300
|
+
return this;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
/**
|
|
304
|
+
* Pipe data to another stream validator
|
|
305
|
+
*/
|
|
306
|
+
pipe(destination: StreamValidator) {
|
|
307
|
+
if (this.isDestroyed) throw new Error("StreamValidator is destroyed");
|
|
308
|
+
|
|
309
|
+
this.on("valid", (data) => {
|
|
310
|
+
destination.validate(data);
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
this.on("error", (error) => {
|
|
314
|
+
destination.emit("error", error);
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
return destination;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// =================================================================
|
|
321
|
+
// STREAM CONTROL METHODS
|
|
322
|
+
// =================================================================
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Pause the stream (queue incoming data)
|
|
326
|
+
*/
|
|
327
|
+
pause(): this {
|
|
328
|
+
this.isPaused = true;
|
|
329
|
+
this.emit("pause");
|
|
330
|
+
return this;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Resume the stream (process queued data)
|
|
335
|
+
*/
|
|
336
|
+
resume(): this {
|
|
337
|
+
if (this.isDestroyed) throw new Error("StreamValidator is destroyed");
|
|
338
|
+
|
|
339
|
+
this.isPaused = false;
|
|
340
|
+
this.emit("resume");
|
|
341
|
+
|
|
342
|
+
// Process queued data
|
|
343
|
+
const queuedData = [...this.dataQueue];
|
|
344
|
+
this.dataQueue = [];
|
|
345
|
+
|
|
346
|
+
queuedData.forEach((data) => this._processData(data));
|
|
347
|
+
|
|
348
|
+
return this;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Destroy the stream (cleanup and prevent further use)
|
|
353
|
+
*/
|
|
354
|
+
destroy(): this {
|
|
355
|
+
if (this.isDestroyed) return this;
|
|
356
|
+
|
|
357
|
+
this.isDestroyed = true;
|
|
358
|
+
this.isPaused = false;
|
|
359
|
+
|
|
360
|
+
// Clear all data
|
|
361
|
+
this.dataQueue = [];
|
|
362
|
+
this.transformers = [];
|
|
363
|
+
this.filters = [];
|
|
364
|
+
this.mappers = [];
|
|
365
|
+
|
|
366
|
+
// Clear all listeners
|
|
367
|
+
this.validListeners = [];
|
|
368
|
+
this.invalidListeners = [];
|
|
369
|
+
this.statsListeners = [];
|
|
370
|
+
this.eventListeners.clear();
|
|
371
|
+
this.onceListeners.clear();
|
|
372
|
+
|
|
373
|
+
this.emit("destroy");
|
|
374
|
+
return this;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Check if stream is destroyed
|
|
379
|
+
*/
|
|
380
|
+
get destroyed(): boolean {
|
|
381
|
+
return this.isDestroyed;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Check if stream is paused
|
|
386
|
+
*/
|
|
387
|
+
get paused(): boolean {
|
|
388
|
+
return this.isPaused;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Get queue length
|
|
393
|
+
*/
|
|
394
|
+
get queueLength(): number {
|
|
395
|
+
return this.dataQueue.length;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Real-time Validation - live validation system
|
|
3
|
+
*
|
|
4
|
+
* This module provides real-time validation with reactive updates,
|
|
5
|
+
* perfect for forms and live data validation.
|
|
6
|
+
*
|
|
7
|
+
* Uses modular validation engine for consistent validation logic.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { SchemaInterface } from "../../../mode/interfaces/Interface";
|
|
11
|
+
import {
|
|
12
|
+
ValidationEngine,
|
|
13
|
+
ValidationResult as EngineValidationResult,
|
|
14
|
+
} from "../../mods/validation-engine";
|
|
15
|
+
import { FormValidator } from "./FormValidator";
|
|
16
|
+
import { LiveValidator } from "./LiveValidator";
|
|
17
|
+
import { StreamValidator } from "./StreamValidator";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Real-time validation utilities
|
|
21
|
+
*/
|
|
22
|
+
export const Live = {
|
|
23
|
+
/**
|
|
24
|
+
* Create a reactive validator that validates in real-time
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const UserSchema = Interface({
|
|
29
|
+
* email: "email",
|
|
30
|
+
* username: "string(3,20)",
|
|
31
|
+
* password: "string(8,)"
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* const liveValidator = Live.validator(UserSchema);
|
|
35
|
+
*
|
|
36
|
+
* // Listen for validation changes
|
|
37
|
+
* liveValidator.onValidation((result) => {
|
|
38
|
+
* console.log('Validation result:', result);
|
|
39
|
+
* updateUI(result);
|
|
40
|
+
* });
|
|
41
|
+
*
|
|
42
|
+
* // Validate field by field
|
|
43
|
+
* liveValidator.validateField('email', 'user@example.com');
|
|
44
|
+
* liveValidator.validateField('username', 'johndoe');
|
|
45
|
+
*
|
|
46
|
+
* // Get current state
|
|
47
|
+
* console.log(liveValidator.isValid); // true/false
|
|
48
|
+
* console.log(liveValidator.errors); // Current errors
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
validator(schema: SchemaInterface): LiveValidator {
|
|
52
|
+
return new LiveValidator(schema);
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Create a form validator with field-level validation
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const formValidator = Live.form(UserSchema);
|
|
61
|
+
*
|
|
62
|
+
* // Bind to form fields
|
|
63
|
+
* formValidator.bindField('email', emailInput);
|
|
64
|
+
* formValidator.bindField('username', usernameInput);
|
|
65
|
+
*
|
|
66
|
+
* // Auto-validation on input
|
|
67
|
+
* formValidator.enableAutoValidation();
|
|
68
|
+
*
|
|
69
|
+
* // Submit validation
|
|
70
|
+
* formValidator.onSubmit((isValid, data, errors) => {
|
|
71
|
+
* if (isValid) {
|
|
72
|
+
* submitForm(data);
|
|
73
|
+
* } else {
|
|
74
|
+
* showErrors(errors);
|
|
75
|
+
* }
|
|
76
|
+
* });
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
form(schema: SchemaInterface): FormValidator {
|
|
80
|
+
return new FormValidator(schema);
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Create a stream validator for continuous data validation
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* ```typescript
|
|
88
|
+
* const streamValidator = Live.stream(DataSchema);
|
|
89
|
+
*
|
|
90
|
+
* // Validate streaming data
|
|
91
|
+
* dataStream.subscribe((data) => {
|
|
92
|
+
* streamValidator.validate(data);
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* // Handle validation results
|
|
96
|
+
* streamValidator.onValid((data) => {
|
|
97
|
+
* processValidData(data);
|
|
98
|
+
* });
|
|
99
|
+
*
|
|
100
|
+
* streamValidator.onInvalid((data, errors) => {
|
|
101
|
+
* logInvalidData(data, errors);
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
stream(schema: SchemaInterface): StreamValidator {
|
|
106
|
+
return new StreamValidator(schema);
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Export all utilities
|
|
112
|
+
*/
|
|
113
|
+
export { LiveValidator, FormValidator, StreamValidator };
|
|
114
|
+
export default Live;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ReliantType Extensions - Advanced Features
|
|
3
|
+
*
|
|
4
|
+
* This module exports all advanced extensions that make ReliantType
|
|
5
|
+
* a powerful schema validation library.
|
|
6
|
+
*
|
|
7
|
+
* Features real, functional implementations without placeholders.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import Docs from './components/AutoDocumentation';
|
|
11
|
+
import When from './components/ConditionalValidation';
|
|
12
|
+
import Live from './components/RealtimeValidation';
|
|
13
|
+
import Smart from './SmartInference';
|
|
14
|
+
|
|
15
|
+
// Import specialized utilities
|
|
16
|
+
import { ValidationEngine } from './mods/validation-engine';
|
|
17
|
+
import { OpenAPIConverter } from './mods/openapi-converter';
|
|
18
|
+
import { TypeScriptGenerator } from './mods/typescript-generator';
|
|
19
|
+
|
|
20
|
+
// Smart Inference - Automatic schema generation
|
|
21
|
+
export { Smart } from './SmartInference';
|
|
22
|
+
|
|
23
|
+
// Conditional Validation - Dependent field validation
|
|
24
|
+
export { When, Extend } from './components/ConditionalValidation';
|
|
25
|
+
|
|
26
|
+
// Real-time Validation - Live validation system (DOM features disabled for Node.js compatibility)
|
|
27
|
+
export { Live, LiveValidator, StreamValidator } from './components/RealtimeValidation';
|
|
28
|
+
|
|
29
|
+
// Auto Documentation - Automatic documentation generation
|
|
30
|
+
export { Docs, DocumentationGenerator, SchemaAnalyzer, TypeScriptGenerator } from './components/AutoDocumentation';
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Extensions Bundle
|
|
34
|
+
*
|
|
35
|
+
* All extensions in one convenient object for easy access
|
|
36
|
+
*/
|
|
37
|
+
export const Extensions = {
|
|
38
|
+
Smart: { fromSample: Smart.fromSample, fromJsonSchema: Smart.fromJsonSchema, fromType: Smart.fromType },
|
|
39
|
+
When: { field: When.field, custom: When.custom },
|
|
40
|
+
Live: { validator: Live.validator, stream: Live.stream },
|
|
41
|
+
Docs: { generate: Docs.generate, typescript: Docs.typescript, openapi: Docs.openapi },
|
|
42
|
+
|
|
43
|
+
// Advanced utilities for specialized use cases
|
|
44
|
+
Utils: {
|
|
45
|
+
ValidationEngine,
|
|
46
|
+
OpenAPIConverter,
|
|
47
|
+
TypeScriptGenerator
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Quick access to most commonly used extensions
|
|
53
|
+
*/
|
|
54
|
+
export const Quick = {
|
|
55
|
+
// Smart inference shortcuts
|
|
56
|
+
fromSample: Smart.fromSample,
|
|
57
|
+
fromJsonSchema: Smart.fromJsonSchema,
|
|
58
|
+
|
|
59
|
+
// Conditional validation shortcuts
|
|
60
|
+
when: When.field,
|
|
61
|
+
|
|
62
|
+
// Real-time validation shortcuts
|
|
63
|
+
live: Live.validator,
|
|
64
|
+
stream: Live.stream,
|
|
65
|
+
|
|
66
|
+
// Documentation shortcuts
|
|
67
|
+
docs: Docs.generate,
|
|
68
|
+
typescript: Docs.typescript,
|
|
69
|
+
openapi: Docs.openapi
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Default export - Extensions bundle
|
|
75
|
+
*/
|
|
76
|
+
export default Extensions;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extensions Index - Centralized exports for all extension modules
|
|
3
|
+
*
|
|
4
|
+
* This module provides a clean, organized way to access all extension
|
|
5
|
+
* functionality through specialized modules.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { OpenAPIConverter } from "./openapi-converter";
|
|
9
|
+
import { TypeScriptGenerator } from "./typescript-generator";
|
|
10
|
+
import { ValidationEngine } from "./validation-engine";
|
|
11
|
+
|
|
12
|
+
// Core validation engine
|
|
13
|
+
export { ValidationEngine } from "./validation-engine";
|
|
14
|
+
export type {
|
|
15
|
+
ValidationFieldResult,
|
|
16
|
+
ValidationResult
|
|
17
|
+
} from "./validation-engine";
|
|
18
|
+
|
|
19
|
+
// OpenAPI converter
|
|
20
|
+
export { OpenAPIConverter } from "./openapi-converter";
|
|
21
|
+
export type {
|
|
22
|
+
OpenAPISchemaObject,
|
|
23
|
+
OpenAPISpecOptions,
|
|
24
|
+
OpenAPISpecification,
|
|
25
|
+
OpenAPIReference,
|
|
26
|
+
RequestBodyOptions,
|
|
27
|
+
OpenAPIRequestBody,
|
|
28
|
+
ResponseOptions,
|
|
29
|
+
OpenAPIResponse
|
|
30
|
+
} from "./openapi-converter";
|
|
31
|
+
|
|
32
|
+
// TypeScript generator
|
|
33
|
+
export { TypeScriptGenerator } from "./typescript-generator";
|
|
34
|
+
export type {
|
|
35
|
+
TypeScriptOptions,
|
|
36
|
+
ModuleOptions
|
|
37
|
+
} from "./typescript-generator";
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Extensions Bundle
|
|
41
|
+
*
|
|
42
|
+
* Provides easy access to all extension functionality
|
|
43
|
+
*/
|
|
44
|
+
export const Extensions = {
|
|
45
|
+
/**
|
|
46
|
+
* Validation utilities
|
|
47
|
+
*/
|
|
48
|
+
Validation: {
|
|
49
|
+
validateField: ValidationEngine.validateField,
|
|
50
|
+
validateObject: ValidationEngine.validateObject
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* OpenAPI utilities
|
|
55
|
+
*/
|
|
56
|
+
OpenAPI: {
|
|
57
|
+
convertSchema: OpenAPIConverter.convertSchema,
|
|
58
|
+
generateSpec: OpenAPIConverter.generateOpenAPISpec,
|
|
59
|
+
generateRequestBody: OpenAPIConverter.generateRequestBody,
|
|
60
|
+
generateResponse: OpenAPIConverter.generateResponse,
|
|
61
|
+
generateReference: OpenAPIConverter.generateSchemaReference
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* TypeScript utilities
|
|
66
|
+
*/
|
|
67
|
+
TypeScript: {
|
|
68
|
+
generateInterface: TypeScriptGenerator.generateInterface,
|
|
69
|
+
generateUtilityTypes: TypeScriptGenerator.generateUtilityTypes,
|
|
70
|
+
generateValidationTypes: TypeScriptGenerator.generateValidationTypes,
|
|
71
|
+
generateModule: TypeScriptGenerator.generateModule,
|
|
72
|
+
generateJSDoc: TypeScriptGenerator.generateJSDoc
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Extension utilities for common use cases
|
|
78
|
+
*/
|
|
79
|
+
export const ExtensionUtils = {
|
|
80
|
+
/**
|
|
81
|
+
* Check if extensions are available
|
|
82
|
+
*/
|
|
83
|
+
isAvailable(): boolean {
|
|
84
|
+
return true;
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Get list of available extensions
|
|
89
|
+
*/
|
|
90
|
+
getAvailableModules(): string[] {
|
|
91
|
+
return ['ValidationEngine', 'OpenAPIConverter', 'TypeScriptGenerator'];
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Get extension version information
|
|
96
|
+
*/
|
|
97
|
+
getVersionInfo(): ExtensionVersionInfo {
|
|
98
|
+
return {
|
|
99
|
+
version: '2.0.0',
|
|
100
|
+
architecture: '',
|
|
101
|
+
modules: {
|
|
102
|
+
ValidationEngine: '2.0.0',
|
|
103
|
+
OpenAPIConverter: '2.0.0',
|
|
104
|
+
TypeScriptGenerator: '2.0.0'
|
|
105
|
+
},
|
|
106
|
+
features: [
|
|
107
|
+
' architecture for better maintainability',
|
|
108
|
+
'Real validation engine with comprehensive type checking',
|
|
109
|
+
'Full OpenAPI 3.0 specification generation',
|
|
110
|
+
'Advanced TypeScript code generation',
|
|
111
|
+
'Utility type generation',
|
|
112
|
+
'JSDoc documentation generation'
|
|
113
|
+
]
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Type definitions
|
|
120
|
+
*/
|
|
121
|
+
interface ExtensionVersionInfo {
|
|
122
|
+
version: string;
|
|
123
|
+
architecture: string;
|
|
124
|
+
modules: Record<string, string>;
|
|
125
|
+
features: string[];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Default export - Extensions bundle
|
|
130
|
+
*/
|
|
131
|
+
export default Extensions;
|