eslint-plugin-better-tailwindcss
Version:
auto-wraps tailwind classes after a certain print width or class count into multiple lines to improve readability.
100 lines • 5.33 kB
JavaScript
import { array, description, literal, number, optional, pipe, strictObject, string, union } from "valibot";
import { DEFAULT_SELECTORS } from "../default-options.js";
import { MatcherType, SelectorKind } from "../../types/rule.js";
const STRING_SELECTOR_MATCHER_SCHEMA = strictObject({
type: pipe(literal(MatcherType.String), description("Matcher type that will be applied."))
});
const OBJECT_KEY_SELECTOR_MATCHER_SCHEMA = strictObject({
path: optional(pipe(string(), description("Regular expression that filters the object key and matches the content for further processing in a group."))),
type: pipe(literal(MatcherType.ObjectKey), description("Matcher type that will be applied."))
});
const OBJECT_VALUE_SELECTOR_MATCHER_SCHEMA = strictObject({
path: optional(pipe(string(), description("Regular expression that filters the object value and matches the content for further processing in a group."))),
type: pipe(literal(MatcherType.ObjectValue), description("Matcher type that will be applied."))
});
const ANONYMOUS_FUNCTION_RETURN_SELECTOR_MATCHER_SCHEMA = strictObject({
match: pipe(array(union([
STRING_SELECTOR_MATCHER_SCHEMA,
OBJECT_KEY_SELECTOR_MATCHER_SCHEMA,
OBJECT_VALUE_SELECTOR_MATCHER_SCHEMA
])), description("List of nested matchers that target the return value of anonymous functions.")),
type: pipe(literal(MatcherType.AnonymousFunctionReturn), description("Matcher type that will be applied."))
});
const SELECTOR_MATCH_SCHEMA = pipe(optional(array(union([
STRING_SELECTOR_MATCHER_SCHEMA,
OBJECT_KEY_SELECTOR_MATCHER_SCHEMA,
OBJECT_VALUE_SELECTOR_MATCHER_SCHEMA,
ANONYMOUS_FUNCTION_RETURN_SELECTOR_MATCHER_SCHEMA
]))), description("Optional list of matchers that will be applied."));
const SELECTOR_NAME_SCHEMA = pipe(string(), description("Regular expression for names that should be linted."));
const CALLEE_SELECTOR_PATH_SCHEMA = pipe(string(), description("Regular expression for callee paths that should be linted."));
const TAG_SELECTOR_PATH_SCHEMA = pipe(string(), description("Regular expression for tag paths that should be linted."));
const CALLEE_SELECTOR_TARGET_VALUE_SCHEMA = optional(union([
literal("all"),
literal("first"),
literal("last"),
number()
]));
const CALLEE_SELECTOR_TARGET_ARGUMENT_SCHEMA = pipe(CALLEE_SELECTOR_TARGET_VALUE_SCHEMA, description("Optional argument target for call arguments: index, first, last, or all."));
const CALLEE_SELECTOR_TARGET_CALL_SCHEMA = pipe(CALLEE_SELECTOR_TARGET_VALUE_SCHEMA, description("Optional call target for curried callees: index, first, last, or all."));
const CALLEE_SELECTOR_LEGACY_CALL_TARGET_SCHEMA = pipe(optional(union([
literal("all"),
literal("first"),
literal("last"),
number()
])), description("Optional call target for curried callees: index, first, last, or all."));
const ATTRIBUTE_SELECTOR_SCHEMA = strictObject({
kind: pipe(literal(SelectorKind.Attribute), description("Selector kind that determines where matching is applied.")),
match: SELECTOR_MATCH_SCHEMA,
name: SELECTOR_NAME_SCHEMA
});
const CALLEE_SELECTOR_SCHEMA = union([
strictObject({
callTarget: CALLEE_SELECTOR_LEGACY_CALL_TARGET_SCHEMA,
kind: pipe(literal(SelectorKind.Callee), description("Selector kind that determines where matching is applied.")),
match: SELECTOR_MATCH_SCHEMA,
name: SELECTOR_NAME_SCHEMA,
path: optional(CALLEE_SELECTOR_PATH_SCHEMA),
targetArgument: CALLEE_SELECTOR_TARGET_ARGUMENT_SCHEMA,
targetCall: CALLEE_SELECTOR_TARGET_CALL_SCHEMA
}),
strictObject({
callTarget: CALLEE_SELECTOR_LEGACY_CALL_TARGET_SCHEMA,
kind: pipe(literal(SelectorKind.Callee), description("Selector kind that determines where matching is applied.")),
match: SELECTOR_MATCH_SCHEMA,
name: optional(SELECTOR_NAME_SCHEMA),
path: CALLEE_SELECTOR_PATH_SCHEMA,
targetArgument: CALLEE_SELECTOR_TARGET_ARGUMENT_SCHEMA,
targetCall: CALLEE_SELECTOR_TARGET_CALL_SCHEMA
})
]);
const TAG_SELECTOR_SCHEMA = union([
strictObject({
kind: pipe(literal(SelectorKind.Tag), description("Selector kind that determines where matching is applied.")),
match: SELECTOR_MATCH_SCHEMA,
name: SELECTOR_NAME_SCHEMA,
path: optional(TAG_SELECTOR_PATH_SCHEMA)
}),
strictObject({
kind: pipe(literal(SelectorKind.Tag), description("Selector kind that determines where matching is applied.")),
match: SELECTOR_MATCH_SCHEMA,
name: optional(SELECTOR_NAME_SCHEMA),
path: TAG_SELECTOR_PATH_SCHEMA
})
]);
const VARIABLE_SELECTOR_SCHEMA = strictObject({
kind: pipe(literal(SelectorKind.Variable), description("Selector kind that determines where matching is applied.")),
match: SELECTOR_MATCH_SCHEMA,
name: SELECTOR_NAME_SCHEMA
});
export const SELECTOR_SCHEMA = union([
ATTRIBUTE_SELECTOR_SCHEMA,
CALLEE_SELECTOR_SCHEMA,
TAG_SELECTOR_SCHEMA,
VARIABLE_SELECTOR_SCHEMA
]);
export const SELECTORS_SCHEMA = pipe(array(SELECTOR_SCHEMA), description("Flat list of selectors that should get linted."));
export const SELECTORS_OPTION_SCHEMA = strictObject({
selectors: optional(SELECTORS_SCHEMA, DEFAULT_SELECTORS)
});
//# sourceMappingURL=selectors.js.map