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,210 @@
|
|
|
1
|
+
import { ConditionalNode } from "../schema/mode/interfaces/conditional/types/ConditionalTypes";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Constant value wrapper to distinguish from string types
|
|
5
|
+
*/
|
|
6
|
+
export interface ConstantValue {
|
|
7
|
+
const: string | number | boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Union value wrapper for proper type inference
|
|
12
|
+
*/
|
|
13
|
+
export interface UnionValue<T extends readonly string[] = readonly string[]> {
|
|
14
|
+
union: T;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Optional constant value wrapper
|
|
19
|
+
*/
|
|
20
|
+
export interface OptionalConstantValue {
|
|
21
|
+
const: string | number | boolean;
|
|
22
|
+
optional: true;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Optional schema interface wrapper
|
|
27
|
+
*/
|
|
28
|
+
export interface OptionalSchemaInterface {
|
|
29
|
+
optional: true;
|
|
30
|
+
schema: SchemaInterface;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Schema definition using TypeScript-like interface syntax
|
|
35
|
+
*/
|
|
36
|
+
export interface SchemaInterface {
|
|
37
|
+
[key: string]:
|
|
38
|
+
| SchemaFieldType
|
|
39
|
+
| ConstantValue
|
|
40
|
+
| OptionalConstantValue
|
|
41
|
+
| SchemaInterface
|
|
42
|
+
| SchemaInterface[]
|
|
43
|
+
| any;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Field type definitions using string literals and objects
|
|
48
|
+
*/
|
|
49
|
+
export type SchemaFieldType =
|
|
50
|
+
// Basic types
|
|
51
|
+
| "string"
|
|
52
|
+
| "string?"
|
|
53
|
+
| "number"
|
|
54
|
+
| "number?"
|
|
55
|
+
| "boolean"
|
|
56
|
+
| "boolean?"
|
|
57
|
+
| "date"
|
|
58
|
+
| "date?"
|
|
59
|
+
| "any"
|
|
60
|
+
| "any?"
|
|
61
|
+
|
|
62
|
+
// String formats
|
|
63
|
+
| "email"
|
|
64
|
+
| "email?"
|
|
65
|
+
| "url"
|
|
66
|
+
| "url?"
|
|
67
|
+
| "uuid"
|
|
68
|
+
| "uuid?"
|
|
69
|
+
| "phone"
|
|
70
|
+
| "phone?"
|
|
71
|
+
| "slug"
|
|
72
|
+
| "slug?"
|
|
73
|
+
| "username"
|
|
74
|
+
| "username?"
|
|
75
|
+
| "ip"
|
|
76
|
+
| "ip?"
|
|
77
|
+
| "json"
|
|
78
|
+
| "json?"
|
|
79
|
+
| "json.fast"
|
|
80
|
+
| "json.fast?"
|
|
81
|
+
| "json.secure"
|
|
82
|
+
| "json.secure?"
|
|
83
|
+
| "password"
|
|
84
|
+
| "password?"
|
|
85
|
+
| "text"
|
|
86
|
+
| "text?"
|
|
87
|
+
| "hexcolor"
|
|
88
|
+
| "hexcolor?"
|
|
89
|
+
| "base64"
|
|
90
|
+
| "base64?"
|
|
91
|
+
| "jwt"
|
|
92
|
+
| "jwt?"
|
|
93
|
+
| "semver"
|
|
94
|
+
| "semver?"
|
|
95
|
+
|
|
96
|
+
// Object types
|
|
97
|
+
| "object"
|
|
98
|
+
| "object?"
|
|
99
|
+
|
|
100
|
+
// Number types
|
|
101
|
+
| "int"
|
|
102
|
+
| "int?"
|
|
103
|
+
| "positive"
|
|
104
|
+
| "positive?"
|
|
105
|
+
| "float"
|
|
106
|
+
| "float?"
|
|
107
|
+
|
|
108
|
+
// Array types
|
|
109
|
+
| "string[]"
|
|
110
|
+
| "string[]?"
|
|
111
|
+
| "number[]"
|
|
112
|
+
| "number[]?"
|
|
113
|
+
| "boolean[]"
|
|
114
|
+
| "boolean[]?"
|
|
115
|
+
| "int[]"
|
|
116
|
+
| "int[]?"
|
|
117
|
+
| "email[]"
|
|
118
|
+
| "email[]?"
|
|
119
|
+
| "url[]"
|
|
120
|
+
| "url[]?"
|
|
121
|
+
| "ip[]"
|
|
122
|
+
| "ip[]?"
|
|
123
|
+
| "json[]"
|
|
124
|
+
| "json[]?"
|
|
125
|
+
| "json.fast[]"
|
|
126
|
+
| "json.fast[]?"
|
|
127
|
+
// | "json.secure[]"
|
|
128
|
+
// | "json.secure[]?"
|
|
129
|
+
| "password[]"
|
|
130
|
+
| "password[]?"
|
|
131
|
+
| "text[]"
|
|
132
|
+
| "text[]?"
|
|
133
|
+
| "object[]"
|
|
134
|
+
| "object[]?"
|
|
135
|
+
| "hexcolor[]"
|
|
136
|
+
| "hexcolor[]?"
|
|
137
|
+
| "base64[]"
|
|
138
|
+
| "base64[]?"
|
|
139
|
+
| "jwt[]"
|
|
140
|
+
| "jwt[]?"
|
|
141
|
+
| "semver[]"
|
|
142
|
+
| "semver[]?"
|
|
143
|
+
|
|
144
|
+
// Union types (multiple allowed values)
|
|
145
|
+
| string // For union syntax like "pending|accepted|rejected"
|
|
146
|
+
|
|
147
|
+
// Constant values
|
|
148
|
+
| ConstantValue
|
|
149
|
+
| OptionalConstantValue
|
|
150
|
+
|
|
151
|
+
// Union values
|
|
152
|
+
| UnionValue
|
|
153
|
+
|
|
154
|
+
// Nested objects and arrays
|
|
155
|
+
| SchemaInterface
|
|
156
|
+
| SchemaInterface[]
|
|
157
|
+
| OptionalSchemaInterface;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Schema validation options for fine-tuning
|
|
161
|
+
*/
|
|
162
|
+
export interface SchemaOptions {
|
|
163
|
+
// String options
|
|
164
|
+
minLength?: number;
|
|
165
|
+
maxLength?: number;
|
|
166
|
+
pattern?: RegExp;
|
|
167
|
+
|
|
168
|
+
// Number options
|
|
169
|
+
min?: number;
|
|
170
|
+
max?: number;
|
|
171
|
+
precision?: number;
|
|
172
|
+
|
|
173
|
+
// Array options
|
|
174
|
+
minItems?: number;
|
|
175
|
+
maxItems?: number;
|
|
176
|
+
unique?: boolean;
|
|
177
|
+
|
|
178
|
+
// Object options
|
|
179
|
+
strict?: boolean;
|
|
180
|
+
allowUnknown?: boolean;
|
|
181
|
+
|
|
182
|
+
// General options
|
|
183
|
+
required?: boolean;
|
|
184
|
+
default?: any;
|
|
185
|
+
loose?: boolean; // Allow type coercion (opposite of strict)
|
|
186
|
+
|
|
187
|
+
// Performance options
|
|
188
|
+
enablePerformanceMonitoring?: boolean;
|
|
189
|
+
enableOptimizations?: boolean;
|
|
190
|
+
cacheValidation?: boolean;
|
|
191
|
+
skipOptimization?: boolean; // Skip optimization to prevent circular dependency
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Helper type for schemas that allow unknown properties
|
|
195
|
+
export type AllowUnknownSchema<T> = T & Record<string, any>;
|
|
196
|
+
|
|
197
|
+
// Pre-compiled field definition for faster validation
|
|
198
|
+
export interface CompiledField {
|
|
199
|
+
key: string;
|
|
200
|
+
originalType: SchemaFieldType;
|
|
201
|
+
isString: boolean;
|
|
202
|
+
isConditional: boolean;
|
|
203
|
+
conditionalConfig?: any;
|
|
204
|
+
parsedConstraints?: any;
|
|
205
|
+
isArray?: boolean;
|
|
206
|
+
elementType?: string;
|
|
207
|
+
isOptional?: boolean;
|
|
208
|
+
// conditional validation
|
|
209
|
+
ConditionalAST?: ConditionalNode;
|
|
210
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { createEnum } from "../utils/arrayToEnum";
|
|
2
|
+
import { UrlArgArray } from "../utils/UrlArgs";
|
|
3
|
+
|
|
4
|
+
export const SUPPORTED_VALIDATOR_TYPES = [
|
|
5
|
+
"string",
|
|
6
|
+
"number",
|
|
7
|
+
"float",
|
|
8
|
+
"int",
|
|
9
|
+
"integer",
|
|
10
|
+
"positive",
|
|
11
|
+
"negative",
|
|
12
|
+
"double",
|
|
13
|
+
"boolean",
|
|
14
|
+
"bool",
|
|
15
|
+
"date",
|
|
16
|
+
"datetime",
|
|
17
|
+
"timestamp",
|
|
18
|
+
"email",
|
|
19
|
+
"uuid",
|
|
20
|
+
"guid",
|
|
21
|
+
"phone",
|
|
22
|
+
"slug",
|
|
23
|
+
"username",
|
|
24
|
+
"ip",
|
|
25
|
+
"password",
|
|
26
|
+
"text",
|
|
27
|
+
"json",
|
|
28
|
+
"json.fast",
|
|
29
|
+
"json.secure",
|
|
30
|
+
"object",
|
|
31
|
+
"unknown",
|
|
32
|
+
"void",
|
|
33
|
+
"null",
|
|
34
|
+
"undefined",
|
|
35
|
+
"any",
|
|
36
|
+
"hexcolor",
|
|
37
|
+
"base64",
|
|
38
|
+
"jwt",
|
|
39
|
+
"semver",
|
|
40
|
+
"record",
|
|
41
|
+
"array", // only in additionalValidTypes
|
|
42
|
+
] as const;
|
|
43
|
+
|
|
44
|
+
export const VALIDATOR_TYPES = createEnum(SUPPORTED_VALIDATOR_TYPES);
|
|
45
|
+
|
|
46
|
+
export const validatorTypeCategories = {
|
|
47
|
+
string: ["string"],
|
|
48
|
+
numeric: [
|
|
49
|
+
"number",
|
|
50
|
+
"float",
|
|
51
|
+
"int",
|
|
52
|
+
"integer",
|
|
53
|
+
"positive",
|
|
54
|
+
"negative",
|
|
55
|
+
"double",
|
|
56
|
+
],
|
|
57
|
+
boolean: ["boolean", "bool"],
|
|
58
|
+
datetime: ["date", "datetime", "timestamp"],
|
|
59
|
+
validation: [
|
|
60
|
+
"email",
|
|
61
|
+
"uuid",
|
|
62
|
+
"guid",
|
|
63
|
+
"phone",
|
|
64
|
+
"slug",
|
|
65
|
+
"username",
|
|
66
|
+
"ip",
|
|
67
|
+
"password",
|
|
68
|
+
],
|
|
69
|
+
content: ["text", "json", "json.fast", "json.secure", "object"],
|
|
70
|
+
special: ["unknown", "void", "null", "undefined", "any"],
|
|
71
|
+
extended: ["hexcolor", "base64", "jwt", "semver"],
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export const BASE_TYPES = [
|
|
75
|
+
"string",
|
|
76
|
+
"number",
|
|
77
|
+
"boolean",
|
|
78
|
+
"date",
|
|
79
|
+
"uuid",
|
|
80
|
+
"email",
|
|
81
|
+
"url",
|
|
82
|
+
"phone",
|
|
83
|
+
"string[]",
|
|
84
|
+
"number[]",
|
|
85
|
+
"boolean[]",
|
|
86
|
+
"date[]",
|
|
87
|
+
"uuid[]",
|
|
88
|
+
"email[]",
|
|
89
|
+
"url[]",
|
|
90
|
+
"phone[]",
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
export const VALID_CONDITIONNAL_TYPES = BASE_TYPES.concat(UrlArgArray);
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* Type definitions
|
|
4
|
+
*/
|
|
5
|
+
interface DocumentationOptions {
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
examples?: boolean;
|
|
9
|
+
interactive?: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface OpenAPIOptions {
|
|
13
|
+
title: string;
|
|
14
|
+
version: string;
|
|
15
|
+
servers?: string[];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface TypeScriptOptions {
|
|
19
|
+
exportName?: string;
|
|
20
|
+
namespace?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface InteractiveOptions {
|
|
24
|
+
title?: string;
|
|
25
|
+
theme?: "light" | "dark";
|
|
26
|
+
showExamples?: boolean;
|
|
27
|
+
allowTesting?: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
interface Documentation {
|
|
31
|
+
markdown: string;
|
|
32
|
+
html: string;
|
|
33
|
+
openapi: OpenAPISpec;
|
|
34
|
+
json: any;
|
|
35
|
+
examples: any[];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface InteractiveDocumentation {
|
|
39
|
+
html: string;
|
|
40
|
+
css: string;
|
|
41
|
+
javascript: string;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
interface OpenAPISpec {
|
|
45
|
+
openapi: string;
|
|
46
|
+
info: {
|
|
47
|
+
title: string;
|
|
48
|
+
version: string;
|
|
49
|
+
};
|
|
50
|
+
servers?: Array<{ url: string }>;
|
|
51
|
+
components: {
|
|
52
|
+
schemas: Record<string, any>;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
interface SchemaAnalysis {
|
|
57
|
+
fields: FieldInfo[];
|
|
58
|
+
totalFields: number;
|
|
59
|
+
requiredFields: number;
|
|
60
|
+
optionalFields: number;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
interface FieldInfo {
|
|
64
|
+
name: string;
|
|
65
|
+
type: string;
|
|
66
|
+
required: boolean;
|
|
67
|
+
description: string;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
export type {
|
|
72
|
+
DocumentationOptions,
|
|
73
|
+
OpenAPIOptions,
|
|
74
|
+
TypeScriptOptions,
|
|
75
|
+
InteractiveOptions,
|
|
76
|
+
Documentation,
|
|
77
|
+
InteractiveDocumentation,
|
|
78
|
+
OpenAPISpec,
|
|
79
|
+
SchemaAnalysis,
|
|
80
|
+
FieldInfo
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Type definitions
|
|
88
|
+
*/
|
|
89
|
+
export interface ValidationResult {
|
|
90
|
+
isValid: boolean;
|
|
91
|
+
data: any;
|
|
92
|
+
errors: Record<string, string[]>;
|
|
93
|
+
timestamp: Date;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface FieldValidationResult {
|
|
97
|
+
field: string;
|
|
98
|
+
value: any;
|
|
99
|
+
isValid: boolean;
|
|
100
|
+
errors: string[];
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface ValidationStats {
|
|
104
|
+
totalValidated: number;
|
|
105
|
+
validCount: number;
|
|
106
|
+
invalidCount: number;
|
|
107
|
+
errorRate: number;
|
|
108
|
+
startTime: Date;
|
|
109
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SchemaValidationResult } from "./types";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
export interface CachedValidation {
|
|
5
|
+
result: SchemaValidationResult;
|
|
6
|
+
structureHash: string;
|
|
7
|
+
accessCount: number;
|
|
8
|
+
lastAccessed: number;
|
|
9
|
+
validationTime: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface ValidationPath {
|
|
13
|
+
path: string[];
|
|
14
|
+
validator: (value: any) => SchemaValidationResult;
|
|
15
|
+
isHotPath: boolean;
|
|
16
|
+
avgValidationTime: number;
|
|
17
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ParsedConstraints {
|
|
2
|
+
type: string;
|
|
3
|
+
constraints: any;
|
|
4
|
+
optional: boolean;
|
|
5
|
+
required: boolean; // Non-empty/non-zero validation
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export enum ConstraintType {
|
|
9
|
+
Min = "min",
|
|
10
|
+
Max = "max",
|
|
11
|
+
MinLength = "minLength",
|
|
12
|
+
MaxLength = "maxLength",
|
|
13
|
+
MinItems = "minItems",
|
|
14
|
+
MaxItems = "maxItems",
|
|
15
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
|
|
2
|
+
export interface PerformanceMetric {
|
|
3
|
+
operationId: string;
|
|
4
|
+
duration: number;
|
|
5
|
+
timestamp: number;
|
|
6
|
+
schemaComplexity: number;
|
|
7
|
+
cacheHit: boolean;
|
|
8
|
+
optimizationApplied?: string;
|
|
9
|
+
memoryUsage?: number;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface OptimizationRecommendation {
|
|
13
|
+
type: 'cache' | 'precompile' | 'restructure' | 'hotpath' | 'memory';
|
|
14
|
+
priority: 'low' | 'medium' | 'high' | 'critical';
|
|
15
|
+
description: string;
|
|
16
|
+
estimatedImprovement: number; // percentage
|
|
17
|
+
implementation: () => Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface PerformanceProfile {
|
|
21
|
+
averageDuration: number;
|
|
22
|
+
p95Duration: number;
|
|
23
|
+
p99Duration: number;
|
|
24
|
+
throughput: number; // ops/sec
|
|
25
|
+
cacheHitRate: number;
|
|
26
|
+
memoryUsage: number;
|
|
27
|
+
bottlenecks: string[];
|
|
28
|
+
recommendations: OptimizationRecommendation[];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface PerformanceThresholds {
|
|
32
|
+
slowOperationMs: number;
|
|
33
|
+
criticalOperationMs: number;
|
|
34
|
+
minCacheHitRate: number;
|
|
35
|
+
maxMemoryMB: number;
|
|
36
|
+
autoOptimizeThreshold: number;
|
|
37
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SchemaValidationResult } from "./types";
|
|
2
|
+
|
|
3
|
+
export interface CompiledValidator {
|
|
4
|
+
validate: (value: any) => SchemaValidationResult;
|
|
5
|
+
metadata: {
|
|
6
|
+
complexity: number;
|
|
7
|
+
fieldCount: number;
|
|
8
|
+
nestingLevel: number;
|
|
9
|
+
hasUnions: boolean;
|
|
10
|
+
hasArrays: boolean;
|
|
11
|
+
hasConditionals: boolean;
|
|
12
|
+
};
|
|
13
|
+
cacheKey: string;
|
|
14
|
+
compiledAt: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface OptimizationStrategy {
|
|
18
|
+
name: string;
|
|
19
|
+
condition: (metadata: CompiledValidator['metadata']) => boolean;
|
|
20
|
+
optimize: (validator: CompiledValidator) => CompiledValidator;
|
|
21
|
+
}
|
|
22
|
+
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core types and interfaces for the FortifyJS Schema system
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Rich validation error with detailed information
|
|
7
|
+
*/
|
|
8
|
+
export interface ValidationError {
|
|
9
|
+
/** Field path where the error occurred (e.g., ['user', 'profile', 'email']) */
|
|
10
|
+
path: string[];
|
|
11
|
+
/** Human-readable error message */
|
|
12
|
+
message: string;
|
|
13
|
+
/** Error code for programmatic handling */
|
|
14
|
+
code: string;
|
|
15
|
+
/** Expected value or type */
|
|
16
|
+
expected: string;
|
|
17
|
+
/** Actual received value */
|
|
18
|
+
received: any;
|
|
19
|
+
/** Type of the received value */
|
|
20
|
+
receivedType: string;
|
|
21
|
+
/** Additional context or suggestions */
|
|
22
|
+
context?: {
|
|
23
|
+
suggestion?: string;
|
|
24
|
+
allowedValues?: any[];
|
|
25
|
+
constraints?: Record<string, any>;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Schema validation result with rich error information
|
|
31
|
+
*/
|
|
32
|
+
export interface SchemaValidationResult<T = any> {
|
|
33
|
+
success: boolean;
|
|
34
|
+
data?: T;
|
|
35
|
+
errors: ValidationError[];
|
|
36
|
+
warnings: string[];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Base schema configuration options
|
|
41
|
+
*/
|
|
42
|
+
export interface BaseSchemaOptions {
|
|
43
|
+
optional?: boolean;
|
|
44
|
+
nullable?: boolean;
|
|
45
|
+
default?: any;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* String schema validation options
|
|
50
|
+
*/
|
|
51
|
+
export interface StringSchemaOptions extends BaseSchemaOptions {
|
|
52
|
+
minLength?: number;
|
|
53
|
+
maxLength?: number;
|
|
54
|
+
pattern?: RegExp;
|
|
55
|
+
format?: "email" | "url" | "uuid" | "phone" | "slug" | "username";
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Number schema validation options
|
|
60
|
+
*/
|
|
61
|
+
export interface NumberSchemaOptions extends BaseSchemaOptions {
|
|
62
|
+
min?: number;
|
|
63
|
+
max?: number;
|
|
64
|
+
integer?: boolean;
|
|
65
|
+
positive?: boolean;
|
|
66
|
+
precision?: number;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Boolean schema validation options
|
|
71
|
+
*/
|
|
72
|
+
export interface BooleanSchemaOptions extends BaseSchemaOptions {
|
|
73
|
+
strict?: boolean; // Only accept true boolean values
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Array schema validation options
|
|
78
|
+
*/
|
|
79
|
+
export interface ArraySchemaOptions extends BaseSchemaOptions {
|
|
80
|
+
minLength?: number;
|
|
81
|
+
maxLength?: number;
|
|
82
|
+
unique?: boolean;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Object schema validation options
|
|
87
|
+
*/
|
|
88
|
+
export interface ObjectSchemaOptions extends BaseSchemaOptions {
|
|
89
|
+
strict?: boolean; // No extra properties allowed
|
|
90
|
+
allowUnknown?: boolean; // Allow unknown properties
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Schema type definitions
|
|
95
|
+
*/
|
|
96
|
+
export type SchemaType =
|
|
97
|
+
| "string"
|
|
98
|
+
| "number"
|
|
99
|
+
| "boolean"
|
|
100
|
+
| "array"
|
|
101
|
+
| "object"
|
|
102
|
+
| "date"
|
|
103
|
+
| "any";
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Schema definition for object properties
|
|
107
|
+
*/
|
|
108
|
+
export type SchemaDefinition = {
|
|
109
|
+
[key: string]: SchemaConfig;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Complete schema configuration
|
|
114
|
+
*/
|
|
115
|
+
export interface SchemaConfig {
|
|
116
|
+
type: SchemaType;
|
|
117
|
+
options?: BaseSchemaOptions;
|
|
118
|
+
elementSchema?: SchemaConfig; // For arrays
|
|
119
|
+
properties?: SchemaDefinition; // For objects
|
|
120
|
+
validator?: (value: any) => void; // Custom validator function
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// interfaces
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Internal conditional pattern interface
|
|
127
|
+
*/
|
|
128
|
+
export interface ConditionalPattern {
|
|
129
|
+
field: string;
|
|
130
|
+
operator:
|
|
131
|
+
| "="
|
|
132
|
+
| "!="
|
|
133
|
+
| ">"
|
|
134
|
+
| "<"
|
|
135
|
+
| ">="
|
|
136
|
+
| "<="
|
|
137
|
+
| "~"
|
|
138
|
+
| "!~"
|
|
139
|
+
| "in"
|
|
140
|
+
| "!in"
|
|
141
|
+
| "exists"
|
|
142
|
+
| "!exists"
|
|
143
|
+
| "empty"
|
|
144
|
+
| "!empty"
|
|
145
|
+
| "null"
|
|
146
|
+
| "!null"
|
|
147
|
+
| "startsWith"
|
|
148
|
+
| "endsWith"
|
|
149
|
+
| "contains"
|
|
150
|
+
| "!contains";
|
|
151
|
+
value?: any;
|
|
152
|
+
thenSchema: string;
|
|
153
|
+
elseSchema?: string;
|
|
154
|
+
}
|