Repository navigation
Conversation
- Introduced `title` and `description` fields in `ValSanOptions` for schema documentation and JSON Schema output. - Implemented `getTitle()` and `getDescription()` methods in `BaseValSan` to retrieve metadata. - Enhanced various Valsans (e.g., `MacAddressValSan`, `EmailValidator`, `ComposedValSan`, etc.) with default titles and descriptions. - Updated validation descriptions to include helper texts from rules. - Added tests to verify metadata functionality and ensure proper integration across built-in Valsans.
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Validation descriptions can advertise inactive constraints or omit active composed constraints.
Review effort: Balanced
Findings: 2
Open (3)
What changed in this PR
Adds schema metadata and validation descriptions across the ValSan API.
Changes:
- Adds title/description metadata APIs and defaults.
- Builds validation descriptions from rule helper text.
- Adds metadata tests and documentation.
| File | Description |
|---|---|
test/spec/valsan/metadata.spec.ts |
Tests metadata behavior. |
src/valsan.ts |
Extends public metadata API. |
src/valsan-composed.ts |
Adds composed metadata support. |
src/valsan-base.ts |
Implements metadata retrieval and aggregation. |
src/primitives/utility/enum-validator.ts |
Adds enum metadata. |
src/primitives/string/uppercase-sanitizer.ts |
Adds uppercase metadata. |
src/primitives/string/trim-sanitizer.ts |
Adds trim metadata. |
src/primitives/string/slug-validator.ts |
Adds slug metadata. |
src/primitives/string/pattern-validator.ts |
Adds pattern metadata. |
src/primitives/string/min-length-validator.ts |
Adds minimum-length metadata. |
src/primitives/string/max-length-validator.ts |
Adds maximum-length metadata. |
src/primitives/string/lowercase-sanitizer.ts |
Adds lowercase metadata. |
src/primitives/string/length-validator.ts |
Adds length metadata. |
src/primitives/string/alphanumeric-validator.ts |
Adds alphanumeric metadata. |
src/primitives/string/alpha-validator.ts |
Adds alphabetic metadata. |
src/primitives/person/email-validator.ts |
Adds email metadata. |
src/primitives/object/object-valsan.ts |
Adds object metadata. |
src/primitives/number/string-to-number.ts |
Adds numeric conversion metadata. |
src/primitives/number/range-validator.ts |
Adds range metadata and detailed helpers. |
src/primitives/number/min-validator.ts |
Adds minimum-value metadata. |
src/primitives/number/max-validator.ts |
Adds maximum-value metadata. |
src/primitives/number/integer-validator.ts |
Adds integer metadata. |
src/primitives/number/decimal-validator.ts |
Adds decimal metadata. |
src/primitives/network/url-valsan.ts |
Adds URL metadata. |
src/primitives/network/port-number-valsan.ts |
Adds port metadata. |
src/primitives/network/mac-address-valsan.ts |
Adds MAC address metadata. |
src/primitives/network/ip-address-valsan.ts |
Adds IP address metadata. |
src/primitives/network/fqdn-valsan.ts |
Adds domain-name metadata. |
src/primitives/json/json-valsan.ts |
Adds JSON metadata. |
src/primitives/encoding/uuid-valsan.ts |
Adds UUID metadata. |
src/primitives/encoding/semver-valsan.ts |
Adds semantic-version metadata. |
src/primitives/date-time/string-to-date.ts |
Adds date metadata. |
src/primitives/date-time/iso8601-timestamp-valsan.ts |
Adds timestamp metadata. |
src/primitives/color/hex-color-valsan.ts |
Adds color metadata. |
src/primitives/bool/string-to-boolean.ts |
Adds boolean-string metadata. |
src/primitives/auth/bearer-token-valsan.ts |
Adds bearer-token metadata. |
src/primitives/array/array-valsan.ts |
Adds array metadata. |
docs/using-options.md |
Documents metadata options. |
docs/composed-valsan.md |
Documents composed descriptions. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+45
to
+49
| return Object.entries(rules).flatMap(([key, rule]) => { | ||
| if (ignoreRuleKeys.has(key)) { | ||
| return []; | ||
| } | ||
|
|
Comment on lines
+110
to
+111
| public getRuleHelperTexts(): string[] { | ||
| return this.collectRuleHelperTexts(this.rules()); |
| console.log(macAddress.getDescription()); // "The MAC address of the Wi-Fi NIC" | ||
| ``` | ||
|
|
||
| `getValidationDescription()` combines the Valsan description with its rule helper text. Composed Valsans include helper text from each step. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


titleanddescriptionfields inValSanOptionsfor schema documentation and JSON Schema output.getTitle()andgetDescription()methods inBaseValSanto retrieve metadata.MacAddressValSan,EmailValidator,ComposedValSan, etc.) with default titles and descriptions.