praxis-kit 0.1.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/LICENSE +21 -0
- package/README.md +77 -0
- package/dist/_shared/diagnostics.d.ts +312 -0
- package/dist/_shared/diagnostics.js +360 -0
- package/dist/build-runtime-CJ_nQEaZ.js +5065 -0
- package/dist/codemod/index.d.ts +2 -0
- package/dist/codemod/index.js +176520 -0
- package/dist/contract/index.d.ts +677 -0
- package/dist/contract/index.js +341 -0
- package/dist/eslint/index.d.ts +90 -0
- package/dist/eslint/index.js +1047 -0
- package/dist/guards/index.d.ts +78 -0
- package/dist/guards/index.js +118 -0
- package/dist/html/index.d.ts +151 -0
- package/dist/html/index.js +1244 -0
- package/dist/index-BIBd_iPD.d.ts +951 -0
- package/dist/lit/index.d.ts +862 -0
- package/dist/lit/index.js +4893 -0
- package/dist/preact/index.d.ts +796 -0
- package/dist/preact/index.js +5043 -0
- package/dist/react/index.d.ts +28 -0
- package/dist/react/index.js +205 -0
- package/dist/react/legacy.d.ts +29 -0
- package/dist/react/legacy.js +80 -0
- package/dist/solid/index.d.ts +728 -0
- package/dist/solid/index.js +4821 -0
- package/dist/svelte/Polymorphic.svelte +190 -0
- package/dist/svelte/_polymorphic-runtime.d.ts +102 -0
- package/dist/svelte/_polymorphic-runtime.js +371 -0
- package/dist/svelte/index.d.ts +994 -0
- package/dist/svelte/index.js +4482 -0
- package/dist/tailwind/index.d.ts +197 -0
- package/dist/tailwind/index.js +767 -0
- package/dist/tailwind/safelist.css +20 -0
- package/dist/ts-plugin/index.cjs +166 -0
- package/dist/ts-plugin/index.d.cts +9 -0
- package/dist/utils/index.d.ts +19 -0
- package/dist/utils/index.js +21 -0
- package/dist/vite-plugin/index.d.ts +200 -0
- package/dist/vite-plugin/index.js +2106 -0
- package/dist/vue/index.d.ts +729 -0
- package/dist/vue/index.js +4945 -0
- package/dist/web/index.d.ts +832 -0
- package/dist/web/index.js +4868 -0
- package/package.json +258 -0
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
//#region ../../lib/foundation/src/iterate.ts
|
|
2
|
+
function find(iterable, callback) {
|
|
3
|
+
for (const value of iterable) {
|
|
4
|
+
const result = callback(value);
|
|
5
|
+
if (result != null) return result;
|
|
6
|
+
}
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
function some(iterable, predicate) {
|
|
10
|
+
for (const value of iterable) if (predicate(value)) return true;
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
function every(iterable, predicate) {
|
|
14
|
+
let index = 0;
|
|
15
|
+
for (const value of iterable) if (!predicate(value, index++)) return false;
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
function* filter(iterable, predicate) {
|
|
19
|
+
let index = 0;
|
|
20
|
+
for (const value of iterable) if (predicate(value, index++)) yield value;
|
|
21
|
+
}
|
|
22
|
+
function* map(iterable, callback) {
|
|
23
|
+
let index = 0;
|
|
24
|
+
for (const value of iterable) yield callback(value, index++);
|
|
25
|
+
}
|
|
26
|
+
function forEach(iterable, callback) {
|
|
27
|
+
let index = 0;
|
|
28
|
+
for (const value of iterable) callback(value, index++);
|
|
29
|
+
}
|
|
30
|
+
function reduce(iterable, initial, callback) {
|
|
31
|
+
let accumulator = initial;
|
|
32
|
+
let index = 0;
|
|
33
|
+
for (const value of iterable) accumulator = callback(accumulator, value, index++);
|
|
34
|
+
return accumulator;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Transforms an iterable into a Record.
|
|
38
|
+
*
|
|
39
|
+
* The callback returns a `[key, value]` tuple for each element. Returning
|
|
40
|
+
* `null` aborts the collection and causes `collect()` to return `null`.
|
|
41
|
+
*/
|
|
42
|
+
function collect(iterable, callback) {
|
|
43
|
+
const result = {};
|
|
44
|
+
let index = 0;
|
|
45
|
+
for (const value of iterable) {
|
|
46
|
+
const entry = callback(value, index++);
|
|
47
|
+
if (entry === null) return null;
|
|
48
|
+
result[entry[0]] = entry[1];
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
function findLast(value, callback) {
|
|
53
|
+
for (let index = value.length - 1; index >= 0; index--) {
|
|
54
|
+
const result = callback(value[index], index);
|
|
55
|
+
if (result != null) return result;
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
function* items(collection) {
|
|
60
|
+
for (let i = 0; i < collection.length; i++) {
|
|
61
|
+
const item = collection.item(i);
|
|
62
|
+
if (item !== null) yield item;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function nodeList(list) {
|
|
66
|
+
return { *[Symbol.iterator]() {
|
|
67
|
+
for (let i = 0; i < list.length; i++) {
|
|
68
|
+
const node = list.item(i);
|
|
69
|
+
if (node !== null) yield node;
|
|
70
|
+
}
|
|
71
|
+
} };
|
|
72
|
+
}
|
|
73
|
+
function mapEntries(m) {
|
|
74
|
+
return m.entries();
|
|
75
|
+
}
|
|
76
|
+
function set(s) {
|
|
77
|
+
return s.values();
|
|
78
|
+
}
|
|
79
|
+
function hasOwn(object, key) {
|
|
80
|
+
return Object.hasOwn(object, key);
|
|
81
|
+
}
|
|
82
|
+
function* entries(object) {
|
|
83
|
+
for (const key in object) {
|
|
84
|
+
if (!hasOwn(object, key)) continue;
|
|
85
|
+
yield [key, object[key]];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function* keys(object) {
|
|
89
|
+
for (const [key] of entries(object)) yield key;
|
|
90
|
+
}
|
|
91
|
+
function* values(object) {
|
|
92
|
+
for (const [, value] of entries(object)) yield value;
|
|
93
|
+
}
|
|
94
|
+
function mapValues(object, callback) {
|
|
95
|
+
const result = {};
|
|
96
|
+
for (const [key, value] of entries(object)) result[key] = callback(value, key);
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
function forEachEntry(object, callback) {
|
|
100
|
+
for (const [key, value] of entries(object)) callback(key, value);
|
|
101
|
+
}
|
|
102
|
+
function forEachKey(object, callback) {
|
|
103
|
+
for (const key of keys(object)) callback(key);
|
|
104
|
+
}
|
|
105
|
+
function forEachValue(object, callback) {
|
|
106
|
+
for (const value of values(object)) callback(value);
|
|
107
|
+
}
|
|
108
|
+
function forEachSet(s, callback) {
|
|
109
|
+
for (const value of s) callback(value);
|
|
110
|
+
}
|
|
111
|
+
const iterate = Object.freeze({
|
|
112
|
+
entries,
|
|
113
|
+
filter,
|
|
114
|
+
find,
|
|
115
|
+
findLast,
|
|
116
|
+
forEach,
|
|
117
|
+
forEachEntry,
|
|
118
|
+
forEachKey,
|
|
119
|
+
forEachSet,
|
|
120
|
+
forEachValue,
|
|
121
|
+
items,
|
|
122
|
+
keys,
|
|
123
|
+
map,
|
|
124
|
+
mapEntries,
|
|
125
|
+
mapValues,
|
|
126
|
+
nodeList,
|
|
127
|
+
reduce,
|
|
128
|
+
collect,
|
|
129
|
+
set,
|
|
130
|
+
some,
|
|
131
|
+
every,
|
|
132
|
+
values
|
|
133
|
+
});
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region ../../lib/foundation/src/type-guards.ts
|
|
136
|
+
function isDefined(value) {
|
|
137
|
+
return value !== void 0;
|
|
138
|
+
}
|
|
139
|
+
function isUndefined(value) {
|
|
140
|
+
return value === void 0;
|
|
141
|
+
}
|
|
142
|
+
function isNull(value) {
|
|
143
|
+
return value === null;
|
|
144
|
+
}
|
|
145
|
+
function isNullish(value) {
|
|
146
|
+
return isNull(value) || isUndefined(value);
|
|
147
|
+
}
|
|
148
|
+
//#endregion
|
|
149
|
+
//#region ../../lib/contract/src/props/make-state-normalizer.ts
|
|
150
|
+
/**
|
|
151
|
+
* Builds one of the eight built-in state-prop normalizers. A truthy state injects the `aria-*` /
|
|
152
|
+
* `data-*` pair; the false state is handled per `falseState`; an explicitly supplied `aria-*` /
|
|
153
|
+
* `data-*` value is never overwritten (the normalizer only fills when the key is `undefined`).
|
|
154
|
+
*/
|
|
155
|
+
function makeStateNormalizer({ state, aria, data, falseState = "omit" }) {
|
|
156
|
+
return (props) => {
|
|
157
|
+
const value = props[state];
|
|
158
|
+
if (falseState === "synthesize" ? isNullish(value) : !value) return {};
|
|
159
|
+
const out = {};
|
|
160
|
+
if (isUndefined(props[aria])) out[aria] = value ? "true" : "false";
|
|
161
|
+
if (value && isUndefined(props[data])) out[data] = "";
|
|
162
|
+
return out;
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region ../../lib/contract/src/props/index.ts
|
|
167
|
+
const activeProps = makeStateNormalizer({
|
|
168
|
+
state: "active",
|
|
169
|
+
aria: "aria-current",
|
|
170
|
+
data: "data-active"
|
|
171
|
+
});
|
|
172
|
+
const disabledProps = makeStateNormalizer({
|
|
173
|
+
state: "disabled",
|
|
174
|
+
aria: "aria-disabled",
|
|
175
|
+
data: "data-disabled"
|
|
176
|
+
});
|
|
177
|
+
const expandedProps = makeStateNormalizer({
|
|
178
|
+
state: "expanded",
|
|
179
|
+
aria: "aria-expanded",
|
|
180
|
+
data: "data-expanded",
|
|
181
|
+
falseState: "synthesize"
|
|
182
|
+
});
|
|
183
|
+
const invalidProps = makeStateNormalizer({
|
|
184
|
+
state: "invalid",
|
|
185
|
+
aria: "aria-invalid",
|
|
186
|
+
data: "data-invalid"
|
|
187
|
+
});
|
|
188
|
+
const loadingProps = makeStateNormalizer({
|
|
189
|
+
state: "loading",
|
|
190
|
+
aria: "aria-busy",
|
|
191
|
+
data: "data-loading"
|
|
192
|
+
});
|
|
193
|
+
const pressedProps = makeStateNormalizer({
|
|
194
|
+
state: "pressed",
|
|
195
|
+
aria: "aria-pressed",
|
|
196
|
+
data: "data-pressed",
|
|
197
|
+
falseState: "synthesize"
|
|
198
|
+
});
|
|
199
|
+
const readonlyProps = makeStateNormalizer({
|
|
200
|
+
state: "readOnly",
|
|
201
|
+
aria: "aria-readonly",
|
|
202
|
+
data: "data-readonly"
|
|
203
|
+
});
|
|
204
|
+
const selectedProps = makeStateNormalizer({
|
|
205
|
+
state: "selected",
|
|
206
|
+
aria: "aria-selected",
|
|
207
|
+
data: "data-selected",
|
|
208
|
+
falseState: "synthesize"
|
|
209
|
+
});
|
|
210
|
+
//#endregion
|
|
211
|
+
//#region ../../lib/contract/src/aria/factories.ts
|
|
212
|
+
/**
|
|
213
|
+
* Builds a correctly-literal-typed `fixable: false` `AriaResult`. Exists so a rule author can
|
|
214
|
+
* extract shared branch logic (severity/attribute/message computed once, reused across multiple
|
|
215
|
+
* `return`s) without TypeScript silently widening `valid: false`/`fixable: false` to `boolean`
|
|
216
|
+
* the moment those values leave an object-literal-in-return-position — the widening only happens
|
|
217
|
+
* on plain object literals; a function's declared return type narrows unconditionally.
|
|
218
|
+
*/
|
|
219
|
+
function invalidWithoutFix(input) {
|
|
220
|
+
return {
|
|
221
|
+
valid: false,
|
|
222
|
+
fixable: false,
|
|
223
|
+
severity: input.severity,
|
|
224
|
+
...isDefined(input.attribute) && { attribute: input.attribute },
|
|
225
|
+
...isDefined(input.message) && { message: input.message },
|
|
226
|
+
...isDefined(input.diagnostic) && { diagnostic: input.diagnostic }
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
/** Same as {@link invalidWithoutFix}, for the `fixable: true` branch — requires a `fix`. */
|
|
230
|
+
function invalidWithFix(input) {
|
|
231
|
+
return {
|
|
232
|
+
valid: false,
|
|
233
|
+
fixable: true,
|
|
234
|
+
severity: input.severity,
|
|
235
|
+
...isDefined(input.attribute) && { attribute: input.attribute },
|
|
236
|
+
...isDefined(input.message) && { message: input.message },
|
|
237
|
+
...isDefined(input.diagnostic) && { diagnostic: input.diagnostic },
|
|
238
|
+
fix: input.fix
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
function removeProp(props, key) {
|
|
242
|
+
const next = { ...props };
|
|
243
|
+
delete next[key];
|
|
244
|
+
return next;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Builds an `AriaFix` that strips a single attribute — the shape `dangerousHrefRule`-style
|
|
248
|
+
* "strip this attribute when it's dangerous/redundant" rules need. A no-op (`applied: false`) when
|
|
249
|
+
* the attribute isn't present, so applying the fix twice (or applying it when nothing triggered it)
|
|
250
|
+
* is always safe. Frozen — a fix is a value object; nothing should mutate `kind`/`attribute`/`apply`
|
|
251
|
+
* after construction.
|
|
252
|
+
*/
|
|
253
|
+
function removeAttributeFix(attribute) {
|
|
254
|
+
return Object.freeze({
|
|
255
|
+
kind: "removeAttribute",
|
|
256
|
+
attribute,
|
|
257
|
+
apply: ({ props }) => {
|
|
258
|
+
if (!(attribute in props)) return {
|
|
259
|
+
applied: false,
|
|
260
|
+
next: props
|
|
261
|
+
};
|
|
262
|
+
return {
|
|
263
|
+
applied: true,
|
|
264
|
+
next: removeProp(props, attribute),
|
|
265
|
+
previous: props
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
function defineRuleMetadata(rule, metadata) {
|
|
271
|
+
const descriptors = {};
|
|
272
|
+
for (const key of Object.keys(metadata)) descriptors[key] = {
|
|
273
|
+
value: metadata[key],
|
|
274
|
+
enumerable: false
|
|
275
|
+
};
|
|
276
|
+
Object.defineProperties(rule, descriptors);
|
|
277
|
+
return rule;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Convenience factory for the single most common `enforcement.aria`/`enforcement.rules` shape:
|
|
281
|
+
* "strip this attribute when some condition on the element's own props holds" — covers
|
|
282
|
+
* security-style guards (a dangerous URL scheme on `href`) and redundant-attribute rules alike,
|
|
283
|
+
* without hand-writing the rule function, the `AriaFix`, and the `invalidWithFix` call each time.
|
|
284
|
+
* A rule with no fix (a warn-only advisory) still needs the raw `AriaRule` shape directly — this
|
|
285
|
+
* factory is deliberately scoped to the strip-on-match case, not a general rule builder.
|
|
286
|
+
*/
|
|
287
|
+
function createRemoveAttributeRule(attribute, options) {
|
|
288
|
+
const { when, severity = "warning", message, diagnostic, readsProps, tags } = options;
|
|
289
|
+
const fix = removeAttributeFix(attribute);
|
|
290
|
+
const rule = (context) => {
|
|
291
|
+
if (!when(context)) return [];
|
|
292
|
+
return [invalidWithFix({
|
|
293
|
+
severity,
|
|
294
|
+
attribute,
|
|
295
|
+
...isDefined(message) && { message },
|
|
296
|
+
...isDefined(diagnostic) && { diagnostic: diagnostic(context) },
|
|
297
|
+
fix
|
|
298
|
+
})];
|
|
299
|
+
};
|
|
300
|
+
return defineRuleMetadata(rule, {
|
|
301
|
+
...isDefined(readsProps) && { readsProps },
|
|
302
|
+
...isDefined(tags) && { tags }
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
//#endregion
|
|
306
|
+
//#region ../core/src/state/contracts.ts
|
|
307
|
+
function stateContract(props) {
|
|
308
|
+
return { props };
|
|
309
|
+
}
|
|
310
|
+
const activeContract = stateContract([activeProps]);
|
|
311
|
+
const disabledContract = stateContract([disabledProps]);
|
|
312
|
+
const expandedContract = stateContract([expandedProps]);
|
|
313
|
+
const invalidContract = stateContract([invalidProps]);
|
|
314
|
+
const loadingContract = stateContract([loadingProps]);
|
|
315
|
+
const pressedContract = stateContract([pressedProps]);
|
|
316
|
+
const readonlyContract = stateContract([readonlyProps]);
|
|
317
|
+
const selectedContract = stateContract([selectedProps]);
|
|
318
|
+
//#endregion
|
|
319
|
+
//#region ../core/src/state/merge-contracts.ts
|
|
320
|
+
function mergeContracts(...contracts) {
|
|
321
|
+
const props = contracts.flatMap((c) => c.props ?? []);
|
|
322
|
+
const aria = contracts.flatMap((c) => c.aria ?? []);
|
|
323
|
+
const rules = contracts.flatMap((c) => c.rules ?? []);
|
|
324
|
+
const children = contracts.flatMap((c) => c.children ?? []);
|
|
325
|
+
let diagnostics;
|
|
326
|
+
let allowedAs;
|
|
327
|
+
iterate.forEach(contracts, (c) => {
|
|
328
|
+
if (c.diagnostics !== void 0) diagnostics = c.diagnostics;
|
|
329
|
+
if (c.allowedAs !== void 0) allowedAs = c.allowedAs;
|
|
330
|
+
});
|
|
331
|
+
return {
|
|
332
|
+
...props.length > 0 && { props },
|
|
333
|
+
...aria.length > 0 && { aria },
|
|
334
|
+
...rules.length > 0 && { rules },
|
|
335
|
+
...children.length > 0 && { children },
|
|
336
|
+
...diagnostics !== void 0 && { diagnostics },
|
|
337
|
+
...allowedAs !== void 0 && { allowedAs }
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
//#endregion
|
|
341
|
+
export { activeContract, activeProps, createRemoveAttributeRule, disabledContract, disabledProps, expandedContract, expandedProps, invalidContract, invalidProps, invalidWithFix, invalidWithoutFix, loadingContract, loadingProps, makeStateNormalizer, mergeContracts, pressedContract, pressedProps, readonlyContract, readonlyProps, removeAttributeFix, selectedContract, selectedProps };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { ESLint } from "eslint";
|
|
2
|
+
//#region ../../plugins/eslint/src/rules/no-dead-compound.d.ts
|
|
3
|
+
type Options$4 = [{
|
|
4
|
+
calleeNames?: string[];
|
|
5
|
+
reportNonLiteral?: boolean;
|
|
6
|
+
}];
|
|
7
|
+
type MessageIds$3 = 'unknownVariantKey' | 'unknownVariantValue' | 'nonLiteralValue';
|
|
8
|
+
export declare const noDeadCompound: import("@typescript-eslint/utils/ts-eslint").RuleModule<MessageIds$3, Options$4, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
9
|
+
name: string;
|
|
10
|
+
};
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region ../../plugins/eslint/src/rules/no-enforcement-without-strict.d.ts
|
|
13
|
+
type Options$3 = [{
|
|
14
|
+
calleeNames?: string[];
|
|
15
|
+
}];
|
|
16
|
+
export declare const noEnforcementWithoutStrict: import("@typescript-eslint/utils/ts-eslint").RuleModule<"missingStrict", Options$3, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
17
|
+
name: string;
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
20
|
+
//#region ../../plugins/eslint/src/rules/no-invalid-default.d.ts
|
|
21
|
+
type Options$2 = [{
|
|
22
|
+
calleeNames?: string[];
|
|
23
|
+
reportNonLiteral?: boolean;
|
|
24
|
+
}];
|
|
25
|
+
type MessageIds$2 = 'unknownDefaultKey' | 'unknownDefaultValue' | 'nonLiteralValue';
|
|
26
|
+
export declare const noInvalidDefault: import("@typescript-eslint/utils/ts-eslint").RuleModule<MessageIds$2, Options$2, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
27
|
+
name: string;
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region ../../plugins/eslint/src/rules/no-invalid-html-nesting.d.ts
|
|
31
|
+
export declare const noInvalidHtmlNesting: import("@typescript-eslint/utils/ts-eslint").RuleModule<"invalidChild", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
32
|
+
name: string;
|
|
33
|
+
};
|
|
34
|
+
//#endregion
|
|
35
|
+
//#region ../../plugins/eslint/src/rules/no-redundant-role.d.ts
|
|
36
|
+
export declare const noRedundantRole: import("@typescript-eslint/utils/ts-eslint").RuleModule<"redundantRole", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
37
|
+
name: string;
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
//#region ../../plugins/eslint/src/rules/valid-cardinality.d.ts
|
|
41
|
+
type Options$1 = [{
|
|
42
|
+
calleeNames?: string[];
|
|
43
|
+
}];
|
|
44
|
+
type MessageIds$1 = 'negativeMin' | 'negativeMax' | 'maxLessThanMin';
|
|
45
|
+
export declare const validCardinality: import("@typescript-eslint/utils/ts-eslint").RuleModule<MessageIds$1, Options$1, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
46
|
+
name: string;
|
|
47
|
+
};
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region ../../plugins/eslint/src/rules/valid-children-config.d.ts
|
|
50
|
+
type Options = [{
|
|
51
|
+
calleeNames?: string[];
|
|
52
|
+
}];
|
|
53
|
+
type MessageIds = 'multipleFirst' | 'multipleLast' | 'minSumExceedsCapacity';
|
|
54
|
+
export declare const validChildrenConfig: import("@typescript-eslint/utils/ts-eslint").RuleModule<MessageIds, Options, unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
|
|
55
|
+
name: string;
|
|
56
|
+
};
|
|
57
|
+
//#endregion
|
|
58
|
+
//#region ../../plugins/eslint/src/index.d.ts
|
|
59
|
+
declare const plugin: {
|
|
60
|
+
meta: {
|
|
61
|
+
name: string;
|
|
62
|
+
version: string;
|
|
63
|
+
};
|
|
64
|
+
rules: ESLint.Plugin["rules"];
|
|
65
|
+
configs: {};
|
|
66
|
+
};
|
|
67
|
+
declare const recommended: {
|
|
68
|
+
readonly name: "@praxis-kit/recommended";
|
|
69
|
+
readonly plugins: {
|
|
70
|
+
readonly '@praxis-kit': {
|
|
71
|
+
meta: {
|
|
72
|
+
name: string;
|
|
73
|
+
version: string;
|
|
74
|
+
};
|
|
75
|
+
rules: ESLint.Plugin["rules"];
|
|
76
|
+
configs: {};
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
readonly rules: {
|
|
80
|
+
readonly '@praxis-kit/no-dead-compound': "error";
|
|
81
|
+
readonly '@praxis-kit/no-enforcement-without-strict': "error";
|
|
82
|
+
readonly '@praxis-kit/no-invalid-default': "error";
|
|
83
|
+
readonly '@praxis-kit/no-invalid-html-nesting': "error";
|
|
84
|
+
readonly '@praxis-kit/no-redundant-role': "warn";
|
|
85
|
+
readonly '@praxis-kit/valid-cardinality': "error";
|
|
86
|
+
readonly '@praxis-kit/valid-children-config': "error";
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
//#endregion
|
|
90
|
+
export { plugin as default, plugin, recommended };
|