@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.
- package/README.md +199 -9
- package/dist/chain/field-chain.types.d.ts +11 -1
- package/dist/chain/index.d.ts +2 -0
- package/dist/chain/plugin-not-imported.types.d.ts +40 -0
- package/dist/chain/plugin-not-imported.types.js +2 -0
- package/dist/chain/plugin-not-imported.types.mjs +1 -0
- package/dist/chain/slot-catalog.generated.d.ts +265 -0
- package/dist/chain/slot-catalog.generated.js +4 -0
- package/dist/chain/slot-catalog.generated.mjs +3 -0
- package/dist/core/type-erasure.d.ts +20 -0
- package/dist/core/type-erasure.js +23 -0
- package/dist/core/type-erasure.mjs +22 -0
- package/dist/field-rule/use-field.d.ts +2 -1
- package/dist/field-rule/use-field.js +9 -2
- package/dist/field-rule/use-field.mjs +9 -2
- package/dist/json-schema/array-keyword-guards.d.ts +31 -0
- package/dist/json-schema/array-keyword-guards.js +120 -0
- package/dist/json-schema/array-keyword-guards.mjs +114 -0
- package/dist/json-schema/assert-object-keyword-values.d.ts +59 -0
- package/dist/json-schema/assert-object-keyword-values.js +149 -0
- package/dist/json-schema/assert-object-keyword-values.mjs +141 -0
- package/dist/json-schema/collect-definitions.d.ts +7 -0
- package/dist/json-schema/collect-definitions.js +9 -0
- package/dist/json-schema/collect-definitions.mjs +10 -1
- package/dist/json-schema/declare-additional-properties.d.ts +11 -1
- package/dist/json-schema/declare-additional-properties.js +13 -1
- package/dist/json-schema/declare-additional-properties.mjs +13 -1
- package/dist/json-schema/declare-object-keywords.d.ts +4 -0
- package/dist/json-schema/declare-object-keywords.js +11 -4
- package/dist/json-schema/declare-object-keywords.mjs +11 -4
- package/dist/json-schema/declare-required-properties.js +6 -0
- package/dist/json-schema/declare-required-properties.mjs +6 -0
- package/dist/json-schema/declare-value-keywords.d.ts +10 -1
- package/dist/json-schema/declare-value-keywords.js +43 -4
- package/dist/json-schema/declare-value-keywords.mjs +43 -4
- package/dist/json-schema/extensions/json-schema/index.d.ts +1 -1
- package/dist/json-schema/extensions/json-schema/index.js +2 -1
- package/dist/json-schema/extensions/json-schema/index.mjs +1 -1
- package/dist/json-schema/flatten-array-schema.d.ts +11 -1
- package/dist/json-schema/flatten-array-schema.js +20 -7
- package/dist/json-schema/flatten-array-schema.mjs +20 -7
- package/dist/json-schema/index.d.ts +1 -0
- package/dist/json-schema/index.js +3 -1
- package/dist/json-schema/index.mjs +1 -0
- package/dist/json-schema/keyword-map-string.js +30 -1
- package/dist/json-schema/keyword-map-string.mjs +30 -1
- package/dist/json-schema/keyword-map.js +2 -0
- package/dist/json-schema/keyword-map.mjs +2 -0
- package/dist/json-schema/malformed-schema-error.d.ts +38 -0
- package/dist/json-schema/malformed-schema-error.js +103 -0
- package/dist/json-schema/malformed-schema-error.mjs +98 -0
- package/dist/plugins/manifest.generated.d.ts +18 -0
- package/dist/plugins/manifest.generated.js +77 -77
- package/dist/plugins/manifest.generated.mjs +77 -77
- package/dist/plugins/one-of/one-of.js +18 -4
- package/dist/plugins/one-of/one-of.mjs +18 -4
- package/dist/schema-tooling/index.d.ts +11 -0
- package/dist/schema-tooling/index.js +12 -1
- package/dist/schema-tooling/index.mjs +10 -0
- package/package.json +8 -6
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<img src="
|
|
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,
|
|
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
|
|
115
|
-
|
|
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 {};
|
package/dist/chain/index.d.ts
CHANGED
|
@@ -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 @@
|
|
|
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
|
+
}
|