@oxog/vld 3.0.1 → 3.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.
Files changed (127) hide show
  1. package/CHANGELOG.md +985 -781
  2. package/README.md +28 -11
  3. package/dist/chunks/index-Bn85LHAC.js +1 -0
  4. package/dist/cjs/chunks/index-DJwZFerZ.cjs +1 -0
  5. package/dist/cjs/cli/bin.cjs +1 -1
  6. package/dist/cjs/compile.cjs +1 -1
  7. package/dist/cjs/index.cjs +1 -1
  8. package/dist/cjs/locales/af.cjs +1 -1
  9. package/dist/cjs/locales/ar.cjs +1 -1
  10. package/dist/cjs/locales/bn.cjs +1 -1
  11. package/dist/cjs/locales/da.cjs +1 -1
  12. package/dist/cjs/locales/de.cjs +1 -1
  13. package/dist/cjs/locales/en.cjs +1 -1
  14. package/dist/cjs/locales/es-MX.cjs +1 -1
  15. package/dist/cjs/locales/es.cjs +1 -1
  16. package/dist/cjs/locales/fi.cjs +1 -1
  17. package/dist/cjs/locales/fr.cjs +1 -1
  18. package/dist/cjs/locales/gu.cjs +1 -1
  19. package/dist/cjs/locales/hi.cjs +1 -1
  20. package/dist/cjs/locales/id.cjs +1 -1
  21. package/dist/cjs/locales/index.cjs +1 -1
  22. package/dist/cjs/locales/it.cjs +1 -1
  23. package/dist/cjs/locales/ja.cjs +1 -1
  24. package/dist/cjs/locales/kn.cjs +1 -1
  25. package/dist/cjs/locales/ko.cjs +1 -1
  26. package/dist/cjs/locales/ne.cjs +1 -1
  27. package/dist/cjs/locales/nl.cjs +1 -1
  28. package/dist/cjs/locales/no.cjs +1 -1
  29. package/dist/cjs/locales/pl.cjs +1 -1
  30. package/dist/cjs/locales/pt-BR-v4.cjs +1 -1
  31. package/dist/cjs/locales/pt-BR.cjs +1 -1
  32. package/dist/cjs/locales/pt.cjs +1 -1
  33. package/dist/cjs/locales/ru.cjs +1 -1
  34. package/dist/cjs/locales/sk.cjs +1 -1
  35. package/dist/cjs/locales/sv.cjs +1 -1
  36. package/dist/cjs/locales/sw.cjs +1 -1
  37. package/dist/cjs/locales/tg.cjs +1 -0
  38. package/dist/cjs/locales/th.cjs +1 -1
  39. package/dist/cjs/locales/tr.cjs +1 -1
  40. package/dist/cjs/locales/vi.cjs +1 -1
  41. package/dist/cjs/locales/zh.cjs +1 -1
  42. package/dist/cjs/v3/index.cjs +1 -1
  43. package/dist/cjs/v4/core/index.cjs +1 -1
  44. package/dist/cjs/v4/index.cjs +1 -1
  45. package/dist/cjs/v4/locales/index.cjs +1 -1
  46. package/dist/cjs/v4/mini/index.cjs +1 -1
  47. package/dist/cjs/v4-mini/index.cjs +1 -1
  48. package/dist/cjs/validators/base.cjs +1 -1
  49. package/dist/cjs/validators/custom.cjs +1 -1
  50. package/dist/cjs/validators/number-v2.cjs +1 -1
  51. package/dist/cjs/validators/object.cjs +1 -1
  52. package/dist/cjs/validators/promise.cjs +1 -1
  53. package/dist/cjs/validators/string-formats.cjs +1 -1
  54. package/dist/cjs/validators/string.cjs +1 -1
  55. package/dist/cli/bin.js +1 -1
  56. package/dist/compile.d.ts +15 -0
  57. package/dist/compile.js +1 -1
  58. package/dist/index.d.ts +50 -17
  59. package/dist/index.js +1 -1
  60. package/dist/locales/af.js +1 -1
  61. package/dist/locales/ar.js +1 -1
  62. package/dist/locales/bn.js +1 -1
  63. package/dist/locales/da.js +1 -1
  64. package/dist/locales/de.js +1 -1
  65. package/dist/locales/en.js +1 -1
  66. package/dist/locales/es-MX.js +1 -1
  67. package/dist/locales/es.js +1 -1
  68. package/dist/locales/fi.js +1 -1
  69. package/dist/locales/fr.js +1 -1
  70. package/dist/locales/gu.js +1 -1
  71. package/dist/locales/hi.js +1 -1
  72. package/dist/locales/id.js +1 -1
  73. package/dist/locales/index.js +1 -1
  74. package/dist/locales/it.js +1 -1
  75. package/dist/locales/ja.js +1 -1
  76. package/dist/locales/kn.js +1 -1
  77. package/dist/locales/ko.js +1 -1
  78. package/dist/locales/ne.js +1 -1
  79. package/dist/locales/nl.js +1 -1
  80. package/dist/locales/no.js +1 -1
  81. package/dist/locales/pl.js +1 -1
  82. package/dist/locales/pt-BR-v4.js +1 -1
  83. package/dist/locales/pt-BR.js +1 -1
  84. package/dist/locales/pt.js +1 -1
  85. package/dist/locales/ru.js +1 -1
  86. package/dist/locales/sk.js +1 -1
  87. package/dist/locales/sv.js +1 -1
  88. package/dist/locales/sw.js +1 -1
  89. package/dist/locales/tg.d.ts +2 -0
  90. package/dist/locales/tg.js +1 -0
  91. package/dist/locales/th.js +1 -1
  92. package/dist/locales/tr.js +1 -1
  93. package/dist/locales/types.d.ts +1 -0
  94. package/dist/locales/vi.js +1 -1
  95. package/dist/locales/zh.js +1 -1
  96. package/dist/utils/json-schema.d.ts +4 -0
  97. package/dist/v3/index.js +1 -1
  98. package/dist/v4/core/index.d.ts +12 -2
  99. package/dist/v4/core/index.js +1 -1
  100. package/dist/v4/index.js +1 -1
  101. package/dist/v4/locales/index.d.ts +1 -0
  102. package/dist/v4/locales/index.js +1 -1
  103. package/dist/v4/mini/index.js +1 -1
  104. package/dist/v4-mini/index.d.ts +1 -1
  105. package/dist/v4-mini/index.js +1 -1
  106. package/dist/validators/array-v2.d.ts +1 -1
  107. package/dist/validators/base.d.ts +29 -0
  108. package/dist/validators/base.js +1 -1
  109. package/dist/validators/bigint-v2.d.ts +1 -1
  110. package/dist/validators/custom.d.ts +21 -1
  111. package/dist/validators/custom.js +1 -1
  112. package/dist/validators/date-v2.d.ts +1 -1
  113. package/dist/validators/number-v2.d.ts +1 -1
  114. package/dist/validators/number-v2.js +1 -1
  115. package/dist/validators/object-v2.d.ts +5 -5
  116. package/dist/validators/object.js +1 -1
  117. package/dist/validators/promise.d.ts +7 -0
  118. package/dist/validators/promise.js +1 -1
  119. package/dist/validators/string-formats.d.ts +14 -1
  120. package/dist/validators/string-formats.js +1 -1
  121. package/dist/validators/string-v2.d.ts +2 -2
  122. package/dist/validators/string.d.ts +10 -0
  123. package/dist/validators/string.js +1 -1
  124. package/dist/validators/union-v2.d.ts +1 -1
  125. package/package.json +246 -245
  126. package/dist/chunks/index-CKPStM3V.js +0 -1
  127. package/dist/cjs/chunks/index-lejEpLfv.cjs +0 -1
