@maroonedog/luq 2.4.3 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +199 -9
  2. package/dist/chain/field-chain.types.d.ts +11 -1
  3. package/dist/chain/index.d.ts +2 -0
  4. package/dist/chain/plugin-not-imported.types.d.ts +40 -0
  5. package/dist/chain/plugin-not-imported.types.js +2 -0
  6. package/dist/chain/plugin-not-imported.types.mjs +1 -0
  7. package/dist/chain/slot-catalog.generated.d.ts +265 -0
  8. package/dist/chain/slot-catalog.generated.js +4 -0
  9. package/dist/chain/slot-catalog.generated.mjs +3 -0
  10. package/dist/core/type-erasure.d.ts +20 -0
  11. package/dist/core/type-erasure.js +23 -0
  12. package/dist/core/type-erasure.mjs +22 -0
  13. package/dist/field-rule/use-field.d.ts +2 -1
  14. package/dist/field-rule/use-field.js +9 -2
  15. package/dist/field-rule/use-field.mjs +9 -2
  16. package/dist/json-schema/array-keyword-guards.d.ts +31 -0
  17. package/dist/json-schema/array-keyword-guards.js +120 -0
  18. package/dist/json-schema/array-keyword-guards.mjs +114 -0
  19. package/dist/json-schema/assert-object-keyword-values.d.ts +59 -0
  20. package/dist/json-schema/assert-object-keyword-values.js +149 -0
  21. package/dist/json-schema/assert-object-keyword-values.mjs +141 -0
  22. package/dist/json-schema/collect-definitions.d.ts +7 -0
  23. package/dist/json-schema/collect-definitions.js +9 -0
  24. package/dist/json-schema/collect-definitions.mjs +10 -1
  25. package/dist/json-schema/declare-additional-properties.d.ts +11 -1
  26. package/dist/json-schema/declare-additional-properties.js +13 -1
  27. package/dist/json-schema/declare-additional-properties.mjs +13 -1
  28. package/dist/json-schema/declare-object-keywords.d.ts +4 -0
  29. package/dist/json-schema/declare-object-keywords.js +11 -4
  30. package/dist/json-schema/declare-object-keywords.mjs +11 -4
  31. package/dist/json-schema/declare-required-properties.js +6 -0
  32. package/dist/json-schema/declare-required-properties.mjs +6 -0
  33. package/dist/json-schema/declare-value-keywords.d.ts +10 -1
  34. package/dist/json-schema/declare-value-keywords.js +43 -4
  35. package/dist/json-schema/declare-value-keywords.mjs +43 -4
  36. package/dist/json-schema/extensions/json-schema/index.d.ts +1 -1
  37. package/dist/json-schema/extensions/json-schema/index.js +2 -1
  38. package/dist/json-schema/extensions/json-schema/index.mjs +1 -1
  39. package/dist/json-schema/flatten-array-schema.d.ts +11 -1
  40. package/dist/json-schema/flatten-array-schema.js +20 -7
  41. package/dist/json-schema/flatten-array-schema.mjs +20 -7
  42. package/dist/json-schema/index.d.ts +1 -0
  43. package/dist/json-schema/index.js +3 -1
  44. package/dist/json-schema/index.mjs +1 -0
  45. package/dist/json-schema/keyword-map-string.js +30 -1
  46. package/dist/json-schema/keyword-map-string.mjs +30 -1
  47. package/dist/json-schema/keyword-map.js +2 -0
  48. package/dist/json-schema/keyword-map.mjs +2 -0
  49. package/dist/json-schema/malformed-schema-error.d.ts +38 -0
  50. package/dist/json-schema/malformed-schema-error.js +103 -0
  51. package/dist/json-schema/malformed-schema-error.mjs +98 -0
  52. package/dist/plugins/manifest.generated.d.ts +18 -0
  53. package/dist/plugins/manifest.generated.js +77 -77
  54. package/dist/plugins/manifest.generated.mjs +77 -77
  55. package/dist/plugins/one-of/one-of.js +18 -4
  56. package/dist/plugins/one-of/one-of.mjs +18 -4
  57. package/dist/schema-tooling/index.d.ts +11 -0
  58. package/dist/schema-tooling/index.js +12 -1
  59. package/dist/schema-tooling/index.mjs +10 -0
  60. package/package.json +8 -6
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <div align="center">
2
- <img src="./public/img/library_image.png" alt="Luq Logo" width="300" />
2
+ <img src="https://raw.githubusercontent.com/maroonedog/luq/master/public/img/library_image.png" alt="Luq Logo" width="300" />
3
3
 
4
4
  # Luq
5
5
 
@@ -50,10 +50,16 @@ an array wildcard gets a red squiggle, not a validator that passes everything.
50
50
 
51
51
  Two consequences worth knowing before you read further:
52
52
 
53
- - **Adoption is a patch, not a migration.** A path you did not declare is not
53
+ - **Adoption is a patch, and so is removal.** A path you did not declare is not
54
54
  validated, not required, and not read, so a partly-covered type is a normal
55
55
  state rather than a half-finished one. There is nothing global to migrate: no
