@maroonedog/luq 0.1.0-alpha

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 (312) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +879 -0
  3. package/dist/constants.d.ts +27 -0
  4. package/dist/core/async.experimental/async-context.d.ts +60 -0
  5. package/dist/core/builder/array-batch-optimizer.d.ts +66 -0
  6. package/dist/core/builder/context/field-context.d.ts +31 -0
  7. package/dist/core/builder/context/field-type-detector.d.ts +19 -0
  8. package/dist/core/builder/core/builder.d.ts +10 -0
  9. package/dist/core/builder/core/field-builder.d.ts +13 -0
  10. package/dist/core/builder/core/index.d.ts +17 -0
  11. package/dist/core/builder/index.d.ts +24 -0
  12. package/dist/core/builder/nested-array-processor.d.ts +52 -0
  13. package/dist/core/builder/plugins/composable-conditional-plugin.d.ts +32 -0
  14. package/dist/core/builder/plugins/composable-directly-plugin.d.ts +32 -0
  15. package/dist/core/builder/plugins/composable-plugin.d.ts +242 -0
  16. package/dist/core/builder/plugins/plugin-creator.d.ts +38 -0
  17. package/dist/core/builder/plugins/plugin-interfaces.d.ts +343 -0
  18. package/dist/core/builder/plugins/plugin-types.d.ts +441 -0
  19. package/dist/core/builder/raw-validator.d.ts +22 -0
  20. package/dist/core/builder/types/field-options.d.ts +46 -0
  21. package/dist/core/builder/types/types.d.ts +318 -0
  22. package/dist/core/builder/ultra-fast-validator.d.ts +30 -0
  23. package/dist/core/builder/validator-factory.d.ts +29 -0
  24. package/dist/core/global-config.d.ts +27 -0
  25. package/dist/core/index.d.ts +36 -0
  26. package/dist/core/optimization/array-batch-validator.d.ts +68 -0
  27. package/dist/core/optimization/core/field-utils.d.ts +103 -0
  28. package/dist/core/optimization/core/strategy-factory.d.ts +84 -0
  29. package/dist/core/optimization/core/validation-engine.d.ts +107 -0
  30. package/dist/core/optimization/execution-strategy-selector.d.ts +23 -0
  31. package/dist/core/optimization/unified-validator.d.ts +45 -0
  32. package/dist/core/plugin/__tests__/test-utils.d.ts +1 -0
  33. package/dist/core/plugin/arrayContains.d.ts +37 -0
  34. package/dist/core/plugin/arrayIncludes.d.ts +42 -0
  35. package/dist/core/plugin/arrayMaxLength.d.ts +43 -0
  36. package/dist/core/plugin/arrayMinLength.d.ts +43 -0
  37. package/dist/core/plugin/arrayUnique.d.ts +41 -0
  38. package/dist/core/plugin/booleanFalsy.d.ts +41 -0
  39. package/dist/core/plugin/booleanTruthy.d.ts +38 -0
  40. package/dist/core/plugin/compareField.d.ts +58 -0
  41. package/dist/core/plugin/conditionalSchema.d.ts +24 -0
  42. package/dist/core/plugin/custom.d.ts +60 -0
  43. package/dist/core/plugin/fromContext.d.ts +150 -0
  44. package/dist/core/plugin/index.d.ts +71 -0
  45. package/dist/core/plugin/jsonSchema/dsl-converter.d.ts +22 -0
  46. package/dist/core/plugin/jsonSchema/error-generation.d.ts +14 -0
  47. package/dist/core/plugin/jsonSchema/format-validators.d.ts +20 -0
  48. package/dist/core/plugin/jsonSchema/index.d.ts +11 -0
  49. package/dist/core/plugin/jsonSchema/plugin.d.ts +35 -0
  50. package/dist/core/plugin/jsonSchema/ref-resolver.d.ts +14 -0
  51. package/dist/core/plugin/jsonSchema/types.d.ts +69 -0
  52. package/dist/core/plugin/jsonSchema/validation-core.d.ts +29 -0
  53. package/dist/core/plugin/jsonSchemaFullFeature.d.ts +31 -0
  54. package/dist/core/plugin/literal.d.ts +40 -0
  55. package/dist/core/plugin/message-factories.d.ts +9 -0
  56. package/dist/core/plugin/nullable.d.ts +34 -0
  57. package/dist/core/plugin/numberFinite.d.ts +41 -0
  58. package/dist/core/plugin/numberInteger.d.ts +41 -0
  59. package/dist/core/plugin/numberMax.d.ts +49 -0
  60. package/dist/core/plugin/numberMin.d.ts +49 -0
  61. package/dist/core/plugin/numberMultipleOf.d.ts +42 -0
  62. package/dist/core/plugin/numberNegative.d.ts +41 -0
  63. package/dist/core/plugin/numberPositive.d.ts +41 -0
  64. package/dist/core/plugin/numberRange.d.ts +48 -0
  65. package/dist/core/plugin/object.d.ts +43 -0
  66. package/dist/core/plugin/objectAdditionalProperties.d.ts +51 -0
  67. package/dist/core/plugin/objectDependentRequired.d.ts +42 -0
  68. package/dist/core/plugin/objectDependentSchemas.d.ts +40 -0
  69. package/dist/core/plugin/objectMaxProperties.d.ts +42 -0
  70. package/dist/core/plugin/objectMinProperties.d.ts +42 -0
  71. package/dist/core/plugin/objectPatternProperties.d.ts +46 -0
  72. package/dist/core/plugin/objectPropertyNames.d.ts +36 -0
  73. package/dist/core/plugin/objectRecursively.d.ts +81 -0
  74. package/dist/core/plugin/oneOf.d.ts +44 -0
  75. package/dist/core/plugin/optional.d.ts +35 -0
  76. package/dist/core/plugin/optionalIf.d.ts +42 -0
  77. package/dist/core/plugin/orFail.d.ts +132 -0
  78. package/dist/core/plugin/readOnlyWriteOnly.d.ts +48 -0
  79. package/dist/core/plugin/required.d.ts +45 -0
  80. package/dist/core/plugin/requiredIf.d.ts +66 -0
  81. package/dist/core/plugin/shared-constants.d.ts +45 -0
  82. package/dist/core/plugin/shared.d.ts +3 -0
  83. package/dist/core/plugin/skip.d.ts +57 -0
  84. package/dist/core/plugin/stitch-typed.d.ts +15 -0
  85. package/dist/core/plugin/stitch.d.ts +1 -0
  86. package/dist/core/plugin/stitchSimple.d.ts +4 -0
  87. package/dist/core/plugin/stringAlphanumeric.d.ts +42 -0
  88. package/dist/core/plugin/stringBase64.d.ts +119 -0
  89. package/dist/core/plugin/stringContentEncoding.d.ts +43 -0
  90. package/dist/core/plugin/stringContentMediaType.d.ts +47 -0
  91. package/dist/core/plugin/stringDate.d.ts +48 -0
  92. package/dist/core/plugin/stringDatetime.d.ts +108 -0
  93. package/dist/core/plugin/stringDuration.d.ts +41 -0
  94. package/dist/core/plugin/stringEmail.d.ts +81 -0
  95. package/dist/core/plugin/stringEndsWith.d.ts +42 -0
  96. package/dist/core/plugin/stringExactLength.d.ts +46 -0
  97. package/dist/core/plugin/stringHostname.d.ts +104 -0
  98. package/dist/core/plugin/stringIpv4.d.ts +85 -0
  99. package/dist/core/plugin/stringIpv6.d.ts +104 -0
  100. package/dist/core/plugin/stringIri.d.ts +117 -0
  101. package/dist/core/plugin/stringIriReference.d.ts +43 -0
  102. package/dist/core/plugin/stringJsonPointer.d.ts +107 -0
  103. package/dist/core/plugin/stringMax.d.ts +43 -0
  104. package/dist/core/plugin/stringMin.d.ts +43 -0
  105. package/dist/core/plugin/stringPattern.d.ts +40 -0
  106. package/dist/core/plugin/stringRelativeJsonPointer.d.ts +42 -0
  107. package/dist/core/plugin/stringStartsWith.d.ts +42 -0
  108. package/dist/core/plugin/stringTime.d.ts +39 -0
  109. package/dist/core/plugin/stringUriTemplate.d.ts +43 -0
  110. package/dist/core/plugin/stringUrl.d.ts +97 -0
  111. package/dist/core/plugin/testUtils.d.ts +15 -0
  112. package/dist/core/plugin/transform-type-restrictions.d.ts +61 -0
  113. package/dist/core/plugin/transform.d.ts +35 -0
  114. package/dist/core/plugin/tupleBuilder.d.ts +66 -0
  115. package/dist/core/plugin/types.d.ts +143 -0
  116. package/dist/core/plugin/unionGuard.d.ts +50 -0
  117. package/dist/core/plugin/utils/field-accessor-optimized.d.ts +50 -0
  118. package/dist/core/plugin/utils/field-accessor.d.ts +107 -0
  119. package/dist/core/plugin/uuid.d.ts +95 -0
  120. package/dist/core/plugin/validateIf.d.ts +57 -0
  121. package/dist/core/registry/plugin-registry.d.ts +116 -0
  122. package/dist/core/registry.d.ts +6 -0
  123. package/dist/core/transform/index.d.ts +1 -0
  124. package/dist/core/transform/string/defaultValue.d.ts +6 -0
  125. package/dist/core/transform/string/index.d.ts +3 -0
  126. package/dist/core/transform/string/replace.d.ts +14 -0
  127. package/dist/core/transform/string/sanitize.d.ts +6 -0
  128. package/dist/core/utils/type-guards.d.ts +68 -0
  129. package/dist/index.d.ts +72 -0
  130. package/dist/index.js +2 -0
  131. package/dist/index.js.map +7 -0
  132. package/dist/index.mjs +2 -0
  133. package/dist/index.mjs.map +7 -0
  134. package/dist/plugins/arrayContains.d.ts +37 -0
  135. package/dist/plugins/arrayContains.js +1 -0
  136. package/dist/plugins/arrayContains.mjs +1 -0
  137. package/dist/plugins/arrayIncludes.d.ts +42 -0
  138. package/dist/plugins/arrayIncludes.js +1 -0
  139. package/dist/plugins/arrayIncludes.mjs +1 -0
  140. package/dist/plugins/arrayMaxLength.d.ts +43 -0
  141. package/dist/plugins/arrayMaxLength.js +1 -0
  142. package/dist/plugins/arrayMaxLength.mjs +1 -0
  143. package/dist/plugins/arrayMinLength.d.ts +43 -0
  144. package/dist/plugins/arrayMinLength.js +1 -0
  145. package/dist/plugins/arrayMinLength.mjs +1 -0
  146. package/dist/plugins/arrayUnique.d.ts +41 -0
  147. package/dist/plugins/arrayUnique.js +1 -0
  148. package/dist/plugins/arrayUnique.mjs +1 -0
  149. package/dist/plugins/booleanFalsy.d.ts +41 -0
  150. package/dist/plugins/booleanFalsy.js +1 -0
  151. package/dist/plugins/booleanFalsy.mjs +1 -0
  152. package/dist/plugins/booleanTruthy.d.ts +38 -0
  153. package/dist/plugins/booleanTruthy.js +1 -0
  154. package/dist/plugins/booleanTruthy.mjs +1 -0
  155. package/dist/plugins/compareField.d.ts +58 -0
  156. package/dist/plugins/compareField.js +1 -0
  157. package/dist/plugins/compareField.mjs +1 -0
  158. package/dist/plugins/custom.d.ts +60 -0
  159. package/dist/plugins/custom.js +1 -0
  160. package/dist/plugins/custom.mjs +1 -0
  161. package/dist/plugins/jsonSchema.d.ts +11 -0
  162. package/dist/plugins/jsonSchema.js +1 -0
  163. package/dist/plugins/jsonSchema.mjs +1 -0
  164. package/dist/plugins/jsonSchemaFullFeature.d.ts +31 -0
  165. package/dist/plugins/jsonSchemaFullFeature.js +1 -0
  166. package/dist/plugins/jsonSchemaFullFeature.mjs +1 -0
  167. package/dist/plugins/literal.d.ts +40 -0
  168. package/dist/plugins/literal.js +1 -0
  169. package/dist/plugins/literal.mjs +1 -0
  170. package/dist/plugins/nullable.d.ts +34 -0
  171. package/dist/plugins/nullable.js +1 -0
  172. package/dist/plugins/nullable.mjs +1 -0
  173. package/dist/plugins/numberInteger.d.ts +41 -0
  174. package/dist/plugins/numberInteger.js +1 -0
  175. package/dist/plugins/numberInteger.mjs +1 -0
  176. package/dist/plugins/numberMax.d.ts +49 -0
  177. package/dist/plugins/numberMax.js +1 -0
  178. package/dist/plugins/numberMax.mjs +1 -0
  179. package/dist/plugins/numberMin.d.ts +49 -0
  180. package/dist/plugins/numberMin.js +1 -0
  181. package/dist/plugins/numberMin.mjs +1 -0
  182. package/dist/plugins/numberMultipleOf.d.ts +42 -0
  183. package/dist/plugins/numberMultipleOf.js +1 -0
  184. package/dist/plugins/numberMultipleOf.mjs +1 -0
  185. package/dist/plugins/numberNegative.d.ts +41 -0
  186. package/dist/plugins/numberNegative.js +1 -0
  187. package/dist/plugins/numberNegative.mjs +1 -0
  188. package/dist/plugins/numberPositive.d.ts +41 -0
  189. package/dist/plugins/numberPositive.js +1 -0
  190. package/dist/plugins/numberPositive.mjs +1 -0
  191. package/dist/plugins/object.d.ts +43 -0
  192. package/dist/plugins/object.js +1 -0
  193. package/dist/plugins/object.mjs +1 -0
  194. package/dist/plugins/objectAdditionalProperties.d.ts +51 -0
  195. package/dist/plugins/objectAdditionalProperties.js +1 -0
  196. package/dist/plugins/objectAdditionalProperties.mjs +1 -0
  197. package/dist/plugins/objectDependentRequired.d.ts +42 -0
  198. package/dist/plugins/objectDependentRequired.js +1 -0
  199. package/dist/plugins/objectDependentRequired.mjs +1 -0
  200. package/dist/plugins/objectDependentSchemas.d.ts +40 -0
  201. package/dist/plugins/objectDependentSchemas.js +1 -0
  202. package/dist/plugins/objectDependentSchemas.mjs +1 -0
  203. package/dist/plugins/objectMaxProperties.d.ts +42 -0
  204. package/dist/plugins/objectMaxProperties.js +1 -0
  205. package/dist/plugins/objectMaxProperties.mjs +1 -0
  206. package/dist/plugins/objectMinProperties.d.ts +42 -0
  207. package/dist/plugins/objectMinProperties.js +1 -0
  208. package/dist/plugins/objectMinProperties.mjs +1 -0
  209. package/dist/plugins/objectPatternProperties.d.ts +46 -0
  210. package/dist/plugins/objectPatternProperties.js +1 -0
  211. package/dist/plugins/objectPatternProperties.mjs +1 -0
  212. package/dist/plugins/objectPropertyNames.d.ts +36 -0
  213. package/dist/plugins/objectPropertyNames.js +1 -0
  214. package/dist/plugins/objectPropertyNames.mjs +1 -0
  215. package/dist/plugins/oneOf.d.ts +44 -0
  216. package/dist/plugins/oneOf.js +1 -0
  217. package/dist/plugins/oneOf.mjs +1 -0
  218. package/dist/plugins/optional.d.ts +35 -0
  219. package/dist/plugins/optional.js +1 -0
  220. package/dist/plugins/optional.mjs +1 -0
  221. package/dist/plugins/readOnlyWriteOnly.d.ts +48 -0
  222. package/dist/plugins/readOnlyWriteOnly.js +1 -0
  223. package/dist/plugins/readOnlyWriteOnly.mjs +1 -0
  224. package/dist/plugins/required.d.ts +45 -0
  225. package/dist/plugins/required.js +1 -0
  226. package/dist/plugins/required.mjs +1 -0
  227. package/dist/plugins/requiredIf.d.ts +66 -0
  228. package/dist/plugins/requiredIf.js +1 -0
  229. package/dist/plugins/requiredIf.mjs +1 -0
  230. package/dist/plugins/skip.d.ts +57 -0
  231. package/dist/plugins/skip.js +1 -0
  232. package/dist/plugins/skip.mjs +1 -0
  233. package/dist/plugins/stringBase64.d.ts +119 -0
  234. package/dist/plugins/stringBase64.js +1 -0
  235. package/dist/plugins/stringBase64.mjs +1 -0
  236. package/dist/plugins/stringContentEncoding.d.ts +43 -0
  237. package/dist/plugins/stringContentEncoding.js +1 -0
  238. package/dist/plugins/stringContentEncoding.mjs +1 -0
  239. package/dist/plugins/stringContentMediaType.d.ts +47 -0
  240. package/dist/plugins/stringContentMediaType.js +1 -0
  241. package/dist/plugins/stringContentMediaType.mjs +1 -0
  242. package/dist/plugins/stringDate.d.ts +48 -0
  243. package/dist/plugins/stringDate.js +1 -0
  244. package/dist/plugins/stringDate.mjs +1 -0
  245. package/dist/plugins/stringDatetime.d.ts +108 -0
  246. package/dist/plugins/stringDatetime.js +1 -0
  247. package/dist/plugins/stringDatetime.mjs +1 -0
  248. package/dist/plugins/stringDuration.d.ts +41 -0
  249. package/dist/plugins/stringDuration.js +1 -0
  250. package/dist/plugins/stringDuration.mjs +1 -0
  251. package/dist/plugins/stringEmail.d.ts +81 -0
  252. package/dist/plugins/stringEmail.js +1 -0
  253. package/dist/plugins/stringEmail.mjs +1 -0
  254. package/dist/plugins/stringHostname.d.ts +104 -0
  255. package/dist/plugins/stringHostname.js +1 -0
  256. package/dist/plugins/stringHostname.mjs +1 -0
  257. package/dist/plugins/stringIpv4.d.ts +85 -0
  258. package/dist/plugins/stringIpv4.js +1 -0
  259. package/dist/plugins/stringIpv4.mjs +1 -0
  260. package/dist/plugins/stringIpv6.d.ts +104 -0
  261. package/dist/plugins/stringIpv6.js +1 -0
  262. package/dist/plugins/stringIpv6.mjs +1 -0
  263. package/dist/plugins/stringIri.d.ts +117 -0
  264. package/dist/plugins/stringIri.js +1 -0
  265. package/dist/plugins/stringIri.mjs +1 -0
  266. package/dist/plugins/stringIriReference.d.ts +43 -0
  267. package/dist/plugins/stringIriReference.js +1 -0
  268. package/dist/plugins/stringIriReference.mjs +1 -0
  269. package/dist/plugins/stringJsonPointer.d.ts +107 -0
  270. package/dist/plugins/stringJsonPointer.js +1 -0
  271. package/dist/plugins/stringJsonPointer.mjs +1 -0
  272. package/dist/plugins/stringMax.d.ts +43 -0
  273. package/dist/plugins/stringMax.js +1 -0
  274. package/dist/plugins/stringMax.mjs +1 -0
  275. package/dist/plugins/stringMin.d.ts +43 -0
  276. package/dist/plugins/stringMin.js +1 -0
  277. package/dist/plugins/stringMin.mjs +1 -0
  278. package/dist/plugins/stringPattern.d.ts +40 -0
  279. package/dist/plugins/stringPattern.js +1 -0
  280. package/dist/plugins/stringPattern.mjs +1 -0
  281. package/dist/plugins/stringRelativeJsonPointer.d.ts +42 -0
  282. package/dist/plugins/stringRelativeJsonPointer.js +1 -0
  283. package/dist/plugins/stringRelativeJsonPointer.mjs +1 -0
  284. package/dist/plugins/stringTime.d.ts +39 -0
  285. package/dist/plugins/stringTime.js +1 -0
  286. package/dist/plugins/stringTime.mjs +1 -0
  287. package/dist/plugins/stringUriTemplate.d.ts +43 -0
  288. package/dist/plugins/stringUriTemplate.js +1 -0
  289. package/dist/plugins/stringUriTemplate.mjs +1 -0
  290. package/dist/plugins/stringUrl.d.ts +97 -0
  291. package/dist/plugins/stringUrl.js +1 -0
  292. package/dist/plugins/stringUrl.mjs +1 -0
  293. package/dist/plugins/transform.d.ts +35 -0
  294. package/dist/plugins/transform.js +1 -0
  295. package/dist/plugins/transform.mjs +1 -0
  296. package/dist/plugins/tupleBuilder.d.ts +66 -0
  297. package/dist/plugins/tupleBuilder.js +1 -0
  298. package/dist/plugins/tupleBuilder.mjs +1 -0
  299. package/dist/plugins/uuid.d.ts +95 -0
  300. package/dist/plugins/uuid.js +1 -0
  301. package/dist/plugins/uuid.mjs +1 -0
  302. package/dist/plugins/validateIf.d.ts +57 -0
  303. package/dist/plugins/validateIf.js +1 -0
  304. package/dist/plugins/validateIf.mjs +1 -0
  305. package/dist/types/array-type-analysis.d.ts +115 -0
  306. package/dist/types/index.d.ts +74 -0
  307. package/dist/types/indexed-result.d.ts +44 -0
  308. package/dist/types/result.d.ts +159 -0
  309. package/dist/types/stitch-types.d.ts +118 -0
  310. package/dist/types/util.d.ts +19 -0
  311. package/dist/types/valitator.d.ts +10 -0
  312. package/package.json +353 -0
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @luq-plugin
3
+ * @name arrayContains
4
+ * @category array
5
+ * @description Validates that an array contains at least one item matching the specified schema or value
6
+ * @allowedTypes ["array"]
7
+ * @example
8
+ * ```typescript
9
+ * // Contains specific value
10
+ * const validator = Builder()
11
+ * .use(arrayContainsPlugin)
12
+ * .for<{ tags: string[] }>()
13
+ * .v("tags", (b) => b.array.contains("important"))
14
+ * .build();
15
+ *
16
+ * // Contains matching schema
17
+ * builder.v("items", b => b.array.contains({
18
+ * validator: (value) => typeof value === 'number' && value > 10,
19
+ * message: "Array must contain at least one number greater than 10"
20
+ * }))
21
+ * ```
22
+ * @params
23
+ * - schema: any | { validator: (value: any) => boolean, message?: string } - Value or validation schema
24
+ * @returns Validation function that checks if array contains matching item
25
+ * @since 0.1.0-alpha
26
+ */
27
+ import type { JSONSchema7 } from "json-schema";
28
+ export interface ContainsSchema {
29
+ validator: (value: any) => boolean;
30
+ message?: string;
31
+ }
32
+ export declare const arrayContainsPlugin: import("../index").TypedPlugin<"arrayContains", "contains", (schema: any | ContainsSchema | JSONSchema7) => {
33
+ check: (value: any[]) => boolean;
34
+ code: string;
35
+ getErrorMessage: (value: any[], path: string) => any;
36
+ params: any[];
37
+ }, readonly ["array"], "validator", "standard">;
@@ -0,0 +1 @@
1
+ "use strict";var m=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var y=(e,n)=>{for(var t in n)m(e,t,{get:n[t],enumerable:!0})},d=(e,n,t,s)=>{if(n&&typeof n=="object"||typeof n=="function")for(let a of T(n))!f.call(e,a)&&a!==t&&m(e,a,{get:()=>n[a],enumerable:!(s=p(n,a))||s.enumerable});return e};var g=e=>d(m({},"__esModule",{value:!0}),e);var I={};y(I,{arrayContainsPlugin:()=>x});module.exports=g(I);var c=(e,n,t,s)=>{let i=(r=>(...o)=>{let l=r(...o);return l&&typeof l=="object"&&"check"in l?{...l,pluginName:s}:l})(t);switch(e){case"conditional":return(r,...o)=>i(r,...o);case"fieldReference":return(r,...o)=>i(r,...o);case"multiFieldReference":return i;case"transform":return r=>i(r);case"arrayElement":return(r,...o)=>i(r,...o);case"context":return r=>i(r);default:return i}};function u(e){let{name:n,methodName:t,allowedTypes:s,category:a,impl:i}=e;return{name:n,methodName:t,allowedTypes:s,category:a,create:()=>c(a,t,i,n)}}var N=(e,n)=>{if(n.type)switch(n.type){case"string":if(typeof e!="string")return!1;break;case"number":if(typeof e!="number")return!1;break;case"boolean":if(typeof e!="boolean")return!1;break;case"array":if(!Array.isArray(e))return!1;break;case"object":if(!e||typeof e!="object"||Array.isArray(e))return!1;break;case"null":if(e!==null)return!1;break}return!(typeof e=="string"&&(n.minLength&&e.length<n.minLength||n.maxLength&&e.length>n.maxLength||n.pattern&&!new RegExp(n.pattern).test(e))||typeof e=="number"&&(n.minimum!==void 0&&e<n.minimum||n.maximum!==void 0&&e>n.maximum||n.multipleOf&&e%n.multipleOf!==0)||n.enum&&!n.enum.includes(e)||n.const!==void 0&&e!==n.const)},x=u({name:"arrayContains",methodName:"contains",allowedTypes:["array"],category:"standard",impl:e=>({check:n=>Array.isArray(n)?typeof e!="object"||e===null||Array.isArray(e)?n.includes(e):"validator"in e&&typeof e.validator=="function"?n.some(t=>e.validator(t)):typeof e=="object"&&e!==null?n.some(t=>N(t,e)):!1:!1,code:"ARRAY_CONTAINS",getErrorMessage:(n,t)=>typeof e=="object"&&e!==null&&"message"in e?e.message||`${t} must contain at least one matching item`:typeof e!="object"||e===null||Array.isArray(e)?`${t} must contain ${JSON.stringify(e)}`:`${t} must contain at least one item matching the schema`,params:[e]})});0&&(module.exports={arrayContainsPlugin});
@@ -0,0 +1 @@
1
+ var u=(e,n,t,s)=>{let a=(r=>(...i)=>{let o=r(...i);return o&&typeof o=="object"&&"check"in o?{...o,pluginName:s}:o})(t);switch(e){case"conditional":return(r,...i)=>a(r,...i);case"fieldReference":return(r,...i)=>a(r,...i);case"multiFieldReference":return a;case"transform":return r=>a(r);case"arrayElement":return(r,...i)=>a(r,...i);case"context":return r=>a(r);default:return a}};function m(e){let{name:n,methodName:t,allowedTypes:s,category:l,impl:a}=e;return{name:n,methodName:t,allowedTypes:s,category:l,create:()=>u(l,t,a,n)}}var p=(e,n)=>{if(n.type)switch(n.type){case"string":if(typeof e!="string")return!1;break;case"number":if(typeof e!="number")return!1;break;case"boolean":if(typeof e!="boolean")return!1;break;case"array":if(!Array.isArray(e))return!1;break;case"object":if(!e||typeof e!="object"||Array.isArray(e))return!1;break;case"null":if(e!==null)return!1;break}return!(typeof e=="string"&&(n.minLength&&e.length<n.minLength||n.maxLength&&e.length>n.maxLength||n.pattern&&!new RegExp(n.pattern).test(e))||typeof e=="number"&&(n.minimum!==void 0&&e<n.minimum||n.maximum!==void 0&&e>n.maximum||n.multipleOf&&e%n.multipleOf!==0)||n.enum&&!n.enum.includes(e)||n.const!==void 0&&e!==n.const)},y=m({name:"arrayContains",methodName:"contains",allowedTypes:["array"],category:"standard",impl:e=>({check:n=>Array.isArray(n)?typeof e!="object"||e===null||Array.isArray(e)?n.includes(e):"validator"in e&&typeof e.validator=="function"?n.some(t=>e.validator(t)):typeof e=="object"&&e!==null?n.some(t=>p(t,e)):!1:!1,code:"ARRAY_CONTAINS",getErrorMessage:(n,t)=>typeof e=="object"&&e!==null&&"message"in e?e.message||`${t} must contain at least one matching item`:typeof e!="object"||e===null||Array.isArray(e)?`${t} must contain ${JSON.stringify(e)}`:`${t} must contain at least one item matching the schema`,params:[e]})});export{y as arrayContainsPlugin};
@@ -0,0 +1,42 @@
1
+ import { ValidationOptions } from "../core/plugin/types";
2
+ /**
3
+ * @luq-plugin
4
+ * @name arrayIncludes
5
+ * @category standard
6
+ * @description Validates that an array contains a specific required element
7
+ * @allowedTypes ["array"]
8
+ * @example
9
+ * ```typescript
10
+ * // Basic usage - check if array contains specific item
11
+ * const validator = Builder()
12
+ * .use(arrayIncludesPlugin)
13
+ * .for<UserData>()
14
+ * .v("roles", (b) => b.array.includes("admin"))
15
+ * .v("permissions", (b) => b.array.includes("read"))
16
+ * .build();
17
+ *
18
+ * // Multiple required items
19
+ * builder.v("features", b => b.array
20
+ * .includes("core")
21
+ * .includes("api")
22
+ * )
23
+ * ```
24
+ * @params
25
+ * - expected: any - The element that must be present in the array
26
+ * - options?: { messageFactory?: (context: MessageContext) => string } - Optional configuration
27
+ * @returns Validation function that returns true if array contains the expected element
28
+ * @customError
29
+ * ```typescript
30
+ * .includes("admin", {
31
+ * messageFactory: ({ path, value, params }) =>
32
+ * `${path} must include "${params.expected}" (current: [${value.join(", ")}])`
33
+ * })
34
+ * ```
35
+ * @since 0.1.0-alpha
36
+ */
37
+ export declare const arrayIncludesPlugin: import("../index").TypedPlugin<"arrayIncludes", "includes", <TElement = any>(element: TElement, options?: ValidationOptions) => {
38
+ check: (value: any) => boolean;
39
+ code: string;
40
+ getErrorMessage: (value: any, path: string) => string;
41
+ params: (ValidationOptions<{}> | TElement)[];
42
+ }, readonly ["array"], "validator", "arrayElement">;
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var y=(e,n)=>{for(var a in n)l(e,a,{get:n[a],enumerable:!0})},g=(e,n,a,m)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of p(n))!d.call(e,t)&&t!==a&&l(e,t,{get:()=>n[t],enumerable:!(m=u(n,t))||m.enumerable});return e};var c=e=>g(l({},"__esModule",{value:!0}),e);var P={};y(P,{arrayIncludesPlugin:()=>h});module.exports=c(P);var f=(e,n,a,m)=>{let o=(r=>(...s)=>{let i=r(...s);return i&&typeof i=="object"&&"check"in i?{...i,pluginName:m}:i})(a);switch(e){case"conditional":return(r,...s)=>o(r,...s);case"fieldReference":return(r,...s)=>o(r,...s);case"multiFieldReference":return o;case"transform":return r=>o(r);case"arrayElement":return(r,...s)=>o(r,...s);case"context":return r=>o(r);default:return o}};function T(e){let{name:n,methodName:a,allowedTypes:m,category:t,impl:o}=e;return{name:n,methodName:a,allowedTypes:m,category:t,create:()=>f(t,a,o,n)}}var N="arrayIncludes",I=e=>`Array must include ${JSON.stringify(e)}`,x=["array"],h=T({name:"arrayIncludes",methodName:"includes",allowedTypes:x,category:"arrayElement",impl:(e,n)=>{let a=n?.code||N,m=n?.messageFactory||(t=>I(t.element));return{check:t=>Array.isArray(t)?t.includes(e):!0,code:a,getErrorMessage:(t,o)=>m({path:o,value:t,code:a,element:e}),params:[e,n]}}});0&&(module.exports={arrayIncludesPlugin});
@@ -0,0 +1 @@
1
+ var T=(a,r,o,s)=>{let n=(e=>(...m)=>{let i=e(...m);return i&&typeof i=="object"&&"check"in i?{...i,pluginName:s}:i})(o);switch(a){case"conditional":return(e,...m)=>n(e,...m);case"fieldReference":return(e,...m)=>n(e,...m);case"multiFieldReference":return n;case"transform":return e=>n(e);case"arrayElement":return(e,...m)=>n(e,...m);case"context":return e=>n(e);default:return n}};function l(a){let{name:r,methodName:o,allowedTypes:s,category:t,impl:n}=a;return{name:r,methodName:o,allowedTypes:s,category:t,create:()=>T(t,o,n,r)}}var u="arrayIncludes",p=a=>`Array must include ${JSON.stringify(a)}`,d=["array"],c=l({name:"arrayIncludes",methodName:"includes",allowedTypes:d,category:"arrayElement",impl:(a,r)=>{let o=r?.code||u,s=r?.messageFactory||(t=>p(t.element));return{check:t=>Array.isArray(t)?t.includes(a):!0,code:o,getErrorMessage:(t,n)=>s({path:n,value:t,code:o,element:a}),params:[a,r]}}});export{c as arrayIncludesPlugin};
@@ -0,0 +1,43 @@
1
+ import { ValidationOptions, MessageContext } from "../core/plugin/types";
2
+ export interface ArrayMaxLengthContext extends MessageContext {
3
+ max: number;
4
+ actual: number;
5
+ }
6
+ /**
7
+ * @luq-plugin
8
+ * @name arrayMaxLength
9
+ * @category standard
10
+ * @description Validates that an array does not exceed the specified maximum number of elements
11
+ * @allowedTypes ["array"]
12
+ * @example
13
+ * ```typescript
14
+ * // Basic usage - set maximum array length
15
+ * const validator = Builder()
16
+ * .use(arrayMaxLengthPlugin)
17
+ * .for<FormData>()
18
+ * .v("tags", (b) => b.array.maxLength(10))
19
+ * .v("attachments", (b) => b.array.maxLength(5))
20
+ * .build();
21
+ *
22
+ * // Limit file uploads with min and max
23
+ * builder.v("files", b => b.array.minLength(1).maxLength(3))
24
+ * ```
25
+ * @params
26
+ * - maxLength: number - Maximum number of elements allowed
27
+ * - options?: { messageFactory?: (context: MessageContext) => string } - Optional configuration
28
+ * @returns Validation function that returns true if array length does not exceed maximum
29
+ * @customError
30
+ * ```typescript
31
+ * .maxLength(5, {
32
+ * messageFactory: ({ path, value, params }) =>
33
+ * `${path} can have at most ${params.maxLength} items (current: ${value.length})`
34
+ * })
35
+ * ```
36
+ * @since 0.1.0-alpha
37
+ */
38
+ export declare const arrayMaxLengthPlugin: import("../index").TypedPlugin<"arrayMaxLength", "maxLength", (maxLength: number, options?: ValidationOptions<ArrayMaxLengthContext>) => {
39
+ check: (value: any) => boolean;
40
+ code: string;
41
+ getErrorMessage: (value: any, path: string) => string;
42
+ params: (number | ValidationOptions<ArrayMaxLengthContext>)[];
43
+ }, readonly ["array"], "validator", "standard">;
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var g=(n,t)=>{for(var r in t)l(n,r,{get:t[r],enumerable:!0})},y=(n,t,r,m)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of p(t))!d.call(n,e)&&e!==r&&l(n,e,{get:()=>t[e],enumerable:!(m=u(t,e))||m.enumerable});return n};var c=n=>y(l({},"__esModule",{value:!0}),n);var I={};g(I,{arrayMaxLengthPlugin:()=>h});module.exports=c(I);var x=(n,t,r,m)=>{let o=(a=>(...s)=>{let i=a(...s);return i&&typeof i=="object"&&"check"in i?{...i,pluginName:m}:i})(r);switch(n){case"conditional":return(a,...s)=>o(a,...s);case"fieldReference":return(a,...s)=>o(a,...s);case"multiFieldReference":return o;case"transform":return a=>o(a);case"arrayElement":return(a,...s)=>o(a,...s);case"context":return a=>o(a);default:return o}};function T(n){let{name:t,methodName:r,allowedTypes:m,category:e,impl:o}=n;return{name:t,methodName:r,allowedTypes:m,category:e,create:()=>x(e,r,o,t)}}var f="arrayMaxLength",N=["array"],h=T({name:"arrayMaxLength",methodName:"maxLength",allowedTypes:N,category:"standard",impl:(n,t)=>{let r=t?.code||f,m=t?.messageFactory||(e=>`Array must have at most ${e.max} elements, but got ${e.actual}`);if(typeof n!="number"||n<0)throw new Error(`Invalid maxLength: ${n}`);return{check:e=>Array.isArray(e)?e.length<=n:!0,code:r,getErrorMessage:(e,o)=>{let a=Array.isArray(e)?e.length:0;return m({path:o,value:e,code:r,max:n,actual:a})},params:[n,t]}}});0&&(module.exports={arrayMaxLengthPlugin});
@@ -0,0 +1 @@
1
+ var T=(a,o,m,s)=>{let t=(n=>(...r)=>{let i=n(...r);return i&&typeof i=="object"&&"check"in i?{...i,pluginName:s}:i})(m);switch(a){case"conditional":return(n,...r)=>t(n,...r);case"fieldReference":return(n,...r)=>t(n,...r);case"multiFieldReference":return t;case"transform":return n=>t(n);case"arrayElement":return(n,...r)=>t(n,...r);case"context":return n=>t(n);default:return t}};function l(a){let{name:o,methodName:m,allowedTypes:s,category:e,impl:t}=a;return{name:o,methodName:m,allowedTypes:s,category:e,create:()=>T(e,m,t,o)}}var u="arrayMaxLength",p=["array"],y=l({name:"arrayMaxLength",methodName:"maxLength",allowedTypes:p,category:"standard",impl:(a,o)=>{let m=o?.code||u,s=o?.messageFactory||(e=>`Array must have at most ${e.max} elements, but got ${e.actual}`);if(typeof a!="number"||a<0)throw new Error(`Invalid maxLength: ${a}`);return{check:e=>Array.isArray(e)?e.length<=a:!0,code:m,getErrorMessage:(e,t)=>{let n=Array.isArray(e)?e.length:0;return s({path:t,value:e,code:m,max:a,actual:n})},params:[a,o]}}});export{y as arrayMaxLengthPlugin};
@@ -0,0 +1,43 @@
1
+ import { ValidationOptions, MessageContext } from "../core/plugin/types";
2
+ export interface ArrayMinLengthContext extends MessageContext {
3
+ min: number;
4
+ actual: number;
5
+ }
6
+ /**
7
+ * @luq-plugin
8
+ * @name arrayMinLength
9
+ * @category standard
10
+ * @description Validates that an array has at least the specified minimum number of elements
11
+ * @allowedTypes ["array"]
12
+ * @example
13
+ * ```typescript
14
+ * // Basic usage - set minimum array length
15
+ * const validator = Builder()
16
+ * .use(arrayMinLengthPlugin)
17
+ * .for<FormData>()
18
+ * .v("tags", (b) => b.array.minLength(1))
19
+ * .v("items", (b) => b.array.minLength(3))
20
+ * .build();
21
+ *
22
+ * // Ensure non-empty array
23
+ * builder.v("selectedOptions", b => b.array.required().minLength(1))
24
+ * ```
25
+ * @params
26
+ * - minLength: number - Minimum number of elements required
27
+ * - options?: { messageFactory?: (context: MessageContext) => string } - Optional configuration
28
+ * @returns Validation function that returns true if array length is at least the minimum
29
+ * @customError
30
+ * ```typescript
31
+ * .minLength(3, {
32
+ * messageFactory: ({ path, value, params }) =>
33
+ * `${path} must have at least ${params.minLength} items (current: ${value.length})`
34
+ * })
35
+ * ```
36
+ * @since 0.1.0-alpha
37
+ */
38
+ export declare const arrayMinLengthPlugin: import("../index").TypedPlugin<"arrayMinLength", "minLength", (minLength: number, options?: ValidationOptions<ArrayMinLengthContext>) => {
39
+ check: (value: any) => boolean;
40
+ code: string;
41
+ getErrorMessage: (value: any, path: string) => string;
42
+ params: (number | ValidationOptions<ArrayMinLengthContext>)[];
43
+ }, readonly ["array"], "validator", "standard">;
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var g=(n,t)=>{for(var r in t)l(n,r,{get:t[r],enumerable:!0})},y=(n,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of p(t))!d.call(n,e)&&e!==r&&l(n,e,{get:()=>t[e],enumerable:!(i=u(t,e))||i.enumerable});return n};var c=n=>y(l({},"__esModule",{value:!0}),n);var I={};g(I,{arrayMinLengthPlugin:()=>h});module.exports=c(I);var f=(n,t,r,i)=>{let o=(a=>(...m)=>{let s=a(...m);return s&&typeof s=="object"&&"check"in s?{...s,pluginName:i}:s})(r);switch(n){case"conditional":return(a,...m)=>o(a,...m);case"fieldReference":return(a,...m)=>o(a,...m);case"multiFieldReference":return o;case"transform":return a=>o(a);case"arrayElement":return(a,...m)=>o(a,...m);case"context":return a=>o(a);default:return o}};function T(n){let{name:t,methodName:r,allowedTypes:i,category:e,impl:o}=n;return{name:t,methodName:r,allowedTypes:i,category:e,create:()=>f(e,r,o,t)}}var N="arrayMinLength",x=["array"],h=T({name:"arrayMinLength",methodName:"minLength",allowedTypes:x,category:"standard",impl:(n,t)=>{let r=t?.code||N,i=t?.messageFactory||(e=>`Array must have at least ${e.min} elements, but got ${e.actual}`);if(typeof n!="number"||n<0)throw new Error(`Invalid minLength: ${n}`);return{check:e=>Array.isArray(e)?e.length>=n:!0,code:r,getErrorMessage:(e,o)=>{let a=Array.isArray(e)?e.length:0;return i({path:o,value:e,code:r,min:n,actual:a})},params:[n,t]}}});0&&(module.exports={arrayMinLengthPlugin});
@@ -0,0 +1 @@
1
+ var T=(a,o,i,m)=>{let t=(n=>(...r)=>{let s=n(...r);return s&&typeof s=="object"&&"check"in s?{...s,pluginName:m}:s})(i);switch(a){case"conditional":return(n,...r)=>t(n,...r);case"fieldReference":return(n,...r)=>t(n,...r);case"multiFieldReference":return t;case"transform":return n=>t(n);case"arrayElement":return(n,...r)=>t(n,...r);case"context":return n=>t(n);default:return t}};function l(a){let{name:o,methodName:i,allowedTypes:m,category:e,impl:t}=a;return{name:o,methodName:i,allowedTypes:m,category:e,create:()=>T(e,i,t,o)}}var u="arrayMinLength",p=["array"],y=l({name:"arrayMinLength",methodName:"minLength",allowedTypes:p,category:"standard",impl:(a,o)=>{let i=o?.code||u,m=o?.messageFactory||(e=>`Array must have at least ${e.min} elements, but got ${e.actual}`);if(typeof a!="number"||a<0)throw new Error(`Invalid minLength: ${a}`);return{check:e=>Array.isArray(e)?e.length>=a:!0,code:i,getErrorMessage:(e,t)=>{let n=Array.isArray(e)?e.length:0;return m({path:t,value:e,code:i,min:a,actual:n})},params:[a,o]}}});export{y as arrayMinLengthPlugin};
@@ -0,0 +1,41 @@
1
+ import { ValidationOptions } from "../core/plugin/types";
2
+ /**
3
+ * @luq-plugin
4
+ * @name arrayUnique
5
+ * @category standard
6
+ * @description Validates that all elements in an array are unique (no duplicates)
7
+ * @allowedTypes ["array"]
8
+ * @example
9
+ * ```typescript
10
+ * // Basic usage - ensures all array elements are unique
11
+ * const validator = Builder()
12
+ * .use(arrayUniquePlugin)
13
+ * .for<FormData>()
14
+ * .v("emails", (b) => b.array.unique())
15
+ * .v("userIds", (b) => b.array.required().unique())
16
+ * .build();
17
+ *
18
+ * // For tags or categories
19
+ * builder.v("tags", b => b.array.unique().minLength(1).maxLength(10))
20
+ *
21
+ * // Combining with other array validations
22
+ * builder.v("productCodes", b => b.array.unique().includes("PRIMARY"))
23
+ * ```
24
+ * @params
25
+ * - options?: { messageFactory?: (context: MessageContext) => string } - Optional configuration
26
+ * @returns Validation function that returns true if all array elements are unique
27
+ * @customError
28
+ * ```typescript
29
+ * .unique({
30
+ * messageFactory: ({ path, value }) =>
31
+ * `${path} contains duplicate values`
32
+ * })
33
+ * ```
34
+ * @since 0.1.0-alpha
35
+ */
36
+ export declare const arrayUniquePlugin: import("../index").TypedPlugin<"arrayUnique", "unique", (options?: ValidationOptions) => {
37
+ check: (value: any) => boolean;
38
+ code: string;
39
+ getErrorMessage: (value: any, path: string) => string;
40
+ params: ValidationOptions<{}>[];
41
+ }, readonly ["array"], "validator", "standard">;
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var g=(t,a)=>{for(var s in a)l(t,s,{get:a[s],enumerable:!0})},y=(t,a,s,o)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of p(a))!d.call(t,r)&&r!==s&&l(t,r,{get:()=>a[r],enumerable:!(o=u(a,r))||o.enumerable});return t};var c=t=>y(l({},"__esModule",{value:!0}),t);var P={};g(P,{arrayUniquePlugin:()=>I});module.exports=c(P);var f=(t,a,s,o)=>{let e=(n=>(...i)=>{let m=n(...i);return m&&typeof m=="object"&&"check"in m?{...m,pluginName:o}:m})(s);switch(t){case"conditional":return(n,...i)=>e(n,...i);case"fieldReference":return(n,...i)=>e(n,...i);case"multiFieldReference":return e;case"transform":return n=>e(n);case"arrayElement":return(n,...i)=>e(n,...i);case"context":return n=>e(n);default:return e}};function T(t){let{name:a,methodName:s,allowedTypes:o,category:r,impl:e}=t;return{name:a,methodName:s,allowedTypes:o,category:r,create:()=>f(r,s,e,a)}}var N="arrayUnique",x=()=>"Array must contain unique values",h=["array"],I=T({name:"arrayUnique",methodName:"unique",allowedTypes:h,category:"standard",impl:t=>{let a=t?.code||N,s=t?.messageFactory||(o=>x());return{check:o=>{if(!Array.isArray(o))return!0;let r=o.length;if(r<=10)for(let e=0;e<r;e++){let n=o[e];for(let i=e+1;i<r;i++)if(n===o[i])return!1}else{let e=new Set;for(let n=0;n<r;n++){let i=o[n];if(e.has(i))return!1;e.add(i)}}return!0},code:a,getErrorMessage:(o,r)=>s({path:r,value:o,code:a}),params:t?[t]:[]}}});0&&(module.exports={arrayUniquePlugin});
@@ -0,0 +1 @@
1
+ var T=(o,i,s,a)=>{let e=(n=>(...t)=>{let m=n(...t);return m&&typeof m=="object"&&"check"in m?{...m,pluginName:a}:m})(s);switch(o){case"conditional":return(n,...t)=>e(n,...t);case"fieldReference":return(n,...t)=>e(n,...t);case"multiFieldReference":return e;case"transform":return n=>e(n);case"arrayElement":return(n,...t)=>e(n,...t);case"context":return n=>e(n);default:return e}};function l(o){let{name:i,methodName:s,allowedTypes:a,category:r,impl:e}=o;return{name:i,methodName:s,allowedTypes:a,category:r,create:()=>T(r,s,e,i)}}var u="arrayUnique",p=()=>"Array must contain unique values",d=["array"],c=l({name:"arrayUnique",methodName:"unique",allowedTypes:d,category:"standard",impl:o=>{let i=o?.code||u,s=o?.messageFactory||(a=>p());return{check:a=>{if(!Array.isArray(a))return!0;let r=a.length;if(r<=10)for(let e=0;e<r;e++){let n=a[e];for(let t=e+1;t<r;t++)if(n===a[t])return!1}else{let e=new Set;for(let n=0;n<r;n++){let t=a[n];if(e.has(t))return!1;e.add(t)}}return!0},code:i,getErrorMessage:(a,r)=>s({path:r,value:a,code:i}),params:o?[o]:[]}}});export{c as arrayUniquePlugin};
@@ -0,0 +1,41 @@
1
+ import { ValidationOptions } from "../core/plugin/types";
2
+ /**
3
+ * @luq-plugin
4
+ * @name booleanFalsy
5
+ * @category standard
6
+ * @description Validates that a boolean value is exactly false
7
+ * @allowedTypes ["boolean"]
8
+ * @example
9
+ * ```typescript
10
+ * // Basic usage - ensures value is exactly false
11
+ * const validator = Builder()
12
+ * .use(booleanFalsyPlugin)
13
+ * .for<Settings>()
14
+ * .v("isActive", (b) => b.boolean.falsy())
15
+ * .v("debugMode", (b) => b.boolean.required().falsy())
16
+ * .build();
17
+ *
18
+ * // Privacy settings
19
+ * builder.v("shareData", b => b.boolean.falsy())
20
+ *
21
+ * // Security flags
22
+ * builder.v("allowExternalAccess", b => b.boolean.required().falsy())
23
+ * ```
24
+ * @params
25
+ * - options?: { messageFactory?: (context: MessageContext) => string } - Optional configuration
26
+ * @returns Validation function that returns true if value is exactly false
27
+ * @customError
28
+ * ```typescript
29
+ * .falsy({
30
+ * messageFactory: ({ path, value }) =>
31
+ * `${path} must be set to false (current: ${value})`
32
+ * })
33
+ * ```
34
+ * @since 0.1.0-alpha
35
+ */
36
+ export declare const booleanFalsyPlugin: import("../index").TypedPlugin<"booleanFalsy", "falsy", (options?: ValidationOptions) => {
37
+ check: (value: any) => boolean;
38
+ code: string;
39
+ getErrorMessage: (value: any, path: string) => string;
40
+ params: ValidationOptions<{}>[];
41
+ }, readonly ["boolean"], "validator", "standard">;
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var g=(e,n)=>{for(var a in n)l(e,a,{get:n[a],enumerable:!0})},y=(e,n,a,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of u(n))!d.call(e,r)&&r!==a&&l(e,r,{get:()=>n[r],enumerable:!(t=p(n,r))||t.enumerable});return e};var c=e=>y(l({},"__esModule",{value:!0}),e);var P={};g(P,{booleanFalsyPlugin:()=>h});module.exports=c(P);var f=(e,n,a,t)=>{let s=(o=>(...m)=>{let i=o(...m);return i&&typeof i=="object"&&"check"in i?{...i,pluginName:t}:i})(a);switch(e){case"conditional":return(o,...m)=>s(o,...m);case"fieldReference":return(o,...m)=>s(o,...m);case"multiFieldReference":return s;case"transform":return o=>s(o);case"arrayElement":return(o,...m)=>s(o,...m);case"context":return o=>s(o);default:return s}};function T(e){let{name:n,methodName:a,allowedTypes:t,category:r,impl:s}=e;return{name:n,methodName:a,allowedTypes:t,category:r,create:()=>f(r,a,s,n)}}var N="booleanFalsy",x=()=>"Value must be falsy",I=["boolean"],h=T({name:"booleanFalsy",methodName:"falsy",allowedTypes:I,category:"standard",impl:e=>{let n=e?.code||N,a=e?.messageFactory||(t=>x());return{check:t=>typeof t!="boolean"?!0:t===!1,code:n,getErrorMessage:(t,r)=>a({path:r,value:t,code:n}),params:e?[e]:[]}}});0&&(module.exports={booleanFalsyPlugin});
@@ -0,0 +1 @@
1
+ var T=(a,o,s,t)=>{let n=(e=>(...r)=>{let i=e(...r);return i&&typeof i=="object"&&"check"in i?{...i,pluginName:t}:i})(s);switch(a){case"conditional":return(e,...r)=>n(e,...r);case"fieldReference":return(e,...r)=>n(e,...r);case"multiFieldReference":return n;case"transform":return e=>n(e);case"arrayElement":return(e,...r)=>n(e,...r);case"context":return e=>n(e);default:return n}};function l(a){let{name:o,methodName:s,allowedTypes:t,category:m,impl:n}=a;return{name:o,methodName:s,allowedTypes:t,category:m,create:()=>T(m,s,n,o)}}var p="booleanFalsy",u=()=>"Value must be falsy",d=["boolean"],c=l({name:"booleanFalsy",methodName:"falsy",allowedTypes:d,category:"standard",impl:a=>{let o=a?.code||p,s=a?.messageFactory||(t=>u());return{check:t=>typeof t!="boolean"?!0:t===!1,code:o,getErrorMessage:(t,m)=>s({path:m,value:t,code:o}),params:a?[a]:[]}}});export{c as booleanFalsyPlugin};
@@ -0,0 +1,38 @@
1
+ import { ValidationOptions } from "../core/plugin/types";
2
+ /**
3
+ * @luq-plugin
4
+ * @name booleanTruthy
5
+ * @category standard
6
+ * @description Validates that a boolean value is exactly true
7
+ * @allowedTypes ["boolean"]
8
+ * @example
9
+ * ```typescript
10
+ * // Basic usage - ensure value is exactly true
11
+ * const validator = Builder()
12
+ * .use(booleanTruthyPlugin)
13
+ * .for<FormData>()
14
+ * .v("isActive", (b) => b.boolean.truthy())
15
+ * .v("termsAccepted", (b) => b.boolean.required().truthy())
16
+ * .build();
17
+ *
18
+ * // For consent checkboxes
19
+ * builder.v("agreeToTerms", b => b.boolean.required().truthy())
20
+ * ```
21
+ * @params
22
+ * - options?: { messageFactory?: (context: MessageContext) => string } - Optional configuration
23
+ * @returns Validation function that returns true only if value is exactly true
24
+ * @customError
25
+ * ```typescript
26
+ * .truthy({
27
+ * messageFactory: ({ path }) =>
28
+ * `${path} must be checked/accepted`
29
+ * })
30
+ * ```
31
+ * @since 0.1.0-alpha
32
+ */
33
+ export declare const booleanTruthyPlugin: import("../index").TypedPlugin<"booleanTruthy", "truthy", (options?: ValidationOptions) => {
34
+ check: (value: any) => boolean;
35
+ code: string;
36
+ getErrorMessage: (value: any, path: string) => string;
37
+ params: ValidationOptions<{}>[];
38
+ }, readonly ["boolean"], "validator", "standard">;
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var g=(e,n)=>{for(var a in n)l(e,a,{get:n[a],enumerable:!0})},y=(e,n,a,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of p(n))!d.call(e,r)&&r!==a&&l(e,r,{get:()=>n[r],enumerable:!(t=u(n,r))||t.enumerable});return e};var c=e=>y(l({},"__esModule",{value:!0}),e);var P={};g(P,{booleanTruthyPlugin:()=>I});module.exports=c(P);var f=(e,n,a,t)=>{let m=(o=>(...s)=>{let i=o(...s);return i&&typeof i=="object"&&"check"in i?{...i,pluginName:t}:i})(a);switch(e){case"conditional":return(o,...s)=>m(o,...s);case"fieldReference":return(o,...s)=>m(o,...s);case"multiFieldReference":return m;case"transform":return o=>m(o);case"arrayElement":return(o,...s)=>m(o,...s);case"context":return o=>m(o);default:return m}};function T(e){let{name:n,methodName:a,allowedTypes:t,category:r,impl:m}=e;return{name:n,methodName:a,allowedTypes:t,category:r,create:()=>f(r,a,m,n)}}var N="booleanTruthy",h=()=>"Value must be truthy",x=["boolean"],I=T({name:"booleanTruthy",methodName:"truthy",allowedTypes:x,category:"standard",impl:e=>{let n=e?.code||N,a=e?.messageFactory||(t=>h());return{check:t=>typeof t!="boolean"?!0:t===!0,code:n,getErrorMessage:(t,r)=>a({path:r,value:t,code:n}),params:e?[e]:[]}}});0&&(module.exports={booleanTruthyPlugin});
@@ -0,0 +1 @@
1
+ var T=(a,o,m,t)=>{let n=(e=>(...r)=>{let i=e(...r);return i&&typeof i=="object"&&"check"in i?{...i,pluginName:t}:i})(m);switch(a){case"conditional":return(e,...r)=>n(e,...r);case"fieldReference":return(e,...r)=>n(e,...r);case"multiFieldReference":return n;case"transform":return e=>n(e);case"arrayElement":return(e,...r)=>n(e,...r);case"context":return e=>n(e);default:return n}};function l(a){let{name:o,methodName:m,allowedTypes:t,category:s,impl:n}=a;return{name:o,methodName:m,allowedTypes:t,category:s,create:()=>T(s,m,n,o)}}var u="booleanTruthy",p=()=>"Value must be truthy",d=["boolean"],c=l({name:"booleanTruthy",methodName:"truthy",allowedTypes:d,category:"standard",impl:a=>{let o=a?.code||u,m=a?.messageFactory||(t=>p());return{check:t=>typeof t!="boolean"?!0:t===!0,code:o,getErrorMessage:(t,s)=>m({path:s,value:t,code:o}),params:a?[a]:[]}}});export{c as booleanTruthyPlugin};
@@ -0,0 +1,58 @@
1
+ import { ValidationOptions } from "../core/plugin/types";
2
+ type CompareFn = (value: any, targetValue: any) => boolean;
3
+ interface CompareFieldOptions extends ValidationOptions {
4
+ compareFn?: CompareFn;
5
+ }
6
+ /**
7
+ * @luq-plugin
8
+ * @name compareField
9
+ * @category standard
10
+ * @description Validates a field's value by comparing it with another field's value using a custom comparison function
11
+ * @allowedTypes ["string", "number", "boolean", "date", "object", "array", "null", "undefined"]
12
+ * @example
13
+ * ```typescript
14
+ * // Default usage - strict equality
15
+ * const validator = Builder()
16
+ * .use(compareFieldPlugin)
17
+ * .for<SignupForm>()
18
+ * .v("password", (b) => b.string.required().min(8))
19
+ * .v("confirmPassword", (b) => b.string.required().compareField("password"))
20
+ * .build();
21
+ *
22
+ * // Custom comparison - date before
23
+ * builder.v("endDate", (b) => b.string.datetime().compareField("startDate", {
24
+ * compareFn: (endDate, startDate) => new Date(endDate) > new Date(startDate),
25
+ * messageFactory: () => "End date must be after start date"
26
+ * }))
27
+ *
28
+ * // Number comparison
29
+ * builder.v("maxValue", (b) => b.number.compareField("minValue", {
30
+ * compareFn: (max, min) => max >= min,
31
+ * messageFactory: () => "Max value must be greater than or equal to min value"
32
+ * }))
33
+ * ```
34
+ * @params
35
+ * - fieldPath: string - Path to the field to compare against (supports dot notation)
36
+ * - options?: { compareFn?: (value, targetValue) => boolean, messageFactory?: (context) => string } - Optional configuration
37
+ * @returns Validation function that returns true if comparison passes
38
+ * @customError
39
+ * ```typescript
40
+ * .compareField("startDate", {
41
+ * compareFn: (end, start) => new Date(end) > new Date(start),
42
+ * messageFactory: ({ path, value, params }) =>
43
+ * `${path} must be after ${params.fieldPath}`
44
+ * })
45
+ * ```
46
+ * @since 0.1.0-alpha
47
+ */
48
+ export declare const compareFieldPlugin: import("../index").TypedPlugin<"compareField", "compareField", (fieldPath: string, options?: CompareFieldOptions) => {
49
+ check: (value: any, allValues?: any) => boolean;
50
+ code: string;
51
+ getErrorMessage: (value: any, path: string, allValues?: any) => string;
52
+ params: (string | CompareFieldOptions)[];
53
+ fieldReference: {
54
+ fieldPath: string;
55
+ compareFn: CompareFn;
56
+ };
57
+ }, readonly ["string", "number", "boolean", "date", "object", "array", "tuple", "union"], "validator", "fieldReference">;
58
+ export {};
@@ -0,0 +1 @@
1
+ "use strict";var u=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var T=(e,n)=>{for(var t in n)u(e,t,{get:n[t],enumerable:!0})},h=(e,n,t,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of d(n))!f.call(e,r)&&r!==t&&u(e,r,{get:()=>n[r],enumerable:!(a=g(n,r))||a.enumerable});return e};var x=e=>h(u({},"__esModule",{value:!0}),e);var C={};T(C,{compareFieldPlugin:()=>b});module.exports=x(C);var A=(e,n,t,a)=>{let s=(o=>(...i)=>{let l=o(...i);return l&&typeof l=="object"&&"check"in l?{...l,pluginName:a}:l})(t);switch(e){case"conditional":return(o,...i)=>s(o,...i);case"fieldReference":return(o,...i)=>s(o,...i);case"multiFieldReference":return s;case"transform":return o=>s(o);case"arrayElement":return(o,...i)=>s(o,...i);case"context":return o=>s(o);default:return s}};function c(e){let{name:n,methodName:t,allowedTypes:a,category:r,impl:s}=e;return{name:n,methodName:t,allowedTypes:a,category:r,create:()=>A(r,t,s,n)}}var m=".";function N(e){if(e.length===0)return n=>n;if(e.length===1){let n=e[0];return t=>t?.[n]}if(e.length===2){let[n,t]=e;return a=>a?.[n]?.[t]}if(e.length===3){let[n,t,a]=e;return r=>r?.[n]?.[t]?.[a]}if(e.length===4){let[n,t,a,r]=e;return s=>s?.[n]?.[t]?.[a]?.[r]}if(e.length===5){let[n,t,a,r,s]=e;return o=>o?.[n]?.[t]?.[a]?.[r]?.[s]}return n=>{let t=n,a=e.length;for(let r=0;r<a;r++){let s=e[r];if(t=t?.[s],t===void 0)return}return t}}function y(e){return N(e.split(m))}var k="equals";function P(e){return e.fieldPath?`Value must be equal to ${e.fieldPath}`:"Values must be equal"}var E=["string","number","boolean","date","object","array","tuple","union"],I=(e,n)=>e===n,b=c({name:"compareField",methodName:"compareField",allowedTypes:E,category:"fieldReference",impl:(e,n)=>{let t=y(e),a=n?.code||k,r=n?.messageFactory||P,s=n?.compareFn||I;return{check:(o,i)=>{if(!i)return!1;let l=t(i);return s(o,l)},code:a,getErrorMessage:(o,i,l)=>{let p=l?t(l):void 0;return r({path:i,value:o,code:a,fieldPath:e,targetValue:p})},params:[e,n],fieldReference:{fieldPath:e,compareFn:s}}}});0&&(module.exports={compareFieldPlugin});
@@ -0,0 +1 @@
1
+ var p=(e,n,t,s)=>{let r=(a=>(...i)=>{let l=a(...i);return l&&typeof l=="object"&&"check"in l?{...l,pluginName:s}:l})(t);switch(e){case"conditional":return(a,...i)=>r(a,...i);case"fieldReference":return(a,...i)=>r(a,...i);case"multiFieldReference":return r;case"transform":return a=>r(a);case"arrayElement":return(a,...i)=>r(a,...i);case"context":return a=>r(a);default:return r}};function u(e){let{name:n,methodName:t,allowedTypes:s,category:o,impl:r}=e;return{name:n,methodName:t,allowedTypes:s,category:o,create:()=>p(o,t,r,n)}}var c=".";function g(e){if(e.length===0)return n=>n;if(e.length===1){let n=e[0];return t=>t?.[n]}if(e.length===2){let[n,t]=e;return s=>s?.[n]?.[t]}if(e.length===3){let[n,t,s]=e;return o=>o?.[n]?.[t]?.[s]}if(e.length===4){let[n,t,s,o]=e;return r=>r?.[n]?.[t]?.[s]?.[o]}if(e.length===5){let[n,t,s,o,r]=e;return a=>a?.[n]?.[t]?.[s]?.[o]?.[r]}return n=>{let t=n,s=e.length;for(let o=0;o<s;o++){let r=e[o];if(t=t?.[r],t===void 0)return}return t}}function m(e){return g(e.split(c))}var d="equals";function f(e){return e.fieldPath?`Value must be equal to ${e.fieldPath}`:"Values must be equal"}var T=["string","number","boolean","date","object","array","tuple","union"],h=(e,n)=>e===n,b=u({name:"compareField",methodName:"compareField",allowedTypes:T,category:"fieldReference",impl:(e,n)=>{let t=m(e),s=n?.code||d,o=n?.messageFactory||f,r=n?.compareFn||h;return{check:(a,i)=>{if(!i)return!1;let l=t(i);return r(a,l)},code:s,getErrorMessage:(a,i,l)=>{let y=l?t(l):void 0;return o({path:i,value:a,code:s,fieldPath:e,targetValue:y})},params:[e,n],fieldReference:{fieldPath:e,compareFn:r}}}});export{b as compareFieldPlugin};
@@ -0,0 +1,60 @@
1
+ import { ValidationOptions, MessageContext } from "../core/plugin/types";
2
+ /**
3
+ * @luq-plugin
4
+ * @name custom
5
+ * @category standard
6
+ * @description Allows custom validation logic
7
+ * @allowedTypes ["string", "number", "boolean", "date", "array", "object", "tuple", "union"]
8
+ * @example
9
+ * ```typescript
10
+ * // Basic custom validation
11
+ * builder.v("username", b => b.string
12
+ * .custom((value) => {
13
+ * return !reservedUsernames.includes(value);
14
+ * }, {
15
+ * code: 'RESERVED_USERNAME',
16
+ * messageFactory: ({ path }) => `${path} username is reserved`
17
+ * })
18
+ * )
19
+ *
20
+ * // With access to all values
21
+ * builder.v("confirmPassword", b => b.string
22
+ * .custom((value, rootData) => {
23
+ * return value === rootData.password;
24
+ * }, {
25
+ * code: 'PASSWORD_MISMATCH',
26
+ * messageFactory: ({ path }) => `${path} passwords do not match`
27
+ * })
28
+ * )
29
+ * ```
30
+ * @params
31
+ * - validator: (value: any, rootData?: any) => boolean - Custom validation function
32
+ * - options?: { code?: string; messageFactory?: (context: MessageContext) => string } - Error customization
33
+ * @returns Validation function with custom logic
34
+ * @customError
35
+ * ```typescript
36
+ * .custom(
37
+ * (value) => value.length > 5,
38
+ * {
39
+ * messageFactory: ({ path, value }) =>
40
+ * `${path} custom validation failed (received: ${value})`
41
+ * }
42
+ * )
43
+ * ```
44
+ */
45
+ export declare const customPlugin: import("../index").TypedPlugin<"custom", "custom", (validator: (value: any, rootData?: any) => boolean | {
46
+ valid: boolean;
47
+ message?: string;
48
+ }, options?: ValidationOptions & {
49
+ messageFactory?: (context: MessageContext) => string;
50
+ }) => {
51
+ check: (value: any, rootData?: any) => boolean;
52
+ code: string;
53
+ getErrorMessage: (value: any, path: string) => string;
54
+ params: (((value: any, rootData?: any) => boolean | {
55
+ valid: boolean;
56
+ message?: string;
57
+ }) | (ValidationOptions<{}> & {
58
+ messageFactory?: (context: MessageContext) => string;
59
+ }))[];
60
+ }, readonly ["string", "number", "boolean", "date", "array", "object", "tuple", "union"], "validator", "standard">;
@@ -0,0 +1 @@
1
+ "use strict";var l=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var g=(a,e)=>{for(var o in e)l(a,o,{get:e[o],enumerable:!0})},y=(a,e,o,m)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of p(e))!d.call(a,s)&&s!==o&&l(a,s,{get:()=>e[s],enumerable:!(m=T(e,s))||m.enumerable});return a};var c=a=>y(l({},"__esModule",{value:!0}),a);var I={};g(I,{customPlugin:()=>h});module.exports=c(I);var f=(a,e,o,m)=>{let r=(n=>(...i)=>{let t=n(...i);return t&&typeof t=="object"&&"check"in t?{...t,pluginName:m}:t})(o);switch(a){case"conditional":return(n,...i)=>r(n,...i);case"fieldReference":return(n,...i)=>r(n,...i);case"multiFieldReference":return r;case"transform":return n=>r(n);case"arrayElement":return(n,...i)=>r(n,...i);case"context":return n=>r(n);default:return r}};function u(a){let{name:e,methodName:o,allowedTypes:m,category:s,impl:r}=a;return{name:e,methodName:o,allowedTypes:m,category:s,create:()=>f(s,o,r,e)}}var N="CUSTOM_VALIDATION_FAILED",x=["string","number","boolean","date","array","object","tuple","union"],h=u({name:"custom",methodName:"custom",allowedTypes:x,category:"standard",impl:(a,e)=>{let o=e?.code||N,m="Custom validation failed",s=e?.messageFactory||(n=>`${n.path} ${m.toLowerCase()}`),r;return{check:(n,i)=>{try{let t=a(n,i);return typeof t=="boolean"?t:t&&typeof t=="object"&&"valid"in t?(r=t.message,t.valid):!1}catch{return!1}},code:o,getErrorMessage:(n,i)=>r||s({path:i,value:n,code:o}),params:[a,e]}}});0&&(module.exports={customPlugin});
@@ -0,0 +1 @@
1
+ var u=(s,r,o,i)=>{let t=(e=>(...a)=>{let n=e(...a);return n&&typeof n=="object"&&"check"in n?{...n,pluginName:i}:n})(o);switch(s){case"conditional":return(e,...a)=>t(e,...a);case"fieldReference":return(e,...a)=>t(e,...a);case"multiFieldReference":return t;case"transform":return e=>t(e);case"arrayElement":return(e,...a)=>t(e,...a);case"context":return e=>t(e);default:return t}};function l(s){let{name:r,methodName:o,allowedTypes:i,category:m,impl:t}=s;return{name:r,methodName:o,allowedTypes:i,category:m,create:()=>u(m,o,t,r)}}var T="CUSTOM_VALIDATION_FAILED",p=["string","number","boolean","date","array","object","tuple","union"],y=l({name:"custom",methodName:"custom",allowedTypes:p,category:"standard",impl:(s,r)=>{let o=r?.code||T,i="Custom validation failed",m=r?.messageFactory||(e=>`${e.path} ${i.toLowerCase()}`),t;return{check:(e,a)=>{try{let n=s(e,a);return typeof n=="boolean"?n:n&&typeof n=="object"&&"valid"in n?(t=n.message,n.valid):!1}catch{return!1}},code:o,getErrorMessage:(e,a)=>t||m({path:a,value:e,code:o}),params:[s,r]}}});export{y as customPlugin};
@@ -0,0 +1,11 @@
1
+ /**
2
+ * JsonSchema Plugin - Main Entry Point
3
+ * Modular JSON Schema to Luq validator conversion
4
+ */
5
+ export { LuqFieldDSL, LuqConstraints, JsonSchemaOptions, ValidationError } from "../core/plugin/jsonSchema/types";
6
+ export { resolveRef, resolveSchemaRef, resolveAllRefs } from "../core/plugin/jsonSchema/ref-resolver";
7
+ export { formatValidators, validateFormat, getSupportedFormats, isFormatSupported } from "../core/plugin/jsonSchema/format-validators";
8
+ export { validateValueAgainstSchema, validateType, validateMultipleTypes, validateStringConstraints, validateNumberConstraints, validateArrayConstraints, validateObjectConstraints } from "../core/plugin/jsonSchema/validation-core";
9
+ export { getDetailedValidationErrors, getSpecificValidationErrors } from "../core/plugin/jsonSchema/error-generation";
10
+ export { convertJsonSchemaToLuqDSL, convertDSLToFieldDefinition, applyConstraints, applyBaseType, applyBaseType as getBaseChain } from "../core/plugin/jsonSchema/dsl-converter";
11
+ export { jsonSchemaPlugin } from "../core/plugin/jsonSchema/plugin";
@@ -0,0 +1 @@
1
+ "use strict";var $=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var X=Object.prototype.hasOwnProperty;var H=(e,t)=>{for(var n in t)$(e,n,{get:t[n],enumerable:!0})},Y=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of F(t))!X.call(e,i)&&i!==n&&$(e,i,{get:()=>t[i],enumerable:!(r=W(t,i))||r.enumerable});return e};var G=e=>Y($({},"__esModule",{value:!0}),e);var Je={};H(Je,{applyBaseType:()=>N,applyConstraints:()=>J,convertDSLToFieldDefinition:()=>M,convertJsonSchemaToLuqDSL:()=>E,formatValidators:()=>g,getBaseChain:()=>N,getDetailedValidationErrors:()=>y,getSpecificValidationErrors:()=>B,getSupportedFormats:()=>D,isFormatSupported:()=>k,jsonSchemaPlugin:()=>V,resolveAllRefs:()=>d,resolveRef:()=>T,resolveSchemaRef:()=>m,validateArrayConstraints:()=>C,validateFormat:()=>c,validateMultipleTypes:()=>R,validateNumberConstraints:()=>q,validateObjectConstraints:()=>w,validateStringConstraints:()=>j,validateType:()=>A,validateValueAgainstSchema:()=>p});module.exports=G(Je);var T=(e,t,n)=>{if(!e.startsWith("#"))throw new Error(`External $ref not supported: ${e}`);let r=e.slice(1).split("/"),i=t;for(let o of r)if(o&&(o==="definitions"||o==="$defs"?i=i.definitions||i.$defs||{}:i=i[o],i===void 0))throw new Error(`Cannot resolve $ref: ${e}`);return i},m=(e,t,n)=>{if(!e.$ref)return e;if(!t)throw new Error("Root schema required for $ref resolution");return T(e.$ref,t,n)},d=(e,t,n=new Set)=>{if(e.$ref){if(n.has(e.$ref))throw new Error(`Circular reference detected: ${e.$ref}`);n.add(e.$ref);let i=T(e.$ref,t);return d(i,t,n)}let r={...e};if(e.properties){r.properties={};for(let[i,o]of Object.entries(e.properties))typeof o=="object"?r.properties[i]=d(o,t,new Set(n)):r.properties[i]=o}return e.items&&(Array.isArray(e.items)?r.items=e.items.map(i=>typeof i=="boolean"?i:d(i,t,new Set(n))):typeof e.items=="object"?r.items=d(e.items,t,new Set(n)):r.items=e.items),e.allOf&&(r.allOf=e.allOf.map(i=>typeof i=="boolean"?i:d(i,t,new Set(n)))),e.anyOf&&(r.anyOf=e.anyOf.map(i=>typeof i=="boolean"?i:d(i,t,new Set(n)))),e.oneOf&&(r.oneOf=e.oneOf.map(i=>typeof i=="boolean"?i:d(i,t,new Set(n)))),e.not&&typeof e.not=="object"&&(r.not=d(e.not,t,new Set(n))),e.if&&typeof e.if=="object"&&(r.if=d(e.if,t,new Set(n))),e.then&&typeof e.then=="object"&&(r.then=d(e.then,t,new Set(n))),e.else&&typeof e.else=="object"&&(r.else=d(e.else,t,new Set(n))),r};var Q=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;var K=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i,v=/^\d{4}-\d{2}-\d{2}$/,h=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?$/,ee=/^\d{2}:\d{2}:\d{2}(\.\d{3})?$/,te=/^P(?:(\d+Y)?(\d+M)?(\d+D)?)(?:T(\d+H)?(\d+M)?(\d+(?:\.\d+)?S)?)?$/,re=/^((25[0-5]|(2[0-4]|1\d|[1-9]|)\d)\.){3}(25[0-5]|(2[0-4]|1\d|[1-9]|)\d)$/,ne=/^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/,ie=/^[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])?)*$/,oe=/^(\/([^\/~]|~[01])*)*$/,fe=/^[0-9]+#?$/,se=/^[a-zA-Z][a-zA-Z0-9+.-]*:[^\s]*$/,ue=/^([a-zA-Z][a-zA-Z0-9+.-]*:[^\s]*|\/[^\s]*|[^\s:\/]+)$/,le=/^[^{}]*(\{[^{}]+\}[^{}]*)*$/;var g={email:e=>typeof e!="string"||e.includes("..")?!1:Q.test(e),url:e=>{if(typeof e!="string")return!1;try{return new URL(e),!0}catch{return!1}},uri:e=>{if(typeof e!="string")return!1;try{return new URL(e),!0}catch{let t=e.match(/^([a-zA-Z][a-zA-Z0-9+.-]*):(.+)$/);if(!t)return!1;let[,n,r]=t;return r.startsWith("//")?r.length>2&&r.substring(2).length>0:r.length>0}},"uri-reference":e=>{if(typeof e!="string")return!1;try{return new URL(e),!0}catch{return e.includes(":")&&!e.match(/^[a-zA-Z][a-zA-Z0-9+.-]*:/)?!1:e.startsWith("/")||!e.includes(":")}},uuid:e=>typeof e!="string"?!1:K.test(e),date:e=>{if(typeof e!="string"||!v.test(e))return!1;let t=new Date(e);return!isNaN(t.getTime())&&t.toISOString().startsWith(e)},"date-time":e=>{if(typeof e!="string"||!h.test(e))return!1;let t=new Date(e);return!isNaN(t.getTime())},time:e=>{if(typeof e!="string"||!ee.test(e))return!1;let t=e.split(":");if(t.length<3)return!1;let n=parseInt(t[0],10),r=parseInt(t[1],10),i=parseFloat(t[2]);return n>=0&&n<=23&&r>=0&&r<=59&&i>=0&&i<60},duration:e=>typeof e!="string"?!1:te.test(e),ipv4:e=>{if(typeof e!="string"||!re.test(e))return!1;let t=e.split(".");return t.length===4&&t.every(n=>{let r=parseInt(n,10);return r>=0&&r<=255})},ipv6:e=>typeof e!="string"?!1:ne.test(e)||e.includes("::"),hostname:e=>typeof e!="string"||e.length>253?!1:ie.test(e),"json-pointer":e=>typeof e!="string"?!1:oe.test(e),"relative-json-pointer":e=>typeof e!="string"?!1:fe.test(e),iri:e=>typeof e!="string"?!1:se.test(e),"iri-reference":e=>typeof e!="string"?!1:ue.test(e),"uri-template":e=>typeof e!="string"?!1:le.test(e),regex:e=>{if(typeof e!="string")return!1;try{return new RegExp(e),!0}catch{return!1}}},c=(e,t,n)=>{if(n&&n[t]){let i=n[t];if(typeof i=="function")return i(e)}let r=g[t];return r?r(e):!0},D=()=>Object.keys(g),k=e=>e in g;var x=(e,t)=>{if(e===t)return!0;if(e==null||t==null)return e===t;if(typeof e!=typeof t)return!1;if(typeof e!="object")return e===t;if(Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e))return e.length!==t.length?!1:e.every((i,o)=>x(i,t[o]));let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(i=>x(e[i],t[i]))},pe=e=>{for(let t=0;t<e.length;t++)for(let n=t+1;n<e.length;n++)if(x(e[t],e[n]))return!0;return!1},A=(e,t)=>{switch(t){case"null":return e===null;case"boolean":return typeof e=="boolean";case"string":return typeof e=="string";case"number":return typeof e=="number"&&!isNaN(e);case"integer":return typeof e=="number"&&Number.isInteger(e)&&!isNaN(e);case"array":return Array.isArray(e);case"object":return typeof e=="object"&&e!==null&&!Array.isArray(e);default:return!1}},R=(e,t)=>t.some(n=>A(e,n)),j=(e,t,n)=>!(t.minLength!==void 0&&e.length<t.minLength||t.maxLength!==void 0&&e.length>t.maxLength||t.pattern&&!new RegExp(t.pattern).test(e)||t.format&&!c(e,t.format,n)||t.contentEncoding&&t.contentEncoding==="base64"&&(!/^[A-Za-z0-9+/]*={0,2}$/.test(e)||e.length>0&&e.length%4!==0)),q=(e,t)=>{if(t.minimum!==void 0&&e<t.minimum||t.maximum!==void 0&&e>t.maximum)return!1;if(t.exclusiveMinimum!==void 0){if(typeof t.exclusiveMinimum=="number"){if(e<=t.exclusiveMinimum)return!1}else if(t.exclusiveMinimum===!0&&t.minimum!==void 0&&e<=t.minimum)return!1}if(t.exclusiveMaximum!==void 0){if(typeof t.exclusiveMaximum=="number"){if(e>=t.exclusiveMaximum)return!1}else if(t.exclusiveMaximum===!0&&t.maximum!==void 0&&e>=t.maximum)return!1}if(t.multipleOf!==void 0){let n=e/t.multipleOf;if(!Number.isInteger(n))return!1}return!0},C=(e,t,n,r)=>{if(t.minItems!==void 0&&e.length<t.minItems||t.maxItems!==void 0&&e.length>t.maxItems||t.uniqueItems&&pe(e))return!1;if(t.items){if(Array.isArray(t.items))for(let i=0;i<e.length;i++)if(i<t.items.length){if(typeof t.items[i]=="boolean"){if(!t.items[i])return!1}else if(!p(e[i],t.items[i],n,r))return!1}else{if(t.additionalItems===!1)return!1;if(t.additionalItems&&typeof t.additionalItems=="object"&&!p(e[i],t.additionalItems,n,r))return!1}else for(let i of e)if(typeof t.items=="boolean"){if(!t.items)return!1}else if(!p(i,t.items,n,r))return!1}if(t.contains!==void 0){if(typeof t.contains=="boolean"){if(!t.contains||e.length===0)return!1}else if(!e.some(o=>p(o,t.contains,n,r)))return!1}return!0},w=(e,t,n,r)=>{let i=Object.keys(e);if(t.minProperties!==void 0&&i.length<t.minProperties||t.maxProperties!==void 0&&i.length>t.maxProperties)return!1;if(t.required){for(let o of t.required)if(!(o in e))return!1}if(t.properties)for(let[o,f]of Object.entries(e)){let s=t.properties[o];if(s&&typeof s=="object"&&!p(f,s,n,r))return!1}if(t.patternProperties){for(let[o,f]of Object.entries(e))for(let[s,u]of Object.entries(t.patternProperties))if(new RegExp(s).test(o)&&typeof u=="object"&&!p(f,u,n,r))return!1}if(t.additionalProperties===!1){let o=new Set([...t.properties?Object.keys(t.properties):[],...i.filter(f=>t.patternProperties?Object.keys(t.patternProperties).some(s=>new RegExp(s).test(f)):!1)]);for(let f of i)if(!o.has(f))return!1}else if(t.additionalProperties&&typeof t.additionalProperties=="object"){let o=new Set(t.properties?Object.keys(t.properties):[]);for(let[f,s]of Object.entries(e))if(!o.has(f)&&!p(s,t.additionalProperties,n,r))return!1}if(t.propertyNames!==void 0){if(typeof t.propertyNames=="boolean"){if(!t.propertyNames&&i.length>0)return!1}else for(let o of i)if(!p(o,t.propertyNames,n,r))return!1}return!0},p=(e,t,n,r)=>{if(t.$ref&&r&&(t=m(t,r)),e===void 0)return!1;if(e===null){if(t.type==="null"||Array.isArray(t.type)&&t.type.includes("null"))return!0;if(!t.enum&&t.const===void 0)return!1}if(t.type){if(Array.isArray(t.type)){if(!R(e,t.type))return!1}else if(!A(e,t.type))return!1}if(t.const!==void 0)return x(e,t.const);if(t.enum)return t.enum.some(i=>x(e,i));if(typeof e=="string"){if(!j(e,t,n))return!1}else if(typeof e=="number"){if(!q(e,t))return!1}else if(Array.isArray(e)){if(!C(e,t,n,r))return!1}else if(typeof e=="object"&&e!==null&&!w(e,t,n,r))return!1;if(t.allOf)for(let i of t.allOf){if(typeof i=="boolean"){if(!i)return!1;continue}if(!p(e,i,n,r))return!1}if(t.anyOf&&!t.anyOf.some(o=>typeof o=="boolean"?o:p(e,o,n,r)))return!1;if(t.oneOf){let i=0;for(let o of t.oneOf){if(typeof o=="boolean"){o&&i++;continue}p(e,o,n,r)&&i++}if(i!==1)return!1}if(t.not){if(typeof t.not=="boolean"){if(t.not)return!1}else if(p(e,t.not,n,r))return!1}if(t.if){let i=typeof t.if=="boolean"?t.if:p(e,t.if,n,r);if(i&&t.then!==void 0)return typeof t.then=="boolean"?t.then:p(e,t.then,n,r);if(!i&&t.else!==void 0)return typeof t.else=="boolean"?t.else:p(e,t.else,n,r)}return!0};var y=(e,t,n,r,i="")=>{let o=[];if(typeof t=="boolean")return t===!1?(o.push({path:i,message:"Schema is false - value is always invalid",code:"FALSE_SCHEMA",value:e,constraint:!1}),o):[];if(t.$ref&&r&&(t=m(t,r)),p(e,t,n,r))return[];if(e==null)return t.type&&t.type!=="null"&&(!Array.isArray(t.type)||!t.type.includes("null"))&&o.push({path:i,message:`Expected ${Array.isArray(t.type)?t.type.join(" or "):t.type}, got ${e}`,code:"TYPE_MISMATCH",value:e,constraint:t.type}),o;if(t.type){let f=Array.isArray(t.type)?t.type:[t.type],s=de(e);if(!f.some(u=>ae(e,u)))return o.push({path:i,message:`Expected ${f.join(" or ")}, got ${s}`,code:"TYPE_MISMATCH",value:e,constraint:t.type}),o}return t.const!==void 0&&!I(e,t.const)&&o.push({path:i,message:`Must be equal to ${JSON.stringify(t.const)}`,code:"CONST",value:e,constraint:t.const}),t.enum&&!t.enum.some(f=>I(e,f))&&o.push({path:i,message:`Must be one of: ${t.enum.map(f=>JSON.stringify(f)).join(", ")}`,code:"ENUM",value:e,constraint:t.enum}),typeof e=="string"?o.push(...ye(e,t,i,n)):typeof e=="number"?o.push(...me(e,t,i)):Array.isArray(e)?o.push(...ge(e,t,i,n,r)):typeof e=="object"&&e!==null&&o.push(...xe(e,t,i,n,r)),t.allOf&&o.push(...Se(e,t.allOf,i,n,r)),t.anyOf&&o.push(...Ne(e,t.anyOf,i,n,r)),t.oneOf&&o.push(...be(e,t.oneOf,i,n,r)),t.not&&o.push(...Oe(e,t.not,i,n,r)),t.if&&o.push(...Te(e,t,i,n,r)),o},B=(e,t,n,r,i)=>{let o=y(e,t,r,i),f=n.startsWith("/")?n.substring(1).replace(/\//g,"."):n;return o.filter(s=>!!(s.path===f||s.path.startsWith(f+".")||s.path.startsWith(f+"[")))},de=e=>e===null?"null":Array.isArray(e)?"array":typeof e,ae=(e,t)=>{switch(t){case"null":return e===null;case"boolean":return typeof e=="boolean";case"string":return typeof e=="string";case"number":return typeof e=="number"&&!isNaN(e);case"integer":return typeof e=="number"&&Number.isInteger(e);case"array":return Array.isArray(e);case"object":return typeof e=="object"&&e!==null&&!Array.isArray(e);default:return!1}},I=(e,t)=>{if(e===t)return!0;if(e==null||t==null)return e===t;if(typeof e!=typeof t)return!1;if(typeof e!="object")return e===t;if(Array.isArray(e)!==Array.isArray(t))return!1;if(Array.isArray(e))return e.length!==t.length?!1:e.every((i,o)=>I(i,t[o]));let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(i=>I(e[i],t[i]))},ye=(e,t,n,r)=>{let i=[];if(t.minLength!==void 0&&e.length<t.minLength&&i.push({path:n,message:`String length must be at least ${t.minLength}`,code:"MIN_LENGTH",value:e,constraint:t.minLength}),t.maxLength!==void 0&&e.length>t.maxLength&&i.push({path:n,message:`String length must be at most ${t.maxLength}`,code:"MAX_LENGTH",value:e,constraint:t.maxLength}),t.pattern&&!new RegExp(t.pattern).test(e)&&i.push({path:n,message:`String must match pattern: ${t.pattern}`,code:"PATTERN",value:e,constraint:t.pattern}),t.format){let o=!1;if(r&&r[t.format])o=r[t.format](e);else switch(t.format){case"email":o=/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e);break;case"uri":case"url":o=/^https?:\/\//.test(e);break;case"date":o=/^\d{4}-\d{2}-\d{2}$/.test(e);break;case"date-time":case"datetime":o=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(e);break;case"uuid":o=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e);break;default:o=!1}o||i.push({path:n,message:`String must be valid ${t.format}`,code:"FORMAT",value:e,constraint:t.format})}if(t.contentEncoding&&t.contentEncoding==="base64"&&(!/^[A-Za-z0-9+/]*={0,2}$/.test(e)||e.length>0&&e.length%4!==0)&&i.push({path:n,message:`String must be valid ${t.contentEncoding} encoding`,code:"CONTENT_ENCODING",value:e,constraint:t.contentEncoding}),t.contentMediaType){let o=!0}return i},me=(e,t,n)=>{let r=[];if(t.minimum!==void 0&&e<t.minimum&&r.push({path:n,message:`Number must be at least ${t.minimum}`,code:"MINIMUM",value:e,constraint:t.minimum}),t.maximum!==void 0&&e>t.maximum&&r.push({path:n,message:`Number must be at most ${t.maximum}`,code:"MAXIMUM",value:e,constraint:t.maximum}),t.exclusiveMinimum!==void 0&&(typeof t.exclusiveMinimum=="number"&&e<=t.exclusiveMinimum?r.push({path:n,message:`Number must be greater than ${t.exclusiveMinimum}`,code:"EXCLUSIVE_MINIMUM",value:e,constraint:t.exclusiveMinimum}):typeof t.exclusiveMinimum=="boolean"&&t.exclusiveMinimum===!0&&t.minimum!==void 0&&e<=t.minimum&&r.push({path:n,message:`Number must be greater than ${t.minimum}`,code:"EXCLUSIVE_MINIMUM",value:e,constraint:t.minimum})),t.exclusiveMaximum!==void 0&&(typeof t.exclusiveMaximum=="number"&&e>=t.exclusiveMaximum?r.push({path:n,message:`Number must be less than ${t.exclusiveMaximum}`,code:"EXCLUSIVE_MAXIMUM",value:e,constraint:t.exclusiveMaximum}):typeof t.exclusiveMaximum=="boolean"&&t.exclusiveMaximum===!0&&t.maximum!==void 0&&e>=t.maximum&&r.push({path:n,message:`Number must be less than ${t.maximum}`,code:"EXCLUSIVE_MAXIMUM",value:e,constraint:t.maximum})),t.multipleOf!==void 0){let i=e/t.multipleOf;Number.isInteger(i)||r.push({path:n,message:`Number must be a multiple of ${t.multipleOf}`,code:"MULTIPLE_OF",value:e,constraint:t.multipleOf})}return r},ge=(e,t,n,r,i)=>{let o=[];return t.minItems!==void 0&&e.length<t.minItems&&o.push({path:n,message:`Array must have at least ${t.minItems} items`,code:"MIN_ITEMS",value:e,constraint:t.minItems}),t.maxItems!==void 0&&e.length>t.maxItems&&o.push({path:n,message:`Array must have at most ${t.maxItems} items`,code:"MAX_ITEMS",value:e,constraint:t.maxItems}),t.uniqueItems&&(s=>{for(let u=0;u<s.length;u++)for(let l=u+1;l<s.length;l++)if(JSON.stringify(s[u])===JSON.stringify(s[l]))return!0;return!1})(e)&&o.push({path:n,message:"Array must contain unique items",code:"UNIQUE_ITEMS",value:e,constraint:!0}),t.items&&(Array.isArray(t.items)?e.forEach((f,s)=>{let u=t.items;if(s<u.length){let l=u[s],a=y(f,l,r,i,n?`${n}[${s}]`:`[${s}]`);o.push(...a)}else if(t.additionalItems===!1)o.push({path:n?`${n}[${s}]`:`[${s}]`,message:"Additional items are not allowed",code:"ADDITIONAL_ITEMS",value:f,constraint:!1});else if(t.additionalItems&&typeof t.additionalItems=="object"){let l=y(f,t.additionalItems,r,i,n?`${n}[${s}]`:`items[${s}]`);o.push(...l)}}):e.forEach((f,s)=>{let u=y(f,t.items,r,i,n?`${n}[${s}]`:`items[${s}]`);o.push(...u)})),t.contains&&typeof t.contains=="object"&&(e.some(s=>p(s,t.contains,r,i))||o.push({path:n,message:"Array must contain at least one item matching the schema",code:"CONTAINS",value:e,constraint:t.contains})),o},xe=(e,t,n,r,i)=>{let o=[],f=Object.keys(e);if(t.minProperties!==void 0&&f.length<t.minProperties&&o.push({path:n,message:`Object must have at least ${t.minProperties} properties`,code:"MIN_PROPERTIES",value:e,constraint:t.minProperties}),t.maxProperties!==void 0&&f.length>t.maxProperties&&o.push({path:n,message:`Object must have at most ${t.maxProperties} properties`,code:"MAX_PROPERTIES",value:e,constraint:t.maxProperties}),t.required)for(let s of t.required)s in e||o.push({path:n?`${n}.${s}`:s,message:`Missing required property: ${s}`,code:"REQUIRED",value:void 0,constraint:s});if(t.properties)for(let[s,u]of Object.entries(e)){let l=t.properties[s];if(l&&typeof l=="object"){let a=y(u,l,r,i,n?`${n}.${s}`:s);o.push(...a)}}if(t.patternProperties){for(let[s,u]of Object.entries(e))for(let[l,a]of Object.entries(t.patternProperties))if(new RegExp(l).test(s)&&typeof a=="object"){let L=y(u,a,r,i,n?`${n}.${s}`:s);o.push(...L)}}if(t.additionalProperties!==void 0){let s=new Set(t.properties?Object.keys(t.properties):[]),u=new Set;if(t.patternProperties)for(let l of Object.keys(e))for(let a of Object.keys(t.patternProperties))new RegExp(a).test(l)&&u.add(l);for(let l of Object.keys(e))if(!s.has(l)&&!u.has(l)){if(t.additionalProperties===!1)o.push({path:n?`${n}.${l}`:l,message:`Additional property '${l}' is not allowed`,code:"ADDITIONAL_PROPERTIES",value:e[l],constraint:!1});else if(typeof t.additionalProperties=="object"){let a=y(e[l],t.additionalProperties,r,i,n?`${n}.${l}`:l);o.push(...a)}}}if(t.propertyNames&&typeof t.propertyNames=="object")for(let s of Object.keys(e))p(s,t.propertyNames,r,i)||o.push({path:n?`${n}.${s}`:s,message:`Property name '${s}' does not match schema`,code:"PROPERTY_NAMES",value:s,constraint:t.propertyNames});return o},Se=(e,t,n,r,i)=>{let o=[],f=!1;for(let s of t){let u=y(e,s,r,i,n);u.length>0&&(f=!0,o.push(...u))}return f&&o.push({path:n,message:"Value does not satisfy all schemas",code:"ALL_OF",value:e,constraint:t}),o},Ne=(e,t,n,r,i)=>t.some(f=>p(e,f,r,i))?[]:[{path:n,message:"Value does not match any of the expected schemas",code:"ANY_OF",value:e,constraint:t}],be=(e,t,n,r,i)=>{let o=t.filter(f=>p(e,f,r,i));return o.length===1?[]:o.length===0?[{path:n,message:"Value does not match any of the expected schemas",code:"ONE_OF",value:e,constraint:t}]:[{path:n,message:"Value matches more than one schema",code:"ONE_OF",value:e,constraint:t}]},Oe=(e,t,n,r,i)=>p(e,t,r,i)?[{path:n,message:"Value must not match the schema",code:"NOT",value:e,constraint:t}]:[],Te=(e,t,n,r,i)=>{if(!t.if)return[];let o=p(e,t.if,r,i);return o&&t.then?y(e,t.then,r,i,n):!o&&t.else?y(e,t.else,r,i,n):[]};var E=(e,t="",n)=>{let r=[],i=e.$ref&&n?m(e,n):e;if(t===""&&(i.oneOf||i.anyOf||i.allOf)){let o=_(i,{},""),f=i.type?S(Array.isArray(i.type)?i.type[0]:i.type):"string";return r.push({path:"",type:f,constraints:o}),r}if(i.type==="object"&&t===""){let o=Pe(i);Object.keys(o).length>0&&r.push({path:"",type:"object",constraints:o})}if(i.properties){for(let[o,f]of Object.entries(i.properties))if(typeof f=="object"){let s=t?`${t}.${o}`:o,u=P(o,f,s,i,n);r.push(...u)}}if(i.patternProperties){for(let[o,f]of Object.entries(i.patternProperties))if(typeof f=="object"){let s=t?`${t}.*`:"*",u=P(o,f,s,i,n);r.push(...u)}}return r},P=(e,t,n,r,i)=>{let o=[],f=t.$ref&&i?m(t,i):t,{type:s,nullable:u,multipleTypes:l}=ce(f),a=_(f,r,e),L={path:n,type:s,nullable:u,multipleTypes:l,constraints:a};if(o.push(L),(f.type==="object"||Array.isArray(f.type)&&f.type.includes("object"))&&f.properties){for(let[b,O]of Object.entries(f.properties))if(typeof O=="object"){let Z=`${n}.${b}`,U=P(b,O,Z,f,i);o.push(...U)}}if((f.type==="array"||Array.isArray(f.type)&&f.type.includes("array"))&&f.items&&!Array.isArray(f.items)&&typeof f.items=="object"){let b=`${n}[*]`,O=P(`${e}[*]`,f.items,b,f,i);o.push(...O)}return o},ce=e=>{let t="string",n=!1,r;if(e.type)if(Array.isArray(e.type)){let i=e.type.filter(f=>f!=="null");e.type.includes("null")&&(n=!0),i.length===1?t=S(i[0]):i.length>1&&(t=S(i[0]),r=i.map(S))}else t=S(e.type);else e.enum?t=Ae(e.enum):e.const!==void 0&&(t=Ie(e.const));return{type:t,nullable:n,multipleTypes:r}},S=e=>{switch(e){case"string":return"string";case"number":return"number";case"integer":return"number";case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null";default:return"string"}},Ae=e=>{if(e.length===0)return"string";let t=e[0];return typeof t=="string"?"string":typeof t=="number"?"number":typeof t=="boolean"?"boolean":Array.isArray(t)?"array":typeof t=="object"&&t!==null?"object":"string"},Ie=e=>typeof e=="string"?"string":typeof e=="number"?"number":typeof e=="boolean"?"boolean":Array.isArray(e)?"array":typeof e=="object"&&e!==null?"object":e===null?"null":"string",Pe=e=>{let t={};return e.additionalProperties!==void 0&&(t.additionalProperties=e.additionalProperties),e.propertyNames&&(t.propertyNames=e.propertyNames),e.minProperties!==void 0&&(t.minProperties=e.minProperties),e.maxProperties!==void 0&&(t.maxProperties=e.maxProperties),e.patternProperties&&(t.patternProperties=e.patternProperties),e.dependentRequired&&(t.dependentRequired=e.dependentRequired),t},_=(e,t,n)=>{let r={};return t.required&&t.required.includes(n)&&(r.required=!0),e.minLength!==void 0&&(r.minLength=e.minLength),e.maxLength!==void 0&&(r.maxLength=e.maxLength),e.pattern&&(r.pattern=e.pattern),e.format&&(r.format=e.format),e.contentEncoding&&(r.contentEncoding=e.contentEncoding),e.contentMediaType&&(r.contentMediaType=e.contentMediaType),e.minimum!==void 0&&(r.min=e.minimum),e.maximum!==void 0&&(r.max=e.maximum),e.exclusiveMinimum!==void 0&&(typeof e.exclusiveMinimum=="number"?(r.min=e.exclusiveMinimum,r.exclusiveMin=!0):r.exclusiveMin=e.exclusiveMinimum),e.exclusiveMaximum!==void 0&&(typeof e.exclusiveMaximum=="number"?(r.max=e.exclusiveMaximum,r.exclusiveMax=!0):r.exclusiveMax=e.exclusiveMaximum),e.multipleOf!==void 0&&(r.multipleOf=e.multipleOf),(e.type==="integer"||Array.isArray(e.type)&&e.type.includes("integer"))&&(r.integer=!0),e.minItems!==void 0&&(r.minItems=e.minItems),e.maxItems!==void 0&&(r.maxItems=e.maxItems),e.uniqueItems&&(r.uniqueItems=e.uniqueItems),e.items&&(r.items=e.items),e.contains&&(r.contains=e.contains),e.minProperties!==void 0&&(r.minProperties=e.minProperties),e.maxProperties!==void 0&&(r.maxProperties=e.maxProperties),e.additionalProperties!==void 0&&(r.additionalProperties=e.additionalProperties),e.propertyNames&&(r.propertyNames=e.propertyNames),e.patternProperties&&(r.patternProperties=e.patternProperties),e.enum&&(r.enum=e.enum),e.const!==void 0&&(r.const=e.const),e.allOf&&(r.allOf=e.allOf),e.anyOf&&(r.anyOf=e.anyOf),e.oneOf&&(r.oneOf=e.oneOf),e.not&&(r.not=e.not),e.if&&(r.if=e.if),e.then&&(r.then=e.then),e.else&&(r.else=e.else),r},M=(e,t)=>n=>{let r=n;if(e.multipleTypes&&e.multipleTypes.length>1){let i=e.multipleTypes.map(o=>({type:o,constraints:Me(e.constraints,o)}));return n.oneOf(i.map(o=>f=>Ee(f,o.type,o.constraints,t)))}return r=N(r,e.type),e.nullable&&(r=r.nullable()),r=J(r,e.constraints,t),r},N=(e,t)=>{switch(t){case"string":return e.string||e;case"number":return e.number||e;case"boolean":return e.boolean||e;case"array":return e.array||e;case"object":return e.object||e;case"date":return e.date||e;case"null":return e.literal(null);default:return e}},Ee=(e,t,n,r)=>{let i=N(e,t);return J(i,n,r)},Me=(e,t)=>{let n={};return t==="string"&&(e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.pattern&&(n.pattern=e.pattern),e.format&&(n.format=e.format)),(t==="number"||t==="integer")&&(e.min!==void 0&&(n.min=e.min),e.max!==void 0&&(n.max=e.max),e.exclusiveMin!==void 0&&(n.exclusiveMin=e.exclusiveMin),e.exclusiveMax!==void 0&&(n.exclusiveMax=e.exclusiveMax)),t==="array"&&(e.minItems!==void 0&&(n.minItems=e.minItems),e.maxItems!==void 0&&(n.maxItems=e.maxItems),e.uniqueItems&&(n.uniqueItems=e.uniqueItems),e.items&&(n.items=e.items)),e.enum&&(n.enum=e.enum),e.const!==void 0&&(n.const=e.const),e.required!==void 0&&(n.required=e.required),n},J=(e,t,n)=>{if(t.const!==void 0)return e.literal?e.literal(t.const):e;if(t.minLength!==void 0&&e.min&&(e=e.min(t.minLength)),t.maxLength!==void 0&&e.max&&(e=e.max(t.maxLength)),t.pattern&&e.pattern&&(e=e.pattern(t.pattern)),t.format)if(n&&n[t.format])e.refine&&(e=e.refine(n[t.format]));else switch(t.format){case"email":e=e.email?e.email():e;break;case"uri":case"url":e=e.url?e.url():e;break;case"uuid":e=e.uuid?e.uuid():e;break;case"date-time":case"datetime":e=e.datetime?e.datetime():e;break}if(t.min!==void 0&&e.min){let r=t.exclusiveMin===!0||typeof t.exclusiveMin=="number";t.exclusiveMin!==void 0?r?e=e.min(t.min,{exclusive:!0}):e=e.min(t.min,{exclusive:!1}):e=e.min(t.min)}if(t.max!==void 0&&e.max){let r=t.exclusiveMax===!0||typeof t.exclusiveMax=="number";t.exclusiveMax!==void 0&&r?e=e.max(t.max,{exclusive:!0}):e=e.max(t.max)}return t.multipleOf!==void 0&&e.multipleOf&&(e=e.multipleOf(t.multipleOf)),t.items&&Array.isArray(t.items)&&e.tupleBuilder?e.tupleBuilder(t.items):(t.minItems!==void 0&&e.minItems&&(e=e.minItems(t.minItems)),t.maxItems!==void 0&&e.maxItems&&(e=e.maxItems(t.maxItems)),t.uniqueItems&&e.unique&&(e=e.unique()),t.minProperties!==void 0&&e.minProperties&&(e=e.minProperties(t.minProperties)),t.maxProperties!==void 0&&e.maxProperties&&(e=e.maxProperties(t.maxProperties)),t.additionalProperties!==void 0&&e.additionalProperties&&(e=e.additionalProperties(t.additionalProperties)),t.propertyNames&&e.propertyNames&&(e=e.propertyNames(t.propertyNames)),t.allOf&&e.custom&&(e=e.custom(r=>t.allOf.every(i=>p(r,i)))),t.anyOf&&e.custom&&(e=e.custom(r=>t.anyOf.some(i=>p(r,i)))),t.oneOf&&e.custom&&(e=e.custom(r=>t.oneOf.filter(o=>p(r,o)).length===1)),t.required&&e.required&&(e=e.required()),e)};function z(e){let{name:t,methodName:n,impl:r,extendBuilder:i}=e;return{name:t,methodName:n,category:"builder-extension",impl:r(),extendBuilder:i}}var V=z({name:"jsonSchema",methodName:"fromJsonSchema",impl:()=>function(e,t={}){let n=E(e,"",e),r=this.for();for(let o of n){if(o.path==="")continue;let f=M(o,t?.customFormats);r=r.v(o.path,f)}let i=n.find(o=>o.path==="");if(i&&(i.constraints.additionalProperties===!1&&typeof r.strict=="function"&&(r=r.strict()),i.constraints.dependentRequired))for(let[o,f]of Object.entries(i.constraints.dependentRequired))for(let s of f)r=r.v(s,u=>u.requiredIf(l=>l[o]!==void 0));return r},extendBuilder:e=>(e.fromJsonSchema=V.impl,e)});0&&(module.exports={applyBaseType,applyConstraints,convertDSLToFieldDefinition,convertJsonSchemaToLuqDSL,formatValidators,getBaseChain,getDetailedValidationErrors,getSpecificValidationErrors,getSupportedFormats,isFormatSupported,jsonSchemaPlugin,resolveAllRefs,resolveRef,resolveSchemaRef,validateArrayConstraints,validateFormat,validateMultipleTypes,validateNumberConstraints,validateObjectConstraints,validateStringConstraints,validateType,validateValueAgainstSchema});