@@ -1 +1 @@
1
- import{VLD_VALIDATOR_TYPES as e,VldBase as t,resolveErrorMessage as s}from"./base.js";import{V as r,c as i,g as n}from"../chunks/errors-core-BU14-Dk8.js";import{getMessages as m}from"../locales/runtime.js";class VldNumberCheck{}class VldNumberCheckMin extends VldNumberCheck{constructor(e,t){super(),this.threshold=e,this._msg=t,this.kind="min"}check(e){return e<this.threshold?{code:"too_small",path:[],origin:"number",minimum:this.threshold,inclusive:!0,message:this._msg||`Too small: expected number to be >=${this.threshold}`}:null}meta(){return{kind:"min",value:this.threshold,inclusive:!0,message:this._msg}}}class VldNumberCheckMax extends VldNumberCheck{constructor(e,t){super(),this.threshold=e,this._msg=t,this.kind="max"}check(e){return e>this.threshold?{code:"too_big",path:[],origin:"number",maximum:this.threshold,inclusive:!0,message:this._msg||`Too big: expected number to be <=${this.threshold}`}:null}meta(){return{kind:"max",value:this.threshold,inclusive:!0,message:this._msg}}}class VldNumberCheckGt extends VldNumberCheck{constructor(e,t){super(),this.threshold=e,this._msg=t,this.kind="gt"}check(e){return e<=this.threshold?{code:"too_small",path:[],origin:"number",minimum:this.threshold,inclusive:!1,message:this._msg||`Too small: expected number to be >${this.threshold}`}:null}meta(){return{kind:"gt",value:this.threshold,inclusive:!1,message:this._msg}}}class VldNumberCheckLt extends VldNumberCheck{constructor(e,t){super(),this.threshold=e,this._msg=t,this.kind="lt"}check(e){return e>=this.threshold?{code:"too_big",path:[],origin:"number",maximum:this.threshold,inclusive:!1,message:this._msg||`Too big: expected number to be <${this.threshold}`}:null}meta(){return{kind:"lt",value:this.threshold,inclusive:!1,message:this._msg}}}class VldNumberCheckInt extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="int"}check(e){return Number.isInteger(e)?null:{code:"invalid_type",path:[],expected:"int",received:"number",message:this._msg||"Invalid input: expected int, received number"}}meta(){return{kind:"int",message:this._msg}}}class VldNumberCheckFinite extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="finite"}check(e){return Number.isFinite(e)?null:{code:"custom",path:[],message:this._msg||"Number must be finite"}}meta(){return{kind:"finite",message:this._msg}}}class VldNumberCheckSafe extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="safe"}check(e){return Number.isSafeInteger(e)?null:{code:"custom",path:[],message:this._msg||"Number must be a safe integer"}}meta(){return{kind:"safe",message:this._msg}}}class VldNumberCheckMultipleOf extends VldNumberCheck{constructor(e,t){super(),this.divisor=e,this._msg=t,this.kind="multipleOf"}check(e){const t=Math.abs(e%this.divisor);return t<Number.EPSILON||Math.abs(t-Math.abs(this.divisor))<Number.EPSILON?null:{code:"custom",path:[],message:this._msg||`Number must be a multiple of ${this.divisor}`}}meta(){return{kind:"multipleOf",value:this.divisor,message:this._msg}}}class VldNumberCheckRange extends VldNumberCheck{constructor(e,t,s){super(),this.min=e,this.max=t,this._msg=s,this.kind="min"}check(e){return e<this.min||e>this.max?{code:"custom",path:[],message:this._msg||`Number must be between ${this.min} and ${this.max}`}:null}meta(){return{kind:"range",min:this.min,max:this.max,message:this._msg}}}class VldNumberCheckEven extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="even"}check(e){return Number.isInteger(e)&&e%2==0?null:{code:"custom",path:[],message:this._msg||"Number must be even"}}meta(){return{kind:"even",message:this._msg}}}class VldNumberCheckOdd extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="odd"}check(e){return Number.isInteger(e)&&e%2!=0?null:{code:"custom",path:[],message:this._msg||"Number must be odd"}}meta(){return{kind:"odd",message:this._msg}}}class VldNumberCheckUInt32 extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="uint32"}check(e){return!Number.isSafeInteger(e)||e<0||e>4294967295?{code:"custom",path:[],message:this._msg||"Expected an unsigned 32-bit integer"}:null}meta(){return{kind:"uint32",message:this._msg}}}class VldNumberCheckUInt64 extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="uint64"}check(e){return!Number.isSafeInteger(e)||e<0?{code:"custom",path:[],message:this._msg||"Expected an unsigned 64-bit integer"}:null}meta(){return{kind:"uint64",message:this._msg}}}class VldNumberCheckInt32 extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="int32"}check(e){return!Number.isSafeInteger(e)||e<-2147483648||e>2147483647?{code:"custom",path:[],message:this._msg||"Expected a signed 32-bit integer"}:null}meta(){return{kind:"int32",message:this._msg}}}class VldNumberCheckInt64 extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="int64"}check(e){return Number.isSafeInteger(e)?null:{code:"custom",path:[],message:this._msg||"Expected a signed 64-bit integer"}}meta(){return{kind:"int64",message:this._msg}}}class VldNumberCheckFloat32 extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="float32"}check(e){return!Number.isFinite(e)||Math.abs(e)>34e37?{code:"custom",path:[],message:this._msg||"Expected a 32-bit float"}:null}meta(){return{kind:"float32",message:this._msg}}}const h=Object.freeze({type:"number",checks:Object.freeze([]),isSimple:!0});class VldNumberV2 extends t{constructor(t=h){super(e.NUMBER),this.__def=t}static create(){return new VldNumberV2}get isSimple(){return this.__def.isSimple}get hasCustomChecks(){return!this.isSimple}get minValue(){const e=this.__def.jsonSchema;return e?.minimum??e?.exclusiveMinimum??null}get maxValue(){const e=this.__def.jsonSchema;return e?.maximum??e?.exclusiveMaximum??null}get isInt(){return"integer"===this.__def.jsonSchema?.type}get isFinite(){return!0}get getFormat(){return this.__def.jsonSchema?.format??null}get isCoercion(){return this.validatorType===e.COERCE_NUMBER}parse(e){if("number"!=typeof e||!Number.isFinite(e))throw new r([i("number",n(e),this.__def.errorMessage)]);return this.__def.isSimple?e:this.parseKnownNumber(e)}parseKnownNumber(e){const t=this.__def.checks;for(let s=0;s<t.length;s++){const i=t[s].check(e);if(null!==i)throw new r([i])}return e}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:e instanceof r?e:new r([{code:"custom",path:[],message:String(e)}])}}}withDef(e){const t=(s=e.checks??this.__def.checks,r=e.jsonSchema??this.__def.jsonSchema,i=e.errorMessage??this.__def.errorMessage,Object.freeze({type:"number",checks:s,jsonSchema:r,errorMessage:i,isSimple:0===s.length}));var s,r,i;return new this.constructor(t)}min(e,t){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckMin(e,s(t,m().numberMin(e)))],jsonSchema:{...this.__def.jsonSchema,minimum:e},errorMessage:s(t,m().numberMin(e))})}max(e,t){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckMax(e,s(t,m().numberMax(e)))],jsonSchema:{...this.__def.jsonSchema,maximum:e},errorMessage:s(t,m().numberMax(e))})}int(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckInt(s(e,m().numberInt))],jsonSchema:{...this.__def.jsonSchema,type:"integer"},errorMessage:s(e,m().numberInt)})}positive(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckGt(0,s(e,m().numberPositive))],jsonSchema:{...this.__def.jsonSchema,exclusiveMinimum:0},errorMessage:s(e,m().numberPositive)})}negative(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckLt(0,s(e,m().numberNegative))],jsonSchema:{...this.__def.jsonSchema,exclusiveMaximum:0},errorMessage:s(e,m().numberNegative)})}nonnegative(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckMin(0,s(e,m().numberNonnegative))],jsonSchema:{...this.__def.jsonSchema,minimum:0},errorMessage:s(e,m().numberNonnegative)})}nonpositive(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckMax(0,s(e,m().numberNonpositive))],jsonSchema:{...this.__def.jsonSchema,maximum:0},errorMessage:s(e,m().numberNonpositive)})}finite(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckFinite(s(e,m().numberFinite))],errorMessage:s(e,m().numberFinite)})}safe(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckSafe(s(e,m().numberSafe))],jsonSchema:{...this.__def.jsonSchema,type:"integer"},errorMessage:s(e,m().numberSafe)})}multipleOf(e,t){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckMultipleOf(e,s(t,m().numberMultipleOf(e)))],jsonSchema:{...this.__def.jsonSchema,multipleOf:e},errorMessage:s(t,m().numberMultipleOf(e))})}step(e,t){return this.multipleOf(e,t)}between(e,t,r){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckRange(e,t,s(r,`Number must be between ${e} and ${t}`))],jsonSchema:{...this.__def.jsonSchema,minimum:e,maximum:t},errorMessage:s(r,`Number must be between ${e} and ${t}`)})}even(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckEven(s(e,"Number must be even"))],jsonSchema:{...this.__def.jsonSchema,type:"integer",multipleOf:2},errorMessage:s(e,"Number must be even")})}odd(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckOdd(s(e,"Number must be odd"))],jsonSchema:{...this.__def.jsonSchema,type:"integer"},errorMessage:s(e,"Number must be odd")})}gt(e,t){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckGt(e,s(t,`Number must be greater than ${e}`))],jsonSchema:{...this.__def.jsonSchema,exclusiveMinimum:e},errorMessage:s(t,`Number must be greater than ${e}`)})}lt(e,t){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckLt(e,s(t,`Number must be less than ${e}`))],jsonSchema:{...this.__def.jsonSchema,exclusiveMaximum:e},errorMessage:s(t,`Number must be less than ${e}`)})}gte(e,t){return this.min(e,t)}lte(e,t){return this.max(e,t)}uint32(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckUInt32(s(e,"Expected an unsigned 32-bit integer"))],jsonSchema:{...this.__def.jsonSchema,type:"integer",minimum:0,maximum:4294967295},errorMessage:s(e,"Expected an unsigned 32-bit integer")})}uint64(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckUInt64(s(e,"Expected an unsigned 64-bit integer"))],jsonSchema:{...this.__def.jsonSchema,type:"integer",minimum:0},errorMessage:s(e,"Expected an unsigned 64-bit integer")})}int32(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckInt32(s(e,"Expected a signed 32-bit integer"))],jsonSchema:{...this.__def.jsonSchema,type:"integer",minimum:-2147483648,maximum:2147483647},errorMessage:s(e,"Expected a signed 32-bit integer")})}int64(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckInt64(s(e,"Expected a signed 64-bit integer"))],jsonSchema:{...this.__def.jsonSchema,type:"integer"},errorMessage:s(e,"Expected a signed 64-bit integer")})}float32(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckFloat32(s(e,"Expected a 32-bit float"))],jsonSchema:{...this.__def.jsonSchema,minimum:-34e37,maximum:34e37},errorMessage:s(e,"Expected a 32-bit float")})}float64(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckFinite(s(e,"Expected a 64-bit float"))],errorMessage:s(e,"Expected a 64-bit float")})}}const c=Object.freeze({type:"number",checks:Object.freeze([]),isSimple:!0});class VldCoerceNumberV2 extends VldNumberV2{constructor(t=c){super(t),this.validatorType=e.COERCE_NUMBER}static create(){return new VldCoerceNumberV2}parse(e){let t;if("number"==typeof e)t=e;else if("string"==typeof e&&""!==e.trim()){const s=Number(e);if(Number.isNaN(s))throw new Error(m().coercionFailed("number",e));t=s}else if("boolean"==typeof e)t=e?1:0;else if("bigint"==typeof e){const s=Number(e);if(Number.isNaN(s))throw new Error(m().coercionFailed("number",e));t=s}else{if(null!==e)throw new Error(m().coercionFailed("number",e));t=0}if(!Number.isFinite(t))throw new Error(m().coercionFailed("number",e));return super.parse(t)}}export{VldCoerceNumberV2,VldNumberCheck,VldNumberCheckEven,VldNumberCheckFinite,VldNumberCheckFloat32,VldNumberCheckGt,VldNumberCheckInt,VldNumberCheckInt32,VldNumberCheckInt64,VldNumberCheckLt,VldNumberCheckMax,VldNumberCheckMin,VldNumberCheckMultipleOf,VldNumberCheckOdd,VldNumberCheckRange,VldNumberCheckSafe,VldNumberCheckUInt32,VldNumberCheckUInt64,VldNumberV2};
1
+ import{VLD_VALIDATOR_TYPES as e,VldBase as t,resolveErrorMessage as s}from"./base.js";import{V as r,c as i,g as n}from"../chunks/errors-core-BU14-Dk8.js";import{getMessages as m}from"../locales/runtime.js";class VldNumberCheck{}class VldNumberCheckMin extends VldNumberCheck{constructor(e,t){super(),this.threshold=e,this._msg=t,this.kind="min"}check(e){return e<this.threshold?{code:"too_small",path:[],origin:"number",minimum:this.threshold,inclusive:!0,message:this._msg||`Too small: expected number to be >=${this.threshold}`}:null}meta(){return{kind:"min",value:this.threshold,inclusive:!0,message:this._msg}}}class VldNumberCheckMax extends VldNumberCheck{constructor(e,t){super(),this.threshold=e,this._msg=t,this.kind="max"}check(e){return e>this.threshold?{code:"too_big",path:[],origin:"number",maximum:this.threshold,inclusive:!0,message:this._msg||`Too big: expected number to be <=${this.threshold}`}:null}meta(){return{kind:"max",value:this.threshold,inclusive:!0,message:this._msg}}}class VldNumberCheckGt extends VldNumberCheck{constructor(e,t){super(),this.threshold=e,this._msg=t,this.kind="gt"}check(e){return e<=this.threshold?{code:"too_small",path:[],origin:"number",minimum:this.threshold,inclusive:!1,message:this._msg||`Too small: expected number to be >${this.threshold}`}:null}meta(){return{kind:"gt",value:this.threshold,inclusive:!1,message:this._msg}}}class VldNumberCheckLt extends VldNumberCheck{constructor(e,t){super(),this.threshold=e,this._msg=t,this.kind="lt"}check(e){return e>=this.threshold?{code:"too_big",path:[],origin:"number",maximum:this.threshold,inclusive:!1,message:this._msg||`Too big: expected number to be <${this.threshold}`}:null}meta(){return{kind:"lt",value:this.threshold,inclusive:!1,message:this._msg}}}class VldNumberCheckInt extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="int"}check(e){return Number.isInteger(e)?null:{code:"invalid_type",path:[],expected:"int",received:"number",message:this._msg||"Invalid input: expected int, received number"}}meta(){return{kind:"int",message:this._msg}}}class VldNumberCheckFinite extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="finite"}check(e){return Number.isFinite(e)?null:{code:"custom",path:[],message:this._msg||"Number must be finite"}}meta(){return{kind:"finite",message:this._msg}}}class VldNumberCheckSafe extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="safe"}check(e){return Number.isSafeInteger(e)?null:{code:"custom",path:[],message:this._msg||"Number must be a safe integer"}}meta(){return{kind:"safe",message:this._msg}}}class VldNumberCheckMultipleOf extends VldNumberCheck{constructor(e,t){super(),this.divisor=e,this._msg=t,this.kind="multipleOf"}check(e){const t=Math.abs(e%this.divisor);return t<Number.EPSILON||Math.abs(t-Math.abs(this.divisor))<Number.EPSILON?null:{code:"custom",path:[],message:this._msg||`Number must be a multiple of ${this.divisor}`}}meta(){return{kind:"multipleOf",value:this.divisor,message:this._msg}}}class VldNumberCheckRange extends VldNumberCheck{constructor(e,t,s){super(),this.min=e,this.max=t,this._msg=s,this.kind="min"}check(e){return e<this.min||e>this.max?{code:"custom",path:[],message:this._msg||`Number must be between ${this.min} and ${this.max}`}:null}meta(){return{kind:"range",min:this.min,max:this.max,message:this._msg}}}class VldNumberCheckEven extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="even"}check(e){return Number.isInteger(e)&&e%2==0?null:{code:"custom",path:[],message:this._msg||"Number must be even"}}meta(){return{kind:"even",message:this._msg}}}class VldNumberCheckOdd extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="odd"}check(e){return Number.isInteger(e)&&e%2!=0?null:{code:"custom",path:[],message:this._msg||"Number must be odd"}}meta(){return{kind:"odd",message:this._msg}}}class VldNumberCheckUInt32 extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="uint32"}check(e){return!Number.isSafeInteger(e)||e<0||e>4294967295?{code:"custom",path:[],message:this._msg||"Expected an unsigned 32-bit integer"}:null}meta(){return{kind:"uint32",message:this._msg}}}class VldNumberCheckUInt64 extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="uint64"}check(e){return!Number.isSafeInteger(e)||e<0?{code:"custom",path:[],message:this._msg||"Expected an unsigned 64-bit integer"}:null}meta(){return{kind:"uint64",message:this._msg}}}class VldNumberCheckInt32 extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="int32"}check(e){return!Number.isSafeInteger(e)||e<-2147483648||e>2147483647?{code:"custom",path:[],message:this._msg||"Expected a signed 32-bit integer"}:null}meta(){return{kind:"int32",message:this._msg}}}class VldNumberCheckInt64 extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="int64"}check(e){return Number.isSafeInteger(e)?null:{code:"custom",path:[],message:this._msg||"Expected a signed 64-bit integer"}}meta(){return{kind:"int64",message:this._msg}}}class VldNumberCheckFloat32 extends VldNumberCheck{constructor(e){super(),this._msg=e,this.kind="float32"}check(e){return!Number.isFinite(e)||Math.abs(e)>34e37?{code:"custom",path:[],message:this._msg||"Expected a 32-bit float"}:null}meta(){return{kind:"float32",message:this._msg}}}const h=Object.freeze({type:"number",checks:Object.freeze([]),isSimple:!0});class VldNumberV2 extends t{constructor(t=h){super(e.NUMBER),this.__def=t}static create(){return new VldNumberV2}get isSimple(){return this.__def.isSimple}get hasCustomChecks(){return!this.isSimple}get minValue(){const e=this.__def.jsonSchema;return e?.minimum??e?.exclusiveMinimum??null}get maxValue(){const e=this.__def.jsonSchema;return e?.maximum??e?.exclusiveMaximum??null}get isInt(){return"integer"===this.__def.jsonSchema?.type}get isFinite(){return!0}get getFormat(){return this.__def.jsonSchema?.format??null}get isCoercion(){return this.validatorType===e.COERCE_NUMBER}parse(e){if("number"!=typeof e||!Number.isFinite(e))throw new r([i("number",n(e),this.__def.errorMessage)]);return this.__def.isSimple?e:this.parseKnownNumber(e)}parseKnownNumber(e){const t=this.__def.checks;for(let s=0;s<t.length;s++){const i=t[s].check(e);if(null!==i)throw new r([i])}return e}safeParse(e){try{return{success:!0,data:this.parse(e)}}catch(e){return{success:!1,error:e instanceof r?e:new r([{code:"custom",path:[],message:String(e)}])}}}withDef(e){const t=(s=e.checks??this.__def.checks,r=e.jsonSchema??this.__def.jsonSchema,i=e.errorMessage??this.__def.errorMessage,Object.freeze({type:"number",checks:s,jsonSchema:r,errorMessage:i,isSimple:0===s.length}));var s,r,i;return new this.constructor(t)}min(e,t){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckMin(e,s(t,m().numberMin(e)))],jsonSchema:{...this.__def.jsonSchema,minimum:e},errorMessage:s(t,m().numberMin(e))})}max(e,t){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckMax(e,s(t,m().numberMax(e)))],jsonSchema:{...this.__def.jsonSchema,maximum:e},errorMessage:s(t,m().numberMax(e))})}int(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckInt(s(e,m().numberInt))],jsonSchema:{...this.__def.jsonSchema,type:"integer"},errorMessage:s(e,m().numberInt)})}positive(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckGt(0,s(e,m().numberPositive))],jsonSchema:{...this.__def.jsonSchema,exclusiveMinimum:0},errorMessage:s(e,m().numberPositive)})}negative(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckLt(0,s(e,m().numberNegative))],jsonSchema:{...this.__def.jsonSchema,exclusiveMaximum:0},errorMessage:s(e,m().numberNegative)})}nonnegative(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckMin(0,s(e,m().numberNonnegative))],jsonSchema:{...this.__def.jsonSchema,minimum:0},errorMessage:s(e,m().numberNonnegative)})}nonpositive(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckMax(0,s(e,m().numberNonpositive))],jsonSchema:{...this.__def.jsonSchema,maximum:0},errorMessage:s(e,m().numberNonpositive)})}finite(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckFinite(s(e,m().numberFinite))],errorMessage:s(e,m().numberFinite)})}safe(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckSafe(s(e,m().numberSafe))],jsonSchema:{...this.__def.jsonSchema,type:"integer"},errorMessage:s(e,m().numberSafe)})}multipleOf(e,t){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckMultipleOf(e,s(t,m().numberMultipleOf(e)))],jsonSchema:{...this.__def.jsonSchema,multipleOf:e},errorMessage:s(t,m().numberMultipleOf(e))})}step(e,t){return this.multipleOf(e,t)}between(e,t,r){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckRange(e,t,s(r,`Number must be between ${e} and ${t}`))],jsonSchema:{...this.__def.jsonSchema,minimum:e,maximum:t},errorMessage:s(r,`Number must be between ${e} and ${t}`)})}even(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckEven(s(e,"Number must be even"))],jsonSchema:{...this.__def.jsonSchema,type:"integer",multipleOf:2},errorMessage:s(e,"Number must be even")})}odd(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckOdd(s(e,"Number must be odd"))],jsonSchema:{...this.__def.jsonSchema,type:"integer"},errorMessage:s(e,"Number must be odd")})}gt(e,t){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckGt(e,s(t,`Number must be greater than ${e}`))],jsonSchema:{...this.__def.jsonSchema,exclusiveMinimum:e},errorMessage:s(t,`Number must be greater than ${e}`)})}lt(e,t){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckLt(e,s(t,`Number must be less than ${e}`))],jsonSchema:{...this.__def.jsonSchema,exclusiveMaximum:e},errorMessage:s(t,`Number must be less than ${e}`)})}gte(e,t){return this.min(e,t)}lte(e,t){return this.max(e,t)}uint32(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckUInt32(s(e,"Expected an unsigned 32-bit integer"))],jsonSchema:{...this.__def.jsonSchema,type:"integer",minimum:0,maximum:4294967295},errorMessage:s(e,"Expected an unsigned 32-bit integer")})}uint64(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckUInt64(s(e,"Expected an unsigned 64-bit integer"))],jsonSchema:{...this.__def.jsonSchema,type:"integer",minimum:0},errorMessage:s(e,"Expected an unsigned 64-bit integer")})}int32(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckInt32(s(e,"Expected a signed 32-bit integer"))],jsonSchema:{...this.__def.jsonSchema,type:"integer",minimum:-2147483648,maximum:2147483647},errorMessage:s(e,"Expected a signed 32-bit integer")})}int64(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckInt64(s(e,"Expected a signed 64-bit integer"))],jsonSchema:{...this.__def.jsonSchema,type:"integer"},errorMessage:s(e,"Expected a signed 64-bit integer")})}float32(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckFloat32(s(e,"Expected a 32-bit float"))],jsonSchema:{...this.__def.jsonSchema,minimum:-34e37,maximum:34e37},errorMessage:s(e,"Expected a 32-bit float")})}float64(e){return this.withDef({type:"number",checks:[...this.__def.checks,new VldNumberCheckFinite(s(e,"Expected a 64-bit float"))],errorMessage:s(e,"Expected a 64-bit float")})}}const c=Object.freeze({type:"number",checks:Object.freeze([]),isSimple:!0});class VldCoerceNumberV2 extends VldNumberV2{constructor(t=c){super(t),this.validatorType=e.COERCE_NUMBER}static create(){return new VldCoerceNumberV2}parse(e){let t;if("number"==typeof e)t=e;else if("string"==typeof e&&""!==e.trim()){const s=Number(e);if(Number.isNaN(s))throw new Error(m().coercionFailed("number",e));t=s}else if("boolean"==typeof e)t=e?1:0;else if("bigint"==typeof e)t=Number(e);else{if(null!==e)throw new Error(m().coercionFailed("number",e));t=0}if(!Number.isFinite(t))throw new Error(m().coercionFailed("number",e));return super.parse(t)}}export{VldCoerceNumberV2,VldNumberCheck,VldNumberCheckEven,VldNumberCheckFinite,VldNumberCheckFloat32,VldNumberCheckGt,VldNumberCheckInt,VldNumberCheckInt32,VldNumberCheckInt64,VldNumberCheckLt,VldNumberCheckMax,VldNumberCheckMin,VldNumberCheckMultipleOf,VldNumberCheckOdd,VldNumberCheckRange,VldNumberCheckSafe,VldNumberCheckUInt32,VldNumberCheckUInt64,VldNumberV2};
@@ -1,5 +1,5 @@
1
1
  /**
2
- * VldObjectV2 Analysis and decision document
2
+ * VldObjectV2 - Analysis and decision document
3
3
  *
4
4
  * After detailed analysis of VldObject (1071 lines, 10 own properties, all
5
5
  * precomputed internal arrays for fast-path dispatch), the V2 single-def
@@ -8,23 +8,23 @@
8
8
  * - The V2 pattern saves memory by collapsing duplicated data
9
9
  * (`config` + `_checks` + `_transforms` + `_isSimple` + `_checkMetas`)
10
10
  * into a single `__def` object.
11
- * - VldObject has NO duplicated data it has 10 distinct internal arrays
11
+ * - VldObject has NO duplicated data - it has 10 distinct internal arrays
12
12
  * (shapeKeys, validators, validatorTypes, simpleFieldModes, ...), each
13
13
  * serving a unique fast-path purpose.
14
14
  * - A "VldObjectV2" wrapper that holds both a `__def` AND a VldObject
15
- * child would have 2+10=12 own properties WORSE than the legacy.
15
+ * child would have 2+10=12 own properties - WORSE than the legacy.
16
16
  *
17
17
  * The real Zod 4.5 9.8x win on `z.object()` came from a fundamentally
18
18
  * different data layout: a single `def = {type, shape, ...}` object shared
19
19
  * across all chained variants, plus bound methods. Replicating that for
20
20
  * VldObject would require rewriting the entire fast-path dispatch logic
21
- * (1071 lines) into a def-based representation a multi-day refactor with
21
+ * (1071 lines) into a def-based representation - a multi-day refactor with
22
22
  * uncertain return.
23
23
  *
24
24
  * Decision (Faz 4): VldObject, VldArray, VldUnion remain in their legacy
25
25
  * form. The composite-side memory benefit from the V2 pattern is below
26
26
  * noise. The ~38% wins we observed come from using VldStringV2/VldNumberV2
27
- * as the children of VldObject that's where the savings live.
27
+ * as the children of VldObject - that's where the savings live.
28
28
  *
29
29
  * The composite itself is not refactored. Only its child primitive types
30
30
  * get the V2 treatment.
@@ -1 +1 @@
1
- import{VldBase as e,VLD_VALIDATOR_TYPES as t,VldOptional as s,VldExactOptional as i}from"./base.js";import{getMessages as r}from"../locales/runtime.js";import{VldEnum as n}from"./enum.js";import{i as o}from"../chunks/security-Dy24T8N7.js";import{V as a}from"../chunks/errors-core-BU14-Dk8.js";class VldObject extends e{createSafeParseError(e,t){if(e instanceof a)return void 0!==t?new a(e.issues.map(e=>({...e,path:e.path?[t,...e.path]:[t],message:e.message.startsWith("Invalid field")?e.message:r().objectField(String(t),e.message)}))):e;const s=e instanceof Error?e.message:String(e);return new a([{code:"invalid_type",path:void 0!==t?[t]:[],message:void 0===t||s.startsWith("Invalid field")?s:r().objectField(String(t),s)}])}constructor(s){super(t.OBJECT),this._config=s,this._shapeKeys=Object.keys(s.shape),this._shapeKeysSet=new Set(this._shapeKeys),this._validators=this._shapeKeys.map(e=>this.tryGetFieldValidator(e)),this._validatorTypes=this._shapeKeys.map((e,t)=>this._validators[t]?.validatorType||this.getValidatorType(e)),this._simpleFieldModes=this._validators.map((e,t)=>this.getSimpleFieldMode(e,this._validatorTypes[t])),this._simpleFieldValues=this._validators.map((e,t)=>"literal"===this._simpleFieldModes[t]?e.literal:void 0),this._canUseSimpleObjectFastPath=!s.strict&&!s.passthrough&&!s.catchall&&this._shapeKeys.length>0&&this._simpleFieldModes.every(e=>void 0!==e),this._canUseSafeParseFastPath=this._validators.every(t=>t instanceof e)&&(void 0===s.catchall||s.catchall instanceof e)}tryGetFieldValidator(e){try{const t=Object.getOwnPropertyDescriptor(this._config.shape,e);if(t?.get)return;return this.resolveFieldValidator(e)}catch{return}}resolveFieldValidator(e){try{const t=this._config.shape[e];if(!t||"function"!=typeof t.safeParse)return;return t}catch{return}}getFieldValidator(e,t){const s=(void 0===t?void 0:this._validators[t])||this.resolveFieldValidator(e);if(!s)throw new Error(`Invalid validator for field "${e}"`);return s}getValidatorType(e){try{const s=this._config.shape[e];return s?.validatorType||t.UNKNOWN}catch{return t.UNKNOWN}}getSimpleFieldMode(e,s){if(e&&!0===e.isSimple)switch(s){case t.STRING:return"string";case t.NUMBER:return"number";case t.BOOLEAN:return"boolean";case t.BIGINT:return"bigint";case t.SYMBOL:return"symbol";case t.NULL:return"null";case t.UNDEFINED:case t.VOID:return"undefinedValue";case t.LITERAL:return"literal";case t.ANY:case t.UNKNOWN:return"passthrough";default:return}}getSimpleFieldError(e,t,s){switch(e){case"string":return r().invalidString;case"number":return r().invalidNumber;case"boolean":return r().invalidBoolean;case"bigint":return r().invalidBigint;case"symbol":return r().invalidSymbol;case"null":return"Expected null, received "+typeof s;case"undefinedValue":return r().expectedUndefined;case"literal":return r().literalExpected(JSON.stringify(t),JSON.stringify(s));default:return r().invalidObject}}parseCheckedField(e,s,i){if(s===t.STRING&&"string"==typeof i){const t=e.parseKnownString;if("function"==typeof t)return t.call(e,i)}if(s===t.NUMBER&&"number"==typeof i&&!isNaN(i)){const t=e.parseKnownNumber;if("function"==typeof t)return t.call(e,i)}if(s===t.BOOLEAN&&"boolean"==typeof i){const t=e.parseKnownBoolean;if("function"==typeof t)return t.call(e,i)}if(s===t.BIGINT&&"bigint"==typeof i){const t=e.parseKnownBigInt;if("function"==typeof t)return t.call(e,i)}if(s===t.SYMBOL&&"symbol"==typeof i){const t=e.parseKnownSymbol;if("function"==typeof t)return t.call(e,i)}if(s===t.FUNCTION&&"function"==typeof i){const t=e.parseKnownFunction;if("function"==typeof t)return t.call(e,i)}if(s===t.FILE&&"object"==typeof i&&null!==i&&("size"in i&&"type"in i||"undefined"!=typeof File&&i instanceof File)){const t=e.parseKnownFile;if("function"==typeof t)return t.call(e,i)}if(s===t.DATE&&i instanceof Date){const t=e.parseKnownDate;if("function"==typeof t)return t.call(e,i)}if(s===t.OBJECT&&"object"==typeof i&&null!==i&&!Array.isArray(i)){const t=e.parseKnownObject;if("function"==typeof t)return t.call(e,i)}if(s===t.ARRAY&&Array.isArray(i)){const t=e.parseKnownArray;if("function"==typeof t)return t.call(e,i)}if(s===t.TUPLE&&Array.isArray(i)){const t=e.parseKnownTuple;if("function"==typeof t)return t.call(e,i)}if(s===t.RECORD&&"object"==typeof i&&null!==i&&!Array.isArray(i)){const t=e.parseKnownRecord;if("function"==typeof t)return t.call(e,i)}if(s===t.SET&&i instanceof Set){const t=e.parseKnownSet;if("function"==typeof t)return t.call(e,i)}if(s===t.MAP&&i instanceof Map){const t=e.parseKnownMap;if("function"==typeof t)return t.call(e,i)}return e.parse(i)}parseSimpleObjectValue(e,t,s=!1){if(2===this._shapeKeys.length&&"string"===this._simpleFieldModes[0]&&"number"===this._simpleFieldModes[1]){const t=this._shapeKeys[0],s=e[t];if("string"!=typeof s)throw new Error(r().objectField(t,r().invalidString));const i=this._shapeKeys[1],n=e[i];if("number"!=typeof n||isNaN(n))throw new Error(r().objectField(i,r().invalidNumber));const o={};return o[t]=s,o[i]=n,o}if(3===this._shapeKeys.length&&"literal"===this._simpleFieldModes[0]&&"string"===this._simpleFieldModes[1]&&"number"===this._simpleFieldModes[2]){const i=this._shapeKeys[0],n=e[i],o=this._simpleFieldValues[0];if((!s||i!==t)&&n!==o)throw new Error(r().objectField(i,this.getSimpleFieldError("literal",o,n)));const a=this._shapeKeys[1],c=e[a];if("string"!=typeof c)throw new Error(r().objectField(a,r().invalidString));const l=this._shapeKeys[2],h=e[l];if("number"!=typeof h||isNaN(h))throw new Error(r().objectField(l,r().invalidNumber));const f={};return f[i]=o,f[a]=c,f[l]=h,f}const i={};for(let n=0;n<this._shapeKeys.length;n++){const o=this._shapeKeys[n],a=e[o],c=this._simpleFieldModes[n];switch(c){case"string":if("string"!=typeof a)throw new Error(r().objectField(o,r().invalidString));i[o]=a;break;case"number":if("number"!=typeof a||isNaN(a))throw new Error(r().objectField(o,r().invalidNumber));i[o]=a;break;case"boolean":if("boolean"!=typeof a)throw new Error(r().objectField(o,r().invalidBoolean));i[o]=a;break;case"bigint":if("bigint"!=typeof a)throw new Error(r().objectField(o,r().invalidBigint));i[o]=a;break;case"symbol":if("symbol"!=typeof a)throw new Error(r().objectField(o,r().invalidSymbol));i[o]=a;break;case"null":if(null!==a)throw new Error(r().objectField(o,this.getSimpleFieldError(c,void 0,a)));i[o]=null;break;case"undefinedValue":if(void 0!==a)throw new Error(r().objectField(o,r().expectedUndefined));i[o]=void 0;break;case"literal":if(s&&o===t){i[o]=this._simpleFieldValues[n];break}if(a!==this._simpleFieldValues[n])throw new Error(r().objectField(o,this.getSimpleFieldError(c,this._simpleFieldValues[n],a)));i[o]=this._simpleFieldValues[n];break;case"passthrough":i[o]=a;break;default:throw new Error(r().objectField(o,r().invalidObject))}}return i}get config(){return this._config}get shapeKeys(){return this._shapeKeys}get shapeKeysSet(){return this._shapeKeysSet}static create(e){return new VldObject({shape:e})}parse(e){if("object"!=typeof e||null===e||Array.isArray(e))throw new Error(this._config.errorMessage||r().invalidObject);return this.parseObjectValue(e)}parseKnownObject(e,t){return this.parseObjectValue(e,t)}parseTrustedKnownObject(e,t){return this.parseObjectValue(e,t,!0)}parseObjectValue(e,t,s=!1){if(this._canUseSimpleObjectFastPath)return this.parseSimpleObjectValue(e,t,s);const i={};let n="";try{for(let o=0;o<this._shapeKeys.length;o++){if(n=this._shapeKeys[o],s&&n===t&&"literal"===this._simpleFieldModes[o]){i[n]=this._simpleFieldValues[o];continue}const a=this._simpleFieldModes[o];if(void 0!==a){const t=e[n];switch(a){case"string":if("string"!=typeof t)throw new Error(r().invalidString);i[n]=t;continue;case"number":if("number"!=typeof t||isNaN(t))throw new Error(r().invalidNumber);i[n]=t;continue;case"boolean":if("boolean"!=typeof t)throw new Error(r().invalidBoolean);i[n]=t;continue;case"bigint":if("bigint"!=typeof t)throw new Error(r().invalidBigint);i[n]=t;continue;case"symbol":if("symbol"!=typeof t)throw new Error(r().invalidSymbol);i[n]=t;continue;case"null":if(null!==t)throw new Error(this.getSimpleFieldError(a,void 0,t));i[n]=null;continue;case"undefinedValue":if(void 0!==t)throw new Error(r().expectedUndefined);i[n]=void 0;continue;case"literal":if(t!==this._simpleFieldValues[o])throw new Error(this.getSimpleFieldError(a,this._simpleFieldValues[o],t));i[n]=this._simpleFieldValues[o];continue;case"passthrough":i[n]=t;continue}continue}const c=this.getFieldValidator(n,o);i[n]=this.parseCheckedField(c,this._validatorTypes[o],e[n])}}catch(e){if(e instanceof a)throw new a(e.issues.map(e=>({...e,path:e.path?[n,...e.path]:[n],message:r().objectField(n,e.message.startsWith("Invalid field")?e.message.replace(/^Invalid field "[^"]+": /,""):e.message)})));const t=e instanceof Error?e.message:String(e);throw new a([{code:"invalid_type",path:[n],message:t.startsWith("Invalid field")?t:r().objectField(n,t)}])}if(this._config.strict||this._config.passthrough||this._config.catchall){const t=Object.keys(e);if(this._config.strict){const e=[];for(let s=0;s<t.length;s++){const i=t[s];this._shapeKeysSet.has(i)||e.push(i)}if(e.length>0)throw new Error(r().unexpectedKeys(e))}if(this._config.passthrough)for(let s=0;s<t.length;s++){const r=t[s];this._shapeKeysSet.has(r)||o(r)||(i[r]=e[r])}if(this._config.catchall)for(let s=0;s<t.length;s++){const n=t[s];if(!this._shapeKeysSet.has(n)&&!o(n))try{i[n]=this._config.catchall.parse(e[n])}catch(e){throw new Error(r().objectField(n,e.message))}}}return i}safeParse(t){if("object"!=typeof t||null===t||Array.isArray(t))return{success:!1,error:this.createSafeParseError(this._config.errorMessage||r().invalidObject)};const s=t;if(this._canUseSimpleObjectFastPath)try{return{success:!0,data:this.parseSimpleObjectValue(s)}}catch{}if(this._canUseSafeParseFastPath)try{return{success:!0,data:this.parseObjectValue(s)}}catch{}const i={},n=[];for(let t=0;t<this._shapeKeys.length;t++){const o=this._shapeKeys[t],a=s[o],c=this._simpleFieldModes[t];if(void 0!==c){if("string"===c&&"string"==typeof a||"number"===c&&"number"==typeof a&&!isNaN(a)||"boolean"===c&&"boolean"==typeof a||"bigint"===c&&"bigint"==typeof a||"symbol"===c&&"symbol"==typeof a||"null"===c&&null===a||"undefinedValue"===c&&void 0===a||"literal"===c&&a===this._simpleFieldValues[t]||"passthrough"===c){i[o]="literal"===c?this._simpleFieldValues[t]:"null"===c?null:a;continue}n.push({code:"invalid_type",path:[o],message:r().objectField(o,this.getSimpleFieldError(c,this._simpleFieldValues[t],a))});continue}let l;try{l=this.getFieldValidator(o,t)}catch(e){const t=this.createSafeParseError(e,o);n.push(...t.issues);continue}try{if(l instanceof e)i[o]=this.parseCheckedField(l,this._validatorTypes[t],a);else{const e=l.safeParse(a);if(e.success)i[o]=e.data;else{const t=this.createSafeParseError(e.error,o);n.push(...t.issues)}}}catch(e){const t=this.createSafeParseError(e,o);n.push(...t.issues)}}if(this._config.strict||this._config.passthrough||this._config.catchall){const t=Object.keys(s);if(this._config.strict){const e=[];for(let s=0;s<t.length;s++){const i=t[s];this._shapeKeysSet.has(i)||e.push(i)}e.length>0&&n.push(...e.map(e=>({code:"unrecognized_keys",path:[e],message:r().unexpectedKeys([e])})))}if(this._config.passthrough)for(let e=0;e<t.length;e++){const r=t[e];this._shapeKeysSet.has(r)||o(r)||(i[r]=s[r])}if(this._config.catchall){const r=this._config.catchall;for(let a=0;a<t.length;a++){const c=t[a];if(!this._shapeKeysSet.has(c)&&!o(c))try{if(r instanceof e)i[c]=r.parse(s[c]);else{const e=r.safeParse(s[c]);if(e.success)i[c]=e.data;else{const t=this.createSafeParseError(e.error,c);n.push(...t.issues)}}}catch(e){const t=this.createSafeParseError(e,c);n.push(...t.issues)}}}}return n.length>0?{success:!1,error:new a(n)}:{success:!0,data:i}}encode(e){if("object"!=typeof e||null===e||Array.isArray(e))throw new Error(this._config.errorMessage||r().invalidObject);return this.encodeObjectSync(e)}safeEncode(e){try{return{success:!0,data:this.encode(e)}}catch(e){return{success:!1,error:this.createSafeParseError(e.message)}}}async encodeAsync(e){if("object"!=typeof e||null===e||Array.isArray(e))throw new Error(this._config.errorMessage||r().invalidObject);return this.encodeObjectAsync(e)}async safeEncodeAsync(e){try{return{success:!0,data:await this.encodeAsync(e)}}catch(e){return{success:!1,error:this.createSafeParseError(e.message)}}}encodeObjectSync(e){const t={};for(let s=0;s<this._shapeKeys.length;s++){const i=this._shapeKeys[s],r=this.getFieldValidator(i,s).encode(e[i]);(void 0!==r||Object.prototype.hasOwnProperty.call(e,i))&&(t[i]=r)}return this.encodeExtraKeysSync(e,t),t}async encodeObjectAsync(e){const t={};for(let s=0;s<this._shapeKeys.length;s++){const i=this._shapeKeys[s],r=await this.getFieldValidator(i,s).encodeAsync(e[i]);(void 0!==r||Object.prototype.hasOwnProperty.call(e,i))&&(t[i]=r)}const s=this.getEncodedExtraKeys(e);for(const i of s)o(i)||(this._config.catchall?t[i]=await this._config.catchall.encodeAsync(e[i]):this._config.passthrough&&(t[i]=e[i]));return t}getEncodedExtraKeys(e){const t=Object.keys(e).filter(e=>!this._shapeKeysSet.has(e));if(this._config.strict&&t.length>0)throw new Error(r().unexpectedKeys(t));return t}encodeExtraKeysSync(e,t){for(const s of this.getEncodedExtraKeys(e))o(s)||(this._config.catchall?t[s]=this._config.catchall.encode(e[s]):this._config.passthrough&&(t[s]=e[s]))}strict(e){return new VldObject({...this._config,strict:!0,passthrough:!1,errorMessage:e})}passthrough(){return new VldObject({...this._config,strict:!1,passthrough:!0})}loose(){return this.passthrough()}strip(){const e={...this._config,strict:!1,passthrough:!1};return delete e.catchall,new VldObject(e)}partial(){const e={};for(const t in this._config.shape)e[t]=new s(this._config.shape[t]);return new VldObject({...this._config,shape:e})}deepPartial(){const e={};for(const t in this._config.shape){const i=this._config.shape[t];e[t]=new s(i instanceof VldObject?i.deepPartial():i)}return new VldObject({...this._config,shape:e})}exactPartial(){const e={};for(const t in this._config.shape)e[t]=new i(this._config.shape[t]);return new VldObject({...this._config,shape:e})}pick(...e){const t={};let s=[];s=1!==e.length||"object"!=typeof e[0]||null===e[0]||Array.isArray(e[0])?e.flat():Object.keys(e[0]).filter(t=>e[0][t]);for(const e of s)e in this._config.shape&&(t[e]=this._config.shape[e]);return new VldObject({...this._config,shape:t})}omit(...e){let t;t=1!==e.length||"object"!=typeof e[0]||null===e[0]||Array.isArray(e[0])?new Set(e.flat()):new Set(Object.keys(e[0]).filter(t=>e[0][t]));const s={};for(const e in this._config.shape)t.has(e)||(s[e]=this._config.shape[e]);return new VldObject({...this._config,shape:s})}extend(e){return new VldObject({...this._config,shape:{...this._config.shape,...e}})}merge(e){return new VldObject({...this._config,shape:{...this._config.shape,...e.config.shape}})}required(){const e={};for(const t in this._config.shape){const i=this._config.shape[t];if(i instanceof s){const s=i.baseValidator;if(!s||"function"!=typeof s.parse)throw new Error(`Invalid VldOptional structure for field "${t}": missing or invalid baseValidator`);e[t]=s}else e[t]=i}return new VldObject({...this._config,shape:e})}catchall(e){return new VldObject({...this._config,catchall:e,passthrough:!1})}get shape(){return this._config.shape}keyof(){const e=Object.keys(this._config.shape);if(0===e.length)throw new Error("Cannot create keyof enum from empty object");return n.create(e)}safeExtend(e){const t=new Set(Object.keys(this._config.shape)),s=Object.keys(e),i=[];for(const e of s)t.has(e)&&i.push(e);if(i.length>0)throw new Error(`safeExtend: ${r().safeExtendOverlap(i)}`);return new VldObject({...this._config,shape:{...this._config.shape,...e}})}}export{VldObject};
1
+ import{VldBase as e,VLD_VALIDATOR_TYPES as t,VldOptional as s,VldExactOptional as i}from"./base.js";import{getMessages as r}from"../locales/runtime.js";import{VldEnum as n}from"./enum.js";import{i as o}from"../chunks/security-Dy24T8N7.js";import{V as a}from"../chunks/errors-core-BU14-Dk8.js";class VldObject extends e{createSafeParseError(e,t){if(e instanceof a)return void 0!==t?new a(e.issues.map(e=>({...e,path:e.path?[t,...e.path]:[t],message:e.message.startsWith("Invalid field")?e.message:r().objectField(String(t),e.message)}))):e;const s=e instanceof Error?e.message:String(e);return new a([{code:"invalid_type",path:void 0!==t?[t]:[],message:void 0===t||s.startsWith("Invalid field")?s:r().objectField(String(t),s)}])}constructor(s){super(t.OBJECT),this._config=s,this._shapeKeys=Object.keys(s.shape),this._shapeKeysSet=new Set(this._shapeKeys),this._validators=this._shapeKeys.map(e=>this.tryGetFieldValidator(e)),this._validatorTypes=this._shapeKeys.map((e,t)=>this._validators[t]?.validatorType||this.getValidatorType(e)),this._simpleFieldModes=this._validators.map((e,t)=>this.getSimpleFieldMode(e,this._validatorTypes[t])),this._simpleFieldValues=this._validators.map((e,t)=>"literal"===this._simpleFieldModes[t]?e.literal:void 0),this._canUseSimpleObjectFastPath=!s.strict&&!s.passthrough&&!s.catchall&&this._shapeKeys.length>0&&this._simpleFieldModes.every(e=>void 0!==e),this._canUseSafeParseFastPath=this._validators.every(t=>t instanceof e)&&(void 0===s.catchall||s.catchall instanceof e)}tryGetFieldValidator(e){try{const t=Object.getOwnPropertyDescriptor(this._config.shape,e);if(t?.get)return;return this.resolveFieldValidator(e)}catch{return}}resolveFieldValidator(e){try{const t=this._config.shape[e];if(!t||"function"!=typeof t.safeParse)return;return t}catch{return}}getFieldValidator(e,t){const s=(void 0===t?void 0:this._validators[t])||this.resolveFieldValidator(e);if(!s)throw new Error(`Invalid validator for field "${e}"`);return s}getValidatorType(e){try{const s=this._config.shape[e];return s?.validatorType||t.UNKNOWN}catch{return t.UNKNOWN}}getSimpleFieldMode(e,s){if(e&&!0===e.isSimple)switch(s){case t.STRING:return"string";case t.NUMBER:return"number";case t.BOOLEAN:return"boolean";case t.BIGINT:return"bigint";case t.SYMBOL:return"symbol";case t.NULL:return"null";case t.UNDEFINED:case t.VOID:return"undefinedValue";case t.LITERAL:return"literal";case t.ANY:case t.UNKNOWN:return"passthrough";default:return}}getSimpleFieldError(e,t,s){switch(e){case"string":return r().invalidString;case"number":return r().invalidNumber;case"boolean":return r().invalidBoolean;case"bigint":return r().invalidBigint;case"symbol":return r().invalidSymbol;case"null":return"Expected null, received "+typeof s;case"undefinedValue":return r().expectedUndefined;case"literal":return r().literalExpected(JSON.stringify(t),JSON.stringify(s));default:return r().invalidObject}}parseCheckedField(e,s,i){if(s===t.STRING&&"string"==typeof i){const t=e.parseKnownString;if("function"==typeof t)return t.call(e,i)}if(s===t.NUMBER&&"number"==typeof i&&!isNaN(i)){const t=e.parseKnownNumber;if("function"==typeof t)return t.call(e,i)}if(s===t.BOOLEAN&&"boolean"==typeof i){const t=e.parseKnownBoolean;if("function"==typeof t)return t.call(e,i)}if(s===t.BIGINT&&"bigint"==typeof i){const t=e.parseKnownBigInt;if("function"==typeof t)return t.call(e,i)}if(s===t.SYMBOL&&"symbol"==typeof i){const t=e.parseKnownSymbol;if("function"==typeof t)return t.call(e,i)}if(s===t.FUNCTION&&"function"==typeof i){const t=e.parseKnownFunction;if("function"==typeof t)return t.call(e,i)}if(s===t.FILE&&"object"==typeof i&&null!==i&&("size"in i&&"type"in i||"undefined"!=typeof File&&i instanceof File)){const t=e.parseKnownFile;if("function"==typeof t)return t.call(e,i)}if(s===t.DATE&&i instanceof Date){const t=e.parseKnownDate;if("function"==typeof t)return t.call(e,i)}if(s===t.OBJECT&&"object"==typeof i&&null!==i&&!Array.isArray(i)){const t=e.parseKnownObject;if("function"==typeof t)return t.call(e,i)}if(s===t.ARRAY&&Array.isArray(i)){const t=e.parseKnownArray;if("function"==typeof t)return t.call(e,i)}if(s===t.TUPLE&&Array.isArray(i)){const t=e.parseKnownTuple;if("function"==typeof t)return t.call(e,i)}if(s===t.RECORD&&"object"==typeof i&&null!==i&&!Array.isArray(i)){const t=e.parseKnownRecord;if("function"==typeof t)return t.call(e,i)}if(s===t.SET&&i instanceof Set){const t=e.parseKnownSet;if("function"==typeof t)return t.call(e,i)}if(s===t.MAP&&i instanceof Map){const t=e.parseKnownMap;if("function"==typeof t)return t.call(e,i)}return e.parse(i)}parseSimpleObjectValue(e,t,s=!1){if(2===this._shapeKeys.length&&"string"===this._simpleFieldModes[0]&&"number"===this._simpleFieldModes[1]){const t=this._shapeKeys[0],s=e[t];if("string"!=typeof s)throw new Error(r().objectField(t,r().invalidString));const i=this._shapeKeys[1],n=e[i];if("number"!=typeof n||isNaN(n))throw new Error(r().objectField(i,r().invalidNumber));const o={};return o[t]=s,o[i]=n,o}if(3===this._shapeKeys.length&&"literal"===this._simpleFieldModes[0]&&"string"===this._simpleFieldModes[1]&&"number"===this._simpleFieldModes[2]){const i=this._shapeKeys[0],n=e[i],o=this._simpleFieldValues[0];if((!s||i!==t)&&n!==o)throw new Error(r().objectField(i,this.getSimpleFieldError("literal",o,n)));const a=this._shapeKeys[1],c=e[a];if("string"!=typeof c)throw new Error(r().objectField(a,r().invalidString));const l=this._shapeKeys[2],h=e[l];if("number"!=typeof h||isNaN(h))throw new Error(r().objectField(l,r().invalidNumber));const f={};return f[i]=o,f[a]=c,f[l]=h,f}const i={};for(let n=0;n<this._shapeKeys.length;n++){const o=this._shapeKeys[n],c=e[o],l=this._simpleFieldModes[n];switch(l){case"string":if("string"!=typeof c)throw new Error(r().objectField(o,r().invalidString));i[o]=c;break;case"number":if("number"!=typeof c||isNaN(c))throw new Error(r().objectField(o,r().invalidNumber));i[o]=c;break;case"boolean":if("boolean"!=typeof c)throw new Error(r().objectField(o,r().invalidBoolean));i[o]=c;break;case"bigint":if("bigint"!=typeof c)throw new Error(r().objectField(o,r().invalidBigint));i[o]=c;break;case"symbol":if("symbol"!=typeof c)throw new Error(r().objectField(o,r().invalidSymbol));i[o]=c;break;case"null":if(null!==c)throw new Error(r().objectField(o,this.getSimpleFieldError(l,void 0,c)));i[o]=null;break;case"undefinedValue":if(!Object.prototype.hasOwnProperty.call(e,o))throw new a([{code:"invalid_type",path:[o],message:r().objectField(o,r().requiredField(o))}]);if(void 0!==c)throw new Error(r().objectField(o,r().expectedUndefined));i[o]=void 0;break;case"literal":if(s&&o===t){i[o]=this._simpleFieldValues[n];break}if(c!==this._simpleFieldValues[n])throw new Error(r().objectField(o,this.getSimpleFieldError(l,this._simpleFieldValues[n],c)));i[o]=this._simpleFieldValues[n];break;case"passthrough":if(!Object.prototype.hasOwnProperty.call(e,o))throw new a([{code:"invalid_type",path:[o],message:r().objectField(o,r().requiredField(o))}]);i[o]=c;break;default:throw new Error(r().objectField(o,r().invalidObject))}}return i}get config(){return this._config}get shapeKeys(){return this._shapeKeys}get shapeKeysSet(){return this._shapeKeysSet}static create(e){return new VldObject({shape:e})}parse(e){if("object"!=typeof e||null===e||Array.isArray(e))throw new Error(this._config.errorMessage||r().invalidObject);return this.parseObjectValue(e)}parseKnownObject(e,t){return this.parseObjectValue(e,t)}parseTrustedKnownObject(e,t){return this.parseObjectValue(e,t,!0)}parseObjectValue(e,t,s=!1){if(this._canUseSimpleObjectFastPath)return this.parseSimpleObjectValue(e,t,s);const i={};let n="";try{for(let o=0;o<this._shapeKeys.length;o++){if(n=this._shapeKeys[o],s&&n===t&&"literal"===this._simpleFieldModes[o]){i[n]=this._simpleFieldValues[o];continue}const a=this._simpleFieldModes[o];if(void 0!==a){const t=e[n];switch(a){case"string":if("string"!=typeof t)throw new Error(r().invalidString);i[n]=t;continue;case"number":if("number"!=typeof t||isNaN(t))throw new Error(r().invalidNumber);i[n]=t;continue;case"boolean":if("boolean"!=typeof t)throw new Error(r().invalidBoolean);i[n]=t;continue;case"bigint":if("bigint"!=typeof t)throw new Error(r().invalidBigint);i[n]=t;continue;case"symbol":if("symbol"!=typeof t)throw new Error(r().invalidSymbol);i[n]=t;continue;case"null":if(null!==t)throw new Error(this.getSimpleFieldError(a,void 0,t));i[n]=null;continue;case"undefinedValue":if(!Object.prototype.hasOwnProperty.call(e,n))throw new Error(r().objectField(n,r().requiredField(n)));if(void 0!==t)throw new Error(r().objectField(n,r().expectedUndefined));i[n]=void 0;continue;case"literal":if(t!==this._simpleFieldValues[o])throw new Error(this.getSimpleFieldError(a,this._simpleFieldValues[o],t));i[n]=this._simpleFieldValues[o];continue;case"passthrough":if(!Object.prototype.hasOwnProperty.call(e,n))throw new Error(r().objectField(n,r().requiredField(n)));i[n]=t;continue}continue}const c=this.getFieldValidator(n,o);i[n]=this.parseCheckedField(c,this._validatorTypes[o],e[n])}}catch(e){if(e instanceof a)throw new a(e.issues.map(e=>({...e,path:e.path?[n,...e.path]:[n],message:r().objectField(n,e.message.startsWith("Invalid field")?e.message.replace(/^Invalid field "[^"]+": /,""):e.message)})));const t=e instanceof Error?e.message:String(e);throw new a([{code:"invalid_type",path:[n],message:t.startsWith("Invalid field")?t:r().objectField(n,t)}])}if(this._config.strict||this._config.passthrough||this._config.catchall){const t=Object.keys(e);if(this._config.strict){const e=[];for(let s=0;s<t.length;s++){const i=t[s];this._shapeKeysSet.has(i)||e.push(i)}if(e.length>0)throw new Error(r().unexpectedKeys(e))}if(this._config.passthrough)for(let s=0;s<t.length;s++){const r=t[s];this._shapeKeysSet.has(r)||o(r)||(i[r]=e[r])}if(this._config.catchall)for(let s=0;s<t.length;s++){const n=t[s];if(!this._shapeKeysSet.has(n)&&!o(n))try{i[n]=this._config.catchall.parse(e[n])}catch(e){throw new Error(r().objectField(n,e.message))}}}return i}safeParse(t){if("object"!=typeof t||null===t||Array.isArray(t))return{success:!1,error:this.createSafeParseError(this._config.errorMessage||r().invalidObject)};const s=t;if(this._canUseSimpleObjectFastPath)try{return{success:!0,data:this.parseSimpleObjectValue(s)}}catch{}if(this._canUseSafeParseFastPath)try{return{success:!0,data:this.parseObjectValue(s)}}catch{}const i={},n=[];for(let t=0;t<this._shapeKeys.length;t++){const o=this._shapeKeys[t],a=s[o],c=this._simpleFieldModes[t];if(void 0!==c){if(("passthrough"===c||"undefinedValue"===c)&&!Object.prototype.hasOwnProperty.call(s,o)){n.push({code:"invalid_type",path:[o],message:r().objectField(o,r().requiredField(o))});continue}if("string"===c&&"string"==typeof a||"number"===c&&"number"==typeof a&&!isNaN(a)||"boolean"===c&&"boolean"==typeof a||"bigint"===c&&"bigint"==typeof a||"symbol"===c&&"symbol"==typeof a||"null"===c&&null===a||"undefinedValue"===c&&void 0===a||"literal"===c&&a===this._simpleFieldValues[t]||"passthrough"===c){i[o]="literal"===c?this._simpleFieldValues[t]:"null"===c?null:a;continue}n.push({code:"invalid_type",path:[o],message:r().objectField(o,this.getSimpleFieldError(c,this._simpleFieldValues[t],a))});continue}let l;try{l=this.getFieldValidator(o,t)}catch(e){const t=this.createSafeParseError(e,o);n.push(...t.issues);continue}try{if(l instanceof e)i[o]=this.parseCheckedField(l,this._validatorTypes[t],a);else{const e=l.safeParse(a);if(e.success)i[o]=e.data;else{const t=this.createSafeParseError(e.error,o);n.push(...t.issues)}}}catch(e){const t=this.createSafeParseError(e,o);n.push(...t.issues)}}if(this._config.strict||this._config.passthrough||this._config.catchall){const t=Object.keys(s);if(this._config.strict){const e=[];for(let s=0;s<t.length;s++){const i=t[s];this._shapeKeysSet.has(i)||e.push(i)}e.length>0&&n.push(...e.map(e=>({code:"unrecognized_keys",path:[e],message:r().unexpectedKeys([e])})))}if(this._config.passthrough)for(let e=0;e<t.length;e++){const r=t[e];this._shapeKeysSet.has(r)||o(r)||(i[r]=s[r])}if(this._config.catchall){const r=this._config.catchall;for(let a=0;a<t.length;a++){const c=t[a];if(!this._shapeKeysSet.has(c)&&!o(c))try{if(r instanceof e)i[c]=r.parse(s[c]);else{const e=r.safeParse(s[c]);if(e.success)i[c]=e.data;else{const t=this.createSafeParseError(e.error,c);n.push(...t.issues)}}}catch(e){const t=this.createSafeParseError(e,c);n.push(...t.issues)}}}}return n.length>0?{success:!1,error:new a(n)}:{success:!0,data:i}}encode(e){if("object"!=typeof e||null===e||Array.isArray(e))throw new Error(this._config.errorMessage||r().invalidObject);return this.encodeObjectSync(e)}safeEncode(e){try{return{success:!0,data:this.encode(e)}}catch(e){return{success:!1,error:this.createSafeParseError(e.message)}}}async encodeAsync(e){if("object"!=typeof e||null===e||Array.isArray(e))throw new Error(this._config.errorMessage||r().invalidObject);return this.encodeObjectAsync(e)}async safeEncodeAsync(e){try{return{success:!0,data:await this.encodeAsync(e)}}catch(e){return{success:!1,error:this.createSafeParseError(e.message)}}}encodeObjectSync(e){const t={};for(let s=0;s<this._shapeKeys.length;s++){const i=this._shapeKeys[s],r=this.getFieldValidator(i,s).encode(e[i]);(void 0!==r||Object.prototype.hasOwnProperty.call(e,i))&&(t[i]=r)}return this.encodeExtraKeysSync(e,t),t}async encodeObjectAsync(e){const t={};for(let s=0;s<this._shapeKeys.length;s++){const i=this._shapeKeys[s],r=await this.getFieldValidator(i,s).encodeAsync(e[i]);(void 0!==r||Object.prototype.hasOwnProperty.call(e,i))&&(t[i]=r)}const s=this.getEncodedExtraKeys(e);for(const i of s)o(i)||(this._config.catchall?t[i]=await this._config.catchall.encodeAsync(e[i]):this._config.passthrough&&(t[i]=e[i]));return t}getEncodedExtraKeys(e){const t=Object.keys(e).filter(e=>!this._shapeKeysSet.has(e));if(this._config.strict&&t.length>0)throw new Error(r().unexpectedKeys(t));return t}encodeExtraKeysSync(e,t){for(const s of this.getEncodedExtraKeys(e))o(s)||(this._config.catchall?t[s]=this._config.catchall.encode(e[s]):this._config.passthrough&&(t[s]=e[s]))}strict(e){return new VldObject({...this._config,strict:!0,passthrough:!1,errorMessage:e})}passthrough(){return new VldObject({...this._config,strict:!1,passthrough:!0})}loose(){return this.passthrough()}strip(){const e={...this._config,strict:!1,passthrough:!1};return delete e.catchall,new VldObject(e)}partial(){const e={};for(const t in this._config.shape)e[t]=new s(this._config.shape[t]);return new VldObject({...this._config,shape:e})}deepPartial(){const e={};for(const t in this._config.shape){const i=this._config.shape[t];e[t]=new s(i instanceof VldObject?i.deepPartial():i)}return new VldObject({...this._config,shape:e})}exactPartial(){const e={};for(const t in this._config.shape)e[t]=new i(this._config.shape[t]);return new VldObject({...this._config,shape:e})}pick(...e){const t={};let s=[];s=1!==e.length||"object"!=typeof e[0]||null===e[0]||Array.isArray(e[0])?e.flat():Object.keys(e[0]).filter(t=>e[0][t]);for(const e of s)e in this._config.shape&&(t[e]=this._config.shape[e]);return new VldObject({...this._config,shape:t})}omit(...e){let t;t=1!==e.length||"object"!=typeof e[0]||null===e[0]||Array.isArray(e[0])?new Set(e.flat()):new Set(Object.keys(e[0]).filter(t=>e[0][t]));const s={};for(const e in this._config.shape)t.has(e)||(s[e]=this._config.shape[e]);return new VldObject({...this._config,shape:s})}extend(e){return new VldObject({...this._config,shape:{...this._config.shape,...e}})}merge(e){return new VldObject({...this._config,shape:{...this._config.shape,...e.config.shape}})}required(){const e={};for(const t in this._config.shape){const i=this._config.shape[t];if(i instanceof s){const s=i.baseValidator;if(!s||"function"!=typeof s.parse)throw new Error(`Invalid VldOptional structure for field "${t}": missing or invalid baseValidator`);e[t]=s}else e[t]=i}return new VldObject({...this._config,shape:e})}catchall(e){return new VldObject({...this._config,catchall:e,passthrough:!1})}get shape(){return this._config.shape}keyof(){const e=Object.keys(this._config.shape);if(0===e.length)throw new Error("Cannot create keyof enum from empty object");return n.create(e)}safeExtend(e){const t=new Set(Object.keys(this._config.shape)),s=Object.keys(e),i=[];for(const e of s)t.has(e)&&i.push(e);if(i.length>0)throw new Error(`safeExtend: ${r().safeExtendOverlap(i)}`);return new VldObject({...this._config,shape:{...this._config.shape,...e}})}}export{VldObject};
@@ -43,6 +43,13 @@ export declare class VldPromise<T> extends VldBase<unknown, Promise<T>> {
43
43
  */
