@fluojs/validation 1.0.3 → 1.0.5
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/README.ko.md +7 -0
- package/README.md +7 -0
- package/dist/decorators.d.ts +10 -6
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +9 -7
- package/package.json +2 -2
package/README.ko.md
CHANGED
|
@@ -136,6 +136,13 @@ class RestrictedUserDto {
|
|
|
136
136
|
|
|
137
137
|
`ValidateClass(...)`는 custom class-level validator도 받을 수 있습니다. `Validate(...)`는 built-in decorator만으로 부족할 때 custom field-level validator를 붙이고, `ValidateIf(...)`는 predicate가 false를 반환하면 dependent validator를 short-circuit합니다.
|
|
138
138
|
|
|
139
|
+
### 네트워크 검증기
|
|
140
|
+
|
|
141
|
+
`@IsIP()`는 기본적으로 IPv4와 IPv6 문자열을 모두 검증합니다. 한 IP 버전으로
|
|
142
|
+
제한하려면 `@IsIP('4')` 또는 `@IsIP('6')`을 전달하세요.
|
|
143
|
+
`@IsIP('4_or_6')`은 `@IsIP()`와 같은 런타임 동작을 유지하면서 "IPv4 또는
|
|
144
|
+
IPv6 모두 허용" 계약을 명시하고 싶을 때 사용할 수 있습니다.
|
|
145
|
+
|
|
139
146
|
### 중첩 검증
|
|
140
147
|
|
|
141
148
|
`@ValidateNested(...)`는 객체 필드, 배열, `Set`, `Map`을 지원합니다. 중첩 DTO path는 validation issue에서 dot/index 표기법을 사용하며, cycle은 안전하게 감지되고 shared reference는 허용됩니다.
|
package/README.md
CHANGED
|
@@ -140,6 +140,13 @@ class RestrictedUserDto {
|
|
|
140
140
|
|
|
141
141
|
`ValidateClass(...)` also accepts custom class-level validators. `Validate(...)` attaches custom field-level validators when built-in decorators are not enough, and `ValidateIf(...)` short-circuits dependent validators when its predicate returns false.
|
|
142
142
|
|
|
143
|
+
### Network validators
|
|
144
|
+
|
|
145
|
+
`@IsIP()` validates IPv4 and IPv6 strings by default. Pass `@IsIP('4')` or
|
|
146
|
+
`@IsIP('6')` to restrict a field to one IP version, or pass
|
|
147
|
+
`@IsIP('4_or_6')` when you want to state the default "either IPv4 or IPv6"
|
|
148
|
+
contract explicitly while still using the same runtime behavior as `@IsIP()`.
|
|
149
|
+
|
|
143
150
|
### Nested validation
|
|
144
151
|
|
|
145
152
|
`@ValidateNested(...)` supports object fields, arrays, `Set`, and `Map`. Nested DTO paths use dot/index notation in validation issues, cycles are detected safely, and shared references are allowed.
|
package/dist/decorators.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { Constructor } from '@fluojs/core';
|
|
2
|
+
import type { CustomClassValidator, CustomFieldValidator, CustomValidationDecoratorOptions, ValidationDecoratorOptions } from '@fluojs/core/internal';
|
|
3
3
|
import { type StandardSchemaV1Like } from './standard-schema.js';
|
|
4
4
|
type ClassDecoratorFn = (value: Function, context: ClassDecoratorContext) => void;
|
|
5
5
|
type FieldDecoratorFn = <This, Value>(value: undefined, context: ClassFieldDecoratorContext<This, Value>) => void;
|
|
@@ -440,11 +440,15 @@ export declare const IsLongitude: (options?: ValidationDecoratorOptions) => Fiel
|
|
|
440
440
|
*/
|
|
441
441
|
export declare const IsLatLong: (options?: ValidationDecoratorOptions) => FieldDecoratorFn;
|
|
442
442
|
/**
|
|
443
|
-
*
|
|
443
|
+
* Validates that a value is an IPv4 and/or IPv6 address.
|
|
444
444
|
*
|
|
445
|
-
*
|
|
446
|
-
*
|
|
447
|
-
*
|
|
445
|
+
* Passing `'4_or_6'` preserves the default validator.js behavior and accepts
|
|
446
|
+
* either IP version. Passing `'4'` or `'6'` restricts validation to that
|
|
447
|
+
* version only.
|
|
448
|
+
*
|
|
449
|
+
* @param version Optional IP version filter (`'4'`, `'6'`, or `'4_or_6'`).
|
|
450
|
+
* @param options Optional validation behavior (`message`, `groups`, `always`, `each`).
|
|
451
|
+
* @returns A field decorator that registers an IP-address rule.
|
|
448
452
|
*/
|
|
449
453
|
export declare function IsIP(version?: '4' | '6' | '4_or_6', options?: ValidationDecoratorOptions): FieldDecoratorFn;
|
|
450
454
|
/**
|
package/dist/decorators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
|
package/dist/decorators.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { ensureMetadataSymbol } from '@fluojs/core/internal';
|
|
2
1
|
import { createClassValidatorFromStandardSchema, isStandardSchemaLike } from './standard-schema.js';
|
|
3
2
|
const standardDtoValidationMetadataKey = Symbol.for('fluo.standard.dto-validation');
|
|
4
3
|
const standardClassValidationMetadataKey = Symbol.for('fluo.standard.class-validation');
|
|
5
|
-
ensureMetadataSymbol();
|
|
6
4
|
function getStandardMetadataBag(metadata) {
|
|
7
5
|
if (metadata === null || metadata === undefined) {
|
|
8
6
|
throw new Error('Decorator metadata is not available. Ensure your environment supports TC39 decorator metadata (Stage 3).');
|
|
@@ -657,14 +655,18 @@ export const IsLongitude = options => createValidatorJsDecorator('longitude')(un
|
|
|
657
655
|
export const IsLatLong = options => createValidatorJsDecorator('latLong')(undefined, options);
|
|
658
656
|
|
|
659
657
|
/**
|
|
660
|
-
*
|
|
658
|
+
* Validates that a value is an IPv4 and/or IPv6 address.
|
|
661
659
|
*
|
|
662
|
-
*
|
|
663
|
-
*
|
|
664
|
-
*
|
|
660
|
+
* Passing `'4_or_6'` preserves the default validator.js behavior and accepts
|
|
661
|
+
* either IP version. Passing `'4'` or `'6'` restricts validation to that
|
|
662
|
+
* version only.
|
|
663
|
+
*
|
|
664
|
+
* @param version Optional IP version filter (`'4'`, `'6'`, or `'4_or_6'`).
|
|
665
|
+
* @param options Optional validation behavior (`message`, `groups`, `always`, `each`).
|
|
666
|
+
* @returns A field decorator that registers an IP-address rule.
|
|
665
667
|
*/
|
|
666
668
|
export function IsIP(version, options) {
|
|
667
|
-
return createValidatorJsDecorator('ip')(version ? [version] : undefined, options);
|
|
669
|
+
return createValidatorJsDecorator('ip')(version && version !== '4_or_6' ? [version] : undefined, options);
|
|
668
670
|
}
|
|
669
671
|
|
|
670
672
|
/**
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"decorators",
|
|
10
10
|
"schema"
|
|
11
11
|
],
|
|
12
|
-
"version": "1.0.
|
|
12
|
+
"version": "1.0.5",
|
|
13
13
|
"private": false,
|
|
14
14
|
"license": "MIT",
|
|
15
15
|
"repository": {
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@standard-schema/spec": "^1.1.0",
|
|
44
44
|
"validator": "^13.15.26",
|
|
45
|
-
"@fluojs/core": "^1.0.
|
|
45
|
+
"@fluojs/core": "^1.0.3"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@types/validator": "^13.15.10",
|