56
- registry, no plugin installation, no shared configuration object.
56
+ registry, no plugin installation, no shared configuration object. Leaving is
57
+ the same size of change in the other direction — your types were never
58
+ authored here, so there is no generated file to delete and no inferred type to
59
+ replace by hand, and a consumer that takes a [Standard
60
+ Schema](https://luq.dev/standard-schema) does not change when you hand it a
61
+ different value. The rules themselves you would rewrite; that part is real,
62
+ and it is the same work whichever way you go.
57
63
  - **Every rule you can call is a plugin you imported by name**, so the bundle
58
64
  contains what you used and nothing else — an unimported plugin's method does
59
65
  not even typecheck. What each configuration costs is measured on every build:
@@ -95,7 +101,190 @@ somewhere.
95
101
  npm install @maroonedog/luq
96
102
  ```
97
103
 
98
- Zero runtime dependencies. TypeScript 5.0 or later.
104
+ Zero runtime dependencies. TypeScript 5.0 or later. Your `tsconfig.json` does
105
+ not need `strict` for any of the compile errors above, and they are checked with
106
+ it on as well.
107
+
108
+ ## The whole API
109
+
110
+ Four calls, in this order. There is no registry, no global setup and no config
111
+ file; a builder is built where it is used and carries its own settings.
112
+
113
+ ```ts
114
+ import { Builder } from "@maroonedog/luq";
115
+ import { requiredPlugin } from "@maroonedog/luq/plugins/required";
116
+ import { stringMinPlugin } from "@maroonedog/luq/plugins/stringMin";
117
+ import { numberMinPlugin } from "@maroonedog/luq/plugins/numberMin";
118
+
119
+ // The type is yours, already written, wherever it already lives.
120
+ interface Order {
121
+ readonly reference: string;
122
+ readonly quantity: number;
123
+ readonly note?: string;
124
+ }
125
+
126
+ const orderValidator = Builder()
127
+ .use(requiredPlugin) // every rule you can call is a plugin you imported
128
+ .use(stringMinPlugin)
129
+ .use(numberMinPlugin)
130
+ .for<Order>() // bind to the type; field paths are checked against it
131
+ .v("reference", (b) => b.string.required().min(3))
132
+ .v("quantity", (b) => b.number.required().min(1))
133
+ .build(); // returns Validator<Order>
134
+
135
+ const result = orderValidator.validate({ reference: "ab", quantity: 0 });
136
+ if (!result.valid) {
137
+ for (const issue of result.issues) {
138
+ // issue.path "reference" — where, with array indices filled in
139
+ // issue.code "stringMin" — which rule, stable across messages
140
+ // issue.message — the text, overridable per call
141
+ // issue.severity "error" — only "error" makes the value invalid
142
+ }
143
+ }
144
+ ```
145
+
146
+ `.v(path, chain)` declares rules for one field. A path you do not declare is
147
+ not validated, not required and not read, so covering a type partly is a normal
148
+ state rather than a half-finished one.
149
+
150
+ ### `.strict()` — when you want the whole type covered
151
+
152
+ Partial cover is the default, so nothing tells you a field was forgotten. Add
153
+ `.strict()` before `.build()` and the compiler does: it asserts every leaf path
154
+ of your type has been declared, and if one is missing the returned object has
155
+ no `build()` and names what is missing.
156
+
157
+ ```ts
158
+ import { Builder } from "@maroonedog/luq";
159
+ import { requiredPlugin } from "@maroonedog/luq/plugins/required";
160
+
161
+ interface Pair {
162
+ readonly left: string;
163
+ readonly right: string;
164
+ }
165
+
166
+ export const pairs = Builder()
167
+ .use(requiredPlugin)
168
+ .for<Pair>()
169
+ .v("left", (b) => b.string.required())
170
+ .v("right", (b) => b.string.required())
171
+ .strict() // drop either .v() above and this line stops compiling
172
+ .build();
173
+ ```
174
+
175
+ It has no runtime effect and rejects no extra property at run time — it is a
176
+ statement about your declarations, not about the data. For refusing unknown
177
+ keys in the value, see
178
+ [objectAdditionalProperties](https://luq.dev/plugins).
179
+
180
+ ### What a built validator gives you
181
+
182
+ ```ts
183
+ import { Builder } from "@maroonedog/luq";
184
+ import { requiredPlugin } from "@maroonedog/luq/plugins/required";
185
+ import { transformPlugin } from "@maroonedog/luq/plugins/transform";
186
+
187
+ interface Account {
188
+ readonly email: string;
189
+ }
190
+
191
+ const accounts = Builder()
192
+ .use(requiredPlugin)
193
+ .use(transformPlugin)
194
+ .for<Account>()
195
+ .v("email", (b) => b.string.required().transform((v) => v.toLowerCase()))
196
+ .build();
197
+
198
+ accounts.validate({ email: "A@B.COM" }); // judges; never applies a transform
199
+ accounts.parse({ email: "A@B.COM" }); // judges, then applies transforms
200
+ accounts.pick("email"); // one field, pre-resolved to its path
201
+ accounts.pickAll(["email"]); // several fields, same plan
202
+ ```
203
+
204
+ `validate` and `parse` return the same discriminated union: `{ valid: true,
205
+ data, issues }` or `{ valid: false, issues }`. `validate` hands back the object
206
+ you passed, by identity, when nothing was written.
207
+
208
+ ### Slots
209
+
210
+ `b` offers one slot per kind: `b.string`, `b.number`, `b.boolean`, `b.date`,
211
+ `b.array`, `b.tuple`, `b.object`, `b.union`, `b.any`. The slot must match the
212
+ field's declared type, and `[*]` descends into array elements:
213
+
214
+ ```ts
215
+ import { Builder } from "@maroonedog/luq";
216
+ import { requiredPlugin } from "@maroonedog/luq/plugins/required";
217
+ import { arrayMinLengthPlugin } from "@maroonedog/luq/plugins/arrayMinLength";
218
+
219
+ interface Basket {
220
+ readonly items: readonly { readonly sku: string }[];
221
+ }
222
+
223
+ const baskets = Builder()
224
+ .use(requiredPlugin)
225
+ .use(arrayMinLengthPlugin)
226
+ .for<Basket>()
227
+ .v("items", (b) => b.array.required().minLength(1))
228
+ .v("items[*].sku", (b) => b.string.required())
229
+ .build();
230
+ ```
231
+
232
+ ### Settings
233
+
234
+ `.withConfig({ ... })` before `.use()`, resolved once at `build()`. Two
235
+ validators built under different settings keep their own.
236
+
237
+ ```ts
238
+ import { Builder } from "@maroonedog/luq";
239
+ import { requiredPlugin } from "@maroonedog/luq/plugins/required";
240
+
241
+ interface Payload {
242
+ readonly id: string;
243
+ }
244
+
245
+ const strict = Builder()
246
+ .withConfig({ rootMissingMessage: "Request body is missing" })
247
+ .use(requiredPlugin)
248
+ .for<Payload>()
249
+ .v("id", (b) => b.string.required())
250
+ .build();
251
+
252
+ strict.validate(null).valid; // false, with that message at the root path
253
+ ```
254
+
255
+ ## Finding the plugin for a rule
256
+
257
+ Every rule is a named import, so the bundle contains what you used and nothing
258
+ else. Two ways to get from a method to its import, both inside this package:
259
+
260
+ **The compiler tells you.** Calling a method whose plugin is not in the bag is
261
+ an error that names the symbol and the subpath:
262
+
263
+ > `This expression is not callable. Type 'PluginNotImported<"min",
264
+ > "stringMinPlugin", "@maroonedog/luq/plugins/stringMin">' has no call
265
+ > signatures.`
266
+
267
+ A misspelled method is a different error — `Property 'mim' does not exist` —
268
+ so the two mistakes stay apart.
269
+
270
+ **The manifest lists them all.** `PLUGIN_MANIFEST` ships with the package and
271
+ maps every plugin to the method it adds, the slots it adds it to, and the
272
+ specifier to import:
273
+
274
+ ```ts
275
+ import { PLUGIN_MANIFEST } from "@maroonedog/luq/schema-tooling";
276
+
277
+ const forStringMin = PLUGIN_MANIFEST.filter((entry) =>
278
+ entry.surfaces.some(
279
+ (surface) => surface.method === "min" && surface.slots.includes("string")
280
+ )
281
+ );
282
+ // [{ subpathName: "stringMin",
283
+ // entryPoint: "@maroonedog/luq/plugins/stringMin",
284
+ // exportedSymbols: ["stringMinPlugin"],
285
+ // surfaces: [{ symbol: "stringMinPlugin", method: "min", slots: ["string"] }],
286
+ // ... }]
287
+ ```
99
288
 
100
289
  ## Documentation
101
290
 
@@ -111,8 +300,9 @@ Zero runtime dependencies. TypeScript 5.0 or later.
111
300
  | [Benchmarks](https://luq.dev/benchmarks) | bundle size and throughput, with the method |
112
301
  | [Luq or zod?](https://luq.dev/luq-or-zod) | when schema-first is the better answer |
113
302
 
114
- The same documentation ships in `docs/` inside this repository, so the copy at
115
- any tag describes that release.
303
+ The guide is versioned with the code: `docs/` in the repository at any tag
304
+ describes that release. It is not part of the npm tarball — what ships is this
305
+ file, the compiled `dist/`, and `PLUGIN_MANIFEST` above.
116
306
 
117
307
  ## Status, and how this gets changed
118
308
 
@@ -121,11 +311,11 @@ Breaking changes happen in a major and nowhere else, an API being removed is
121
311
  deprecated one major ahead, and each major ships with the codemod needed to
122
312
  cross it.
123
313
 
124
- - **[CONTRIBUTING.md](CONTRIBUTING.md)** — `npm run verify` is the whole
314
+ - **[CONTRIBUTING.md](https://github.com/maroonedog/luq/blob/master/CONTRIBUTING.md)** — `npm run verify` is the whole
125
315
  contract; the gates and what each one refuses
126
- - **[SECURITY.md](SECURITY.md)** — reporting, zero runtime dependencies, the
316
+ - **[SECURITY.md](https://github.com/maroonedog/luq/blob/master/SECURITY.md)** — reporting, zero runtime dependencies, the
127
317
  prototype-pollution and SSRF positions, and what is *not* protected against
128
- - **[docs/RELEASING.md](docs/RELEASING.md)** — the release steps, the versioning
318
+ - **[docs/RELEASING.md](https://github.com/maroonedog/luq/blob/master/docs/RELEASING.md)** — the release steps, the versioning
129
319
  policy, what each CI workflow watches, and what is still decided by hand
130
320
 
131
321
  ## About the "universal platform" goal
@@ -3,14 +3,23 @@ import type { PluginBag, SlotPlugins } from "./plugin-bag.types";
3
3
  import type { ChainState } from "./chain-state.types";
4
4
  import type { ChainMethod } from "./chain-method.types";
5
5
  import type { RefineMethods } from "./refine-methods.types";
6
+ import type { SlotCatalog } from "./slot-catalog.generated";
6
7
  /** The phantom is REQUIRED, not optional. */
7
8
  export interface ChainMarks<TValue, TState extends ChainState> {
8
9
  readonly value: TValue;
9
10
  readonly state: TState;
10
11
  }
12
+ /**
13
+ * Every method this slot offers that this builder did not import.
14
+ *
15
+ * An `Omit`, so a method the bag DOES carry keeps its real signature: the key
16
+ * is removed from this half before the intersection, and the two halves can
17
+ * never describe the same method.
18
+ */
19
+ type NotImported<B extends PluginBag, S extends TypeName> = Omit<SlotCatalog[S], keyof SlotPlugins<B, S>>;
11
20
  export type FieldChain<B extends PluginBag, S extends TypeName, TRoot, TValue, TState extends ChainState> = {
12
21
  readonly [M in keyof SlotPlugins<B, S>]: ChainMethod<SlotPlugins<B, S>[M], B, S, TRoot, TValue, TState>;
13
- } & RefineMethods<B, TRoot, TValue, TState> & {
22
+ } & NotImported<B, S> & RefineMethods<B, TRoot, TValue, TState> & {
14
23
  readonly __chain: ChainMarks<TValue, TState>;
15
24
  };
16
25
  /** `ChainMarks<unknown, ChainState>`, never `ChainMarks<never, ...>`. */
@@ -23,3 +32,4 @@ export type ChainOutput<C> = C extends {
23
32
  export type ChainStateOf<C> = C extends {
24
33
  readonly __chain: ChainMarks<unknown, infer St>;
25
34
  } ? St : never;
35
+ export {};
@@ -8,6 +8,8 @@ export { collectFieldRules, FieldChainResultError, type FieldChainOutcome, } fro
8
8
  export type { PluginBag, BagEntry, SlotPlugins } from "./plugin-bag.types";
9
9
  export type { AllowNull, ChainState, CoverWith, ExcludeMissing, ExcludeNull, ExcludeUndefined, OpenState, UncoveredMembers, UnionGuardCoverageError, } from "./chain-state.types";
10
10
  export type { ChainMethod } from "./chain-method.types";
11
+ export type { PluginNotImported } from "./plugin-not-imported.types";
12
+ export type { SlotCatalog } from "./slot-catalog.generated";
11
13
  export type { AnyChain, ChainMarks, ChainOutput, ChainStateOf, FieldChain, } from "./field-chain.types";
12
14
  export type { FieldSlots } from "./field-slots.types";
13
15
  export type { ResolveArg, ResolveArgs, ResolveOut } from "./resolve-args.types";
@@ -0,0 +1,40 @@
1
+ /**
2
+ * What a chain method resolves to when its plugin was never passed to `.use()`.
3
+ *
4
+ * The method is real and it belongs on this slot — it is simply not in this
5
+ * builder's bag. Without this the reader gets `Property 'min' does not exist on
6
+ * type 'FieldChain<...>'`, which is equally true of a typo, of a method meant
7
+ * for another type, and of a forgotten import, and those have three different
8
+ * fixes. This has no call signature, so calling it fails, and the type
9
+ * arguments printed in that failure name the symbol to import and the subpath
10
+ * to import it from.
11
+ *
12
+ * A typo still gets `Property ... does not exist`: only a method the slot
13
+ * really offers appears here, so the two messages stay distinguishable.
14
+ */
15
+ export interface PluginNotImported<TMethod extends string, TSymbol extends string, TSubpath extends string> {
16
+ readonly luqError: "pluginNotImported";
17
+ readonly message: "This method needs its plugin. Import the symbol below and pass it to .use().";
18
+ readonly method: TMethod;
19
+ readonly importSymbol: TSymbol;
20
+ readonly importFrom: TSubpath;
21
+ }
22
+ /**
23
+ * Returned instead of the rule when a builder is missing plugins the rule was
24
+ * minted from, naming the ones it lacks.
25
+ *
26
+ * `useField` used to state that requirement structurally: the rule's bag sat in
27
+ * a parameter position, so the builder's slots had to be assignable to the
28
+ * rule's, and a builder carrying MORE plugins was accepted because more members
29
+ * are assignable to fewer. That stopped being true once a slot began carrying a
30
+ * member for every method it does NOT have: a missing method is
31
+ * `PluginNotImported` on one side and a real function on the other, and those
32
+ * are not assignable either way. The requirement is written out directly now,
33
+ * which is also what it always meant — the builder must carry what the rule
34
+ * needs — rather than a consequence of how two object types compared.
35
+ */
36
+ export interface FieldRuleNeedsPlugins<TMissing> {
37
+ readonly luqError: "fieldRuleNeedsPlugins";
38
+ readonly message: "This builder is missing plugins the rule was minted from. Pass them to .use() as well.";
39
+ readonly missing: TMissing;
40
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,265 @@
1
+ import type { PluginNotImported } from "./plugin-not-imported.types";
2
+ /**
3
+ * Which plugin offers which chain method, on which slot.
4
+ *
5
+ * This exists so that calling a method whose plugin was never imported is a
6
+ * NAMED compile error instead of `Property 'min' does not exist on type
7
+ * 'FieldChain<...>'`. That message states a fact and leaves the reader to
8
+ * work out whether they mistyped, picked a method for the wrong type, or
9
+ * simply forgot the import — three different fixes.
10
+ *
11
+ * Literal strings only. Nothing here imports a plugin, so the chain layer
12
+ * gains no dependency on the plugin layer; what it gains is the plugin
13
+ * layer's NAMES, which is what an error message has to say out loud.
14
+ */
15
+ export interface SlotCatalog {
16
+ readonly any: {
17
+ readonly custom: PluginNotImported<"custom", "customPlugin", "@maroonedog/luq/plugins/custom">;
18
+ readonly jsonSchema: PluginNotImported<"jsonSchema", "jsonSchemaPlugin", "@maroonedog/luq/plugins/jsonSchema">;
19
+ readonly jsonSchemaFullFeature: PluginNotImported<"jsonSchemaFullFeature", "jsonSchemaFullFeaturePlugin", "@maroonedog/luq/plugins/jsonSchemaFullFeature">;
20
+ readonly literal: PluginNotImported<"literal", "literalPlugin", "@maroonedog/luq/plugins/literal">;
21
+ readonly nullable: PluginNotImported<"nullable", "nullablePlugin", "@maroonedog/luq/plugins/nullable">;
22
+ readonly optional: PluginNotImported<"optional", "optionalPlugin", "@maroonedog/luq/plugins/optional">;
23
+ readonly optionalIf: PluginNotImported<"optionalIf", "optionalIfPlugin", "@maroonedog/luq/plugins/optionalIf">;
24
+ readonly orFail: PluginNotImported<"orFail", "orFailPlugin", "@maroonedog/luq/plugins/orFail">;
25
+ readonly required: PluginNotImported<"required", "requiredPlugin", "@maroonedog/luq/plugins/required">;
26
+ readonly requiredIf: PluginNotImported<"requiredIf", "requiredIfPlugin", "@maroonedog/luq/plugins/requiredIf">;
27
+ readonly skip: PluginNotImported<"skip", "skipPlugin", "@maroonedog/luq/plugins/skip">;
28
+ readonly validateIf: PluginNotImported<"validateIf", "validateIfPlugin", "@maroonedog/luq/plugins/validateIf">;
29
+ };
30
+ readonly array: {
31
+ readonly compareField: PluginNotImported<"compareField", "compareFieldPlugin", "@maroonedog/luq/plugins/compareField">;
32
+ readonly conditionalSchema: PluginNotImported<"conditionalSchema", "conditionalSchemaPlugin", "@maroonedog/luq/plugins/conditionalSchema">;
33
+ readonly contains: PluginNotImported<"contains", "arrayContainsPlugin", "@maroonedog/luq/plugins/arrayContains">;
34
+ readonly custom: PluginNotImported<"custom", "customPlugin", "@maroonedog/luq/plugins/custom">;
35
+ readonly each: PluginNotImported<"each", "arrayEachPlugin", "@maroonedog/luq/plugins/arrayEach">;
36
+ readonly fromContext: PluginNotImported<"fromContext", "fromContextPlugin", "@maroonedog/luq/plugins/fromContext">;
37
+ readonly includes: PluginNotImported<"includes", "arrayIncludesPlugin", "@maroonedog/luq/plugins/arrayIncludes">;
38
+ readonly jsonSchema: PluginNotImported<"jsonSchema", "jsonSchemaPlugin", "@maroonedog/luq/plugins/jsonSchema">;
39
+ readonly jsonSchemaFullFeature: PluginNotImported<"jsonSchemaFullFeature", "jsonSchemaFullFeaturePlugin", "@maroonedog/luq/plugins/jsonSchemaFullFeature">;
40
+ readonly literal: PluginNotImported<"literal", "literalPlugin", "@maroonedog/luq/plugins/literal">;
41
+ readonly maxLength: PluginNotImported<"maxLength", "arrayMaxLengthPlugin", "@maroonedog/luq/plugins/arrayMaxLength">;
42
+ readonly minLength: PluginNotImported<"minLength", "arrayMinLengthPlugin", "@maroonedog/luq/plugins/arrayMinLength">;
43
+ readonly nullable: PluginNotImported<"nullable", "nullablePlugin", "@maroonedog/luq/plugins/nullable">;
44
+ readonly optional: PluginNotImported<"optional", "optionalPlugin", "@maroonedog/luq/plugins/optional">;
45
+ readonly optionalIf: PluginNotImported<"optionalIf", "optionalIfPlugin", "@maroonedog/luq/plugins/optionalIf">;
46
+ readonly orFail: PluginNotImported<"orFail", "orFailPlugin", "@maroonedog/luq/plugins/orFail">;
47
+ readonly readOnly: PluginNotImported<"readOnly", "readOnlyPlugin", "@maroonedog/luq/plugins/readOnly">;
48
+ readonly recursively: PluginNotImported<"recursively", "objectRecursivelyPlugin", "@maroonedog/luq/plugins/objectRecursively">;
49
+ readonly required: PluginNotImported<"required", "requiredPlugin", "@maroonedog/luq/plugins/required">;
50
+ readonly requiredIf: PluginNotImported<"requiredIf", "requiredIfPlugin", "@maroonedog/luq/plugins/requiredIf">;
51
+ readonly skip: PluginNotImported<"skip", "skipPlugin", "@maroonedog/luq/plugins/skip">;
52
+ readonly stitch: PluginNotImported<"stitch", "stitchPlugin", "@maroonedog/luq/plugins/stitch">;
53
+ readonly stitchWith: PluginNotImported<"stitchWith", "stitchWithPlugin", "@maroonedog/luq/plugins/stitchWith">;
54
+ readonly transform: PluginNotImported<"transform", "transformPlugin", "@maroonedog/luq/plugins/transform">;
55
+ readonly unique: PluginNotImported<"unique", "arrayUniquePlugin", "@maroonedog/luq/plugins/arrayUnique">;
56
+ readonly validateIf: PluginNotImported<"validateIf", "validateIfPlugin", "@maroonedog/luq/plugins/validateIf">;
57
+ readonly writeOnly: PluginNotImported<"writeOnly", "writeOnlyPlugin", "@maroonedog/luq/plugins/writeOnly">;
58
+ };
59
+ readonly boolean: {
60
+ readonly compareField: PluginNotImported<"compareField", "compareFieldPlugin", "@maroonedog/luq/plugins/compareField">;
61
+ readonly conditionalSchema: PluginNotImported<"conditionalSchema", "conditionalSchemaPlugin", "@maroonedog/luq/plugins/conditionalSchema">;
62
+ readonly custom: PluginNotImported<"custom", "customPlugin", "@maroonedog/luq/plugins/custom">;
63
+ readonly falsy: PluginNotImported<"falsy", "booleanFalsyPlugin", "@maroonedog/luq/plugins/booleanFalsy">;
64
+ readonly fromContext: PluginNotImported<"fromContext", "fromContextPlugin", "@maroonedog/luq/plugins/fromContext">;
65
+ readonly jsonSchema: PluginNotImported<"jsonSchema", "jsonSchemaPlugin", "@maroonedog/luq/plugins/jsonSchema">;
66
+ readonly jsonSchemaFullFeature: PluginNotImported<"jsonSchemaFullFeature", "jsonSchemaFullFeaturePlugin", "@maroonedog/luq/plugins/jsonSchemaFullFeature">;
67
+ readonly literal: PluginNotImported<"literal", "literalPlugin", "@maroonedog/luq/plugins/literal">;
68
+ readonly nullable: PluginNotImported<"nullable", "nullablePlugin", "@maroonedog/luq/plugins/nullable">;
69
+ readonly oneOf: PluginNotImported<"oneOf", "oneOfPlugin", "@maroonedog/luq/plugins/oneOf">;
70
+ readonly optional: PluginNotImported<"optional", "optionalPlugin", "@maroonedog/luq/plugins/optional">;
71
+ readonly optionalIf: PluginNotImported<"optionalIf", "optionalIfPlugin", "@maroonedog/luq/plugins/optionalIf">;
72
+ readonly orFail: PluginNotImported<"orFail", "orFailPlugin", "@maroonedog/luq/plugins/orFail">;
73
+ readonly readOnly: PluginNotImported<"readOnly", "readOnlyPlugin", "@maroonedog/luq/plugins/readOnly">;
74
+ readonly required: PluginNotImported<"required", "requiredPlugin", "@maroonedog/luq/plugins/required">;
75
+ readonly requiredIf: PluginNotImported<"requiredIf", "requiredIfPlugin", "@maroonedog/luq/plugins/requiredIf">;
76
+ readonly skip: PluginNotImported<"skip", "skipPlugin", "@maroonedog/luq/plugins/skip">;
77
+ readonly stitch: PluginNotImported<"stitch", "stitchPlugin", "@maroonedog/luq/plugins/stitch">;
78
+ readonly stitchWith: PluginNotImported<"stitchWith", "stitchWithPlugin", "@maroonedog/luq/plugins/stitchWith">;
79
+ readonly transform: PluginNotImported<"transform", "transformPlugin", "@maroonedog/luq/plugins/transform">;
80
+ readonly truthy: PluginNotImported<"truthy", "booleanTruthyPlugin", "@maroonedog/luq/plugins/booleanTruthy">;
81
+ readonly validateIf: PluginNotImported<"validateIf", "validateIfPlugin", "@maroonedog/luq/plugins/validateIf">;
82
+ readonly writeOnly: PluginNotImported<"writeOnly", "writeOnlyPlugin", "@maroonedog/luq/plugins/writeOnly">;
83
+ };
84
+ readonly date: {
85
+ readonly compareField: PluginNotImported<"compareField", "compareFieldPlugin", "@maroonedog/luq/plugins/compareField">;
86
+ readonly custom: PluginNotImported<"custom", "customPlugin", "@maroonedog/luq/plugins/custom">;
87
+ readonly fromContext: PluginNotImported<"fromContext", "fromContextPlugin", "@maroonedog/luq/plugins/fromContext">;
88
+ readonly jsonSchema: PluginNotImported<"jsonSchema", "jsonSchemaPlugin", "@maroonedog/luq/plugins/jsonSchema">;
89
+ readonly jsonSchemaFullFeature: PluginNotImported<"jsonSchemaFullFeature", "jsonSchemaFullFeaturePlugin", "@maroonedog/luq/plugins/jsonSchemaFullFeature">;
90
+ readonly literal: PluginNotImported<"literal", "literalPlugin", "@maroonedog/luq/plugins/literal">;
91
+ readonly nullable: PluginNotImported<"nullable", "nullablePlugin", "@maroonedog/luq/plugins/nullable">;
92
+ readonly optional: PluginNotImported<"optional", "optionalPlugin", "@maroonedog/luq/plugins/optional">;
93
+ readonly optionalIf: PluginNotImported<"optionalIf", "optionalIfPlugin", "@maroonedog/luq/plugins/optionalIf">;
94
+ readonly orFail: PluginNotImported<"orFail", "orFailPlugin", "@maroonedog/luq/plugins/orFail">;
95
+ readonly readOnly: PluginNotImported<"readOnly", "readOnlyPlugin", "@maroonedog/luq/plugins/readOnly">;
96
+ readonly required: PluginNotImported<"required", "requiredPlugin", "@maroonedog/luq/plugins/required">;
97
+ readonly requiredIf: PluginNotImported<"requiredIf", "requiredIfPlugin", "@maroonedog/luq/plugins/requiredIf">;
98
+ readonly skip: PluginNotImported<"skip", "skipPlugin", "@maroonedog/luq/plugins/skip">;
99
+ readonly stitch: PluginNotImported<"stitch", "stitchPlugin", "@maroonedog/luq/plugins/stitch">;
100
+ readonly stitchWith: PluginNotImported<"stitchWith", "stitchWithPlugin", "@maroonedog/luq/plugins/stitchWith">;
101
+ readonly transform: PluginNotImported<"transform", "transformPlugin", "@maroonedog/luq/plugins/transform">;
102
+ readonly validateIf: PluginNotImported<"validateIf", "validateIfPlugin", "@maroonedog/luq/plugins/validateIf">;
103
+ readonly writeOnly: PluginNotImported<"writeOnly", "writeOnlyPlugin", "@maroonedog/luq/plugins/writeOnly">;
104
+ };
105
+ readonly number: {
106
+ readonly compareField: PluginNotImported<"compareField", "compareFieldPlugin", "@maroonedog/luq/plugins/compareField">;
107
+ readonly conditionalSchema: PluginNotImported<"conditionalSchema", "conditionalSchemaPlugin", "@maroonedog/luq/plugins/conditionalSchema">;
108
+ readonly custom: PluginNotImported<"custom", "customPlugin", "@maroonedog/luq/plugins/custom">;
109
+ readonly finite: PluginNotImported<"finite", "numberFinitePlugin", "@maroonedog/luq/plugins/numberFinite">;
110
+ readonly fromContext: PluginNotImported<"fromContext", "fromContextPlugin", "@maroonedog/luq/plugins/fromContext">;
111
+ readonly integer: PluginNotImported<"integer", "numberIntegerPlugin", "@maroonedog/luq/plugins/numberInteger">;
112
+ readonly jsonSchema: PluginNotImported<"jsonSchema", "jsonSchemaPlugin", "@maroonedog/luq/plugins/jsonSchema">;
113
+ readonly jsonSchemaFullFeature: PluginNotImported<"jsonSchemaFullFeature", "jsonSchemaFullFeaturePlugin", "@maroonedog/luq/plugins/jsonSchemaFullFeature">;
114
+ readonly literal: PluginNotImported<"literal", "literalPlugin", "@maroonedog/luq/plugins/literal">;
115
+ readonly max: PluginNotImported<"max", "numberMaxPlugin", "@maroonedog/luq/plugins/numberMax">;
116
+ readonly min: PluginNotImported<"min", "numberMinPlugin", "@maroonedog/luq/plugins/numberMin">;
117
+ readonly multipleOf: PluginNotImported<"multipleOf", "numberMultipleOfPlugin", "@maroonedog/luq/plugins/numberMultipleOf">;
118
+ readonly negative: PluginNotImported<"negative", "numberNegativePlugin", "@maroonedog/luq/plugins/numberNegative">;
119
+ readonly nullable: PluginNotImported<"nullable", "nullablePlugin", "@maroonedog/luq/plugins/nullable">;
120
+ readonly oneOf: PluginNotImported<"oneOf", "oneOfPlugin", "@maroonedog/luq/plugins/oneOf">;
121
+ readonly optional: PluginNotImported<"optional", "optionalPlugin", "@maroonedog/luq/plugins/optional">;
122
+ readonly optionalIf: PluginNotImported<"optionalIf", "optionalIfPlugin", "@maroonedog/luq/plugins/optionalIf">;
123
+ readonly orFail: PluginNotImported<"orFail", "orFailPlugin", "@maroonedog/luq/plugins/orFail">;
124
+ readonly positive: PluginNotImported<"positive", "numberPositivePlugin", "@maroonedog/luq/plugins/numberPositive">;
125
+ readonly range: PluginNotImported<"range", "numberRangePlugin", "@maroonedog/luq/plugins/numberRange">;
126
+ readonly readOnly: PluginNotImported<"readOnly", "readOnlyPlugin", "@maroonedog/luq/plugins/readOnly">;
127
+ readonly required: PluginNotImported<"required", "requiredPlugin", "@maroonedog/luq/plugins/required">;
128
+ readonly requiredIf: PluginNotImported<"requiredIf", "requiredIfPlugin", "@maroonedog/luq/plugins/requiredIf">;
129
+ readonly skip: PluginNotImported<"skip", "skipPlugin", "@maroonedog/luq/plugins/skip">;
130
+ readonly stitch: PluginNotImported<"stitch", "stitchPlugin", "@maroonedog/luq/plugins/stitch">;
131
+ readonly stitchWith: PluginNotImported<"stitchWith", "stitchWithPlugin", "@maroonedog/luq/plugins/stitchWith">;
132
+ readonly transform: PluginNotImported<"transform", "transformPlugin", "@maroonedog/luq/plugins/transform">;
133
+ readonly validateIf: PluginNotImported<"validateIf", "validateIfPlugin", "@maroonedog/luq/plugins/validateIf">;
134
+ readonly writeOnly: PluginNotImported<"writeOnly", "writeOnlyPlugin", "@maroonedog/luq/plugins/writeOnly">;
135
+ };
136
+ readonly object: {
137
+ readonly additionalProperties: PluginNotImported<"additionalProperties", "objectAdditionalPropertiesPlugin", "@maroonedog/luq/plugins/objectAdditionalProperties">;
138
+ readonly additionalPropertiesSchema: PluginNotImported<"additionalPropertiesSchema", "objectAdditionalPropertiesSchemaPlugin", "@maroonedog/luq/plugins/objectAdditionalProperties">;
139
+ readonly compareField: PluginNotImported<"compareField", "compareFieldPlugin", "@maroonedog/luq/plugins/compareField">;
140
+ readonly conditionalSchema: PluginNotImported<"conditionalSchema", "conditionalSchemaPlugin", "@maroonedog/luq/plugins/conditionalSchema">;
141
+ readonly custom: PluginNotImported<"custom", "customPlugin", "@maroonedog/luq/plugins/custom">;
142
+ readonly dependentRequired: PluginNotImported<"dependentRequired", "objectDependentRequiredPlugin", "@maroonedog/luq/plugins/objectDependentRequired">;
143
+ readonly dependentSchemas: PluginNotImported<"dependentSchemas", "objectDependentSchemasPlugin", "@maroonedog/luq/plugins/objectDependentSchemas">;
144
+ readonly fromContext: PluginNotImported<"fromContext", "fromContextPlugin", "@maroonedog/luq/plugins/fromContext">;
145
+ readonly jsonSchema: PluginNotImported<"jsonSchema", "jsonSchemaPlugin", "@maroonedog/luq/plugins/jsonSchema">;
146
+ readonly jsonSchemaFullFeature: PluginNotImported<"jsonSchemaFullFeature", "jsonSchemaFullFeaturePlugin", "@maroonedog/luq/plugins/jsonSchemaFullFeature">;
147
+ readonly literal: PluginNotImported<"literal", "literalPlugin", "@maroonedog/luq/plugins/literal">;
148
+ readonly maxProperties: PluginNotImported<"maxProperties", "objectMaxPropertiesPlugin", "@maroonedog/luq/plugins/objectMaxProperties">;
149
+ readonly minProperties: PluginNotImported<"minProperties", "objectMinPropertiesPlugin", "@maroonedog/luq/plugins/objectMinProperties">;
150
+ readonly nullable: PluginNotImported<"nullable", "nullablePlugin", "@maroonedog/luq/plugins/nullable">;
151
+ readonly object: PluginNotImported<"object", "objectPlugin", "@maroonedog/luq/plugins/object">;
152
+ readonly optional: PluginNotImported<"optional", "optionalPlugin", "@maroonedog/luq/plugins/optional">;
153
+ readonly optionalIf: PluginNotImported<"optionalIf", "optionalIfPlugin", "@maroonedog/luq/plugins/optionalIf">;
154
+ readonly orFail: PluginNotImported<"orFail", "orFailPlugin", "@maroonedog/luq/plugins/orFail">;
155
+ readonly patternProperties: PluginNotImported<"patternProperties", "objectPatternPropertiesPlugin", "@maroonedog/luq/plugins/objectPatternProperties">;
156
+ readonly propertyNames: PluginNotImported<"propertyNames", "objectPropertyNamesPlugin", "@maroonedog/luq/plugins/objectPropertyNames">;
157
+ readonly readOnly: PluginNotImported<"readOnly", "readOnlyPlugin", "@maroonedog/luq/plugins/readOnly">;
158
+ readonly recursively: PluginNotImported<"recursively", "objectRecursivelyPlugin", "@maroonedog/luq/plugins/objectRecursively">;
159
+ readonly required: PluginNotImported<"required", "requiredPlugin", "@maroonedog/luq/plugins/required">;
160
+ readonly requiredIf: PluginNotImported<"requiredIf", "requiredIfPlugin", "@maroonedog/luq/plugins/requiredIf">;
161
+ readonly skip: PluginNotImported<"skip", "skipPlugin", "@maroonedog/luq/plugins/skip">;
162
+ readonly stitch: PluginNotImported<"stitch", "stitchPlugin", "@maroonedog/luq/plugins/stitch">;
163
+ readonly stitchWith: PluginNotImported<"stitchWith", "stitchWithPlugin", "@maroonedog/luq/plugins/stitchWith">;
164
+ readonly transform: PluginNotImported<"transform", "transformPlugin", "@maroonedog/luq/plugins/transform">;
165
+ readonly validateIf: PluginNotImported<"validateIf", "validateIfPlugin", "@maroonedog/luq/plugins/validateIf">;
166
+ readonly writeOnly: PluginNotImported<"writeOnly", "writeOnlyPlugin", "@maroonedog/luq/plugins/writeOnly">;
167
+ };
168
+ readonly string: {
169
+ readonly alphanumeric: PluginNotImported<"alphanumeric", "stringAlphanumericPlugin", "@maroonedog/luq/plugins/stringAlphanumeric">;
170
+ readonly base64: PluginNotImported<"base64", "stringBase64Plugin", "@maroonedog/luq/plugins/stringBase64">;
171
+ readonly compareField: PluginNotImported<"compareField", "compareFieldPlugin", "@maroonedog/luq/plugins/compareField">;
172
+ readonly conditionalSchema: PluginNotImported<"conditionalSchema", "conditionalSchemaPlugin", "@maroonedog/luq/plugins/conditionalSchema">;
173
+ readonly contentEncoding: PluginNotImported<"contentEncoding", "stringContentEncodingPlugin", "@maroonedog/luq/plugins/stringContentEncoding">;
174
+ readonly contentMediaType: PluginNotImported<"contentMediaType", "stringContentMediaTypePlugin", "@maroonedog/luq/plugins/stringContentMediaType">;
175
+ readonly custom: PluginNotImported<"custom", "customPlugin", "@maroonedog/luq/plugins/custom">;
176
+ readonly date: PluginNotImported<"date", "stringDatePlugin", "@maroonedog/luq/plugins/stringDate">;
177
+ readonly datetime: PluginNotImported<"datetime", "stringDatetimePlugin", "@maroonedog/luq/plugins/stringDatetime">;
178
+ readonly duration: PluginNotImported<"duration", "stringDurationPlugin", "@maroonedog/luq/plugins/stringDuration">;
179
+ readonly email: PluginNotImported<"email", "stringEmailPlugin", "@maroonedog/luq/plugins/stringEmail">;
180
+ readonly endsWith: PluginNotImported<"endsWith", "stringEndsWithPlugin", "@maroonedog/luq/plugins/stringEndsWith">;
181
+ readonly exactLength: PluginNotImported<"exactLength", "stringExactLengthPlugin", "@maroonedog/luq/plugins/stringExactLength">;
182
+ readonly fromContext: PluginNotImported<"fromContext", "fromContextPlugin", "@maroonedog/luq/plugins/fromContext">;
183
+ readonly hostname: PluginNotImported<"hostname", "stringHostnamePlugin", "@maroonedog/luq/plugins/stringHostname">;
184
+ readonly idnEmail: PluginNotImported<"idnEmail", "stringIdnEmailPlugin", "@maroonedog/luq/plugins/stringIdnEmail">;
185
+ readonly idnHostname: PluginNotImported<"idnHostname", "stringIdnHostnamePlugin", "@maroonedog/luq/plugins/stringIdnHostname">;
186
+ readonly ipv4: PluginNotImported<"ipv4", "stringIpv4Plugin", "@maroonedog/luq/plugins/stringIpv4">;
187
+ readonly ipv6: PluginNotImported<"ipv6", "stringIpv6Plugin", "@maroonedog/luq/plugins/stringIpv6">;
188
+ readonly iri: PluginNotImported<"iri", "stringIriPlugin", "@maroonedog/luq/plugins/stringIri">;
189
+ readonly iriReference: PluginNotImported<"iriReference", "stringIriReferencePlugin", "@maroonedog/luq/plugins/stringIriReference">;
190
+ readonly jsonPointer: PluginNotImported<"jsonPointer", "stringJsonPointerPlugin", "@maroonedog/luq/plugins/stringJsonPointer">;
191
+ readonly jsonSchema: PluginNotImported<"jsonSchema", "jsonSchemaPlugin", "@maroonedog/luq/plugins/jsonSchema">;
192
+ readonly jsonSchemaFullFeature: PluginNotImported<"jsonSchemaFullFeature", "jsonSchemaFullFeaturePlugin", "@maroonedog/luq/plugins/jsonSchemaFullFeature">;
193
+ readonly literal: PluginNotImported<"literal", "literalPlugin", "@maroonedog/luq/plugins/literal">;
194
+ readonly max: PluginNotImported<"max", "stringMaxPlugin", "@maroonedog/luq/plugins/stringMax">;
195
+ readonly min: PluginNotImported<"min", "stringMinPlugin", "@maroonedog/luq/plugins/stringMin">;
196
+ readonly nullable: PluginNotImported<"nullable", "nullablePlugin", "@maroonedog/luq/plugins/nullable">;
197
+ readonly oneOf: PluginNotImported<"oneOf", "oneOfPlugin", "@maroonedog/luq/plugins/oneOf">;
198
+ readonly optional: PluginNotImported<"optional", "optionalPlugin", "@maroonedog/luq/plugins/optional">;
199
+ readonly optionalIf: PluginNotImported<"optionalIf", "optionalIfPlugin", "@maroonedog/luq/plugins/optionalIf">;
200
+ readonly orFail: PluginNotImported<"orFail", "orFailPlugin", "@maroonedog/luq/plugins/orFail">;
201
+ readonly pattern: PluginNotImported<"pattern", "stringPatternPlugin", "@maroonedog/luq/plugins/stringPattern">;
202
+ readonly readOnly: PluginNotImported<"readOnly", "readOnlyPlugin", "@maroonedog/luq/plugins/readOnly">;
203
+ readonly regex: PluginNotImported<"regex", "stringRegexPlugin", "@maroonedog/luq/plugins/stringRegex">;
204
+ readonly relativeJsonPointer: PluginNotImported<"relativeJsonPointer", "stringRelativeJsonPointerPlugin", "@maroonedog/luq/plugins/stringRelativeJsonPointer">;
205
+ readonly required: PluginNotImported<"required", "requiredPlugin", "@maroonedog/luq/plugins/required">;
206
+ readonly requiredIf: PluginNotImported<"requiredIf", "requiredIfPlugin", "@maroonedog/luq/plugins/requiredIf">;
207
+ readonly skip: PluginNotImported<"skip", "skipPlugin", "@maroonedog/luq/plugins/skip">;
208
+ readonly startsWith: PluginNotImported<"startsWith", "stringStartsWithPlugin", "@maroonedog/luq/plugins/stringStartsWith">;
209
+ readonly stitch: PluginNotImported<"stitch", "stitchPlugin", "@maroonedog/luq/plugins/stitch">;
210
+ readonly stitchWith: PluginNotImported<"stitchWith", "stitchWithPlugin", "@maroonedog/luq/plugins/stitchWith">;
211
+ readonly time: PluginNotImported<"time", "stringTimePlugin", "@maroonedog/luq/plugins/stringTime">;
212
+ readonly transform: PluginNotImported<"transform", "transformPlugin", "@maroonedog/luq/plugins/transform">;
213
+ readonly uriReference: PluginNotImported<"uriReference", "stringUriReferencePlugin", "@maroonedog/luq/plugins/stringUriReference">;
214
+ readonly uriTemplate: PluginNotImported<"uriTemplate", "stringUriTemplatePlugin", "@maroonedog/luq/plugins/stringUriTemplate">;
215
+ readonly url: PluginNotImported<"url", "stringUrlPlugin", "@maroonedog/luq/plugins/stringUrl">;
216
+ readonly uuid: PluginNotImported<"uuid", "uuidPlugin", "@maroonedog/luq/plugins/uuid">;
217
+ readonly validateIf: PluginNotImported<"validateIf", "validateIfPlugin", "@maroonedog/luq/plugins/validateIf">;
218
+ readonly writeOnly: PluginNotImported<"writeOnly", "writeOnlyPlugin", "@maroonedog/luq/plugins/writeOnly">;
219
+ };
220
+ readonly tuple: {
221
+ readonly builder: PluginNotImported<"builder", "tupleBuilderPlugin", "@maroonedog/luq/plugins/tupleBuilder">;
222
+ readonly compareField: PluginNotImported<"compareField", "compareFieldPlugin", "@maroonedog/luq/plugins/compareField">;
223
+ readonly contains: PluginNotImported<"contains", "arrayContainsPlugin", "@maroonedog/luq/plugins/arrayContains">;
224
+ readonly custom: PluginNotImported<"custom", "customPlugin", "@maroonedog/luq/plugins/custom">;
225
+ readonly each: PluginNotImported<"each", "arrayEachPlugin", "@maroonedog/luq/plugins/arrayEach">;
226
+ readonly fromContext: PluginNotImported<"fromContext", "fromContextPlugin", "@maroonedog/luq/plugins/fromContext">;
227
+ readonly includes: PluginNotImported<"includes", "arrayIncludesPlugin", "@maroonedog/luq/plugins/arrayIncludes">;
228
+ readonly jsonSchema: PluginNotImported<"jsonSchema", "jsonSchemaPlugin", "@maroonedog/luq/plugins/jsonSchema">;
229
+ readonly jsonSchemaFullFeature: PluginNotImported<"jsonSchemaFullFeature", "jsonSchemaFullFeaturePlugin", "@maroonedog/luq/plugins/jsonSchemaFullFeature">;
230
+ readonly literal: PluginNotImported<"literal", "literalPlugin", "@maroonedog/luq/plugins/literal">;
231
+ readonly maxLength: PluginNotImported<"maxLength", "arrayMaxLengthPlugin", "@maroonedog/luq/plugins/arrayMaxLength">;
232
+ readonly minLength: PluginNotImported<"minLength", "arrayMinLengthPlugin", "@maroonedog/luq/plugins/arrayMinLength">;
233
+ readonly nullable: PluginNotImported<"nullable", "nullablePlugin", "@maroonedog/luq/plugins/nullable">;
234
+ readonly optional: PluginNotImported<"optional", "optionalPlugin", "@maroonedog/luq/plugins/optional">;
235
+ readonly optionalIf: PluginNotImported<"optionalIf", "optionalIfPlugin", "@maroonedog/luq/plugins/optionalIf">;
236
+ readonly orFail: PluginNotImported<"orFail", "orFailPlugin", "@maroonedog/luq/plugins/orFail">;
237
+ readonly required: PluginNotImported<"required", "requiredPlugin", "@maroonedog/luq/plugins/required">;
238
+ readonly requiredIf: PluginNotImported<"requiredIf", "requiredIfPlugin", "@maroonedog/luq/plugins/requiredIf">;
239
+ readonly skip: PluginNotImported<"skip", "skipPlugin", "@maroonedog/luq/plugins/skip">;
240
+ readonly stitch: PluginNotImported<"stitch", "stitchPlugin", "@maroonedog/luq/plugins/stitch">;
241
+ readonly stitchWith: PluginNotImported<"stitchWith", "stitchWithPlugin", "@maroonedog/luq/plugins/stitchWith">;
242
+ readonly unique: PluginNotImported<"unique", "arrayUniquePlugin", "@maroonedog/luq/plugins/arrayUnique">;
243
+ readonly validateIf: PluginNotImported<"validateIf", "validateIfPlugin", "@maroonedog/luq/plugins/validateIf">;
244
+ };
245
+ readonly union: {
246
+ readonly compareField: PluginNotImported<"compareField", "compareFieldPlugin", "@maroonedog/luq/plugins/compareField">;
247
+ readonly custom: PluginNotImported<"custom", "customPlugin", "@maroonedog/luq/plugins/custom">;
248
+ readonly fromContext: PluginNotImported<"fromContext", "fromContextPlugin", "@maroonedog/luq/plugins/fromContext">;
249
+ readonly guard: PluginNotImported<"guard", "unionGuardPlugin", "@maroonedog/luq/plugins/unionGuard">;
250
+ readonly jsonSchema: PluginNotImported<"jsonSchema", "jsonSchemaPlugin", "@maroonedog/luq/plugins/jsonSchema">;
251
+ readonly jsonSchemaFullFeature: PluginNotImported<"jsonSchemaFullFeature", "jsonSchemaFullFeaturePlugin", "@maroonedog/luq/plugins/jsonSchemaFullFeature">;
252
+ readonly literal: PluginNotImported<"literal", "literalPlugin", "@maroonedog/luq/plugins/literal">;
253
+ readonly nullable: PluginNotImported<"nullable", "nullablePlugin", "@maroonedog/luq/plugins/nullable">;
254
+ readonly optional: PluginNotImported<"optional", "optionalPlugin", "@maroonedog/luq/plugins/optional">;
255
+ readonly optionalIf: PluginNotImported<"optionalIf", "optionalIfPlugin", "@maroonedog/luq/plugins/optionalIf">;
256
+ readonly orFail: PluginNotImported<"orFail", "orFailPlugin", "@maroonedog/luq/plugins/orFail">;
257
+ readonly required: PluginNotImported<"required", "requiredPlugin", "@maroonedog/luq/plugins/required">;
258
+ readonly requiredIf: PluginNotImported<"requiredIf", "requiredIfPlugin", "@maroonedog/luq/plugins/requiredIf">;
259
+ readonly skip: PluginNotImported<"skip", "skipPlugin", "@maroonedog/luq/plugins/skip">;
260
+ readonly stitch: PluginNotImported<"stitch", "stitchPlugin", "@maroonedog/luq/plugins/stitch">;
261
+ readonly stitchWith: PluginNotImported<"stitchWith", "stitchWithPlugin", "@maroonedog/luq/plugins/stitchWith">;
262
+ readonly transform: PluginNotImported<"transform", "transformPlugin", "@maroonedog/luq/plugins/transform">;
263
+ readonly validateIf: PluginNotImported<"validateIf", "validateIfPlugin", "@maroonedog/luq/plugins/validateIf">;
264
+ };
265
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // GENERATED FILE - do not edit by hand.
3
+ // Generated by scripts/catalog/build-plugin-catalog.ts out of the plugin directory structure.
4
+ Object.defineProperty(exports, "__esModule", { value: true });