44
44
  safeParse(value: unknown): any;
45
45
  safeParseAsync(value: unknown): Promise<ParseResult<Promise<T>>>;
46
+ /**
47
+ * Promise schemas validate asynchronously by nature, so the synchronous
48
+ * Zod 4.6 `.validate()` throws (Zod throws $ZodAsyncError in this case).
49
+ * Use `.validateAsync()`.
50
+ */
51
+ validate(_data: unknown): _data is unknown;
52
+ validateAsync(value: unknown): Promise<boolean>;
46
53
  }
47
54
  /**
48
55
  * Create a Promise validator
@@ -1 +1 @@
1
- import{VldBase as e,VLD_VALIDATOR_TYPES as s,ensureVldError as r}from"./base.js";class VldPromise extends e{constructor(e){super(s.PROMISE),this.inner=e}get"~standard"(){return{version:1,vendor:"vld",validate:async e=>{const s=await this.safeParse(e);return s.success?{value:s.data}:{issues:[{message:s.error.message}]}},types:void 0}}_isThenable(e){return null!==e&&"function"==typeof e.then}unwrap(){return this.inner}async parse(e){if(!this._isThenable(e))throw new Error("Expected a Promise value");const s=await Promise.resolve(e);return this.inner.parseAsync?this.inner.parseAsync(s):this.inner.parse(s)}parseAsync(e){return this.parse(e)}safeParse(e){return this._isThenable(e)?(async()=>{try{const s=await Promise.resolve(e);if(this.inner.safeParseAsync)return await this.inner.safeParseAsync(s);const r=this.inner.safeParse(s);return r.success?{success:!0,data:r.data}:r}catch(e){return{success:!1,error:r(e)}}})():Promise.resolve({success:!1,error:r("Expected a Promise value")})}safeParseAsync(e){return this.safeParse(e)}}function n(e){return new VldPromise(e)}export{VldPromise,n as promise};
1
+ import{VldBase as s,VLD_VALIDATOR_TYPES as e,ensureVldError as r}from"./base.js";class VldPromise extends s{constructor(s){super(e.PROMISE),this.inner=s}get"~standard"(){return{version:1,vendor:"vld",validate:async s=>{const e=await this.safeParse(s);return e.success?{value:e.data}:{issues:[{message:e.error.message}]}},types:void 0}}_isThenable(s){return null!==s&&"function"==typeof s.then}unwrap(){return this.inner}async parse(s){if(!this._isThenable(s))throw new Error("Expected a Promise value");const e=await Promise.resolve(s);return this.inner.parseAsync?this.inner.parseAsync(e):this.inner.parse(e)}parseAsync(s){return this.parse(s)}safeParse(s){return this._isThenable(s)?(async()=>{try{const e=await Promise.resolve(s);if(this.inner.safeParseAsync)return await this.inner.safeParseAsync(e);const r=this.inner.safeParse(e);return r.success?{success:!0,data:r.data}:r}catch(s){return{success:!1,error:r(s)}}})():Promise.resolve({success:!1,error:r("Expected a Promise value")})}safeParseAsync(s){return this.safeParse(s)}validate(s){throw new Error("Promise schemas validate asynchronously; use validateAsync instead")}async validateAsync(s){return(await this.safeParseAsync(s)).success}}function a(s){return new VldPromise(s)}export{VldPromise,a as promise};
@@ -26,7 +26,7 @@ declare function stringRegex(options?: {
26
26
  maximum?: number;
27
27
  }): RegExp;
28
28
  declare function macRegex(delimiter?: string): RegExp;
29
- type StaticRegexName = 'base64' | 'base64url' | 'bigint' | 'boolean' | 'browserEmail' | 'cidrv4' | 'cidrv6' | 'creditCard' | 'cuid' | 'cuid2' | 'date' | 'domain' | 'duration' | 'e164' | 'email' | 'extendedDuration' | 'guid' | 'hex' | 'hostname' | 'html5Email' | 'httpProtocol' | 'httpUrl' | 'idnEmail' | 'integer' | 'ipv4' | 'ipv6' | 'jwt' | 'ksuid' | 'lowercase' | 'md5' | 'md5_base64' | 'md5_base64url' | 'md5_hex' | 'nanoid' | 'null' | 'number' | 'rfc5322Email' | 'sha1' | 'sha1_base64' | 'sha1_base64url' | 'sha1_hex' | 'sha256' | 'sha256_base64' | 'sha256_base64url' | 'sha256_hex' | 'sha384' | 'sha384_base64' | 'sha384_base64url' | 'sha384_hex' | 'sha512' | 'sha512_base64' | 'sha512_base64url' | 'sha512_hex' | 'ulid' | 'undefined' | 'unicodeEmail' | 'uppercase' | 'uuid4' | 'uuid6' | 'uuid7' | 'xid';
29
+ type StaticRegexName = 'anyString' | 'base64' | 'base64url' | 'bigint' | 'boolean' | 'browserEmail' | 'cidrv4' | 'cidrv6' | 'creditCard' | 'currencyCode' | 'cuid' | 'cuid2' | 'date' | 'domain' | 'duration' | 'e164' | 'email' | 'extendedDuration' | 'guid' | 'hex' | 'hostname' | 'html5Email' | 'httpProtocol' | 'httpUrl' | 'iban' | 'idnEmail' | 'integer' | 'ipv4' | 'ipv6' | 'jwt' | 'ksuid' | 'lowercase' | 'md5' | 'md5_base64' | 'md5_base64url' | 'md5_hex' | 'nanoid' | 'null' | 'number' | 'rfc5322Email' | 'sha1' | 'sha1_base64' | 'sha1_base64url' | 'sha1_hex' | 'sha256' | 'sha256_base64' | 'sha256_base64url' | 'sha256_hex' | 'sha384' | 'sha384_base64' | 'sha384_base64url' | 'sha384_hex' | 'sha512' | 'sha512_base64' | 'sha512_base64url' | 'sha512_hex' | 'ulid' | 'undefined' | 'unicodeEmail' | 'uppercase' | 'uuid4' | 'uuid6' | 'uuid7' | 'xid';
30
30
  export type RegexNamespace = Readonly<Record<StaticRegexName, RegExp> & {
31
31
  nanoidOfLength: (length: number) => RegExp;
32
32
  datetime: typeof dateTimeRegex;
@@ -88,6 +88,19 @@ export declare function isValidCreditCard(input: string): boolean;
88
88
  export declare const creditCard: (params?: {
89
89
  message?: string;
90
90
  }) => VldStringFormat;
91
+ export declare function isValidIBAN(input: string): boolean;
92
+ export declare const iban: (params?: {
93
+ message?: string;
94
+ }) => VldStringFormat;
95
+ export declare const currencyCode: (params?: {
96
+ message?: string;
97
+ }) => VldStringFormat;
98
+ /**
99
+ * Zod 4.6 base64 charset regexes: the 4.6 base64 check validates the
100
+ * character set with these patterns and enforces length/padding in code.
101
+ */
102
+ export declare const base64Charset: RegExp;
103
+ export declare const base64urlCharset: RegExp;
91
104
  export declare const iso: {
92
105
  readonly ZodISODate: typeof VldStringFormat;
93
106
  readonly ZodISODateTime: typeof VldStringFormat;
@@ -1 +1 @@
1
- import{VldBase as t,VLD_VALIDATOR_TYPES as a}from"./base.js";import{getMessages as e}from"../locales/runtime.js";import{i as r}from"../chunks/ip-validation-g5LWgy9t.js";import{V as i,c as n,g as d}from"../chunks/errors-core-BU14-Dk8.js";const o="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function s(t,a){return t.lastIndex=0,t.test(a)}function c(t,a){return new RegExp(`^[A-Za-z0-9+/]{${t}}${a}$`)}function u(t){return new RegExp(`^[A-Za-z0-9_-]{${t}}$`)}function f(t){const a="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"!=typeof t.precision?`${a}(?::[0-5]\\d(?:\\.\\d+)?)?`:-1===t.precision?a:0===t.precision?`${a}:[0-5]\\d`:`${a}:[0-5]\\d\\.\\d{${t.precision}}`}function m(t){return void 0===t?/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/:new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)}const l={cuid:/^[cC][0-9a-z]{6,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,xid:/^[0-9a-vA-V]{20}$/,ksuid:/^[A-Za-z0-9]{27}$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,nanoidOfLength:t=>new RegExp(`^[a-zA-Z0-9_-]{${t}}$`),duration:/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,extendedDuration:/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,guid:/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,creditCard:/^\d(?:[ -]?\d){11,18}$/,uuid:m,uuid4:m(4),uuid6:m(6),uuid7:m(7),email:/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+.-]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9-]*\.)+[A-Za-z]{2,}$/,html5Email:/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,rfc5322Email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}))$/,unicodeEmail:/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,idnEmail:/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,browserEmail:/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,emoji:()=>/^(\p{Extended_Pictographic}|\p{Emoji_Component})+$/u,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv6:/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,mac:function(t=":"){const a=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^(?:[0-9A-F]{2}${a}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${a}){5}[0-9a-f]{2}$`)},cidrv4:/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,cidrv6:/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,base64url:/^[A-Za-z0-9_-]*$/,hostname:/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,domain:/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,httpProtocol:/^https?$/,e164:/^\+[1-9]\d{6,14}$/,date:new RegExp(`^${o}$`),time:function(t={}){return new RegExp(`^${f(t)}$`)},datetime:function(t={}){const a=["Z"];return t.local&&a.push(""),t.offset&&a.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)"),new RegExp(`^${o}T${f(t)}(?:${a.join("|")})$`)},string:function(t){const a=t?`[\\s\\S]{${t.minimum??0},${t.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${a}$`)},bigint:/^-?\d+n?$/,integer:/^-?\d+$/,number:/^-?\d+(?:\.\d+)?$/,boolean:/^(?:true|false)$/i,null:/^null$/i,undefined:/^undefined$/i,lowercase:/^[^A-Z]*$/,uppercase:/^[^a-z]*$/,hex:/^[0-9a-fA-F]*$/,md5_hex:/^[0-9a-fA-F]{32}$/,md5_base64:c(22,"=="),md5_base64url:u(22),sha1_hex:/^[0-9a-fA-F]{40}$/,sha1_base64:c(27,"="),sha1_base64url:u(27),sha256_hex:/^[0-9a-fA-F]{64}$/,sha256_base64:c(43,"="),sha256_base64url:u(43),sha384_hex:/^[0-9a-fA-F]{96}$/,sha384_base64:c(64,""),sha384_base64url:u(64),sha512_hex:/^[0-9a-fA-F]{128}$/,sha512_base64:c(86,"=="),sha512_base64url:u(86),jwt:/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/,httpUrl:/^https?:\/\/[^\s/$.?#].[^\s]*$/,md5:/^[a-f0-9]{32}$/i,sha1:/^[a-f0-9]{40}$/i,sha256:/^[a-f0-9]{64}$/i,sha384:/^[a-f0-9]{96}$/i,sha512:/^[a-f0-9]{128}$/i};class VldStringFormat extends t{constructor(t,e,r,i=t=>t,n){super(a.STRING_FORMAT),this._format=t,this._validator=e,this._errorMessage=r,this._normalize=i,this._patternSource=n}static create(t,a,e,r,i){return new VldStringFormat(t,a,e,r,i)}_createFormatIssue(){const t={code:"invalid_format",path:[],origin:"string",format:this._format,message:this._errorMessage||`Invalid ${this._format}`};return this._patternSource&&(t.pattern=this._patternSource),new i([t])}parse(t){if("string"!=typeof t)throw new i([n("string",d(t),e().invalidString)]);if(!this._validator(t))throw this._createFormatIssue();return this._normalize(t)}safeParse(t){return"string"!=typeof t?{success:!1,error:new i([n("string",d(t),e().invalidString)])}:this._validator(t)?{success:!0,data:this._normalize(t)}:{success:!1,error:this._createFormatIssue()}}}const $=t=>{const a=t?.pattern??l.email;return VldStringFormat.create("email",t=>s(a,t),void 0,void 0,a.source)},A=(t={})=>VldStringFormat.create("url",a=>{const e=(t=>{try{return new URL(t)}catch{return}})(a);return void 0!==e&&(!t.hostname||s(t.hostname,e.hostname))&&(!t.protocol||s(t.protocol,e.protocol.slice(0,-1)))},void 0,t.normalize?t=>new URL(t).href:void 0),F=t=>{const a=m(void 0===t?.version?void 0:Number(t.version.slice(1)));return VldStringFormat.create("uuid",t=>s(a,t))},g=()=>VldStringFormat.create("uuid",t=>s(l.uuid4,t)),h=()=>VldStringFormat.create("uuid",t=>s(l.uuid6,t)),p=()=>VldStringFormat.create("uuid",t=>s(l.uuid7,t)),S=()=>VldStringFormat.create("hostname",t=>s(l.hostname,t)),z=()=>VldStringFormat.create("emoji",t=>s(l.emoji(),t)),Z=()=>VldStringFormat.create("base64",t=>s(l.base64,t)),_=()=>VldStringFormat.create("base64url",t=>s(l.base64url,t)),V=()=>VldStringFormat.create("hex",t=>s(l.hex,t)),v=()=>VldStringFormat.create("jwt",t=>s(l.jwt,t)),x=()=>VldStringFormat.create("nanoid",t=>s(l.nanoid,t)),b=()=>VldStringFormat.create("cuid",t=>s(l.cuid,t)),w=()=>VldStringFormat.create("cuid2",t=>s(l.cuid2,t)),E=()=>VldStringFormat.create("ulid",t=>s(l.ulid,t)),R=()=>VldStringFormat.create("ipv4",t=>s(l.ipv4,t)),j=()=>VldStringFormat.create("ipv6",t=>s(l.ipv6,t)),I=t=>{const a=l.mac(t?.delimiter);return VldStringFormat.create("mac",t=>s(a,t))},M=()=>VldStringFormat.create("cidrv4",t=>s(l.cidrv4,t)),T=()=>VldStringFormat.create("cidrv6",t=>{const a=t.lastIndexOf("/");if(a<=0)return!1;const e=Number(t.slice(a+1));return Number.isInteger(e)&&e>=0&&e<=128&&r(t.slice(0,a))}),D=()=>VldStringFormat.create("e164",t=>s(l.e164,t)),O=()=>VldStringFormat.create("xid",t=>s(l.xid,t)),k=()=>VldStringFormat.create("guid",t=>s(l.guid,t)),C=()=>VldStringFormat.create("httpUrl",t=>s(l.httpUrl,t)),P=()=>VldStringFormat.create("ksuid",t=>s(l.ksuid,t)),N=t=>VldStringFormat.create("hash",a=>l[t]?.test(a)??!1,`Invalid ${t} hash`),U=/[ -]/g;function y(t){return!!l.creditCard.test(t)&&function(t){let a=0,e=!1;for(let r=t.length-1;r>=0;r--){let i=t.charCodeAt(r)-48;e&&(i*=2,i>9&&(i-=9)),a+=i,e=!e}return a%10==0}(t.replace(U,""))}const H=t=>VldStringFormat.create("credit_card",y,t?.message,void 0,l.creditCard.source),W={ZodISODate:VldStringFormat,ZodISODateTime:VldStringFormat,ZodISODuration:VldStringFormat,ZodISOTime:VldStringFormat,date:()=>VldStringFormat.create("date",t=>s(l.date,t)),time:(t={})=>{const a=l.time(t);return VldStringFormat.create("time",t=>s(a,t))},datetime:(t={})=>{const a=l.datetime(t);return VldStringFormat.create("datetime",t=>s(a,t))},dateTime:(t={local:!0})=>{const a=l.datetime(t);return VldStringFormat.create("datetime",t=>s(a,t))},duration:()=>VldStringFormat.create("duration",t=>s(l.duration,t))},L=(t,a)=>{const e=a instanceof RegExp?t=>s(a,t):a;return VldStringFormat.create(t,e)};export{VldStringFormat,Z as base64,_ as base64url,M as cidrv4,T as cidrv6,H as creditCard,b as cuid,w as cuid2,D as e164,$ as email,z as emoji,k as guid,N as hash,V as hex,S as hostname,C as httpUrl,R as ipv4,j as ipv6,y as isValidCreditCard,W as iso,v as jwt,P as ksuid,I as mac,x as nanoid,l as regexes,L as stringFormat,E as ulid,A as url,F as uuid,g as uuidv4,h as uuidv6,p as uuidv7,O as xid};
1
+ import{VldBase as t,VLD_VALIDATOR_TYPES as a}from"./base.js";import{getMessages as e}from"../locales/runtime.js";import{i as r}from"../chunks/ip-validation-g5LWgy9t.js";import{V as i,c as n,g as d}from"../chunks/errors-core-BU14-Dk8.js";const o="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))";function s(t,a){return t.lastIndex=0,t.test(a)}function c(t,a){return new RegExp(`^[A-Za-z0-9+/]{${t}}${a}$`)}function u(t){return new RegExp(`^[A-Za-z0-9_-]{${t}}$`)}function A(t){const a="(?:[01]\\d|2[0-3]):[0-5]\\d";return"number"!=typeof t.precision?`${a}(?::[0-5]\\d(?:\\.\\d+)?)?`:-1===t.precision?a:0===t.precision?`${a}:[0-5]\\d`:`${a}:[0-5]\\d\\.\\d{${t.precision}}`}function f(t){return void 0===t?/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/:new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${t}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)}const m={cuid:/^[cC][0-9a-z]{6,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,xid:/^[0-9a-vA-V]{20}$/,ksuid:/^[A-Za-z0-9]{27}$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,nanoidOfLength:t=>new RegExp(`^[a-zA-Z0-9_-]{${t}}$`),duration:/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,extendedDuration:/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,guid:/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,iban:/^[A-Z]{2}(?!00|01|99)\d{2}[A-Z0-9]{11,30}$/,currencyCode:/^(?:AED|AFN|ALL|AMD|AOA|ARS|AUD|AWG|AZN|BAM|BBD|BDT|BHD|BIF|BMD|BND|BOB|BOV|BRL|BSD|BTN|BWP|BYN|BZD|CAD|CDF|CHE|CHF|CHW|CLF|CLP|CNY|COP|COU|CRC|CUP|CVE|CZK|DJF|DKK|DOP|DZD|EGP|ERN|ETB|EUR|FJD|FKP|GBP|GEL|GHS|GIP|GMD|GNF|GTQ|GYD|HKD|HNL|HTG|HUF|IDR|ILS|INR|IQD|IRR|ISK|JMD|JOD|JPY|KES|KGS|KHR|KMF|KPW|KRW|KWD|KYD|KZT|LAK|LBP|LKR|LRD|LSL|LYD|MAD|MDL|MGA|MKD|MMK|MNT|MOP|MRU|MUR|MVR|MWK|MXN|MXV|MYR|MZN|NAD|NGN|NIO|NOK|NPR|NZD|OMR|PAB|PEN|PGK|PHP|PKR|PLN|PYG|QAR|RON|RSD|RUB|RWF|SAR|SBD|SCR|SDG|SEK|SGD|SHP|SLE|SOS|SRD|SSP|STN|SVC|SYP|SZL|THB|TJS|TMT|TND|TOP|TRY|TTD|TWD|TZS|UAH|UGX|USD|USN|UYI|UYU|UYW|UZS|VED|VES|VND|VUV|WST|XAD|XAF|XAG|XAU|XBA|XBB|XBC|XBD|XCD|XCG|XDR|XOF|XPD|XPF|XPT|XSU|XTS|XUA|XXX|YER|ZAR|ZMW|ZWG)$/,anyString:/^[\s\S]{0,}$/,creditCard:/^\d(?:[ -]?\d){11,18}$/,uuid:f,uuid4:f(4),uuid6:f(6),uuid7:f(7),email:/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+.-]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9-]*\.)+[A-Za-z]{2,}$/,html5Email:/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,rfc5322Email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}))$/,unicodeEmail:/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,idnEmail:/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,browserEmail:/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,emoji:()=>/^(?=[\s\S]*[\p{Extended_Pictographic}\p{Regional_Indicator}\u20E3])[\p{Extended_Pictographic}\p{Emoji_Component}]+$/u,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv6:/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,mac:function(t=":"){const a=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`^(?:[0-9A-F]{2}${a}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${a}){5}[0-9a-f]{2}$`)},cidrv4:/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,cidrv6:/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,base64url:/^[A-Za-z0-9_-]*$/,hostname:/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,domain:/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,httpProtocol:/^https?$/,e164:/^\+[1-9]\d{6,14}$/,date:new RegExp(`^${o}$`),time:function(t={}){return new RegExp(`^${A(t)}$`)},datetime:function(t={}){const a=["Z"];return t.local&&a.push(""),t.offset&&a.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)"),new RegExp(`^${o}T${A(t)}(?:${a.join("|")})$`)},string:function(t){const a=t?`[\\s\\S]{${t.minimum??0},${t.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${a}$`)},bigint:/^-?\d+n?$/,integer:/^-?\d+$/,number:/^-?\d+(?:\.\d+)?$/,boolean:/^(?:true|false)$/i,null:/^null$/i,undefined:/^undefined$/i,lowercase:/^[^A-Z]*$/,uppercase:/^[^a-z]*$/,hex:/^[0-9a-fA-F]*$/,md5_hex:/^[0-9a-fA-F]{32}$/,md5_base64:c(22,"=="),md5_base64url:u(22),sha1_hex:/^[0-9a-fA-F]{40}$/,sha1_base64:c(27,"="),sha1_base64url:u(27),sha256_hex:/^[0-9a-fA-F]{64}$/,sha256_base64:c(43,"="),sha256_base64url:u(43),sha384_hex:/^[0-9a-fA-F]{96}$/,sha384_base64:c(64,""),sha384_base64url:u(64),sha512_hex:/^[0-9a-fA-F]{128}$/,sha512_base64:c(86,"=="),sha512_base64url:u(86),jwt:/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/,httpUrl:/^https?:\/\/[^\s/$.?#].[^\s]*$/,md5:/^[a-f0-9]{32}$/i,sha1:/^[a-f0-9]{40}$/i,sha256:/^[a-f0-9]{64}$/i,sha384:/^[a-f0-9]{96}$/i,sha512:/^[a-f0-9]{128}$/i};class VldStringFormat extends t{constructor(t,e,r,i=t=>t,n){super(a.STRING_FORMAT),this._format=t,this._validator=e,this._errorMessage=r,this._normalize=i,this._patternSource=n}static create(t,a,e,r,i){return new VldStringFormat(t,a,e,r,i)}_createFormatIssue(){const t={code:"invalid_format",path:[],origin:"string",format:this._format,message:this._errorMessage||`Invalid ${this._format}`};return this._patternSource&&(t.pattern=this._patternSource),new i([t])}parse(t){if("string"!=typeof t)throw new i([n("string",d(t),e().invalidString)]);if(!this._validator(t))throw this._createFormatIssue();return this._normalize(t)}safeParse(t){return"string"!=typeof t?{success:!1,error:new i([n("string",d(t),e().invalidString)])}:this._validator(t)?{success:!0,data:this._normalize(t)}:{success:!1,error:this._createFormatIssue()}}}const l=t=>{const a=t?.pattern??m.email;return VldStringFormat.create("email",t=>s(a,t),void 0,void 0,a.source)},F=(t={})=>VldStringFormat.create("url",a=>{const e=(t=>{try{return new URL(t)}catch{return}})(a);return void 0!==e&&(!t.hostname||s(t.hostname,e.hostname))&&(!t.protocol||s(t.protocol,e.protocol.slice(0,-1)))},void 0,t.normalize?t=>new URL(t).href:void 0),$=t=>{const a=f(void 0===t?.version?void 0:Number(t.version.slice(1)));return VldStringFormat.create("uuid",t=>s(a,t))},S=()=>VldStringFormat.create("uuid",t=>s(m.uuid4,t)),g=()=>VldStringFormat.create("uuid",t=>s(m.uuid6,t)),h=()=>VldStringFormat.create("uuid",t=>s(m.uuid7,t)),Z=()=>VldStringFormat.create("hostname",t=>s(m.hostname,t)),p=()=>VldStringFormat.create("emoji",t=>s(m.emoji(),t)),D=()=>VldStringFormat.create("base64",t=>s(m.base64,t)),V=()=>VldStringFormat.create("base64url",t=>s(m.base64url,t)),z=()=>VldStringFormat.create("hex",t=>s(m.hex,t)),_=()=>VldStringFormat.create("jwt",t=>s(m.jwt,t)),R=()=>VldStringFormat.create("nanoid",t=>s(m.nanoid,t)),P=()=>VldStringFormat.create("cuid",t=>s(m.cuid,t)),v=()=>VldStringFormat.create("cuid2",t=>s(m.cuid2,t)),M=()=>VldStringFormat.create("ulid",t=>s(m.ulid,t)),E=()=>VldStringFormat.create("ipv4",t=>s(m.ipv4,t)),N=()=>VldStringFormat.create("ipv6",t=>s(m.ipv6,t)),T=t=>{const a=m.mac(t?.delimiter);return VldStringFormat.create("mac",t=>s(a,t))},b=()=>VldStringFormat.create("cidrv4",t=>s(m.cidrv4,t)),B=()=>VldStringFormat.create("cidrv6",t=>{const a=t.lastIndexOf("/");if(a<=0)return!1;const e=Number(t.slice(a+1));return Number.isInteger(e)&&e>=0&&e<=128&&r(t.slice(0,a))}),C=()=>VldStringFormat.create("e164",t=>s(m.e164,t)),x=()=>VldStringFormat.create("xid",t=>s(m.xid,t)),U=()=>VldStringFormat.create("guid",t=>s(m.guid,t)),K=()=>VldStringFormat.create("httpUrl",t=>s(m.httpUrl,t)),I=()=>VldStringFormat.create("ksuid",t=>s(m.ksuid,t)),X=t=>VldStringFormat.create("hash",a=>m[t]?.test(a)??!1,`Invalid ${t} hash`),G=/[ -]/g;function w(t){return!!m.creditCard.test(t)&&function(t){let a=0,e=!1;for(let r=t.length-1;r>=0;r--){let i=t.charCodeAt(r)-48;e&&(i*=2,i>9&&(i-=9)),a+=i,e=!e}return a%10==0}(t.replace(G,""))}const L=t=>VldStringFormat.create("credit_card",w,t?.message,void 0,m.creditCard.source);function O(t){return!!m.iban.test(t)&&function(t){let a=0;const e=t.length;for(let r=4;r<e;r++){const e=t.charCodeAt(r);a=(e>=65?100*a+(e-55):10*a+(e-48))%97}for(let e=0;e<4;e++){const r=t.charCodeAt(e);a=(r>=65?100*a+(r-55):10*a+(r-48))%97}return 1===a}(t)}const H=t=>VldStringFormat.create("iban",O,t?.message,void 0,m.iban.source),W=t=>VldStringFormat.create("currency_code",t=>s(m.currencyCode,t),t?.message,void 0,m.currencyCode.source),Y=/^[0-9a-zA-Z+/]*={0,2}$/,j=/^[A-Za-z0-9_-]*$/,y={ZodISODate:VldStringFormat,ZodISODateTime:VldStringFormat,ZodISODuration:VldStringFormat,ZodISOTime:VldStringFormat,date:()=>VldStringFormat.create("date",t=>s(m.date,t)),time:(t={})=>{const a=m.time(t);return VldStringFormat.create("time",t=>s(a,t))},datetime:(t={})=>{const a=m.datetime(t);return VldStringFormat.create("datetime",t=>s(a,t))},dateTime:(t={local:!0})=>{const a=m.datetime(t);return VldStringFormat.create("datetime",t=>s(a,t))},duration:()=>VldStringFormat.create("duration",t=>s(m.duration,t))},J=(t,a)=>{const e=a instanceof RegExp?t=>s(a,t):a;return VldStringFormat.create(t,e)};export{VldStringFormat,D as base64,Y as base64Charset,V as base64url,j as base64urlCharset,b as cidrv4,B as cidrv6,L as creditCard,P as cuid,v as cuid2,W as currencyCode,C as e164,l as email,p as emoji,U as guid,X as hash,z as hex,Z as hostname,K as httpUrl,H as iban,E as ipv4,N as ipv6,w as isValidCreditCard,O as isValidIBAN,y as iso,_ as jwt,I as ksuid,T as mac,R as nanoid,m as regexes,J as stringFormat,M as ulid,F as url,$ as uuid,S as uuidv4,g as uuidv6,h as uuidv7,x as xid};
@@ -1,5 +1,5 @@
1
1
  /**
2
- * VldStringV2 OPTIMIZED: check classes return Issue | null (no per-call
2
+ * VldStringV2 - OPTIMIZED: check classes return Issue | null (no per-call
3
3
  * payload allocation), hot path uses early-return, isSimple is precomputed.
4
4
  *
5
5
  * Same public API as the legacy VldString.
@@ -217,7 +217,7 @@ export declare class VldStringV2 extends VldBase<string, string> {
217
217
  get getFormat(): string | null;
218
218
  get isCoercion(): boolean;
219
219
  parse(value: unknown): string;
220
- /** Hot path early-return, no payload allocation. */
220
+ /** Hot path - early-return, no payload allocation. */
221
221
  parseKnownString(value: string): string;
