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,211 @@
|
|
|
1
|
+
# ReliantType Performance Report
|
|
2
|
+
|
|
3
|
+
## 📊 Executive Summary
|
|
4
|
+
|
|
5
|
+
**Generated:** 7/18/2025, 8:19:17 AM
|
|
6
|
+
**Node.js Version:** v24.3.0
|
|
7
|
+
**Platform:** linux (x64)
|
|
8
|
+
**ReliantType Version:** 2.0.21
|
|
9
|
+
|
|
10
|
+
### 🏆 Performance Highlights
|
|
11
|
+
|
|
12
|
+
| Metric | Value |
|
|
13
|
+
|--------|-------|
|
|
14
|
+
| **Total Test Suites** | 6 |
|
|
15
|
+
| **Fastest Operation** | Basic Types (496,131.184 ops/sec) |
|
|
16
|
+
| **Most Consistent** | Union Types (5.8% CV) |
|
|
17
|
+
| **Memory Efficiency** | 1.42 KB per schema |
|
|
18
|
+
|
|
19
|
+
### 💾 Memory Usage
|
|
20
|
+
|
|
21
|
+
- **Total Memory Used:** 2.78 MB
|
|
22
|
+
- **Schemas Created:** 2,000
|
|
23
|
+
- **Memory Per Schema:** 1.42 KB
|
|
24
|
+
|
|
25
|
+
## 📋 Detailed Performance Results
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### 1. Basic Types
|
|
29
|
+
|
|
30
|
+
**Performance Metrics:**
|
|
31
|
+
- **Operations/Second:** 496,131.184 ops/sec
|
|
32
|
+
- **Average Time/Op:** 2.02 μs
|
|
33
|
+
- **Median Time:** 100.78 ms
|
|
34
|
+
|
|
35
|
+
**Reliability Metrics:**
|
|
36
|
+
- **Success Rate:** 100.0%
|
|
37
|
+
- **Coefficient of Variation:** 32.3%
|
|
38
|
+
- **Time Range:** 88.70 - 188.94 ms
|
|
39
|
+
|
|
40
|
+
| Metric | Value |
|
|
41
|
+
|--------|-------|
|
|
42
|
+
| **Iterations** | 50,000 |
|
|
43
|
+
| **Median Time** | 100.78 ms |
|
|
44
|
+
| **Mean Time** | 124.86 ms |
|
|
45
|
+
| **Std Deviation** | 40.36 ms |
|
|
46
|
+
| **Min Time** | 88.70 ms |
|
|
47
|
+
| **Max Time** | 188.94 ms |
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### 2. Complex Nested
|
|
51
|
+
|
|
52
|
+
**Performance Metrics:**
|
|
53
|
+
- **Operations/Second:** 12,443.531 ops/sec
|
|
54
|
+
- **Average Time/Op:** 80.36 μs
|
|
55
|
+
- **Median Time:** 401.82 ms
|
|
56
|
+
|
|
57
|
+
**Reliability Metrics:**
|
|
58
|
+
- **Success Rate:** 100.0%
|
|
59
|
+
- **Coefficient of Variation:** 10.8%
|
|
60
|
+
- **Time Range:** 345.57 - 484.38 ms
|
|
61
|
+
|
|
62
|
+
| Metric | Value |
|
|
63
|
+
|--------|-------|
|
|
64
|
+
| **Iterations** | 5,000 |
|
|
65
|
+
| **Median Time** | 401.82 ms |
|
|
66
|
+
| **Mean Time** | 407.29 ms |
|
|
67
|
+
| **Std Deviation** | 44.08 ms |
|
|
68
|
+
| **Min Time** | 345.57 ms |
|
|
69
|
+
| **Max Time** | 484.38 ms |
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
### 3. Array Validation
|
|
73
|
+
|
|
74
|
+
**Performance Metrics:**
|
|
75
|
+
- **Operations/Second:** 147,805.966 ops/sec
|
|
76
|
+
- **Average Time/Op:** 6.77 μs
|
|
77
|
+
- **Median Time:** 54.13 ms
|
|
78
|
+
|
|
79
|
+
**Reliability Metrics:**
|
|
80
|
+
- **Success Rate:** 0.0%
|
|
81
|
+
- **Coefficient of Variation:** 34.5%
|
|
82
|
+
- **Time Range:** 38.10 - 98.61 ms
|
|
83
|
+
|
|
84
|
+
| Metric | Value |
|
|
85
|
+
|--------|-------|
|
|
86
|
+
| **Iterations** | 8,000 |
|
|
87
|
+
| **Median Time** | 54.13 ms |
|
|
88
|
+
| **Mean Time** | 57.39 ms |
|
|
89
|
+
| **Std Deviation** | 19.80 ms |
|
|
90
|
+
| **Min Time** | 38.10 ms |
|
|
91
|
+
| **Max Time** | 98.61 ms |
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
### 4. Union Types
|
|
95
|
+
|
|
96
|
+
**Performance Metrics:**
|
|
97
|
+
- **Operations/Second:** 130,063.973 ops/sec
|
|
98
|
+
- **Average Time/Op:** 7.69 μs
|
|
99
|
+
- **Median Time:** 153.77 ms
|
|
100
|
+
|
|
101
|
+
**Reliability Metrics:**
|
|
102
|
+
- **Success Rate:** 100.0%
|
|
103
|
+
- **Coefficient of Variation:** 5.8%
|
|
104
|
+
- **Time Range:** 145.57 - 177.70 ms
|
|
105
|
+
|
|
106
|
+
| Metric | Value |
|
|
107
|
+
|--------|-------|
|
|
108
|
+
| **Iterations** | 20,000 |
|
|
109
|
+
| **Median Time** | 153.77 ms |
|
|
110
|
+
| **Mean Time** | 156.50 ms |
|
|
111
|
+
| **Std Deviation** | 9.14 ms |
|
|
112
|
+
| **Min Time** | 145.57 ms |
|
|
113
|
+
| **Max Time** | 177.70 ms |
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
### 5. Conditional Logic
|
|
117
|
+
|
|
118
|
+
**Performance Metrics:**
|
|
119
|
+
- **Operations/Second:** 13,833.264 ops/sec
|
|
120
|
+
- **Average Time/Op:** 72.29 μs
|
|
121
|
+
- **Median Time:** 1084.34 ms
|
|
122
|
+
|
|
123
|
+
**Reliability Metrics:**
|
|
124
|
+
- **Success Rate:** 0.0%
|
|
125
|
+
- **Coefficient of Variation:** 13.1%
|
|
126
|
+
- **Time Range:** 924.03 - 1443.54 ms
|
|
127
|
+
|
|
128
|
+
| Metric | Value |
|
|
129
|
+
|--------|-------|
|
|
130
|
+
| **Iterations** | 15,000 |
|
|
131
|
+
| **Median Time** | 1084.34 ms |
|
|
132
|
+
| **Mean Time** | 1078.61 ms |
|
|
133
|
+
| **Std Deviation** | 140.92 ms |
|
|
134
|
+
| **Min Time** | 924.03 ms |
|
|
135
|
+
| **Max Time** | 1443.54 ms |
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
### 6. Format Validation
|
|
139
|
+
|
|
140
|
+
**Performance Metrics:**
|
|
141
|
+
- **Operations/Second:** 90,788.957 ops/sec
|
|
142
|
+
- **Average Time/Op:** 11.01 μs
|
|
143
|
+
- **Median Time:** 132.17 ms
|
|
144
|
+
|
|
145
|
+
**Reliability Metrics:**
|
|
146
|
+
- **Success Rate:** 100.0%
|
|
147
|
+
- **Coefficient of Variation:** 22.8%
|
|
148
|
+
- **Time Range:** 109.13 - 216.44 ms
|
|
149
|
+
|
|
150
|
+
| Metric | Value |
|
|
151
|
+
|--------|-------|
|
|
152
|
+
| **Iterations** | 12,000 |
|
|
153
|
+
| **Median Time** | 132.17 ms |
|
|
154
|
+
| **Mean Time** | 132.19 ms |
|
|
155
|
+
| **Std Deviation** | 30.17 ms |
|
|
156
|
+
| **Min Time** | 109.13 ms |
|
|
157
|
+
| **Max Time** | 216.44 ms |
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
## 🎯 Performance Analysis
|
|
161
|
+
|
|
162
|
+
### Key Findings
|
|
163
|
+
|
|
164
|
+
1. **Conditional Validation Performance**: The unique conditional validation feature maintains competitive performance while adding significant functionality.
|
|
165
|
+
|
|
166
|
+
2. **Format Validation**: Regular expression-based validations show consistent performance across different pattern complexities.
|
|
167
|
+
|
|
168
|
+
3. **Scaling Characteristics**: Performance scales predictably with data size and schema complexity.
|
|
169
|
+
|
|
170
|
+
4. **Memory Efficiency**: Linear memory scaling with reasonable per-schema overhead.
|
|
171
|
+
|
|
172
|
+
### Performance Characteristics by Test Type
|
|
173
|
+
|
|
174
|
+
- **Basic Types**: 496,131.184 ops/sec (32.3% variation)
|
|
175
|
+
- **Complex Nested**: 12,443.531 ops/sec (10.8% variation)
|
|
176
|
+
- **Array Validation**: 147,805.966 ops/sec (34.5% variation)
|
|
177
|
+
- **Union Types**: 130,063.973 ops/sec (5.8% variation)
|
|
178
|
+
- **Conditional Logic**: 13,833.264 ops/sec (13.1% variation)
|
|
179
|
+
- **Format Validation**: 90,788.957 ops/sec (22.8% variation)
|
|
180
|
+
|
|
181
|
+
## 🔧 Technical Details
|
|
182
|
+
|
|
183
|
+
### Test Environment
|
|
184
|
+
- **Node.js:** v24.3.0
|
|
185
|
+
- **Platform:** linux
|
|
186
|
+
- **Architecture:** x64
|
|
187
|
+
- **Test Type:** standalone-performance
|
|
188
|
+
|
|
189
|
+
### Methodology
|
|
190
|
+
- **Warm-up:** 1000 iterations per test to ensure JIT optimization
|
|
191
|
+
- **Statistical Analysis:** 10 runs per test with median reporting
|
|
192
|
+
- **Memory Testing:** Multiple schema creation patterns
|
|
193
|
+
- **Scaling Analysis:** Variable data sizes from 10 to 5000 items
|
|
194
|
+
|
|
195
|
+
### Unique Features Tested
|
|
196
|
+
- **Conditional Validation:** Runtime property checking with `when` syntax
|
|
197
|
+
- **Format Validation:** Email, URL, phone, UUID, and regex patterns
|
|
198
|
+
- **Complex Nesting:** Deep object validation with multiple levels
|
|
199
|
+
- **Array Validation:** Dynamic array sizing and type constraints
|
|
200
|
+
|
|
201
|
+
## 📝 Notes
|
|
202
|
+
|
|
203
|
+
- Results reflect core validation performance under controlled conditions
|
|
204
|
+
- Memory usage includes schema compilation and runtime overhead
|
|
205
|
+
- Conditional validation adds minimal performance overhead for significant functionality gains
|
|
206
|
+
- Performance may vary based on data complexity and validation requirements
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
*Generated automatically by the ReliantType benchmark suite*
|
|
211
|
+
*Last updated: 7/18/2025, 8:19:17 AM*
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"timestamp": "2025-07-18T08:19:17.534Z",
|
|
4
|
+
"nodeVersion": "v24.3.0",
|
|
5
|
+
"platform": "linux",
|
|
6
|
+
"arch": "x64",
|
|
7
|
+
"fortifyVersion": "2.0.21",
|
|
8
|
+
"testType": "standalone-performance"
|
|
9
|
+
},
|
|
10
|
+
"summary": {
|
|
11
|
+
"totalTests": 6,
|
|
12
|
+
"fastestTest": {
|
|
13
|
+
"name": "Basic Types",
|
|
14
|
+
"iterations": 50000,
|
|
15
|
+
"median": 100.77979699999992,
|
|
16
|
+
"mean": 124.8620427,
|
|
17
|
+
"std": 40.36453915326238,
|
|
18
|
+
"min": 88.70023300000003,
|
|
19
|
+
"max": 188.9411030000001,
|
|
20
|
+
"avgTimePerOp": 0.002015595939999998,
|
|
21
|
+
"operationsPerSecond": 496131.18391179177,
|
|
22
|
+
"successRate": 100,
|
|
23
|
+
"coefficientOfVariation": 32.327309629431824
|
|
24
|
+
},
|
|
25
|
+
"mostConsistent": {
|
|
26
|
+
"name": "Union Types",
|
|
27
|
+
"iterations": 20000,
|
|
28
|
+
"median": 153.77048300000024,
|
|
29
|
+
"mean": 156.50413840000002,
|
|
30
|
+
"std": 9.143031275966724,
|
|
31
|
+
"min": 145.56904900000063,
|
|
32
|
+
"max": 177.70391199999995,
|
|
33
|
+
"avgTimePerOp": 0.007688524150000012,
|
|
34
|
+
"operationsPerSecond": 130063.97333095435,
|
|
35
|
+
"successRate": 100,
|
|
36
|
+
"coefficientOfVariation": 5.842038024961724
|
|
37
|
+
},
|
|
38
|
+
"memoryUsage": {
|
|
39
|
+
"totalMB": 2.7825021743774414,
|
|
40
|
+
"schemasCreated": 2000,
|
|
41
|
+
"memoryPerSchemaKB": 1.42464111328125
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"detailedResults": [
|
|
45
|
+
{
|
|
46
|
+
"testName": "Basic Types",
|
|
47
|
+
"iterations": 50000,
|
|
48
|
+
"performance": {
|
|
49
|
+
"operationsPerSecond": 496131.18391179177,
|
|
50
|
+
"avgTimePerOpMs": 0.002015595939999998,
|
|
51
|
+
"medianTimeMs": 100.77979699999992,
|
|
52
|
+
"meanTimeMs": 124.8620427
|
|
53
|
+
},
|
|
54
|
+
"reliability": {
|
|
55
|
+
"standardDeviationMs": 40.36453915326238,
|
|
56
|
+
"coefficientOfVariation": 32.327309629431824,
|
|
57
|
+
"minTimeMs": 88.70023300000003,
|
|
58
|
+
"maxTimeMs": 188.9411030000001,
|
|
59
|
+
"successRate": 100
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"testName": "Complex Nested",
|
|
64
|
+
"iterations": 5000,
|
|
65
|
+
"performance": {
|
|
66
|
+
"operationsPerSecond": 12443.531317100646,
|
|
67
|
+
"avgTimePerOpMs": 0.08036303960000005,
|
|
68
|
+
"medianTimeMs": 401.81519800000024,
|
|
69
|
+
"meanTimeMs": 407.28758210000007
|
|
70
|
+
},
|
|
71
|
+
"reliability": {
|
|
72
|
+
"standardDeviationMs": 44.081113162774365,
|
|
73
|
+
"coefficientOfVariation": 10.823092846457387,
|
|
74
|
+
"minTimeMs": 345.57275200000004,
|
|
75
|
+
"maxTimeMs": 484.38353800000027,
|
|
76
|
+
"successRate": 100
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"testName": "Array Validation",
|
|
81
|
+
"iterations": 8000,
|
|
82
|
+
"performance": {
|
|
83
|
+
"operationsPerSecond": 147805.96638737075,
|
|
84
|
+
"avgTimePerOpMs": 0.006765626750000024,
|
|
85
|
+
"medianTimeMs": 54.12501400000019,
|
|
86
|
+
"meanTimeMs": 57.39228440000024
|
|
87
|
+
},
|
|
88
|
+
"reliability": {
|
|
89
|
+
"standardDeviationMs": 19.797747163451515,
|
|
90
|
+
"coefficientOfVariation": 34.49548553507557,
|
|
91
|
+
"minTimeMs": 38.095392000000174,
|
|
92
|
+
"maxTimeMs": 98.61152699999911,
|
|
93
|
+
"successRate": 0
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"testName": "Union Types",
|
|
98
|
+
"iterations": 20000,
|
|
99
|
+
"performance": {
|
|
100
|
+
"operationsPerSecond": 130063.97333095435,
|
|
101
|
+
"avgTimePerOpMs": 0.007688524150000012,
|
|
102
|
+
"medianTimeMs": 153.77048300000024,
|
|
103
|
+
"meanTimeMs": 156.50413840000002
|
|
104
|
+
},
|
|
105
|
+
"reliability": {
|
|
106
|
+
"standardDeviationMs": 9.143031275966724,
|
|
107
|
+
"coefficientOfVariation": 5.842038024961724,
|
|
108
|
+
"minTimeMs": 145.56904900000063,
|
|
109
|
+
"maxTimeMs": 177.70391199999995,
|
|
110
|
+
"successRate": 100
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"testName": "Conditional Logic",
|
|
115
|
+
"iterations": 15000,
|
|
116
|
+
"performance": {
|
|
117
|
+
"operationsPerSecond": 13833.264244632099,
|
|
118
|
+
"avgTimePerOpMs": 0.07228951766666662,
|
|
119
|
+
"medianTimeMs": 1084.3427649999994,
|
|
120
|
+
"meanTimeMs": 1078.6061701999997
|
|
121
|
+
},
|
|
122
|
+
"reliability": {
|
|
123
|
+
"standardDeviationMs": 140.92447308897908,
|
|
124
|
+
"coefficientOfVariation": 13.065424339529624,
|
|
125
|
+
"minTimeMs": 924.0281079999986,
|
|
126
|
+
"maxTimeMs": 1443.5429700000004,
|
|
127
|
+
"successRate": 0
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"testName": "Format Validation",
|
|
132
|
+
"iterations": 12000,
|
|
133
|
+
"performance": {
|
|
134
|
+
"operationsPerSecond": 90788.95717269111,
|
|
135
|
+
"avgTimePerOpMs": 0.011014555416666856,
|
|
136
|
+
"medianTimeMs": 132.17466500000228,
|
|
137
|
+
"meanTimeMs": 132.18898519999965
|
|
138
|
+
},
|
|
139
|
+
"reliability": {
|
|
140
|
+
"standardDeviationMs": 30.17182710625554,
|
|
141
|
+
"coefficientOfVariation": 22.824766421049446,
|
|
142
|
+
"minTimeMs": 109.12656799999968,
|
|
143
|
+
"maxTimeMs": 216.44466499999908,
|
|
144
|
+
"successRate": 100
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance comparison between optimized and original implementations
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { Interface } from "../core/schema/mode/interfaces/Interface";
|
|
6
|
+
import { ConstraintParser } from "../core/schema/mode/interfaces/validators/ConstraintParser";
|
|
7
|
+
|
|
8
|
+
console.log("=== PERFORMANCE COMPARISON ===\n");
|
|
9
|
+
|
|
10
|
+
// Test schema
|
|
11
|
+
const testSchema = Interface({
|
|
12
|
+
id: "positive",
|
|
13
|
+
email: "email",
|
|
14
|
+
name: "string(2,50)",
|
|
15
|
+
age: "int(18,120)?",
|
|
16
|
+
tags: "string[](1,10)?",
|
|
17
|
+
status: "active|inactive|pending",
|
|
18
|
+
metadata: {
|
|
19
|
+
created: "date",
|
|
20
|
+
updated: "date?",
|
|
21
|
+
version: "string",
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// Test data
|
|
26
|
+
const testData: any = {
|
|
27
|
+
id: 1,
|
|
28
|
+
email: "test@example.com",
|
|
29
|
+
name: "John Doe",
|
|
30
|
+
age: 25,
|
|
31
|
+
tags: ["developer", "typescript", "nodejs"],
|
|
32
|
+
status: "active",
|
|
33
|
+
metadata: {
|
|
34
|
+
created: new Date(),
|
|
35
|
+
updated: new Date(),
|
|
36
|
+
version: "1.0.0",
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
console.log("1. Constraint Parser Cache Performance:");
|
|
41
|
+
|
|
42
|
+
// Test constraint parsing performance
|
|
43
|
+
const constraintTypes = [
|
|
44
|
+
"string(2,50)",
|
|
45
|
+
"int(18,120)?",
|
|
46
|
+
"string[](1,10)?",
|
|
47
|
+
"email",
|
|
48
|
+
"positive",
|
|
49
|
+
"active|inactive|pending",
|
|
50
|
+
];
|
|
51
|
+
|
|
52
|
+
// First run (cache miss)
|
|
53
|
+
const startParse1 = performance.now();
|
|
54
|
+
for (let i = 0; i < 10000; i++) {
|
|
55
|
+
for (const type of constraintTypes) {
|
|
56
|
+
ConstraintParser.parseConstraints(type);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const endParse1 = performance.now();
|
|
60
|
+
|
|
61
|
+
// Clear cache and run again
|
|
62
|
+
ConstraintParser.clearCache();
|
|
63
|
+
|
|
64
|
+
// Second run (cache miss again)
|
|
65
|
+
const startParse2 = performance.now();
|
|
66
|
+
for (let i = 0; i < 10000; i++) {
|
|
67
|
+
for (const type of constraintTypes) {
|
|
68
|
+
ConstraintParser.parseConstraints(type);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const endParse2 = performance.now();
|
|
72
|
+
|
|
73
|
+
// Third run (cache hit)
|
|
74
|
+
const startParse3 = performance.now();
|
|
75
|
+
for (let i = 0; i < 10000; i++) {
|
|
76
|
+
for (const type of constraintTypes) {
|
|
77
|
+
ConstraintParser.parseConstraints(type);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const endParse3 = performance.now();
|
|
81
|
+
|
|
82
|
+
console.log(`First run (no cache): ${(endParse1 - startParse1).toFixed(2)}ms`);
|
|
83
|
+
console.log(`Second run (no cache): ${(endParse2 - startParse2).toFixed(2)}ms`);
|
|
84
|
+
console.log(
|
|
85
|
+
`Third run (with cache): ${(endParse3 - startParse3).toFixed(2)}ms`
|
|
86
|
+
);
|
|
87
|
+
console.log(
|
|
88
|
+
`Cache speedup: ${((endParse2 - startParse2) / (endParse3 - startParse3)).toFixed(2)}x`
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
console.log("\n2. Schema Validation Performance:");
|
|
92
|
+
|
|
93
|
+
// Warm up
|
|
94
|
+
for (let i = 0; i < 1000; i++) {
|
|
95
|
+
testSchema.safeParse(testData);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Test different data sizes
|
|
99
|
+
const testSizes = [1000, 5000, 10000];
|
|
100
|
+
|
|
101
|
+
for (const size of testSizes) {
|
|
102
|
+
const startTime = performance.now();
|
|
103
|
+
|
|
104
|
+
for (let i = 0; i < size; i++) {
|
|
105
|
+
testSchema.safeParse(testData);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const endTime = performance.now();
|
|
109
|
+
const totalTime = endTime - startTime;
|
|
110
|
+
const avgTime = totalTime / size;
|
|
111
|
+
const opsPerSec = size / (totalTime / 1000);
|
|
112
|
+
|
|
113
|
+
console.log(
|
|
114
|
+
`${size} validations: ${totalTime.toFixed(2)}ms (${avgTime.toFixed(4)}ms avg, ${opsPerSec.toFixed(0)} ops/sec)`
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
console.log("\n3. Memory Usage Test:");
|
|
119
|
+
|
|
120
|
+
// Test memory usage with many validations
|
|
121
|
+
const memBefore = process.memoryUsage();
|
|
122
|
+
|
|
123
|
+
for (let i = 0; i < 50000; i++) {
|
|
124
|
+
testSchema.safeParse(testData);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const memAfter = process.memoryUsage();
|
|
128
|
+
const memDiff = memAfter.heapUsed - memBefore.heapUsed;
|
|
129
|
+
|
|
130
|
+
console.log(
|
|
131
|
+
`Memory used for 50,000 validations: ${(memDiff / 1024 / 1024).toFixed(2)} MB`
|
|
132
|
+
);
|
|
133
|
+
console.log(`Memory per validation: ${(memDiff / 50000).toFixed(0)} bytes`);
|
|
134
|
+
|
|
135
|
+
console.log("\n4. Cache Statistics:");
|
|
136
|
+
|
|
137
|
+
const cacheStats = ConstraintParser.getCacheStats();
|
|
138
|
+
console.log(`Constraint parser cache size: ${cacheStats.size} entries`);
|
|
139
|
+
|
|
140
|
+
console.log("\n5. Complex Schema Performance:");
|
|
141
|
+
|
|
142
|
+
// Test with a more complex schema
|
|
143
|
+
const complexSchema = Interface({
|
|
144
|
+
user: {
|
|
145
|
+
id: "positive",
|
|
146
|
+
profile: {
|
|
147
|
+
name: "string(2,100)",
|
|
148
|
+
email: "email",
|
|
149
|
+
phone: "phone?",
|
|
150
|
+
address: {
|
|
151
|
+
street: "string",
|
|
152
|
+
city: "string",
|
|
153
|
+
country: "string",
|
|
154
|
+
zipCode: "string",
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
preferences: {
|
|
158
|
+
theme: "light|dark",
|
|
159
|
+
notifications: "boolean",
|
|
160
|
+
language: "string(2,5)",
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
permissions: "when user.profile.email~@admin *? string[] : string[]?",
|
|
164
|
+
metadata: {
|
|
165
|
+
created: "date",
|
|
166
|
+
updated: "date?",
|
|
167
|
+
tags: "string[](0,20)?",
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
const complexData: any = {
|
|
172
|
+
user: {
|
|
173
|
+
id: 1,
|
|
174
|
+
profile: {
|
|
175
|
+
name: "John Doe",
|
|
176
|
+
email: "john@example.com",
|
|
177
|
+
phone: "+1234567890",
|
|
178
|
+
address: {
|
|
179
|
+
street: "123 Main St",
|
|
180
|
+
city: "New York",
|
|
181
|
+
country: "USA",
|
|
182
|
+
zipCode: "10001",
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
preferences: {
|
|
186
|
+
theme: "dark",
|
|
187
|
+
notifications: true,
|
|
188
|
+
language: "en",
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
metadata: {
|
|
192
|
+
created: new Date(),
|
|
193
|
+
updated: new Date(),
|
|
194
|
+
tags: ["user", "premium", "verified"],
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
const complexIterations = 5000;
|
|
199
|
+
const complexStart = performance.now();
|
|
200
|
+
|
|
201
|
+
for (let i = 0; i < complexIterations; i++) {
|
|
202
|
+
complexSchema.safeParse(complexData);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const complexEnd = performance.now();
|
|
206
|
+
const complexTime = complexEnd - complexStart;
|
|
207
|
+
const complexAvg = complexTime / complexIterations;
|
|
208
|
+
const complexOps = complexIterations / (complexTime / 1000);
|
|
209
|
+
|
|
210
|
+
console.log(
|
|
211
|
+
`Complex schema (${complexIterations} validations): ${complexTime.toFixed(2)}ms`
|
|
212
|
+
);
|
|
213
|
+
console.log(
|
|
214
|
+
`Complex schema average: ${complexAvg.toFixed(4)}ms per validation`
|
|
215
|
+
);
|
|
216
|
+
console.log(`Complex schema ops/sec: ${complexOps.toFixed(0)}`);
|
|
217
|
+
|
|
218
|
+
console.log("\nPerformance comparison completed! 📊");
|