222
222
  safeParse(value: unknown): ParseResult<string>;
223
223
  protected withDef(def: Partial<VldStringDef> & {
@@ -1,4 +1,13 @@
1
1
  import { VldBase, ParseResult, ValidatorType, type ErrorParam } from './base.js';
2
+ /**
3
+ * String formats the AOT compiler (src/compile.ts) can inline as regex
4
+ * checks, with their exact source and flags so compiled validators agree
5
+ * with the runtime parser.
6
+ */
7
+ export declare const COMPILABLE_FORMATS: Record<'email' | 'url' | 'uuid', {
8
+ source: string;
9
+ flags: string;
10
+ }>;
2
11
  /**
3
12
  * Type for string validation check functions
4
13
  */
@@ -22,6 +31,7 @@ interface StringCheckMeta {
22
31
  readonly value?: number;
23
32
  readonly format?: string;
24
33
  readonly pattern?: string;
34
+ readonly flags?: string;
25
35
  readonly message: string | undefined;
26
36
  }
27
37
  /**
@@ -1 +1 @@
1
- import{VldBase as s,VLD_VALIDATOR_TYPES as e,resolveErrorMessage as t}from"./base.js";import{getMessages as r}from"../locales/runtime.js";import{i}from"../chunks/ip-validation-g5LWgy9t.js";import{V as n,c as a,g as c}from"../chunks/errors-core-BU14-Dk8.js";const o={email:/^[^\s@]+@[^\s@]+\.[^\s@]+$/,uuid:/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,url:/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,uuidv4:/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,uuidv6:/^[0-9a-f]{8}-[0-9a-f]{4}-6[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,uuidv7:/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,emoji:/^(?:\p{Emoji_Presentation}|\p{Emoji}\uFE0F)(?:\u200D(?:\p{Emoji_Presentation}|\p{Emoji}\uFE0F))*$/u,base64:/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,base64url:/^[A-Za-z0-9_-]*$/,jwt:/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/,nanoid:/^[A-Za-z0-9_-]{21}$/,cuid:/^c[^\s-]{8,}$/i,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,cidrv4:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(?:3[0-2]|[12]?[0-9])$/,cidrv6:/^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^::(?:[0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^(?:[0-9a-fA-F]{1,4}:){1,7}:\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,e164:/^\+[1-9]\d{1,14}$/,xid:/^[A-HJKMNP-TV-Z0-9]{20}$/,guid:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i,ksuid:/^[0-9A-Za-z]{27}$/,isoDate:/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/,isoTime:/^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?$/,isoDateTime:/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?Z?$/,isoDuration:/^-?P(?!$)(?:\d+(?:\.\d+)?Y)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?W)?(?:\d+(?:\.\d+)?D)?(?:T(?=\d)(?:\d+(?:\.\d+)?H)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?S)?)?$/};class VldString extends s{constructor(s){super(s?.validatorType||e.STRING),this.config={checks:s?.checks||[],transforms:s?.transforms||[],errorMessage:s?.errorMessage,jsonSchema:s?.jsonSchema,checkMetas:s?.checkMetas},this._checks=this.config.checks,this._transforms=this.config.transforms,this._isSimple=0===this._checks.length&&0===this._transforms.length,this._checkMetas=this.config.checkMetas}static create(){return new VldString}get isSimple(){return this._isSimple}get minLength(){return this.config.jsonSchema?.minLength??null}get maxLength(){return this.config.jsonSchema?.maxLength??null}_createCheckIssue(s){switch(s.kind){case"min":return{code:"too_small",path:[],origin:"string",minimum:s.value,inclusive:!0,message:s.message||`Too small: expected string to have >=${s.value} characters`};case"max":return{code:"too_big",path:[],origin:"string",maximum:s.value,inclusive:!0,message:s.message||`Too big: expected string to have <=${s.value} characters`};case"length":return{code:"too_big",path:[],origin:"string",exact:s.value,message:s.message||`Too big: expected string to have exactly ${s.value} characters`};case"format":{const e={code:"invalid_format",path:[],origin:"string",format:s.format,message:s.message||`Invalid ${s.format}`};return void 0!==s.pattern&&(e.pattern=s.pattern),e}case"regex":{const e={code:"invalid_format",path:[],origin:"string",format:"regex",message:s.message||"Invalid string: does not match pattern"};return void 0!==s.pattern&&(e.pattern=s.pattern),e}default:return{code:"custom",path:[],message:s.message||"Invalid string"}}}_runChecks(s){const e=this._checks,t=this._checkMetas;for(let r=0;r<e.length;r++)if(!e[r](s))return t?.[r]??this._fallbackMeta();return null}_fallbackMeta(){return{kind:"other",message:this.config.errorMessage}}parse(s){if("string"!=typeof s)throw new n([a("string",c(s),this.config.errorMessage)]);return this._isSimple?s:this.parseKnownString(s)}parseKnownString(s){if(this._isSimple)return s;const e=this._transforms;let t=s;switch(e.length){case 0:break;case 1:t=e[0](t);break;case 2:t=e[1](e[0](t));break;case 3:t=e[2](e[1](e[0](t)));break;default:for(let s=0;s<e.length;s++)t=e[s](t)}const r=this._runChecks(t);if(r)throw new n([this._createCheckIssue(r)]);return t}safeParse(s){if("string"!=typeof s)return{success:!1,error:new n([a("string",c(s),this.config.errorMessage)])};if(this._isSimple)return{success:!0,data:s};try{return{success:!0,data:this.parseKnownString(s)}}catch(s){return s instanceof n?{success:!1,error:s}:{success:!1,error:(e=s.message,new n([{code:"invalid_string",path:[],message:e}]))}}var e}min(s,e){return new VldString({checks:[...this.config.checks,e=>e.length>=s],transforms:this.config.transforms,errorMessage:t(e,r().stringMin(s)),jsonSchema:{...this.config.jsonSchema,minLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"min",value:s,message:t(e,r().stringMin(s))}]})}max(s,e){return new VldString({checks:[...this.config.checks,e=>e.length<=s],transforms:this.config.transforms,errorMessage:t(e,r().stringMax(s)),jsonSchema:{...this.config.jsonSchema,maxLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"max",value:s,message:t(e,r().stringMax(s))}]})}length(s,e){return new VldString({checks:[...this.config.checks,e=>e.length===s],transforms:this.config.transforms,errorMessage:t(e,r().stringLength(s)),jsonSchema:{...this.config.jsonSchema,exactLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"length",value:s,message:t(e,r().stringLength(s))}]})}email(s){return new VldString({checks:[...this.config.checks,s=>o.email.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringEmail),jsonSchema:{...this.config.jsonSchema,format:"email"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"email",message:t(s,r().stringEmail)}]})}url(s){return new VldString({checks:[...this.config.checks,s=>o.url.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringUrl),jsonSchema:{...this.config.jsonSchema,format:"uri"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"url",message:t(s,r().stringUrl)}]})}uuid(s){return new VldString({checks:[...this.config.checks,s=>o.uuid.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringUuid),jsonSchema:{...this.config.jsonSchema,format:"uuid"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"uuid",message:t(s,r().stringUuid)}]})}format(s,e,r){return new VldString({checks:[...this.config.checks,e=>s.test(e)],transforms:this.config.transforms,errorMessage:t(r,`Invalid ${e}`),jsonSchema:{...this.config.jsonSchema,format:e,pattern:s.source},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:e,pattern:s.source,message:t(r,`Invalid ${e}`)}]})}uuidv4(s){return this.format(o.uuidv4,"uuid",s)}uuidv6(s){return this.format(o.uuidv6,"uuid",s)}uuidv7(s){return this.format(o.uuidv7,"uuid",s)}emoji(s){return this.format(o.emoji,"emoji",s)}base64(s){return this.format(o.base64,"base64",s)}base64url(s){return this.format(o.base64url,"base64url",s)}jwt(s){return this.format(o.jwt,"jwt",s)}nanoid(s){return this.format(o.nanoid,"nanoid",s)}cuid(s){return this.format(o.cuid,"cuid",s)}cuid2(s){return this.format(o.cuid2,"cuid2",s)}ulid(s){return this.format(o.ulid,"ulid",s)}cidrv4(s){return this.format(o.cidrv4,"cidrv4",s)}cidrv6(s){return this.format(o.cidrv6,"cidrv6",s)}e164(s){return this.format(o.e164,"e164",s)}xid(s){return this.format(o.xid,"xid",s)}guid(s){return this.format(o.guid,"guid",s)}ksuid(s){return this.format(o.ksuid,"ksuid",s)}date(s){return this.format(o.isoDate,"date",s)}time(s){return this.format(o.isoTime,"time",s)}datetime(s){return this.format(o.isoDateTime,"datetime",s)}duration(s){return this.format(o.isoDuration,"duration",s)}regex(s,e){return new VldString({checks:[...this.config.checks,e=>s.test(e)],transforms:this.config.transforms,errorMessage:t(e,r().stringRegex),jsonSchema:{...this.config.jsonSchema,pattern:s.source},checkMetas:[...this.config.checkMetas??[],{kind:"regex",pattern:s.source,message:t(e,r().stringRegex)}]})}trim(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.trim()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}toLowerCase(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toLowerCase()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}lowercase(){return this.toLowerCase()}toUpperCase(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toUpperCase()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}uppercase(){return this.toUpperCase()}normalize(s){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,e=>e.normalize(s)],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}slugify(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}startsWith(s,e){return new VldString({checks:[...this.config.checks,e=>e.startsWith(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringStartsWith(s)),jsonSchema:this.config.jsonSchema})}endsWith(s,e){return new VldString({checks:[...this.config.checks,e=>e.endsWith(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringEndsWith(s)),jsonSchema:this.config.jsonSchema})}includes(s,e){return new VldString({checks:[...this.config.checks,e=>e.includes(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringIncludes(s)),jsonSchema:this.config.jsonSchema})}ip(s){return new VldString({checks:[...this.config.checks,s=>!(s.length>100)&&(o.ipv4.test(s)||i(s))],transforms:this.config.transforms,errorMessage:t(s,r().stringIp),jsonSchema:{...this.config.jsonSchema,format:"ip"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ip",message:t(s,r().stringIp)}]})}ipv4(s){return new VldString({checks:[...this.config.checks,s=>o.ipv4.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringIpv4),jsonSchema:{...this.config.jsonSchema,format:"ipv4"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ipv4",message:t(s,r().stringIpv4)}]})}ipv6(s){return new VldString({checks:[...this.config.checks,s=>i(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringIpv6),jsonSchema:{...this.config.jsonSchema,format:"ipv6"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ipv6",message:t(s,r().stringIpv6)}]})}nonempty(s){return new VldString({checks:[...this.config.checks,s=>s.length>0],transforms:this.config.transforms,errorMessage:t(s,r().stringEmpty),jsonSchema:{...this.config.jsonSchema,minLength:Math.max(this.config.jsonSchema?.minLength||0,1)},checkMetas:[...this.config.checkMetas??[],{kind:"min",value:1,message:t(s,r().stringEmpty)}]})}}export{VldString};
1
+ import{VldBase as s,VLD_VALIDATOR_TYPES as e,resolveErrorMessage as t}from"./base.js";import{getMessages as r}from"../locales/runtime.js";import{i}from"../chunks/ip-validation-g5LWgy9t.js";import{V as n,c as a,g as c}from"../chunks/errors-core-BU14-Dk8.js";const o=/^[^\s@]+@[^\s@]+\.[^\s@]+$/,h={email:o,uuid:/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,url:/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,uuidv4:/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,uuidv6:/^[0-9a-f]{8}-[0-9a-f]{4}-6[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,uuidv7:/^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,emoji:/^(?=[\s\S]*[\p{Extended_Pictographic}\p{Regional_Indicator}\u20E3])[\p{Extended_Pictographic}\p{Emoji_Component}]+$/u,base64:/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,base64url:/^[A-Za-z0-9_-]*$/,jwt:/^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]*$/,nanoid:/^[A-Za-z0-9_-]{21}$/,cuid:/^c[^\s-]{8,}$/i,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,cidrv4:/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\/(?:3[0-2]|[12]?[0-9])$/,cidrv6:/^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^::(?:[0-9a-fA-F]{1,4}:){0,6}[0-9a-fA-F]{1,4}\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$|^(?:[0-9a-fA-F]{1,4}:){1,7}:\/(?:12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,e164:/^\+[1-9]\d{1,14}$/,xid:/^[A-HJKMNP-TV-Z0-9]{20}$/,guid:/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i,ksuid:/^[0-9A-Za-z]{27}$/,isoDate:/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/,isoTime:/^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?$/,isoDateTime:/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?Z?$/,isoDuration:/^-?P(?!$)(?:\d+(?:\.\d+)?Y)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?W)?(?:\d+(?:\.\d+)?D)?(?:T(?=\d)(?:\d+(?:\.\d+)?H)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?S)?)?$/},g={email:{source:o.source,flags:o.flags},url:{source:h.url.source,flags:h.url.flags},uuid:{source:h.uuid.source,flags:h.uuid.flags}};class VldString extends s{constructor(s){super(s?.validatorType||e.STRING),this.config={checks:s?.checks||[],transforms:s?.transforms||[],errorMessage:s?.errorMessage,jsonSchema:s?.jsonSchema,checkMetas:s?.checkMetas},this._checks=this.config.checks,this._transforms=this.config.transforms,this._isSimple=0===this._checks.length&&0===this._transforms.length,this._checkMetas=this.config.checkMetas}static create(){return new VldString}get isSimple(){return this._isSimple}get minLength(){return this.config.jsonSchema?.minLength??null}get maxLength(){return this.config.jsonSchema?.maxLength??null}_createCheckIssue(s){switch(s.kind){case"min":return{code:"too_small",path:[],origin:"string",minimum:s.value,inclusive:!0,message:s.message||`Too small: expected string to have >=${s.value} characters`};case"max":return{code:"too_big",path:[],origin:"string",maximum:s.value,inclusive:!0,message:s.message||`Too big: expected string to have <=${s.value} characters`};case"length":return{code:"too_big",path:[],origin:"string",exact:s.value,message:s.message||`Too big: expected string to have exactly ${s.value} characters`};case"format":{const e={code:"invalid_format",path:[],origin:"string",format:s.format,message:s.message||`Invalid ${s.format}`};return void 0!==s.pattern&&(e.pattern=s.pattern),e}case"regex":{const e={code:"invalid_format",path:[],origin:"string",format:"regex",message:s.message||"Invalid string: does not match pattern"};return void 0!==s.pattern&&(e.pattern=s.pattern),e}default:return{code:"custom",path:[],message:s.message||"Invalid string"}}}_runChecks(s){const e=this._checks,t=this._checkMetas;for(let r=0;r<e.length;r++)if(!e[r](s))return t?.[r]??this._fallbackMeta();return null}_fallbackMeta(){return{kind:"other",message:this.config.errorMessage}}parse(s){if("string"!=typeof s)throw new n([a("string",c(s),this.config.errorMessage)]);return this._isSimple?s:this.parseKnownString(s)}parseKnownString(s){if(this._isSimple)return s;const e=this._transforms;let t=s;switch(e.length){case 0:break;case 1:t=e[0](t);break;case 2:t=e[1](e[0](t));break;case 3:t=e[2](e[1](e[0](t)));break;default:for(let s=0;s<e.length;s++)t=e[s](t)}const r=this._runChecks(t);if(r)throw new n([this._createCheckIssue(r)]);return t}safeParse(s){if("string"!=typeof s)return{success:!1,error:new n([a("string",c(s),this.config.errorMessage)])};if(this._isSimple)return{success:!0,data:s};try{return{success:!0,data:this.parseKnownString(s)}}catch(s){return s instanceof n?{success:!1,error:s}:{success:!1,error:(e=s.message,new n([{code:"invalid_string",path:[],message:e}]))}}var e}min(s,e){return new VldString({checks:[...this.config.checks,e=>e.length>=s],transforms:this.config.transforms,errorMessage:t(e,r().stringMin(s)),jsonSchema:{...this.config.jsonSchema,minLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"min",value:s,message:t(e,r().stringMin(s))}]})}max(s,e){return new VldString({checks:[...this.config.checks,e=>e.length<=s],transforms:this.config.transforms,errorMessage:t(e,r().stringMax(s)),jsonSchema:{...this.config.jsonSchema,maxLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"max",value:s,message:t(e,r().stringMax(s))}]})}length(s,e){return new VldString({checks:[...this.config.checks,e=>e.length===s],transforms:this.config.transforms,errorMessage:t(e,r().stringLength(s)),jsonSchema:{...this.config.jsonSchema,exactLength:s},checkMetas:[...this.config.checkMetas??[],{kind:"length",value:s,message:t(e,r().stringLength(s))}]})}email(s){return new VldString({checks:[...this.config.checks,s=>h.email.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringEmail),jsonSchema:{...this.config.jsonSchema,format:"email"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"email",message:t(s,r().stringEmail)}]})}url(s){return new VldString({checks:[...this.config.checks,s=>h.url.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringUrl),jsonSchema:{...this.config.jsonSchema,format:"uri"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"url",message:t(s,r().stringUrl)}]})}uuid(s){return new VldString({checks:[...this.config.checks,s=>h.uuid.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringUuid),jsonSchema:{...this.config.jsonSchema,format:"uuid"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"uuid",message:t(s,r().stringUuid)}]})}format(s,e,r){return new VldString({checks:[...this.config.checks,e=>s.test(e)],transforms:this.config.transforms,errorMessage:t(r,`Invalid ${e}`),jsonSchema:{...this.config.jsonSchema,format:e,pattern:s.source},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:e,pattern:s.source,flags:s.flags,message:t(r,`Invalid ${e}`)}]})}uuidv4(s){return this.format(h.uuidv4,"uuid",s)}uuidv6(s){return this.format(h.uuidv6,"uuid",s)}uuidv7(s){return this.format(h.uuidv7,"uuid",s)}emoji(s){return this.format(h.emoji,"emoji",s)}base64(s){return this.format(h.base64,"base64",s)}base64url(s){return this.format(h.base64url,"base64url",s)}jwt(s){return this.format(h.jwt,"jwt",s)}nanoid(s){return this.format(h.nanoid,"nanoid",s)}cuid(s){return this.format(h.cuid,"cuid",s)}cuid2(s){return this.format(h.cuid2,"cuid2",s)}ulid(s){return this.format(h.ulid,"ulid",s)}cidrv4(s){return this.format(h.cidrv4,"cidrv4",s)}cidrv6(s){return this.format(h.cidrv6,"cidrv6",s)}e164(s){return this.format(h.e164,"e164",s)}xid(s){return this.format(h.xid,"xid",s)}guid(s){return this.format(h.guid,"guid",s)}ksuid(s){return this.format(h.ksuid,"ksuid",s)}date(s){return this.format(h.isoDate,"date",s)}time(s){return this.format(h.isoTime,"time",s)}datetime(s){return this.format(h.isoDateTime,"datetime",s)}duration(s){return this.format(h.isoDuration,"duration",s)}regex(s,e){return new VldString({checks:[...this.config.checks,e=>s.test(e)],transforms:this.config.transforms,errorMessage:t(e,r().stringRegex),jsonSchema:{...this.config.jsonSchema,pattern:s.source},checkMetas:[...this.config.checkMetas??[],{kind:"regex",pattern:s.source,flags:s.flags,message:t(e,r().stringRegex)}]})}trim(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.trim()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}toLowerCase(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toLowerCase()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}lowercase(){return this.toLowerCase()}toUpperCase(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toUpperCase()],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}uppercase(){return this.toUpperCase()}normalize(s){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,e=>e.normalize(s)],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}slugify(){return new VldString({checks:this.config.checks,transforms:[...this.config.transforms,s=>s.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")],errorMessage:this.config.errorMessage,jsonSchema:this.config.jsonSchema})}startsWith(s,e){return new VldString({checks:[...this.config.checks,e=>e.startsWith(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringStartsWith(s)),jsonSchema:this.config.jsonSchema})}endsWith(s,e){return new VldString({checks:[...this.config.checks,e=>e.endsWith(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringEndsWith(s)),jsonSchema:this.config.jsonSchema})}includes(s,e){return new VldString({checks:[...this.config.checks,e=>e.includes(s)],transforms:this.config.transforms,errorMessage:t(e,r().stringIncludes(s)),jsonSchema:this.config.jsonSchema})}ip(s){return new VldString({checks:[...this.config.checks,s=>!(s.length>100)&&(h.ipv4.test(s)||i(s))],transforms:this.config.transforms,errorMessage:t(s,r().stringIp),jsonSchema:{...this.config.jsonSchema,format:"ip"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ip",message:t(s,r().stringIp)}]})}ipv4(s){return new VldString({checks:[...this.config.checks,s=>h.ipv4.test(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringIpv4),jsonSchema:{...this.config.jsonSchema,format:"ipv4"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ipv4",message:t(s,r().stringIpv4)}]})}ipv6(s){return new VldString({checks:[...this.config.checks,s=>i(s)],transforms:this.config.transforms,errorMessage:t(s,r().stringIpv6),jsonSchema:{...this.config.jsonSchema,format:"ipv6"},checkMetas:[...this.config.checkMetas??[],{kind:"format",format:"ipv6",message:t(s,r().stringIpv6)}]})}nonempty(s){return new VldString({checks:[...this.config.checks,s=>s.length>0],transforms:this.config.transforms,errorMessage:t(s,r().stringEmpty),jsonSchema:{...this.config.jsonSchema,minLength:Math.max(this.config.jsonSchema?.minLength||0,1)},checkMetas:[...this.config.checkMetas??[],{kind:"min",value:1,message:t(s,r().stringEmpty)}]})}}export{g as COMPILABLE_FORMATS,VldString};
@@ -1,5 +1,5 @@
1
1
  /**
2
- * VldUnionV2 single-def union validator.
2
+ * VldUnionV2 - single-def union validator.
3
3
  * The legacy VldUnion has 5 own properties (validators, errorMessage,
4
4
  * typeCheckers, simpleModes, simpleValues). V2 collapses them into a
5
5
  * single `__def`, reducing per-instance shape size and letting V8 use