stylelint-plugin-grid 1.0.1 → 1.0.2
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 +8 -0
- package/dist/_internal/grid-placement-analysis.d.ts +20 -0
- package/dist/_internal/grid-placement-analysis.d.ts.map +1 -0
- package/dist/_internal/grid-placement-analysis.js +59 -0
- package/dist/_internal/grid-placement-analysis.js.map +1 -0
- package/dist/_internal/grid-template-analysis.d.ts +2 -0
- package/dist/_internal/grid-template-analysis.d.ts.map +1 -1
- package/dist/_internal/grid-template-analysis.js +4 -0
- package/dist/_internal/grid-template-analysis.js.map +1 -1
- package/dist/_internal/rules-registry.d.ts.map +1 -1
- package/dist/_internal/rules-registry.js +16 -0
- package/dist/_internal/rules-registry.js.map +1 -1
- package/dist/plugin.cjs +893 -285
- package/dist/plugin.cjs.map +4 -4
- package/dist/rules/no-conflicting-placement.d.ts +8 -0
- package/dist/rules/no-conflicting-placement.d.ts.map +1 -0
- package/dist/rules/no-conflicting-placement.js +70 -0
- package/dist/rules/no-conflicting-placement.js.map +1 -0
- package/dist/rules/no-ineffective-container-properties.d.ts +8 -0
- package/dist/rules/no-ineffective-container-properties.d.ts.map +1 -0
- package/dist/rules/no-ineffective-container-properties.js +97 -0
- package/dist/rules/no-ineffective-container-properties.js.map +1 -0
- package/dist/rules/no-invalid-repeat-count.d.ts +8 -0
- package/dist/rules/no-invalid-repeat-count.d.ts.map +1 -0
- package/dist/rules/no-invalid-repeat-count.js +75 -0
- package/dist/rules/no-invalid-repeat-count.js.map +1 -0
- package/dist/rules/no-invalid-span.d.ts +8 -0
- package/dist/rules/no-invalid-span.d.ts.map +1 -0
- package/dist/rules/no-invalid-span.js +49 -0
- package/dist/rules/no-invalid-span.js.map +1 -0
- package/dist/rules/no-reversed-placement-lines.d.ts +8 -0
- package/dist/rules/no-reversed-placement-lines.d.ts.map +1 -0
- package/dist/rules/no-reversed-placement-lines.js +129 -0
- package/dist/rules/no-reversed-placement-lines.js.map +1 -0
- package/dist/rules/no-zero-grid-lines.d.ts +8 -0
- package/dist/rules/no-zero-grid-lines.d.ts.map +1 -0
- package/dist/rules/no-zero-grid-lines.js +48 -0
- package/dist/rules/no-zero-grid-lines.js.map +1 -0
- package/dist/rules/prefer-minmax-zero-fr.d.ts +8 -0
- package/dist/rules/prefer-minmax-zero-fr.d.ts.map +1 -0
- package/dist/rules/prefer-minmax-zero-fr.js +56 -0
- package/dist/rules/prefer-minmax-zero-fr.js.map +1 -0
- package/dist/rules/require-explicit-tracks-with-areas.d.ts +12 -0
- package/dist/rules/require-explicit-tracks-with-areas.d.ts.map +1 -0
- package/dist/rules/require-explicit-tracks-with-areas.js +65 -0
- package/dist/rules/require-explicit-tracks-with-areas.js.map +1 -0
- package/docs/rules/configs/grid-all.md +8 -0
- package/docs/rules/configs/grid-recommended.md +6 -0
- package/docs/rules/configs/index.md +8 -0
- package/docs/rules/no-conflicting-placement.md +59 -0
- package/docs/rules/no-ineffective-container-properties.md +63 -0
- package/docs/rules/no-invalid-repeat-count.md +56 -0
- package/docs/rules/no-invalid-span.md +55 -0
- package/docs/rules/no-reversed-placement-lines.md +56 -0
- package/docs/rules/no-zero-grid-lines.md +53 -0
- package/docs/rules/prefer-minmax-zero-fr.md +49 -0
- package/docs/rules/require-explicit-tracks-with-areas.md +80 -0
- package/package.json +1 -1
package/dist/plugin.cjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/plugin.ts", "../src/_internal/plugin-constants.ts", "../src/rules/consistent-area-naming.ts", "../src/_internal/create-stylelint-rule.ts", "../src/_internal/grid-template-analysis.ts", "../src/rules/no-dense-auto-flow.ts", "../src/rules/no-invalid-areas.ts", "../src/rules/no-invalid-auto-repeat.ts", "../src/rules/no-invalid-minmax.ts", "../src/rules/no-mismatched-template-rows.ts", "../src/rules/no-overlapping-areas.ts", "../src/rules/no-unknown-areas.ts", "../src/rules/no-unused-areas.ts", "../src/rules/prefer-gap-properties.ts", "../src/rules/require-explicit-rows-with-column-flow.ts", "../src/rules/validate-area-shapes.ts", "../src/rules/validate-track-counts.ts", "../src/_internal/rules-registry.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @packageDocumentation\n * Public plugin entrypoint for `stylelint-plugin-grid` exports and\n * shareable config wiring.\n */\nimport type { Config, Plugin as StylelintPlugin } from \"stylelint\";\n\nimport { isDefined, objectKeys } from \"ts-extras\";\n\nimport type { StylelintPluginRuleContract } from \"./_internal/create-stylelint-rule.js\";\n\nimport {\n CONFIG_NAMES as configNamesValue,\n type GridConfigName as InternalGridConfigName,\n PACKAGE_NAME as packageNameValue,\n PACKAGE_VERSION as packageVersionValue,\n PLUGIN_NAMESPACE as pluginNamespaceValue,\n} from \"./_internal/plugin-constants.js\";\nimport { gridRules as gridRulesValue } from \"./_internal/rules-registry.js\";\n\n/** Public shareable config map exported by this package. */\nexport type GridConfigMap = Record<GridConfigName, GridShareableConfig>;\n/** Shareable config names exposed by this package. */\nexport type GridConfigName = InternalGridConfigName;\n/** Public fully-qualified rule ids supported by this package. */\nexport type GridRuleId = `${typeof pluginNamespaceValue}/${string}`;\n\n/** Public unqualified rule names supported by this package. */\nexport type GridRuleName = Extract<keyof typeof gridRulesValue, string>;\n\n/** Shareable config shape exported by this package. */\nexport type GridShareableConfig = Config & {\n plugins: (string | StylelintPlugin)[];\n rules: NonNullable<Config[\"rules\"]>;\n};\n\n/** Internal ordered registry entry tuple. */\ntype GridRuleEntry = readonly [string, StylelintPluginRuleContract];\n/** Internal runtime rule registry shape. */\ntype GridRulesMap = Readonly<Record<string, StylelintPluginRuleContract>>;\n\n/** Local package metadata values used to avoid import re-export warnings. */\nconst packageMetaName = packageNameValue;\nconst packageMetaNamespace = pluginNamespaceValue;\nconst packageMetaVersion = packageVersionValue;\n/** Local rule registry alias used to avoid import re-export warnings. */\nconst runtimeRules = gridRulesValue;\n/** Local config-name alias used to avoid import re-export warnings. */\nconst publicConfigNames = configNamesValue;\n\n/** Public package metadata exported alongside the plugin pack. */\nexport const meta: Readonly<{\n name: string;\n namespace: string;\n version: string;\n}> = {\n name: packageMetaName,\n namespace: packageMetaNamespace,\n version: packageMetaVersion,\n};\n\n/** Public rule registry keyed by unqualified rule name. */\nexport const rules: GridRulesMap = runtimeRules;\n\n/** Stable ordered unqualified rule names. */\nexport const ruleNames: readonly string[] = objectKeys(rules).toSorted(\n (left, right) => left.localeCompare(right)\n);\n\n/** Stable ordered registry entries used to derive configs and ids. */\nconst gridRuleEntries: readonly GridRuleEntry[] = (() => {\n const entries: GridRuleEntry[] = [];\n\n for (const ruleName of ruleNames) {\n const rule = rules[ruleName];\n\n if (isDefined(rule)) {\n entries.push([ruleName, rule]);\n }\n }\n\n return entries;\n})();\n\nfunction isGridRuleId(ruleName: string): ruleName is GridRuleId {\n return ruleName.startsWith(`${pluginNamespaceValue}/`);\n}\n\nfunction toGridRuleId(ruleName: string): GridRuleId {\n if (!isGridRuleId(ruleName)) {\n throw new Error(`Unexpected Stylelint rule id \"${ruleName}\".`);\n }\n\n return ruleName;\n}\n\n/** Default plugin-pack export consumed by Stylelint. */\nexport const plugins: readonly StylelintPlugin[] = gridRuleEntries.map(\n ([, rule]) => rule\n);\n\n/** Stable ordered fully qualified rule ids. */\nexport const ruleIds: readonly GridRuleId[] = gridRuleEntries.map(([, rule]) =>\n toGridRuleId(rule.ruleName)\n);\n\n/** Rule ids included in the recommended shareable config. */\nconst recommendedRuleIds: readonly GridRuleId[] = gridRuleEntries\n .filter(([, rule]) => rule.docs.recommended)\n .map(([, rule]) => toGridRuleId(rule.ruleName));\n\n/**\n * Build one shareable Stylelint config.\n *\n * @param enabledRuleIds - Rule ids to enable in the config.\n *\n * @returns Shareable Stylelint config.\n */\nfunction createConfig(\n enabledRuleIds: readonly GridRuleId[]\n): GridShareableConfig {\n return {\n plugins: [...plugins],\n rules: (() => {\n const rulesConfig: NonNullable<Config[\"rules\"]> = {};\n\n for (const ruleId of enabledRuleIds) {\n rulesConfig[ruleId] = true;\n }\n\n return rulesConfig;\n })(),\n };\n}\n\n/** Shareable config exports exposed by the package. */\nexport const gridPluginConfigs: GridConfigMap = {\n \"grid-all\": createConfig(ruleIds),\n \"grid-recommended\": createConfig(recommendedRuleIds),\n};\n\n/** Stable ordered shareable config names. */\nexport const configNames: readonly GridConfigName[] = publicConfigNames;\n\n/** Default export consumed by Stylelint when the package is used as a plugin. */\nexport default plugins;\n", "/**\n * @packageDocumentation\n * Static package and docs constants used throughout the Stylelint plugin runtime.\n */\nimport type { ArrayValues, UnknownRecord } from \"type-fest\";\n\nimport packageJson from \"stylelint-plugin-grid/package.json\" with { type: \"json\" };\nimport { keyIn } from \"ts-extras\";\n\n/** Public npm package name. */\nexport const PACKAGE_NAME = \"stylelint-plugin-grid\";\n/** Public Stylelint rule namespace. */\nexport const PLUGIN_NAMESPACE = \"grid\";\n/** Public GitHub repository URL. */\nexport const REPOSITORY_URL =\n \"https://github.com/Nick2bad4u/stylelint-plugin-grid\";\n/** Public documentation site URL. */\nexport const DOCS_SITE_URL =\n \"https://nick2bad4u.github.io/stylelint-plugin-grid\";\n/** Base URL for authored rule documentation. */\nexport const DOCS_RULES_BASE_URL: `${string}/docs/rules` = `${DOCS_SITE_URL}/docs/rules`;\n/** Supported shareable config names exported by this package. */\nexport const CONFIG_NAMES = [\"grid-all\", \"grid-recommended\"] as const;\n\n/** Shareable config names exported by the plugin runtime. */\nexport type GridConfigName = ArrayValues<typeof CONFIG_NAMES>;\n\n/**\n * Resolve package version from package.json data.\n *\n * @param pkg - Parsed package metadata value.\n *\n * @returns The package version, or `0.0.0` when unavailable.\n */\nfunction getPackageVersion(pkg: unknown): string {\n return hasStringVersion(pkg) ? pkg.version : \"0.0.0\";\n}\n\nfunction hasStringVersion(\n pkg: unknown\n): pkg is Readonly<{ version: string }> & UnknownRecord {\n return (\n isUnknownRecord(pkg) &&\n keyIn(pkg, \"version\") &&\n typeof pkg[\"version\"] === \"string\"\n );\n}\n\nfunction isUnknownRecord(pkg: unknown): pkg is UnknownRecord {\n return typeof pkg === \"object\" && pkg !== null && !Array.isArray(pkg);\n}\n\n/** Published package version resolved from `package.json`. */\nexport const PACKAGE_VERSION: string = getPackageVersion(packageJson);\n\n/**\n * Create the canonical docs URL for one authored rule page.\n */\nexport function createRuleDocsUrl(ruleName: string): string {\n return `${DOCS_RULES_BASE_URL}/${ruleName}`;\n}\n\n/**\n * Create a fully qualified Stylelint rule name for this plugin namespace.\n */\nexport function createRuleName<const T extends string>(\n ruleName: T\n): `${typeof PLUGIN_NAMESPACE}/${T}` {\n return `${PLUGIN_NAMESPACE}/${ruleName}`;\n}\n", "import type { Node } from \"postcss\";\n\nimport stylelint, { type PostcssResult, type RuleBase } from \"stylelint\";\nimport { isEmpty } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridAreaUsages,\n collectGridTemplateAreas,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"consistent-area-naming\");\n\ntype AreaNamingStyle = \"camel-case\" | \"kebab-case\" | \"snake-case\";\ntype SecondaryOptions = Readonly<{\n style?: AreaNamingStyle;\n}>;\n\nconst messages: {\n rejected: (areaName: string, style: AreaNamingStyle) => string;\n} = ruleMessages(ruleName, {\n rejected: (areaName: string, style: AreaNamingStyle): string =>\n `Grid area name \"${areaName}\" must use ${style}.`,\n});\n\nconst docs = {\n description:\n \"Require consistent naming for `grid-template-areas` and single-name `grid-area` identifiers.\",\n recommended: false,\n url: createRuleDocsUrl(\"consistent-area-naming\"),\n} as const;\n\nconst patterns: Readonly<Record<AreaNamingStyle, RegExp>> = {\n \"camel-case\": /^[a-z][0-9A-Za-z]*$/v,\n // eslint-disable-next-line security/detect-unsafe-regex -- Anchored naming-style pattern over short CSS identifiers.\n \"kebab-case\": /^[a-z][0-9a-z]*(?:-[0-9a-z]+)*$/v,\n // eslint-disable-next-line security/detect-unsafe-regex -- Anchored naming-style pattern over short CSS identifiers.\n \"snake-case\": /^[a-z][0-9a-z]*(?:_[0-9a-z]+)*$/v,\n};\n\nconst allowedStyles: AreaNamingStyle[] = [\n \"camel-case\",\n \"kebab-case\",\n \"snake-case\",\n];\n\nfunction reportRejectedAreaName(input: {\n areaName: string;\n node: Node;\n result: PostcssResult;\n style: AreaNamingStyle;\n}): void {\n const { areaName, node, result, style } = input;\n\n report({\n message: messages.rejected(areaName, style),\n node,\n result,\n ruleName,\n word: areaName,\n });\n}\n\nconst ruleFunction: RuleBase<boolean, SecondaryOptions | undefined> =\n (primary, secondary) => (root, result) => {\n if (\n !validateOptions(\n result,\n ruleName,\n {\n actual: primary,\n possible: [true],\n },\n {\n actual: secondary,\n optional: true,\n possible: {\n style: allowedStyles,\n },\n }\n )\n ) {\n return;\n }\n\n const style = secondary?.style ?? \"kebab-case\";\n const pattern = patterns[style];\n\n for (const template of collectGridTemplateAreas(root)) {\n if (isEmpty(template.diagnostics)) {\n for (const areaName of template.areaNames) {\n if (!pattern.test(areaName)) {\n reportRejectedAreaName({\n areaName,\n node: template.declaration,\n result,\n style,\n });\n }\n }\n }\n }\n\n for (const usage of collectGridAreaUsages(root)) {\n if (!pattern.test(usage.name)) {\n reportRejectedAreaName({\n areaName: usage.name,\n node: usage.declaration,\n result,\n style,\n });\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<\n boolean,\n SecondaryOptions | undefined,\n typeof messages\n> = createStylelintRule<boolean, SecondaryOptions | undefined, typeof messages>(\n {\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n }\n);\n\nexport default rule;\n", "/**\n * @packageDocumentation\n * Shared helper for authoring statically typed Stylelint rules in this template.\n */\nimport type { Except } from \"type-fest\";\n\nimport stylelint, {\n type Rule,\n type RuleBase,\n type RuleMessages,\n type RuleMeta,\n} from \"stylelint\";\n\n/** Input contract for the shared Stylelint rule creator. */\nexport type CreateStylelintRuleOptions<\n P = unknown,\n S = Readonly<Record<string, never>> | undefined,\n M extends RuleMessages = RuleMessages,\n> = Readonly<{\n docs: StylelintRuleDocs;\n messages: M;\n meta?: Readonly<Except<RuleMeta, \"url\"> & { url?: string }>;\n primaryOptionArray?: boolean;\n rule: RuleBase<P, S>;\n ruleName: string;\n}>;\n\n/** Fully assembled plugin object shape used by this template's rule registry. */\nexport type StylelintPluginRule<\n P = unknown,\n S = Readonly<Record<string, never>> | undefined,\n M extends RuleMessages = RuleMessages,\n> = Readonly<{\n docs: StylelintRuleDocs;\n messages: M;\n meta: Readonly<{ docs: StylelintRuleDocs }> & RuleMeta;\n rule: Rule<P, S, M>;\n ruleName: string;\n}> &\n ReturnType<typeof stylelint.createPlugin>;\n\n/** Nongeneric public rule contract used for heterogeneous runtime registries. */\nexport type StylelintPluginRuleContract = Readonly<{\n docs: StylelintRuleDocs;\n messages: RuleMessages;\n meta: Readonly<{ docs: StylelintRuleDocs }> & RuleMeta;\n rule: Rule;\n ruleName: string;\n}> &\n ReturnType<typeof stylelint.createPlugin>;\n\n/** Static authored docs metadata carried alongside each rule definition. */\nexport type StylelintRuleDocs = Readonly<{\n description: string;\n recommended: boolean;\n url: string;\n}>;\n\n/**\n * Create a Stylelint plugin object while stamping the static runtime metadata\n * that Stylelint and this template expect.\n */\nexport const createStylelintRule = <\n P = unknown,\n S = Readonly<Record<string, never>> | undefined,\n M extends RuleMessages = RuleMessages,\n>(\n options: CreateStylelintRuleOptions<P, S, M>\n): StylelintPluginRule<P, S, M> => {\n const { docs, messages, rule, ruleName } = options;\n const baseMeta: RuleMeta = {\n ...options.meta,\n url: options.meta?.url ?? docs.url,\n };\n const meta: Readonly<{ docs: StylelintRuleDocs }> & RuleMeta = {\n ...baseMeta,\n docs,\n };\n const typedRule: Rule<P, S, M> = Object.assign(rule, {\n messages,\n meta,\n ruleName,\n });\n\n if (options.primaryOptionArray === true) {\n typedRule.primaryOptionArray = true;\n }\n\n const plugin = stylelint.createPlugin(ruleName, typedRule);\n\n return {\n ...plugin,\n docs,\n messages,\n meta,\n rule: typedRule,\n ruleName,\n };\n};\n", "/**\n * @packageDocumentation\n * Shared CSS Grid declaration analysis for public rules.\n */\nimport type { Container, Declaration, Root, Rule } from \"postcss\";\n\nimport {\n arrayFirst,\n isDefined,\n isEmpty,\n isInteger,\n safeCastTo,\n setHas,\n} from \"ts-extras\";\n\n/** One named area rectangle computed from a parsed template. */\nexport type GridAreaShape = Readonly<{\n bottom: number;\n left: number;\n name: string;\n right: number;\n top: number;\n}>;\n\n/** One `grid-area: <custom-ident>` usage. */\nexport type GridAreaUsage = Readonly<{\n declaration: Declaration;\n name: string;\n selector?: string;\n}>;\n\n/** One parsed `grid-template-areas` declaration. */\nexport type GridTemplateAreas = Readonly<{\n areaNames: readonly string[];\n declaration: Declaration;\n diagnostics: readonly GridTemplateDiagnostic[];\n rows: readonly (readonly string[])[];\n}>;\n\n/** One structural issue found while parsing `grid-template-areas`. */\nexport type GridTemplateDiagnostic = Readonly<{\n message: string;\n token?: string;\n}>;\n\n/** One CSS function call found in a declaration value. */\nexport type GridValueFunctionCall = Readonly<{\n body: string;\n name: string;\n source: string;\n}>;\n\nconst cssWideKeywords: ReadonlySet<string> = new Set([\n \"inherit\",\n \"initial\",\n \"revert\",\n \"revert-layer\",\n \"unset\",\n]);\n\nconst reservedGridAreaIdents: ReadonlySet<string> = new Set([\"auto\", \"span\"]);\n\nconst customIdentPattern = /^-?[A-Z_a-z][\\w\\-]*$/v;\nconst blankAreaPattern = /^\\.+$/v;\n\n/** Collect all single-name `grid-area` usages in source order. */\nexport function collectGridAreaUsages(root: Root): readonly GridAreaUsage[] {\n const usages: GridAreaUsage[] = [];\n\n root.walkDecls(\"grid-area\", (declaration) => {\n const name = parseSingleGridAreaName(declaration.value);\n\n if (!isDefined(name)) {\n return;\n }\n\n const selector = getOwningRule(declaration)?.selector;\n\n usages.push({\n declaration,\n name,\n ...(isDefined(selector) ? { selector } : {}),\n });\n });\n\n return usages;\n}\n\n/** Collect parsed `grid-template-areas` declarations in source order. */\nexport function collectGridTemplateAreas(\n root: Root\n): readonly GridTemplateAreas[] {\n const templates: GridTemplateAreas[] = [];\n\n root.walkDecls(\"grid-template-areas\", (declaration) => {\n const template = parseGridTemplateAreas(declaration);\n\n if (template.rows.length > 0 || template.diagnostics.length > 0) {\n templates.push(template);\n }\n });\n\n return templates;\n}\n\n/** Count top-level CSS Grid tracks, or return undefined for dynamic lists. */\nexport function countGridTracks(value: string): number | undefined {\n const tokens: string[] = [];\n let count = 0;\n\n for (const token of splitTopLevelWhitespace(value)) {\n if (!isLineNameList(token)) {\n tokens.push(token);\n }\n }\n\n for (const token of tokens) {\n const repeatCount = countRepeatTracks(token);\n\n if (!isDefined(repeatCount) && token.startsWith(\"repeat(\")) {\n return undefined;\n }\n\n count += repeatCount ?? 1;\n }\n\n return count;\n}\n\n/** Find a sibling declaration on the same rule/atrule block. */\nexport function findSiblingDeclaration(\n declaration: Readonly<Declaration>,\n propertyName: string\n): Declaration | undefined {\n const parent = safeCastTo<Container | undefined>(declaration.parent);\n let match: Declaration | undefined;\n\n parent?.walkDecls(propertyName, (candidate) => {\n if (candidate.parent === parent) {\n match = candidate;\n }\n });\n\n return match;\n}\n\n/** Find balanced function calls by name inside one declaration value. */\nexport function findValueFunctionCalls(\n value: string,\n functionName: string\n): readonly GridValueFunctionCall[] {\n const calls: GridValueFunctionCall[] = [];\n const normalizedFunctionName = functionName.toLowerCase();\n let index = 0;\n\n while (index < value.length) {\n const openParenthesisIndex = value.indexOf(\"(\", index);\n\n if (openParenthesisIndex === -1) {\n break;\n }\n\n const nameStartIndex = findFunctionNameStart(\n value,\n openParenthesisIndex\n );\n const name = value.slice(nameStartIndex, openParenthesisIndex);\n const closeParenthesisIndex = findMatchingParenthesis(\n value,\n openParenthesisIndex\n );\n\n if (closeParenthesisIndex < 0) {\n break;\n }\n\n if (name.toLowerCase() === normalizedFunctionName) {\n calls.push({\n body: value.slice(\n openParenthesisIndex + 1,\n closeParenthesisIndex\n ),\n name,\n source: value.slice(nameStartIndex, closeParenthesisIndex + 1),\n });\n }\n\n index = closeParenthesisIndex + 1;\n }\n\n return calls;\n}\n\n/** Return each named area's bounding box from a parsed template. */\nexport function getAreaShapes(\n template: Readonly<GridTemplateAreas>\n): readonly GridAreaShape[] {\n const shapes = new Map<string, GridAreaShape>();\n\n for (const [rowIndex, row] of template.rows.entries()) {\n for (const [columnIndex, token] of row.entries()) {\n if (!isBlankAreaToken(token) && isGridAreaName(token)) {\n const current = shapes.get(token);\n\n shapes.set(\n token,\n isDefined(current)\n ? {\n ...current,\n bottom: Math.max(current.bottom, rowIndex),\n left: Math.min(current.left, columnIndex),\n right: Math.max(current.right, columnIndex),\n top: Math.min(current.top, rowIndex),\n }\n : {\n bottom: rowIndex,\n left: columnIndex,\n name: token,\n right: columnIndex,\n top: rowIndex,\n }\n );\n }\n }\n }\n\n // eslint-disable-next-line canonical/no-use-extend-native -- The repo already targets Array#toSorted; this avoids mutating the collected shape list.\n return [...shapes.values()].toSorted((left, right) =>\n left.name.localeCompare(right.name)\n );\n}\n\n/** Return whether a token is a valid blank cell marker. */\nexport function isBlankAreaToken(token: string): boolean {\n return blankAreaPattern.test(token);\n}\n\n/** Return whether a token is accepted as a conservative CSS custom ident. */\nexport function isGridAreaName(token: string): boolean {\n return (\n customIdentPattern.test(token) &&\n !setHas(cssWideKeywords, token.toLowerCase()) &&\n !setHas(reservedGridAreaIdents, token.toLowerCase())\n );\n}\n\n/** Return whether a named area fills its full rectangle. */\nexport function isRectangularArea(\n template: Readonly<GridTemplateAreas>,\n shape: Readonly<GridAreaShape>\n): boolean {\n for (let rowIndex = shape.top; rowIndex <= shape.bottom; rowIndex += 1) {\n const row = template.rows[rowIndex];\n\n if (!isDefined(row)) {\n return false;\n }\n\n for (\n let columnIndex = shape.left;\n columnIndex <= shape.right;\n columnIndex += 1\n ) {\n if (row[columnIndex] !== shape.name) {\n return false;\n }\n }\n }\n\n return true;\n}\n\n/** Parse one `grid-template-areas` declaration. */\nexport function parseGridTemplateAreas(\n declaration: Declaration\n): GridTemplateAreas {\n const trimmedValue = declaration.value.trim();\n\n if (trimmedValue === \"\" || trimmedValue.toLowerCase() === \"none\") {\n return {\n areaNames: [],\n declaration,\n diagnostics: [],\n rows: [],\n };\n }\n\n const rowTexts = extractCssStringLiterals(trimmedValue);\n const diagnostics: GridTemplateDiagnostic[] = [];\n\n if (isEmpty(rowTexts)) {\n diagnostics.push({\n message:\n \"`grid-template-areas` must contain one or more quoted row strings.\",\n });\n }\n\n const rows = rowTexts.map(\n (rowText) => rowText.trim().match(/\\S+/gv) ?? [\"\"]\n );\n\n for (const [rowIndex, row] of rows.entries()) {\n if (row.length === 1 && arrayFirst(row) === \"\") {\n diagnostics.push({\n message: `Grid template row ${String(rowIndex + 1)} is empty.`,\n });\n } else {\n for (const token of row) {\n if (!isBlankAreaToken(token) && !isGridAreaName(token)) {\n diagnostics.push({\n message: `Grid area token \"${token}\" is not a valid area name or blank \".\" marker.`,\n token,\n });\n }\n }\n }\n }\n\n const expectedWidth = arrayFirst(rows)?.length;\n\n if (isDefined(expectedWidth)) {\n for (const [rowIndex, row] of rows.entries()) {\n if (row.length !== expectedWidth) {\n diagnostics.push({\n message: `Grid template row ${String(rowIndex + 1)} has ${String(row.length)} columns, but row 1 has ${String(expectedWidth)}.`,\n });\n }\n }\n }\n\n return {\n areaNames: getAreaNames(rows),\n declaration,\n diagnostics,\n rows,\n };\n}\n\n/** Split one comma-separated CSS value at top-level commas only. */\nexport function splitTopLevelCommas(value: string): readonly string[] {\n return splitTopLevel(value, /,/v);\n}\n\n/** Split one CSS value at top-level whitespace only. */\nexport function splitTopLevelWhitespace(value: string): readonly string[] {\n return splitTopLevel(value, /\\s/v);\n}\n\nfunction countRepeatTracks(token: string): number | undefined {\n if (!token.startsWith(\"repeat(\") || !token.endsWith(\")\")) {\n return undefined;\n }\n\n const body = token.slice(\"repeat(\".length, -1);\n const [repeatText, trackListText] = splitTopLevelCommas(body);\n const repeat = Number.parseInt(repeatText?.trim() ?? \"\", 10);\n\n if (\n !isInteger(repeat) ||\n repeat < 0 ||\n String(repeat) !== repeatText?.trim() ||\n !isDefined(trackListText)\n ) {\n return undefined;\n }\n\n const innerTrackCount = countGridTracks(trackListText);\n\n return isDefined(innerTrackCount) ? repeat * innerTrackCount : undefined;\n}\n\nfunction extractCssStringLiterals(value: string): readonly string[] {\n const rows: string[] = [];\n const stringPattern =\n /\"(?<doubleQuotedRow>(?:\\\\.|[^\"\\\\])*)\"|'(?<singleQuotedRow>(?:\\\\.|[^'\\\\])*)'/vy;\n let index = 0;\n\n while (index < value.length) {\n while (/\\s/v.test(value[index] ?? \"\")) {\n index += 1;\n }\n\n stringPattern.lastIndex = index;\n const match = stringPattern.exec(value);\n\n if (match === null) {\n return rows;\n }\n\n rows.push(\n match.groups?.[\"doubleQuotedRow\"] ??\n match.groups?.[\"singleQuotedRow\"] ??\n \"\"\n );\n index = stringPattern.lastIndex;\n }\n\n return rows;\n}\n\nfunction findFunctionNameStart(\n value: string,\n openParenthesisIndex: number\n): number {\n let index = openParenthesisIndex - 1;\n\n while (index >= 0 && isFunctionNameCharacter(value[index] ?? \"\")) {\n index -= 1;\n }\n\n return index + 1;\n}\n\nfunction findMatchingParenthesis(\n value: string,\n openParenthesisIndex: number\n): number {\n let parenthesisDepth = 0;\n\n for (let index = openParenthesisIndex; index < value.length; index += 1) {\n const character = value[index];\n\n if (character === \"(\") {\n parenthesisDepth += 1;\n } else if (character === \")\") {\n parenthesisDepth -= 1;\n\n if (parenthesisDepth === 0) {\n return index;\n }\n }\n }\n\n return -1;\n}\n\nfunction getAreaNames(rows: readonly (readonly string[])[]): readonly string[] {\n const names = new Set<string>();\n\n for (const row of rows) {\n for (const token of row) {\n if (!isBlankAreaToken(token) && isGridAreaName(token)) {\n names.add(token);\n }\n }\n }\n\n // eslint-disable-next-line canonical/no-use-extend-native -- The repo already targets Array#toSorted; this keeps the returned area-name list immutable.\n return [...names].toSorted((left, right) => left.localeCompare(right));\n}\n\nfunction getOwningRule(declaration: Readonly<Declaration>): Rule | undefined {\n return declaration.parent?.type === \"rule\" ? declaration.parent : undefined;\n}\n\nfunction isFunctionNameCharacter(character: string): boolean {\n return (\n character === \"-\" ||\n character === \"_\" ||\n (character >= \"0\" && character <= \"9\") ||\n (character >= \"A\" && character <= \"Z\") ||\n (character >= \"a\" && character <= \"z\")\n );\n}\n\nfunction isLineNameList(token: string): boolean {\n return token.startsWith(\"[\") && token.endsWith(\"]\");\n}\n\nfunction parseSingleGridAreaName(value: string): string | undefined {\n const name = value.trim();\n\n if (\n name.includes(\"/\") ||\n name.includes(\"(\") ||\n name.includes(\")\") ||\n !isGridAreaName(name)\n ) {\n return undefined;\n }\n\n return name;\n}\n\nfunction splitTopLevel(\n value: string,\n separatorPattern: RegExp\n): readonly string[] {\n const tokens: string[] = [];\n let bracketDepth = 0;\n let parenthesisDepth = 0;\n let tokenStart = 0;\n\n for (let index = 0; index < value.length; index += 1) {\n const character = value[index] ?? \"\";\n\n switch (character) {\n case \"(\": {\n parenthesisDepth += 1;\n\n break;\n }\n case \")\": {\n parenthesisDepth = Math.max(0, parenthesisDepth - 1);\n\n break;\n }\n case \"[\": {\n bracketDepth += 1;\n\n break;\n }\n case \"]\": {\n bracketDepth = Math.max(0, bracketDepth - 1);\n\n break;\n }\n // No default\n }\n\n if (\n bracketDepth === 0 &&\n parenthesisDepth === 0 &&\n separatorPattern.test(character)\n ) {\n const token = value.slice(tokenStart, index).trim();\n\n if (token.length > 0) {\n tokens.push(token);\n }\n\n tokenStart = index + 1;\n }\n }\n\n const finalToken = value.slice(tokenStart).trim();\n\n if (finalToken.length > 0) {\n tokens.push(finalToken);\n }\n\n return tokens;\n}\n", "import stylelint, { type RuleBase } from \"stylelint\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport { splitTopLevelWhitespace } from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-dense-auto-flow\");\nconst messages: { rejected: () => string } = ruleMessages(ruleName, {\n rejected: (): string =>\n \"Avoid `grid-auto-flow: dense`; dense packing can disconnect visual order from source order.\",\n});\n\nconst docs = {\n description:\n \"Disallow `grid-auto-flow: dense` because it can reorder auto-placed grid items visually.\",\n recommended: false,\n url: createRuleDocsUrl(\"no-dense-auto-flow\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls(\"grid-auto-flow\", (declaration) => {\n const hasDensePacking = splitTopLevelWhitespace(\n declaration.value\n ).some((token) => token.toLowerCase() === \"dense\");\n\n if (!hasDensePacking) {\n return;\n }\n\n report({\n message: messages.rejected(),\n node: declaration,\n result,\n ruleName,\n word: \"dense\",\n });\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport { collectGridTemplateAreas } from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-invalid-areas\");\nconst messages: { rejected: (message: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (message: string): string => message,\n }\n);\n\nconst docs = {\n description: \"Disallow malformed `grid-template-areas` declarations.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-invalid-areas\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n for (const template of collectGridTemplateAreas(root)) {\n for (const diagnostic of template.diagnostics) {\n report({\n message: messages.rejected(diagnostic.message),\n node: template.declaration,\n result,\n ruleName,\n word: diagnostic.token,\n });\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n findValueFunctionCalls,\n splitTopLevelCommas,\n splitTopLevelWhitespace,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-invalid-auto-repeat\");\nconst messages: {\n rejected: (token: string, repeatKeyword: string) => string;\n} = ruleMessages(ruleName, {\n rejected: (token: string, repeatKeyword: string): string =>\n `Use a fixed track size inside \\`repeat(${repeatKeyword}, ...)\\`; \\`${token}\\` can make the grid template declaration invalid.`,\n});\n\nconst docs = {\n description:\n \"Disallow definitely invalid CSS Grid auto-repeat track sizes.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-invalid-auto-repeat\"),\n} as const;\n\nconst trackTemplateProperties: ReadonlySet<string> = new Set([\n \"grid-template-columns\",\n \"grid-template-rows\",\n]);\n\nconst invalidBareAutoRepeatTrackTokens: ReadonlySet<string> = new Set([\n \"auto\",\n \"max-content\",\n \"min-content\",\n]);\n\nconst cssLengthUnits: ReadonlySet<string> = new Set([\n \"cap\",\n \"ch\",\n \"cm\",\n \"dvb\",\n \"dvh\",\n \"dvi\",\n \"dvmax\",\n \"dvmin\",\n \"dvw\",\n \"em\",\n \"ex\",\n \"ic\",\n \"in\",\n \"lh\",\n \"lvb\",\n \"lvh\",\n \"lvi\",\n \"lvmax\",\n \"lvmin\",\n \"lvw\",\n \"mm\",\n \"pc\",\n \"pt\",\n \"px\",\n \"q\",\n \"rch\",\n \"rem\",\n \"rex\",\n \"ric\",\n \"rlh\",\n \"svb\",\n \"svh\",\n \"svi\",\n \"svmax\",\n \"svmin\",\n \"svw\",\n \"vb\",\n \"vh\",\n \"vi\",\n \"vmax\",\n \"vmin\",\n \"vw\",\n]);\n\nconst lengthPercentagePattern = /^[+\\-]?(?:\\d+|\\d*\\.\\d+)(?<unit>%|[A-Za-z]+)$/v;\nconst zeroPattern = /^[+\\-]?(?:0|0?\\.0+)$/v;\n\nfunction containsRuntimeValue(token: string): boolean {\n const normalizedToken = token.toLowerCase();\n\n return normalizedToken.includes(\"var(\") || normalizedToken.includes(\"env(\");\n}\n\nfunction getInvalidAutoRepeatTrack(trackList: string): string | undefined {\n for (const token of splitTopLevelWhitespace(trackList)) {\n const normalizedToken = token.toLowerCase();\n\n if (!isLineNameList(token) && !containsRuntimeValue(token)) {\n if (\n setHas(invalidBareAutoRepeatTrackTokens, normalizedToken) ||\n isFlexTrackBreadth(normalizedToken)\n ) {\n return token;\n }\n\n if (\n hasStringPrefix(normalizedToken, \"minmax(\") &&\n isInvalidAutoRepeatMinmax(token)\n ) {\n return token;\n }\n }\n }\n\n return undefined;\n}\n\nfunction getMinmaxArguments(\n token: string\n): readonly [minimum: string, maximum: string] | undefined {\n const minmaxCall = arrayFirst(findValueFunctionCalls(token, \"minmax\"));\n\n if (!isDefined(minmaxCall)) {\n return undefined;\n }\n\n const [minimum, maximum] = splitTopLevelCommas(minmaxCall.body).map(\n (argument) => argument.trim()\n );\n\n if (!isDefined(minimum) || !isDefined(maximum)) {\n return undefined;\n }\n\n return [minimum, maximum];\n}\n\nfunction getRepeatKeyword(\n repeatBody: string\n): \"auto-fill\" | \"auto-fit\" | undefined {\n const repeatCount = arrayFirst(splitTopLevelCommas(repeatBody))\n ?.trim()\n .toLowerCase();\n\n if (repeatCount === \"auto-fill\" || repeatCount === \"auto-fit\") {\n return repeatCount;\n }\n\n return undefined;\n}\n\nfunction hasStringPrefix(value: string, prefix: string): boolean {\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with -- `startsWith` is falsely flagged as unsafe in this typed lint context.\n return value.slice(0, prefix.length) === prefix;\n}\n\nfunction isFixedTrackBreadth(value: string): boolean {\n const normalizedValue = value.toLowerCase();\n\n if (zeroPattern.test(normalizedValue)) {\n return true;\n }\n\n if (\n hasStringPrefix(normalizedValue, \"calc(\") ||\n hasStringPrefix(normalizedValue, \"clamp(\") ||\n hasStringPrefix(normalizedValue, \"max(\") ||\n hasStringPrefix(normalizedValue, \"min(\")\n ) {\n return true;\n }\n\n const match = lengthPercentagePattern.exec(normalizedValue);\n const unit = match?.groups?.[\"unit\"];\n\n return unit === \"%\" || (isDefined(unit) && setHas(cssLengthUnits, unit));\n}\n\nfunction isFlexTrackBreadth(value: string): boolean {\n return /^[+\\-]?(?:\\d+|\\d*\\.\\d+)fr$/v.test(value);\n}\n\nfunction isIntrinsicTrackBreadth(value: string): boolean {\n const normalizedValue = value.toLowerCase();\n\n return setHas(invalidBareAutoRepeatTrackTokens, normalizedValue);\n}\n\nfunction isInvalidAutoRepeatMinmax(token: string): boolean {\n const args = getMinmaxArguments(token);\n\n if (!isDefined(args)) {\n return false;\n }\n\n const [minimum, maximum] = args;\n\n return (\n isFlexTrackBreadth(minimum) ||\n (isIntrinsicTrackBreadth(minimum) && !isFixedTrackBreadth(maximum))\n );\n}\n\nfunction isLineNameList(token: string): boolean {\n return token.startsWith(\"[\") && token.endsWith(\"]\");\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls((declaration) => {\n if (\n !setHas(trackTemplateProperties, declaration.prop.toLowerCase())\n ) {\n return;\n }\n\n for (const repeatCall of findValueFunctionCalls(\n declaration.value,\n \"repeat\"\n )) {\n const repeatKeyword = getRepeatKeyword(repeatCall.body);\n\n if (isDefined(repeatKeyword)) {\n // eslint-disable-next-line typefest/prefer-ts-extras-array-join -- ts-extras does not expose a typed arrayJoin in this project setup.\n const trackList = splitTopLevelCommas(repeatCall.body)\n .slice(1)\n .join(\",\");\n const invalidTrack = getInvalidAutoRepeatTrack(trackList);\n\n if (isDefined(invalidTrack)) {\n report({\n message: messages.rejected(\n invalidTrack,\n repeatKeyword\n ),\n node: declaration,\n result,\n ruleName,\n word: invalidTrack,\n });\n }\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n findValueFunctionCalls,\n splitTopLevelCommas,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-invalid-minmax\");\nconst messages: { rejected: (minimum: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (minimum: string): string =>\n `Do not use flexible track breadth \\`${minimum}\\` as the minimum in \\`minmax()\\`; use an inflexible minimum such as \\`0\\`, a length, or a percentage.`,\n }\n);\n\nconst docs = {\n description:\n \"Disallow flexible `fr` values as the minimum argument in CSS Grid `minmax()` track sizes.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-invalid-minmax\"),\n} as const;\n\nconst gridTrackProperties: ReadonlySet<string> = new Set([\n \"grid-auto-columns\",\n \"grid-auto-rows\",\n \"grid-template-columns\",\n \"grid-template-rows\",\n]);\n\nfunction isFlexTrackBreadth(value: string): boolean {\n return /^[+\\-]?(?:\\d+|\\d*\\.\\d+)fr$/v.test(value.toLowerCase());\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls((declaration) => {\n if (!setHas(gridTrackProperties, declaration.prop.toLowerCase())) {\n return;\n }\n\n for (const minmaxCall of findValueFunctionCalls(\n declaration.value,\n \"minmax\"\n )) {\n const minimum = arrayFirst(\n splitTopLevelCommas(minmaxCall.body)\n )?.trim();\n\n if (isDefined(minimum) && isFlexTrackBreadth(minimum)) {\n report({\n message: messages.rejected(minimum),\n node: declaration,\n result,\n ruleName,\n word: minimum,\n });\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isDefined, isEmpty } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridTemplateAreas,\n countGridTracks,\n findSiblingDeclaration,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-mismatched-template-rows\");\nconst messages: {\n rejected: (areaRows: number, trackRows: number) => string;\n} = ruleMessages(ruleName, {\n rejected: (areaRows: number, trackRows: number): string =>\n `\\`grid-template-areas\\` defines ${String(areaRows)} rows, but sibling \\`grid-template-rows\\` defines ${String(trackRows)} tracks.`,\n});\n\nconst docs = {\n description:\n \"Require `grid-template-rows` track count to match `grid-template-areas` row count.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-mismatched-template-rows\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n for (const template of collectGridTemplateAreas(root)) {\n if (isEmpty(template.diagnostics)) {\n const rowsDeclaration = findSiblingDeclaration(\n template.declaration,\n \"grid-template-rows\"\n );\n const trackRows = isDefined(rowsDeclaration)\n ? countGridTracks(rowsDeclaration.value)\n : undefined;\n\n if (\n isDefined(rowsDeclaration) &&\n isDefined(trackRows) &&\n trackRows !== template.rows.length\n ) {\n report({\n message: messages.rejected(\n template.rows.length,\n trackRows\n ),\n node: rowsDeclaration,\n result,\n ruleName,\n });\n }\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import type { ArrayElement } from \"type-fest\";\n\nimport stylelint, { type RuleBase } from \"stylelint\";\nimport { isDefined } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport { collectGridAreaUsages } from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-overlapping-areas\");\nconst messages: {\n rejected: (areaName: string, firstSelector: string) => string;\n} = ruleMessages(ruleName, {\n rejected: (areaName: string, firstSelector: string): string =>\n `Grid area \"${areaName}\" is assigned by more than one selector; it may overlap the earlier \"${firstSelector}\" item at runtime.`,\n});\n\nconst docs = {\n description:\n \"Disallow multiple selectors assigning the same single-name `grid-area` value in one stylesheet.\",\n recommended: false,\n url: createRuleDocsUrl(\"no-overlapping-areas\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n const firstUsageByName = new Map<\n string,\n ArrayElement<ReturnType<typeof collectGridAreaUsages>>\n >();\n\n for (const usage of collectGridAreaUsages(root)) {\n const firstUsage = firstUsageByName.get(usage.name);\n\n if (isDefined(firstUsage)) {\n report({\n message: messages.rejected(\n usage.name,\n firstUsage.selector ?? firstUsage.name\n ),\n node: usage.declaration,\n result,\n ruleName,\n word: usage.name,\n });\n } else {\n firstUsageByName.set(usage.name, usage);\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isEmpty, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridAreaUsages,\n collectGridTemplateAreas,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-unknown-areas\");\nconst messages: { rejected: (areaName: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (areaName: string): string =>\n `Grid area \"${areaName}\" is referenced by \\`grid-area\\` but is not declared in any \\`grid-template-areas\\` template in this stylesheet.`,\n }\n);\n\nconst docs = {\n description:\n \"Disallow single-name `grid-area` references that do not match any named area declared in the same stylesheet.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-unknown-areas\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n const declaredAreaNames = new Set(\n collectGridTemplateAreas(root).flatMap((template) =>\n isEmpty(template.diagnostics) ? template.areaNames : []\n )\n );\n\n if (declaredAreaNames.size === 0) {\n return;\n }\n\n for (const usage of collectGridAreaUsages(root)) {\n if (!setHas(declaredAreaNames, usage.name)) {\n report({\n message: messages.rejected(usage.name),\n node: usage.declaration,\n result,\n ruleName,\n word: usage.name,\n });\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isEmpty, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridAreaUsages,\n collectGridTemplateAreas,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-unused-areas\");\nconst messages: { rejected: (areaName: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (areaName: string): string =>\n `Grid template area \"${areaName}\" is declared but no single-name \\`grid-area: ${areaName}\\` declaration exists in this stylesheet.`,\n }\n);\n\nconst docs = {\n description:\n \"Disallow named template areas that are never referenced by a single-name `grid-area` declaration in the same stylesheet.\",\n recommended: false,\n url: createRuleDocsUrl(\"no-unused-areas\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n const usedAreaNames = new Set(\n collectGridAreaUsages(root).map((usage) => usage.name)\n );\n\n for (const template of collectGridTemplateAreas(root)) {\n if (isEmpty(template.diagnostics)) {\n for (const areaName of template.areaNames) {\n if (!setHas(usedAreaNames, areaName)) {\n report({\n message: messages.rejected(areaName),\n node: template.declaration,\n result,\n ruleName,\n word: areaName,\n });\n }\n }\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import type { Declaration } from \"postcss\";\n\nimport stylelint, { type RuleBase } from \"stylelint\";\nimport { isDefined } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"prefer-gap-properties\");\nconst messages: {\n rejected: (propertyName: string, replacement: string) => string;\n} = ruleMessages(ruleName, {\n rejected: (propertyName: string, replacement: string): string =>\n `Prefer \\`${replacement}\\` over legacy \\`${propertyName}\\`.`,\n});\n\nconst docs = {\n description:\n \"Prefer modern `gap`, `row-gap`, and `column-gap` properties over legacy grid gap aliases.\",\n recommended: true,\n url: createRuleDocsUrl(\"prefer-gap-properties\"),\n} as const;\n\nconst replacements: Readonly<Record<string, string>> = {\n \"grid-column-gap\": \"column-gap\",\n \"grid-gap\": \"gap\",\n \"grid-row-gap\": \"row-gap\",\n};\n\nfunction getReplacement(\n declaration: Readonly<Declaration>\n): string | undefined {\n return replacements[declaration.prop.toLowerCase()];\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls((declaration) => {\n const replacement = getReplacement(declaration);\n\n if (!isDefined(replacement)) {\n return;\n }\n\n report({\n fix: () => {\n declaration.prop = replacement;\n },\n message: messages.rejected(declaration.prop, replacement),\n node: declaration,\n result,\n ruleName,\n word: declaration.prop,\n });\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n meta: {\n fixable: true,\n },\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isDefined } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n findSiblingDeclaration,\n splitTopLevelWhitespace,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"require-explicit-rows-with-column-flow\");\nconst messages: { rejected: () => string } = ruleMessages(ruleName, {\n rejected: (): string =>\n \"Pair `grid-auto-flow: column` with explicit row sizing in the same block, such as `grid-template-rows` or `grid-auto-rows`.\",\n});\n\nconst docs = {\n description:\n \"Require explicit row sizing when a rule uses `grid-auto-flow: column`.\",\n recommended: false,\n url: createRuleDocsUrl(\"require-explicit-rows-with-column-flow\"),\n} as const;\n\nfunction hasColumnFlow(value: string): boolean {\n return splitTopLevelWhitespace(value).some(\n (token) => token.toLowerCase() === \"column\"\n );\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls(\"grid-auto-flow\", (declaration) => {\n if (!hasColumnFlow(declaration.value)) {\n return;\n }\n\n const hasExplicitRows =\n isDefined(\n findSiblingDeclaration(declaration, \"grid-template-rows\")\n ) ||\n isDefined(\n findSiblingDeclaration(declaration, \"grid-auto-rows\")\n );\n\n if (hasExplicitRows) {\n return;\n }\n\n report({\n message: messages.rejected(),\n node: declaration,\n result,\n ruleName,\n word: \"column\",\n });\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isEmpty } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridTemplateAreas,\n getAreaShapes,\n isRectangularArea,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"validate-area-shapes\");\nconst messages: { rejected: (areaName: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (areaName: string): string =>\n `Grid area \"${areaName}\" must form one contiguous rectangle in \\`grid-template-areas\\`.`,\n }\n);\n\nconst docs = {\n description:\n \"Require every named grid template area to form one contiguous rectangle.\",\n recommended: true,\n url: createRuleDocsUrl(\"validate-area-shapes\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n for (const template of collectGridTemplateAreas(root)) {\n if (isEmpty(template.diagnostics)) {\n for (const shape of getAreaShapes(template)) {\n if (!isRectangularArea(template, shape)) {\n report({\n message: messages.rejected(shape.name),\n node: template.declaration,\n result,\n ruleName,\n word: shape.name,\n });\n }\n }\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { arrayFirst, isDefined, isEmpty } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridTemplateAreas,\n countGridTracks,\n findSiblingDeclaration,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"validate-track-counts\");\nconst messages: {\n columns: (areaColumns: number, trackColumns: number) => string;\n rows: (areaRows: number, trackRows: number) => string;\n} = ruleMessages(ruleName, {\n columns: (areaColumns: number, trackColumns: number): string =>\n `\\`grid-template-areas\\` defines ${String(areaColumns)} columns, but sibling \\`grid-template-columns\\` defines ${String(trackColumns)} tracks.`,\n rows: (areaRows: number, trackRows: number): string =>\n `\\`grid-template-areas\\` defines ${String(areaRows)} rows, but sibling \\`grid-template-rows\\` defines ${String(trackRows)} tracks.`,\n});\n\nconst docs = {\n description:\n \"Require template row and column track counts to match `grid-template-areas` dimensions.\",\n recommended: true,\n url: createRuleDocsUrl(\"validate-track-counts\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n for (const template of collectGridTemplateAreas(root)) {\n const expectedColumns = arrayFirst(template.rows)?.length;\n\n if (isEmpty(template.diagnostics) && isDefined(expectedColumns)) {\n const expectedRows = template.rows.length;\n const rowsDeclaration = findSiblingDeclaration(\n template.declaration,\n \"grid-template-rows\"\n );\n const columnsDeclaration = findSiblingDeclaration(\n template.declaration,\n \"grid-template-columns\"\n );\n const actualRows = isDefined(rowsDeclaration)\n ? countGridTracks(rowsDeclaration.value)\n : undefined;\n const actualColumns = isDefined(columnsDeclaration)\n ? countGridTracks(columnsDeclaration.value)\n : undefined;\n\n if (\n isDefined(rowsDeclaration) &&\n isDefined(actualRows) &&\n actualRows !== expectedRows\n ) {\n report({\n message: messages.rows(expectedRows, actualRows),\n node: rowsDeclaration,\n result,\n ruleName,\n });\n }\n\n if (\n isDefined(columnsDeclaration) &&\n isDefined(actualColumns) &&\n actualColumns !== expectedColumns\n ) {\n report({\n message: messages.columns(\n expectedColumns,\n actualColumns\n ),\n node: columnsDeclaration,\n result,\n ruleName,\n });\n }\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "/**\n * @packageDocumentation\n * Canonical registry of public Stylelint rules exported by this package.\n */\n/* eslint-disable import-x/max-dependencies -- The public registry intentionally imports every rule module exactly once. */\nimport type { StylelintPluginRuleContract } from \"./create-stylelint-rule.js\";\n\nimport * as consistentAreaNamingModule from \"../rules/consistent-area-naming.js\";\nimport * as noDenseAutoFlowModule from \"../rules/no-dense-auto-flow.js\";\nimport * as noInvalidAreasModule from \"../rules/no-invalid-areas.js\";\nimport * as noInvalidAutoRepeatModule from \"../rules/no-invalid-auto-repeat.js\";\nimport * as noInvalidMinmaxModule from \"../rules/no-invalid-minmax.js\";\nimport * as noMismatchedTemplateRowsModule from \"../rules/no-mismatched-template-rows.js\";\nimport * as noOverlappingAreasModule from \"../rules/no-overlapping-areas.js\";\nimport * as noUnknownAreasModule from \"../rules/no-unknown-areas.js\";\nimport * as noUnusedAreasModule from \"../rules/no-unused-areas.js\";\nimport * as preferGapPropertiesModule from \"../rules/prefer-gap-properties.js\";\nimport * as requireExplicitRowsWithColumnFlowModule from \"../rules/require-explicit-rows-with-column-flow.js\";\nimport * as validateAreaShapesModule from \"../rules/validate-area-shapes.js\";\nimport * as validateTrackCountsModule from \"../rules/validate-track-counts.js\";\n/* eslint-enable import-x/max-dependencies -- Re-enable after the intentional registry import list. */\n\n/** Public rule registry keyed by unqualified rule name. */\nexport const gridRules: Readonly<Record<string, StylelintPluginRuleContract>> =\n {\n \"consistent-area-naming\": consistentAreaNamingModule.default,\n \"no-dense-auto-flow\": noDenseAutoFlowModule.default,\n \"no-invalid-areas\": noInvalidAreasModule.default,\n \"no-invalid-auto-repeat\": noInvalidAutoRepeatModule.default,\n \"no-invalid-minmax\": noInvalidMinmaxModule.default,\n \"no-mismatched-template-rows\": noMismatchedTemplateRowsModule.default,\n \"no-overlapping-areas\": noOverlappingAreasModule.default,\n \"no-unknown-areas\": noUnknownAreasModule.default,\n \"no-unused-areas\": noUnusedAreasModule.default,\n \"prefer-gap-properties\": preferGapPropertiesModule.default,\n \"require-explicit-rows-with-column-flow\":\n requireExplicitRowsWithColumnFlowModule.default,\n \"validate-area-shapes\": validateAreaShapesModule.default,\n \"validate-track-counts\": validateTrackCountsModule.default,\n };\n\n/** Public rule registry type. */\nexport type GridRulesRegistry = typeof gridRules;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_ts_extras", "packageJson", "ruleName", "import_stylelint", "import_ts_extras", "docs", "messages", "rule", "ruleName", "meta", "stylelint", "import_ts_extras", "stylelint", "import_stylelint", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "isLineNameList", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "isFlexTrackBreadth", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "ruleName", "rule"]
|
|
3
|
+
"sources": ["../src/plugin.ts", "../src/_internal/plugin-constants.ts", "../src/rules/consistent-area-naming.ts", "../src/_internal/create-stylelint-rule.ts", "../src/_internal/grid-template-analysis.ts", "../src/rules/no-conflicting-placement.ts", "../src/_internal/grid-placement-analysis.ts", "../src/rules/no-dense-auto-flow.ts", "../src/rules/no-ineffective-container-properties.ts", "../src/rules/no-invalid-areas.ts", "../src/rules/no-invalid-auto-repeat.ts", "../src/rules/no-invalid-minmax.ts", "../src/rules/no-invalid-repeat-count.ts", "../src/rules/no-invalid-span.ts", "../src/rules/no-mismatched-template-rows.ts", "../src/rules/no-overlapping-areas.ts", "../src/rules/no-reversed-placement-lines.ts", "../src/rules/no-unknown-areas.ts", "../src/rules/no-unused-areas.ts", "../src/rules/no-zero-grid-lines.ts", "../src/rules/prefer-gap-properties.ts", "../src/rules/prefer-minmax-zero-fr.ts", "../src/rules/require-explicit-rows-with-column-flow.ts", "../src/rules/require-explicit-tracks-with-areas.ts", "../src/rules/validate-area-shapes.ts", "../src/rules/validate-track-counts.ts", "../src/_internal/rules-registry.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * @packageDocumentation\n * Public plugin entrypoint for `stylelint-plugin-grid` exports and\n * shareable config wiring.\n */\nimport type { Config, Plugin as StylelintPlugin } from \"stylelint\";\n\nimport { isDefined, objectKeys } from \"ts-extras\";\n\nimport type { StylelintPluginRuleContract } from \"./_internal/create-stylelint-rule.js\";\n\nimport {\n CONFIG_NAMES as configNamesValue,\n type GridConfigName as InternalGridConfigName,\n PACKAGE_NAME as packageNameValue,\n PACKAGE_VERSION as packageVersionValue,\n PLUGIN_NAMESPACE as pluginNamespaceValue,\n} from \"./_internal/plugin-constants.js\";\nimport { gridRules as gridRulesValue } from \"./_internal/rules-registry.js\";\n\n/** Public shareable config map exported by this package. */\nexport type GridConfigMap = Record<GridConfigName, GridShareableConfig>;\n/** Shareable config names exposed by this package. */\nexport type GridConfigName = InternalGridConfigName;\n/** Public fully-qualified rule ids supported by this package. */\nexport type GridRuleId = `${typeof pluginNamespaceValue}/${string}`;\n\n/** Public unqualified rule names supported by this package. */\nexport type GridRuleName = Extract<keyof typeof gridRulesValue, string>;\n\n/** Shareable config shape exported by this package. */\nexport type GridShareableConfig = Config & {\n plugins: (string | StylelintPlugin)[];\n rules: NonNullable<Config[\"rules\"]>;\n};\n\n/** Internal ordered registry entry tuple. */\ntype GridRuleEntry = readonly [string, StylelintPluginRuleContract];\n/** Internal runtime rule registry shape. */\ntype GridRulesMap = Readonly<Record<string, StylelintPluginRuleContract>>;\n\n/** Local package metadata values used to avoid import re-export warnings. */\nconst packageMetaName = packageNameValue;\nconst packageMetaNamespace = pluginNamespaceValue;\nconst packageMetaVersion = packageVersionValue;\n/** Local rule registry alias used to avoid import re-export warnings. */\nconst runtimeRules = gridRulesValue;\n/** Local config-name alias used to avoid import re-export warnings. */\nconst publicConfigNames = configNamesValue;\n\n/** Public package metadata exported alongside the plugin pack. */\nexport const meta: Readonly<{\n name: string;\n namespace: string;\n version: string;\n}> = {\n name: packageMetaName,\n namespace: packageMetaNamespace,\n version: packageMetaVersion,\n};\n\n/** Public rule registry keyed by unqualified rule name. */\nexport const rules: GridRulesMap = runtimeRules;\n\n/** Stable ordered unqualified rule names. */\nexport const ruleNames: readonly string[] = objectKeys(rules).toSorted(\n (left, right) => left.localeCompare(right)\n);\n\n/** Stable ordered registry entries used to derive configs and ids. */\nconst gridRuleEntries: readonly GridRuleEntry[] = (() => {\n const entries: GridRuleEntry[] = [];\n\n for (const ruleName of ruleNames) {\n const rule = rules[ruleName];\n\n if (isDefined(rule)) {\n entries.push([ruleName, rule]);\n }\n }\n\n return entries;\n})();\n\nfunction isGridRuleId(ruleName: string): ruleName is GridRuleId {\n return ruleName.startsWith(`${pluginNamespaceValue}/`);\n}\n\nfunction toGridRuleId(ruleName: string): GridRuleId {\n if (!isGridRuleId(ruleName)) {\n throw new Error(`Unexpected Stylelint rule id \"${ruleName}\".`);\n }\n\n return ruleName;\n}\n\n/** Default plugin-pack export consumed by Stylelint. */\nexport const plugins: readonly StylelintPlugin[] = gridRuleEntries.map(\n ([, rule]) => rule\n);\n\n/** Stable ordered fully qualified rule ids. */\nexport const ruleIds: readonly GridRuleId[] = gridRuleEntries.map(([, rule]) =>\n toGridRuleId(rule.ruleName)\n);\n\n/** Rule ids included in the recommended shareable config. */\nconst recommendedRuleIds: readonly GridRuleId[] = gridRuleEntries\n .filter(([, rule]) => rule.docs.recommended)\n .map(([, rule]) => toGridRuleId(rule.ruleName));\n\n/**\n * Build one shareable Stylelint config.\n *\n * @param enabledRuleIds - Rule ids to enable in the config.\n *\n * @returns Shareable Stylelint config.\n */\nfunction createConfig(\n enabledRuleIds: readonly GridRuleId[]\n): GridShareableConfig {\n return {\n plugins: [...plugins],\n rules: (() => {\n const rulesConfig: NonNullable<Config[\"rules\"]> = {};\n\n for (const ruleId of enabledRuleIds) {\n rulesConfig[ruleId] = true;\n }\n\n return rulesConfig;\n })(),\n };\n}\n\n/** Shareable config exports exposed by the package. */\nexport const gridPluginConfigs: GridConfigMap = {\n \"grid-all\": createConfig(ruleIds),\n \"grid-recommended\": createConfig(recommendedRuleIds),\n};\n\n/** Stable ordered shareable config names. */\nexport const configNames: readonly GridConfigName[] = publicConfigNames;\n\n/** Default export consumed by Stylelint when the package is used as a plugin. */\nexport default plugins;\n", "/**\n * @packageDocumentation\n * Static package and docs constants used throughout the Stylelint plugin runtime.\n */\nimport type { ArrayValues, UnknownRecord } from \"type-fest\";\n\nimport packageJson from \"stylelint-plugin-grid/package.json\" with { type: \"json\" };\nimport { keyIn } from \"ts-extras\";\n\n/** Public npm package name. */\nexport const PACKAGE_NAME = \"stylelint-plugin-grid\";\n/** Public Stylelint rule namespace. */\nexport const PLUGIN_NAMESPACE = \"grid\";\n/** Public GitHub repository URL. */\nexport const REPOSITORY_URL =\n \"https://github.com/Nick2bad4u/stylelint-plugin-grid\";\n/** Public documentation site URL. */\nexport const DOCS_SITE_URL =\n \"https://nick2bad4u.github.io/stylelint-plugin-grid\";\n/** Base URL for authored rule documentation. */\nexport const DOCS_RULES_BASE_URL: `${string}/docs/rules` = `${DOCS_SITE_URL}/docs/rules`;\n/** Supported shareable config names exported by this package. */\nexport const CONFIG_NAMES = [\"grid-all\", \"grid-recommended\"] as const;\n\n/** Shareable config names exported by the plugin runtime. */\nexport type GridConfigName = ArrayValues<typeof CONFIG_NAMES>;\n\n/**\n * Resolve package version from package.json data.\n *\n * @param pkg - Parsed package metadata value.\n *\n * @returns The package version, or `0.0.0` when unavailable.\n */\nfunction getPackageVersion(pkg: unknown): string {\n return hasStringVersion(pkg) ? pkg.version : \"0.0.0\";\n}\n\nfunction hasStringVersion(\n pkg: unknown\n): pkg is Readonly<{ version: string }> & UnknownRecord {\n return (\n isUnknownRecord(pkg) &&\n keyIn(pkg, \"version\") &&\n typeof pkg[\"version\"] === \"string\"\n );\n}\n\nfunction isUnknownRecord(pkg: unknown): pkg is UnknownRecord {\n return typeof pkg === \"object\" && pkg !== null && !Array.isArray(pkg);\n}\n\n/** Published package version resolved from `package.json`. */\nexport const PACKAGE_VERSION: string = getPackageVersion(packageJson);\n\n/**\n * Create the canonical docs URL for one authored rule page.\n */\nexport function createRuleDocsUrl(ruleName: string): string {\n return `${DOCS_RULES_BASE_URL}/${ruleName}`;\n}\n\n/**\n * Create a fully qualified Stylelint rule name for this plugin namespace.\n */\nexport function createRuleName<const T extends string>(\n ruleName: T\n): `${typeof PLUGIN_NAMESPACE}/${T}` {\n return `${PLUGIN_NAMESPACE}/${ruleName}`;\n}\n", "import type { Node } from \"postcss\";\n\nimport stylelint, { type PostcssResult, type RuleBase } from \"stylelint\";\nimport { isEmpty } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridAreaUsages,\n collectGridTemplateAreas,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"consistent-area-naming\");\n\ntype AreaNamingStyle = \"camel-case\" | \"kebab-case\" | \"snake-case\";\ntype SecondaryOptions = Readonly<{\n style?: AreaNamingStyle;\n}>;\n\nconst messages: {\n rejected: (areaName: string, style: AreaNamingStyle) => string;\n} = ruleMessages(ruleName, {\n rejected: (areaName: string, style: AreaNamingStyle): string =>\n `Grid area name \"${areaName}\" must use ${style}.`,\n});\n\nconst docs = {\n description:\n \"Require consistent naming for `grid-template-areas` and single-name `grid-area` identifiers.\",\n recommended: false,\n url: createRuleDocsUrl(\"consistent-area-naming\"),\n} as const;\n\nconst patterns: Readonly<Record<AreaNamingStyle, RegExp>> = {\n \"camel-case\": /^[a-z][0-9A-Za-z]*$/v,\n // eslint-disable-next-line security/detect-unsafe-regex -- Anchored naming-style pattern over short CSS identifiers.\n \"kebab-case\": /^[a-z][0-9a-z]*(?:-[0-9a-z]+)*$/v,\n // eslint-disable-next-line security/detect-unsafe-regex -- Anchored naming-style pattern over short CSS identifiers.\n \"snake-case\": /^[a-z][0-9a-z]*(?:_[0-9a-z]+)*$/v,\n};\n\nconst allowedStyles: AreaNamingStyle[] = [\n \"camel-case\",\n \"kebab-case\",\n \"snake-case\",\n];\n\nfunction reportRejectedAreaName(input: {\n areaName: string;\n node: Node;\n result: PostcssResult;\n style: AreaNamingStyle;\n}): void {\n const { areaName, node, result, style } = input;\n\n report({\n message: messages.rejected(areaName, style),\n node,\n result,\n ruleName,\n word: areaName,\n });\n}\n\nconst ruleFunction: RuleBase<boolean, SecondaryOptions | undefined> =\n (primary, secondary) => (root, result) => {\n if (\n !validateOptions(\n result,\n ruleName,\n {\n actual: primary,\n possible: [true],\n },\n {\n actual: secondary,\n optional: true,\n possible: {\n style: allowedStyles,\n },\n }\n )\n ) {\n return;\n }\n\n const style = secondary?.style ?? \"kebab-case\";\n const pattern = patterns[style];\n\n for (const template of collectGridTemplateAreas(root)) {\n if (isEmpty(template.diagnostics)) {\n for (const areaName of template.areaNames) {\n if (!pattern.test(areaName)) {\n reportRejectedAreaName({\n areaName,\n node: template.declaration,\n result,\n style,\n });\n }\n }\n }\n }\n\n for (const usage of collectGridAreaUsages(root)) {\n if (!pattern.test(usage.name)) {\n reportRejectedAreaName({\n areaName: usage.name,\n node: usage.declaration,\n result,\n style,\n });\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<\n boolean,\n SecondaryOptions | undefined,\n typeof messages\n> = createStylelintRule<boolean, SecondaryOptions | undefined, typeof messages>(\n {\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n }\n);\n\nexport default rule;\n", "/**\n * @packageDocumentation\n * Shared helper for authoring statically typed Stylelint rules in this template.\n */\nimport type { Except } from \"type-fest\";\n\nimport stylelint, {\n type Rule,\n type RuleBase,\n type RuleMessages,\n type RuleMeta,\n} from \"stylelint\";\n\n/** Input contract for the shared Stylelint rule creator. */\nexport type CreateStylelintRuleOptions<\n P = unknown,\n S = Readonly<Record<string, never>> | undefined,\n M extends RuleMessages = RuleMessages,\n> = Readonly<{\n docs: StylelintRuleDocs;\n messages: M;\n meta?: Readonly<Except<RuleMeta, \"url\"> & { url?: string }>;\n primaryOptionArray?: boolean;\n rule: RuleBase<P, S>;\n ruleName: string;\n}>;\n\n/** Fully assembled plugin object shape used by this template's rule registry. */\nexport type StylelintPluginRule<\n P = unknown,\n S = Readonly<Record<string, never>> | undefined,\n M extends RuleMessages = RuleMessages,\n> = Readonly<{\n docs: StylelintRuleDocs;\n messages: M;\n meta: Readonly<{ docs: StylelintRuleDocs }> & RuleMeta;\n rule: Rule<P, S, M>;\n ruleName: string;\n}> &\n ReturnType<typeof stylelint.createPlugin>;\n\n/** Nongeneric public rule contract used for heterogeneous runtime registries. */\nexport type StylelintPluginRuleContract = Readonly<{\n docs: StylelintRuleDocs;\n messages: RuleMessages;\n meta: Readonly<{ docs: StylelintRuleDocs }> & RuleMeta;\n rule: Rule;\n ruleName: string;\n}> &\n ReturnType<typeof stylelint.createPlugin>;\n\n/** Static authored docs metadata carried alongside each rule definition. */\nexport type StylelintRuleDocs = Readonly<{\n description: string;\n recommended: boolean;\n url: string;\n}>;\n\n/**\n * Create a Stylelint plugin object while stamping the static runtime metadata\n * that Stylelint and this template expect.\n */\nexport const createStylelintRule = <\n P = unknown,\n S = Readonly<Record<string, never>> | undefined,\n M extends RuleMessages = RuleMessages,\n>(\n options: CreateStylelintRuleOptions<P, S, M>\n): StylelintPluginRule<P, S, M> => {\n const { docs, messages, rule, ruleName } = options;\n const baseMeta: RuleMeta = {\n ...options.meta,\n url: options.meta?.url ?? docs.url,\n };\n const meta: Readonly<{ docs: StylelintRuleDocs }> & RuleMeta = {\n ...baseMeta,\n docs,\n };\n const typedRule: Rule<P, S, M> = Object.assign(rule, {\n messages,\n meta,\n ruleName,\n });\n\n if (options.primaryOptionArray === true) {\n typedRule.primaryOptionArray = true;\n }\n\n const plugin = stylelint.createPlugin(ruleName, typedRule);\n\n return {\n ...plugin,\n docs,\n messages,\n meta,\n rule: typedRule,\n ruleName,\n };\n};\n", "/**\n * @packageDocumentation\n * Shared CSS Grid declaration analysis for public rules.\n */\nimport type { Container, Declaration, Root, Rule } from \"postcss\";\n\nimport {\n arrayFirst,\n isDefined,\n isEmpty,\n isInteger,\n safeCastTo,\n setHas,\n} from \"ts-extras\";\n\n/** One named area rectangle computed from a parsed template. */\nexport type GridAreaShape = Readonly<{\n bottom: number;\n left: number;\n name: string;\n right: number;\n top: number;\n}>;\n\n/** One `grid-area: <custom-ident>` usage. */\nexport type GridAreaUsage = Readonly<{\n declaration: Declaration;\n name: string;\n selector?: string;\n}>;\n\n/** One parsed `grid-template-areas` declaration. */\nexport type GridTemplateAreas = Readonly<{\n areaNames: readonly string[];\n declaration: Declaration;\n diagnostics: readonly GridTemplateDiagnostic[];\n rows: readonly (readonly string[])[];\n}>;\n\n/** One structural issue found while parsing `grid-template-areas`. */\nexport type GridTemplateDiagnostic = Readonly<{\n message: string;\n token?: string;\n}>;\n\n/** One CSS function call found in a declaration value. */\nexport type GridValueFunctionCall = Readonly<{\n body: string;\n name: string;\n source: string;\n}>;\n\nconst cssWideKeywords: ReadonlySet<string> = new Set([\n \"inherit\",\n \"initial\",\n \"revert\",\n \"revert-layer\",\n \"unset\",\n]);\n\nconst reservedGridAreaIdents: ReadonlySet<string> = new Set([\"auto\", \"span\"]);\n\nconst customIdentPattern = /^-?[A-Z_a-z][\\w\\-]*$/v;\nconst blankAreaPattern = /^\\.+$/v;\n\n/** Collect all single-name `grid-area` usages in source order. */\nexport function collectGridAreaUsages(root: Root): readonly GridAreaUsage[] {\n const usages: GridAreaUsage[] = [];\n\n root.walkDecls(\"grid-area\", (declaration) => {\n const name = parseSingleGridAreaName(declaration.value);\n\n if (!isDefined(name)) {\n return;\n }\n\n const selector = getOwningRule(declaration)?.selector;\n\n usages.push({\n declaration,\n name,\n ...(isDefined(selector) ? { selector } : {}),\n });\n });\n\n return usages;\n}\n\n/** Collect parsed `grid-template-areas` declarations in source order. */\nexport function collectGridTemplateAreas(\n root: Root\n): readonly GridTemplateAreas[] {\n const templates: GridTemplateAreas[] = [];\n\n root.walkDecls(\"grid-template-areas\", (declaration) => {\n const template = parseGridTemplateAreas(declaration);\n\n if (template.rows.length > 0 || template.diagnostics.length > 0) {\n templates.push(template);\n }\n });\n\n return templates;\n}\n\n/** Count top-level CSS Grid tracks, or return undefined for dynamic lists. */\nexport function countGridTracks(value: string): number | undefined {\n const tokens: string[] = [];\n let count = 0;\n\n for (const token of splitTopLevelWhitespace(value)) {\n if (!isLineNameList(token)) {\n tokens.push(token);\n }\n }\n\n for (const token of tokens) {\n const repeatCount = countRepeatTracks(token);\n\n if (!isDefined(repeatCount) && token.startsWith(\"repeat(\")) {\n return undefined;\n }\n\n count += repeatCount ?? 1;\n }\n\n return count;\n}\n\n/** Find a sibling declaration on the same rule/atrule block. */\nexport function findSiblingDeclaration(\n declaration: Readonly<Declaration>,\n propertyName: string\n): Declaration | undefined {\n const parent = safeCastTo<Container | undefined>(declaration.parent);\n let match: Declaration | undefined;\n\n parent?.walkDecls(propertyName, (candidate) => {\n if (candidate.parent === parent) {\n match = candidate;\n }\n });\n\n return match;\n}\n\n/** Find balanced function calls by name inside one declaration value. */\nexport function findValueFunctionCalls(\n value: string,\n functionName: string\n): readonly GridValueFunctionCall[] {\n const calls: GridValueFunctionCall[] = [];\n const normalizedFunctionName = functionName.toLowerCase();\n let index = 0;\n\n while (index < value.length) {\n const openParenthesisIndex = value.indexOf(\"(\", index);\n\n if (openParenthesisIndex === -1) {\n break;\n }\n\n const nameStartIndex = findFunctionNameStart(\n value,\n openParenthesisIndex\n );\n const name = value.slice(nameStartIndex, openParenthesisIndex);\n const closeParenthesisIndex = findMatchingParenthesis(\n value,\n openParenthesisIndex\n );\n\n if (closeParenthesisIndex < 0) {\n break;\n }\n\n if (name.toLowerCase() === normalizedFunctionName) {\n calls.push({\n body: value.slice(\n openParenthesisIndex + 1,\n closeParenthesisIndex\n ),\n name,\n source: value.slice(nameStartIndex, closeParenthesisIndex + 1),\n });\n }\n\n index = closeParenthesisIndex + 1;\n }\n\n return calls;\n}\n\n/** Return each named area's bounding box from a parsed template. */\nexport function getAreaShapes(\n template: Readonly<GridTemplateAreas>\n): readonly GridAreaShape[] {\n const shapes = new Map<string, GridAreaShape>();\n\n for (const [rowIndex, row] of template.rows.entries()) {\n for (const [columnIndex, token] of row.entries()) {\n if (!isBlankAreaToken(token) && isGridAreaName(token)) {\n const current = shapes.get(token);\n\n shapes.set(\n token,\n isDefined(current)\n ? {\n ...current,\n bottom: Math.max(current.bottom, rowIndex),\n left: Math.min(current.left, columnIndex),\n right: Math.max(current.right, columnIndex),\n top: Math.min(current.top, rowIndex),\n }\n : {\n bottom: rowIndex,\n left: columnIndex,\n name: token,\n right: columnIndex,\n top: rowIndex,\n }\n );\n }\n }\n }\n\n // eslint-disable-next-line canonical/no-use-extend-native -- The repo already targets Array#toSorted; this avoids mutating the collected shape list.\n return [...shapes.values()].toSorted((left, right) =>\n left.name.localeCompare(right.name)\n );\n}\n\n/** Return whether a token is a valid blank cell marker. */\nexport function isBlankAreaToken(token: string): boolean {\n return blankAreaPattern.test(token);\n}\n\n/** Return whether a token is accepted as a conservative CSS custom ident. */\nexport function isGridAreaName(token: string): boolean {\n return (\n customIdentPattern.test(token) &&\n !setHas(cssWideKeywords, token.toLowerCase()) &&\n !setHas(reservedGridAreaIdents, token.toLowerCase())\n );\n}\n\n/** Return whether a named area fills its full rectangle. */\nexport function isRectangularArea(\n template: Readonly<GridTemplateAreas>,\n shape: Readonly<GridAreaShape>\n): boolean {\n for (let rowIndex = shape.top; rowIndex <= shape.bottom; rowIndex += 1) {\n const row = template.rows[rowIndex];\n\n if (!isDefined(row)) {\n return false;\n }\n\n for (\n let columnIndex = shape.left;\n columnIndex <= shape.right;\n columnIndex += 1\n ) {\n if (row[columnIndex] !== shape.name) {\n return false;\n }\n }\n }\n\n return true;\n}\n\n/** Parse one `grid-template-areas` declaration. */\nexport function parseGridTemplateAreas(\n declaration: Declaration\n): GridTemplateAreas {\n const trimmedValue = declaration.value.trim();\n\n if (trimmedValue === \"\" || trimmedValue.toLowerCase() === \"none\") {\n return {\n areaNames: [],\n declaration,\n diagnostics: [],\n rows: [],\n };\n }\n\n const rowTexts = extractCssStringLiterals(trimmedValue);\n const diagnostics: GridTemplateDiagnostic[] = [];\n\n if (isEmpty(rowTexts)) {\n diagnostics.push({\n message:\n \"`grid-template-areas` must contain one or more quoted row strings.\",\n });\n }\n\n const rows = rowTexts.map(\n (rowText) => rowText.trim().match(/\\S+/gv) ?? [\"\"]\n );\n\n for (const [rowIndex, row] of rows.entries()) {\n if (row.length === 1 && arrayFirst(row) === \"\") {\n diagnostics.push({\n message: `Grid template row ${String(rowIndex + 1)} is empty.`,\n });\n } else {\n for (const token of row) {\n if (!isBlankAreaToken(token) && !isGridAreaName(token)) {\n diagnostics.push({\n message: `Grid area token \"${token}\" is not a valid area name or blank \".\" marker.`,\n token,\n });\n }\n }\n }\n }\n\n const expectedWidth = arrayFirst(rows)?.length;\n\n if (isDefined(expectedWidth)) {\n for (const [rowIndex, row] of rows.entries()) {\n if (row.length !== expectedWidth) {\n diagnostics.push({\n message: `Grid template row ${String(rowIndex + 1)} has ${String(row.length)} columns, but row 1 has ${String(expectedWidth)}.`,\n });\n }\n }\n }\n\n return {\n areaNames: getAreaNames(rows),\n declaration,\n diagnostics,\n rows,\n };\n}\n\n/** Split one comma-separated CSS value at top-level commas only. */\nexport function splitTopLevelCommas(value: string): readonly string[] {\n return splitTopLevel(value, /,/v);\n}\n\n/** Split one slash-separated CSS value at top-level slashes only. */\nexport function splitTopLevelSlashes(value: string): readonly string[] {\n return splitTopLevel(value, /\\//v);\n}\n\n/** Split one CSS value at top-level whitespace only. */\nexport function splitTopLevelWhitespace(value: string): readonly string[] {\n return splitTopLevel(value, /\\s/v);\n}\n\nfunction countRepeatTracks(token: string): number | undefined {\n if (!token.startsWith(\"repeat(\") || !token.endsWith(\")\")) {\n return undefined;\n }\n\n const body = token.slice(\"repeat(\".length, -1);\n const [repeatText, trackListText] = splitTopLevelCommas(body);\n const repeat = Number.parseInt(repeatText?.trim() ?? \"\", 10);\n\n if (\n !isInteger(repeat) ||\n repeat < 0 ||\n String(repeat) !== repeatText?.trim() ||\n !isDefined(trackListText)\n ) {\n return undefined;\n }\n\n const innerTrackCount = countGridTracks(trackListText);\n\n return isDefined(innerTrackCount) ? repeat * innerTrackCount : undefined;\n}\n\nfunction extractCssStringLiterals(value: string): readonly string[] {\n const rows: string[] = [];\n const stringPattern =\n /\"(?<doubleQuotedRow>(?:\\\\.|[^\"\\\\])*)\"|'(?<singleQuotedRow>(?:\\\\.|[^'\\\\])*)'/vy;\n let index = 0;\n\n while (index < value.length) {\n while (/\\s/v.test(value[index] ?? \"\")) {\n index += 1;\n }\n\n stringPattern.lastIndex = index;\n const match = stringPattern.exec(value);\n\n if (match === null) {\n return rows;\n }\n\n rows.push(\n match.groups?.[\"doubleQuotedRow\"] ??\n match.groups?.[\"singleQuotedRow\"] ??\n \"\"\n );\n index = stringPattern.lastIndex;\n }\n\n return rows;\n}\n\nfunction findFunctionNameStart(\n value: string,\n openParenthesisIndex: number\n): number {\n let index = openParenthesisIndex - 1;\n\n while (index >= 0 && isFunctionNameCharacter(value[index] ?? \"\")) {\n index -= 1;\n }\n\n return index + 1;\n}\n\nfunction findMatchingParenthesis(\n value: string,\n openParenthesisIndex: number\n): number {\n let parenthesisDepth = 0;\n\n for (let index = openParenthesisIndex; index < value.length; index += 1) {\n const character = value[index];\n\n if (character === \"(\") {\n parenthesisDepth += 1;\n } else if (character === \")\") {\n parenthesisDepth -= 1;\n\n if (parenthesisDepth === 0) {\n return index;\n }\n }\n }\n\n return -1;\n}\n\nfunction getAreaNames(rows: readonly (readonly string[])[]): readonly string[] {\n const names = new Set<string>();\n\n for (const row of rows) {\n for (const token of row) {\n if (!isBlankAreaToken(token) && isGridAreaName(token)) {\n names.add(token);\n }\n }\n }\n\n // eslint-disable-next-line canonical/no-use-extend-native -- The repo already targets Array#toSorted; this keeps the returned area-name list immutable.\n return [...names].toSorted((left, right) => left.localeCompare(right));\n}\n\nfunction getOwningRule(declaration: Readonly<Declaration>): Rule | undefined {\n return declaration.parent?.type === \"rule\" ? declaration.parent : undefined;\n}\n\nfunction isFunctionNameCharacter(character: string): boolean {\n return (\n character === \"-\" ||\n character === \"_\" ||\n (character >= \"0\" && character <= \"9\") ||\n (character >= \"A\" && character <= \"Z\") ||\n (character >= \"a\" && character <= \"z\")\n );\n}\n\nfunction isLineNameList(token: string): boolean {\n return token.startsWith(\"[\") && token.endsWith(\"]\");\n}\n\nfunction parseSingleGridAreaName(value: string): string | undefined {\n const name = value.trim();\n\n if (\n name.includes(\"/\") ||\n name.includes(\"(\") ||\n name.includes(\")\") ||\n !isGridAreaName(name)\n ) {\n return undefined;\n }\n\n return name;\n}\n\nfunction splitTopLevel(\n value: string,\n separatorPattern: RegExp\n): readonly string[] {\n const tokens: string[] = [];\n let bracketDepth = 0;\n let parenthesisDepth = 0;\n let tokenStart = 0;\n\n for (let index = 0; index < value.length; index += 1) {\n const character = value[index] ?? \"\";\n\n switch (character) {\n case \"(\": {\n parenthesisDepth += 1;\n\n break;\n }\n case \")\": {\n parenthesisDepth = Math.max(0, parenthesisDepth - 1);\n\n break;\n }\n case \"[\": {\n bracketDepth += 1;\n\n break;\n }\n case \"]\": {\n bracketDepth = Math.max(0, bracketDepth - 1);\n\n break;\n }\n // No default\n }\n\n if (\n bracketDepth === 0 &&\n parenthesisDepth === 0 &&\n separatorPattern.test(character)\n ) {\n const token = value.slice(tokenStart, index).trim();\n\n if (token.length > 0) {\n tokens.push(token);\n }\n\n tokenStart = index + 1;\n }\n }\n\n const finalToken = value.slice(tokenStart).trim();\n\n if (finalToken.length > 0) {\n tokens.push(finalToken);\n }\n\n return tokens;\n}\n", "import type { Declaration } from \"postcss\";\n\nimport stylelint, { type RuleBase } from \"stylelint\";\nimport { isDefined } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n getDirectDeclarations,\n isGridPlacementDeclaration,\n} from \"../_internal/grid-placement-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-conflicting-placement\");\nconst messages: {\n rejected: (propertyName: string, previousPropertyName: string) => string;\n} = ruleMessages(ruleName, {\n rejected: (propertyName: string, previousPropertyName: string): string =>\n `Avoid conflicting Grid placement declarations; \\`${propertyName}\\` writes the same placement slot as earlier \\`${previousPropertyName}\\` in this block.`,\n});\n\nconst docs = {\n description:\n \"Disallow same-block CSS Grid placement declarations that write the same placement slot.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-conflicting-placement\"),\n} as const;\n\ntype PlacementSlot = \"column-end\" | \"column-start\" | \"row-end\" | \"row-start\";\n\nconst propertySlots: Readonly<Record<string, readonly PlacementSlot[]>> = {\n \"grid-area\": [\n \"row-start\",\n \"column-start\",\n \"row-end\",\n \"column-end\",\n ],\n \"grid-column\": [\"column-start\", \"column-end\"],\n \"grid-column-end\": [\"column-end\"],\n \"grid-column-start\": [\"column-start\"],\n \"grid-row\": [\"row-start\", \"row-end\"],\n \"grid-row-end\": [\"row-end\"],\n \"grid-row-start\": [\"row-start\"],\n};\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkRules((ruleNode) => {\n const slotDeclarations = new Map<PlacementSlot, Declaration>();\n\n for (const declaration of getDirectDeclarations(ruleNode)) {\n if (isGridPlacementDeclaration(declaration)) {\n const propertyName = declaration.prop.toLowerCase();\n const slots = propertySlots[propertyName] ?? [];\n const previousDeclaration = slots\n .map((slot) => slotDeclarations.get(slot))\n .find(isDefined);\n\n if (isDefined(previousDeclaration)) {\n report({\n message: messages.rejected(\n propertyName,\n previousDeclaration.prop\n ),\n node: declaration,\n result,\n ruleName,\n word: declaration.prop,\n });\n }\n\n for (const slot of slots) {\n slotDeclarations.set(slot, declaration);\n }\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "/**\n * @packageDocumentation\n * Shared CSS Grid placement analysis helpers for public rules.\n */\nimport type { Declaration, Rule } from \"postcss\";\n\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport {\n splitTopLevelSlashes,\n splitTopLevelWhitespace,\n} from \"./grid-template-analysis.js\";\n\n/** CSS Grid placement declaration properties. */\nexport const gridPlacementProperties: ReadonlySet<string> = new Set([\n \"grid-area\",\n \"grid-column\",\n \"grid-column-end\",\n \"grid-column-start\",\n \"grid-row\",\n \"grid-row-end\",\n \"grid-row-start\",\n]);\n\nconst strictIntegerPattern = /^[+\\-]?\\d+$/v;\n\n/** Return direct declaration children for one PostCSS rule. */\nexport function getDirectDeclarations(\n rule: Readonly<Rule>\n): readonly Declaration[] {\n return rule.nodes.filter(\n (node): node is Declaration => node.type === \"decl\"\n );\n}\n\n/** Return strict integer tokens used directly in one Grid line value. */\nexport function getGridLineIntegerTokens(value: string): readonly number[] {\n const integers: number[] = [];\n\n for (const token of splitTopLevelWhitespace(value)) {\n const integer = parseStrictInteger(token);\n\n if (isDefined(integer)) {\n integers.push(integer);\n }\n }\n\n return integers;\n}\n\n/** Return strict integer span counts from one Grid placement slot. */\nexport function getGridLineSpanCounts(value: string): readonly number[] {\n const tokens = splitTopLevelWhitespace(value);\n const hasSpan = tokens.some((token) => token.toLowerCase() === \"span\");\n\n if (!hasSpan) {\n return [];\n }\n\n return tokens.map((token) => parseStrictInteger(token)).filter(isDefined);\n}\n\n/** Split one Grid placement value into top-level slash-separated slots. */\nexport function getGridPlacementSlots(value: string): readonly string[] {\n return splitTopLevelSlashes(value);\n}\n\n/** Return whether a declaration is one of the Grid placement properties. */\nexport function isGridPlacementDeclaration(\n declaration: Readonly<Declaration>\n): boolean {\n return setHas(gridPlacementProperties, declaration.prop.toLowerCase());\n}\n\n/** Parse a Grid line slot when it is exactly one integer token. */\nexport function parseStandaloneGridLineInteger(\n value: string\n): number | undefined {\n const tokens = splitTopLevelWhitespace(value);\n\n return tokens.length === 1\n ? parseStrictInteger(arrayFirst(tokens) ?? \"\")\n : undefined;\n}\n\nfunction parseStrictInteger(value: string): number | undefined {\n if (!strictIntegerPattern.test(value)) {\n return undefined;\n }\n\n return Number.parseInt(value, 10);\n}\n", "import stylelint, { type RuleBase } from \"stylelint\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport { splitTopLevelWhitespace } from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-dense-auto-flow\");\nconst messages: { rejected: () => string } = ruleMessages(ruleName, {\n rejected: (): string =>\n \"Avoid `grid-auto-flow: dense`; dense packing can disconnect visual order from source order.\",\n});\n\nconst docs = {\n description:\n \"Disallow `grid-auto-flow: dense` because it can reorder auto-placed grid items visually.\",\n recommended: false,\n url: createRuleDocsUrl(\"no-dense-auto-flow\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls(\"grid-auto-flow\", (declaration) => {\n const hasDensePacking = splitTopLevelWhitespace(\n declaration.value\n ).some((token) => token.toLowerCase() === \"dense\");\n\n if (!hasDensePacking) {\n return;\n }\n\n report({\n message: messages.rejected(),\n node: declaration,\n result,\n ruleName,\n word: \"dense\",\n });\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import type { Declaration } from \"postcss\";\n\nimport stylelint, { type RuleBase } from \"stylelint\";\nimport { isDefined, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport { getDirectDeclarations } from \"../_internal/grid-placement-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-ineffective-container-properties\");\nconst messages: {\n rejected: (propertyName: string, display: string) => string;\n} = ruleMessages(ruleName, {\n rejected: (propertyName: string, display: string): string =>\n `\\`${propertyName}\\` has no grid-container effect when the final same-block \\`display\\` value is \\`${display}\\`; use \\`grid\\` or \\`inline-grid\\`, or remove the grid container declaration.`,\n});\n\nconst docs = {\n description:\n \"Disallow CSS Grid container declarations in blocks whose final literal display value is not grid-capable.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-ineffective-container-properties\"),\n} as const;\n\nconst gridContainerProperties: ReadonlySet<string> = new Set([\n \"grid\",\n \"grid-auto-columns\",\n \"grid-auto-flow\",\n \"grid-auto-rows\",\n \"grid-template\",\n \"grid-template-areas\",\n \"grid-template-columns\",\n \"grid-template-rows\",\n]);\n\nconst gridDisplayValues: ReadonlySet<string> = new Set([\"grid\", \"inline-grid\"]);\n\nconst nonGridDisplayValues: ReadonlySet<string> = new Set([\n \"block\",\n \"contents\",\n \"flex\",\n \"flow-root\",\n \"inline\",\n \"inline-block\",\n \"inline-flex\",\n \"inline-table\",\n \"list-item\",\n \"none\",\n \"table\",\n]);\n\nfunction getLastLiteralDisplay(\n declarations: readonly Declaration[]\n): Declaration | undefined {\n return declarations.findLast(\n (declaration) =>\n declaration.prop.toLowerCase() === \"display\" &&\n isDefined(getLiteralDisplayValue(declaration.value))\n );\n}\n\nfunction getLiteralDisplayValue(value: string): string | undefined {\n const normalizedValue = value.trim().toLowerCase();\n\n if (normalizedValue.includes(\"(\") || normalizedValue.includes(\")\")) {\n return undefined;\n }\n\n return normalizedValue;\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkRules((ruleNode) => {\n const declarations = getDirectDeclarations(ruleNode);\n const displayDeclaration = getLastLiteralDisplay(declarations);\n const displayValue = isDefined(displayDeclaration)\n ? getLiteralDisplayValue(displayDeclaration.value)\n : undefined;\n const isGridCapableDisplay = isDefined(displayValue)\n ? setHas(gridDisplayValues, displayValue)\n : false;\n const isKnownNonGridDisplay = isDefined(displayValue)\n ? setHas(nonGridDisplayValues, displayValue)\n : false;\n\n if (\n !isDefined(displayValue) ||\n isGridCapableDisplay ||\n !isKnownNonGridDisplay\n ) {\n return;\n }\n\n for (const declaration of declarations) {\n const propertyName = declaration.prop.toLowerCase();\n\n if (setHas(gridContainerProperties, propertyName)) {\n report({\n message: messages.rejected(propertyName, displayValue),\n node: declaration,\n result,\n ruleName,\n word: declaration.prop,\n });\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport { collectGridTemplateAreas } from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-invalid-areas\");\nconst messages: { rejected: (message: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (message: string): string => message,\n }\n);\n\nconst docs = {\n description: \"Disallow malformed `grid-template-areas` declarations.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-invalid-areas\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n for (const template of collectGridTemplateAreas(root)) {\n for (const diagnostic of template.diagnostics) {\n report({\n message: messages.rejected(diagnostic.message),\n node: template.declaration,\n result,\n ruleName,\n word: diagnostic.token,\n });\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n findValueFunctionCalls,\n splitTopLevelCommas,\n splitTopLevelWhitespace,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-invalid-auto-repeat\");\nconst messages: {\n rejected: (token: string, repeatKeyword: string) => string;\n} = ruleMessages(ruleName, {\n rejected: (token: string, repeatKeyword: string): string =>\n `Use a fixed track size inside \\`repeat(${repeatKeyword}, ...)\\`; \\`${token}\\` can make the grid template declaration invalid.`,\n});\n\nconst docs = {\n description:\n \"Disallow definitely invalid CSS Grid auto-repeat track sizes.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-invalid-auto-repeat\"),\n} as const;\n\nconst trackTemplateProperties: ReadonlySet<string> = new Set([\n \"grid-template-columns\",\n \"grid-template-rows\",\n]);\n\nconst invalidBareAutoRepeatTrackTokens: ReadonlySet<string> = new Set([\n \"auto\",\n \"max-content\",\n \"min-content\",\n]);\n\nconst cssLengthUnits: ReadonlySet<string> = new Set([\n \"cap\",\n \"ch\",\n \"cm\",\n \"dvb\",\n \"dvh\",\n \"dvi\",\n \"dvmax\",\n \"dvmin\",\n \"dvw\",\n \"em\",\n \"ex\",\n \"ic\",\n \"in\",\n \"lh\",\n \"lvb\",\n \"lvh\",\n \"lvi\",\n \"lvmax\",\n \"lvmin\",\n \"lvw\",\n \"mm\",\n \"pc\",\n \"pt\",\n \"px\",\n \"q\",\n \"rch\",\n \"rem\",\n \"rex\",\n \"ric\",\n \"rlh\",\n \"svb\",\n \"svh\",\n \"svi\",\n \"svmax\",\n \"svmin\",\n \"svw\",\n \"vb\",\n \"vh\",\n \"vi\",\n \"vmax\",\n \"vmin\",\n \"vw\",\n]);\n\nconst lengthPercentagePattern = /^[+\\-]?(?:\\d+|\\d*\\.\\d+)(?<unit>%|[A-Za-z]+)$/v;\nconst zeroPattern = /^[+\\-]?(?:0|0?\\.0+)$/v;\n\nfunction containsRuntimeValue(token: string): boolean {\n const normalizedToken = token.toLowerCase();\n\n return normalizedToken.includes(\"var(\") || normalizedToken.includes(\"env(\");\n}\n\nfunction getInvalidAutoRepeatTrack(trackList: string): string | undefined {\n for (const token of splitTopLevelWhitespace(trackList)) {\n const normalizedToken = token.toLowerCase();\n\n if (!isLineNameList(token) && !containsRuntimeValue(token)) {\n if (\n setHas(invalidBareAutoRepeatTrackTokens, normalizedToken) ||\n isFlexTrackBreadth(normalizedToken)\n ) {\n return token;\n }\n\n if (\n hasStringPrefix(normalizedToken, \"minmax(\") &&\n isInvalidAutoRepeatMinmax(token)\n ) {\n return token;\n }\n }\n }\n\n return undefined;\n}\n\nfunction getMinmaxArguments(\n token: string\n): readonly [minimum: string, maximum: string] | undefined {\n const minmaxCall = arrayFirst(findValueFunctionCalls(token, \"minmax\"));\n\n if (!isDefined(minmaxCall)) {\n return undefined;\n }\n\n const [minimum, maximum] = splitTopLevelCommas(minmaxCall.body).map(\n (argument) => argument.trim()\n );\n\n if (!isDefined(minimum) || !isDefined(maximum)) {\n return undefined;\n }\n\n return [minimum, maximum];\n}\n\nfunction getRepeatKeyword(\n repeatBody: string\n): \"auto-fill\" | \"auto-fit\" | undefined {\n const repeatCount = arrayFirst(splitTopLevelCommas(repeatBody))\n ?.trim()\n .toLowerCase();\n\n if (repeatCount === \"auto-fill\" || repeatCount === \"auto-fit\") {\n return repeatCount;\n }\n\n return undefined;\n}\n\nfunction hasStringPrefix(value: string, prefix: string): boolean {\n // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with -- `startsWith` is falsely flagged as unsafe in this typed lint context.\n return value.slice(0, prefix.length) === prefix;\n}\n\nfunction isFixedTrackBreadth(value: string): boolean {\n const normalizedValue = value.toLowerCase();\n\n if (zeroPattern.test(normalizedValue)) {\n return true;\n }\n\n if (\n hasStringPrefix(normalizedValue, \"calc(\") ||\n hasStringPrefix(normalizedValue, \"clamp(\") ||\n hasStringPrefix(normalizedValue, \"max(\") ||\n hasStringPrefix(normalizedValue, \"min(\")\n ) {\n return true;\n }\n\n const match = lengthPercentagePattern.exec(normalizedValue);\n const unit = match?.groups?.[\"unit\"];\n\n return unit === \"%\" || (isDefined(unit) && setHas(cssLengthUnits, unit));\n}\n\nfunction isFlexTrackBreadth(value: string): boolean {\n return /^[+\\-]?(?:\\d+|\\d*\\.\\d+)fr$/v.test(value);\n}\n\nfunction isIntrinsicTrackBreadth(value: string): boolean {\n const normalizedValue = value.toLowerCase();\n\n return setHas(invalidBareAutoRepeatTrackTokens, normalizedValue);\n}\n\nfunction isInvalidAutoRepeatMinmax(token: string): boolean {\n const args = getMinmaxArguments(token);\n\n if (!isDefined(args)) {\n return false;\n }\n\n const [minimum, maximum] = args;\n\n return (\n isFlexTrackBreadth(minimum) ||\n (isIntrinsicTrackBreadth(minimum) && !isFixedTrackBreadth(maximum))\n );\n}\n\nfunction isLineNameList(token: string): boolean {\n return token.startsWith(\"[\") && token.endsWith(\"]\");\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls((declaration) => {\n if (\n !setHas(trackTemplateProperties, declaration.prop.toLowerCase())\n ) {\n return;\n }\n\n for (const repeatCall of findValueFunctionCalls(\n declaration.value,\n \"repeat\"\n )) {\n const repeatKeyword = getRepeatKeyword(repeatCall.body);\n\n if (isDefined(repeatKeyword)) {\n // eslint-disable-next-line typefest/prefer-ts-extras-array-join -- ts-extras does not expose a typed arrayJoin in this project setup.\n const trackList = splitTopLevelCommas(repeatCall.body)\n .slice(1)\n .join(\",\");\n const invalidTrack = getInvalidAutoRepeatTrack(trackList);\n\n if (isDefined(invalidTrack)) {\n report({\n message: messages.rejected(\n invalidTrack,\n repeatKeyword\n ),\n node: declaration,\n result,\n ruleName,\n word: invalidTrack,\n });\n }\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n findValueFunctionCalls,\n splitTopLevelCommas,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-invalid-minmax\");\nconst messages: { rejected: (minimum: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (minimum: string): string =>\n `Do not use flexible track breadth \\`${minimum}\\` as the minimum in \\`minmax()\\`; use an inflexible minimum such as \\`0\\`, a length, or a percentage.`,\n }\n);\n\nconst docs = {\n description:\n \"Disallow flexible `fr` values as the minimum argument in CSS Grid `minmax()` track sizes.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-invalid-minmax\"),\n} as const;\n\nconst gridTrackProperties: ReadonlySet<string> = new Set([\n \"grid-auto-columns\",\n \"grid-auto-rows\",\n \"grid-template-columns\",\n \"grid-template-rows\",\n]);\n\nfunction isFlexTrackBreadth(value: string): boolean {\n return /^[+\\-]?(?:\\d+|\\d*\\.\\d+)fr$/v.test(value.toLowerCase());\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls((declaration) => {\n if (!setHas(gridTrackProperties, declaration.prop.toLowerCase())) {\n return;\n }\n\n for (const minmaxCall of findValueFunctionCalls(\n declaration.value,\n \"minmax\"\n )) {\n const minimum = arrayFirst(\n splitTopLevelCommas(minmaxCall.body)\n )?.trim();\n\n if (isDefined(minimum) && isFlexTrackBreadth(minimum)) {\n report({\n message: messages.rejected(minimum),\n node: declaration,\n result,\n ruleName,\n word: minimum,\n });\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n findValueFunctionCalls,\n splitTopLevelCommas,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-invalid-repeat-count\");\nconst messages: { rejected: (count: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (count: string): string =>\n `Use a positive integer repeat count; \\`${count}\\` is not a valid fixed \\`repeat()\\` count.`,\n }\n);\n\nconst docs = {\n description:\n \"Disallow invalid fixed repeat counts in CSS Grid track templates.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-invalid-repeat-count\"),\n} as const;\n\nconst trackTemplateProperties: ReadonlySet<string> = new Set([\n \"grid-template-columns\",\n \"grid-template-rows\",\n]);\n\nconst nonFixedRepeatCounts: ReadonlySet<string> = new Set([\n \"auto-fill\",\n \"auto-fit\",\n]);\n\nconst integerPattern = /^\\+?\\d+$/v;\nconst numericPattern = /^[+\\-]?(?:\\d+|\\d*\\.\\d+)$/v;\n\nfunction getInvalidRepeatCount(repeatBody: string): string | undefined {\n const count = arrayFirst(splitTopLevelCommas(repeatBody))?.trim();\n\n if (!isDefined(count)) {\n return undefined;\n }\n\n const normalizedCount = count.toLowerCase();\n\n if (setHas(nonFixedRepeatCounts, normalizedCount)) {\n return undefined;\n }\n\n return numericPattern.test(count) && !isPositiveIntegerToken(count)\n ? count\n : undefined;\n}\n\nfunction isPositiveIntegerToken(value: string): boolean {\n return integerPattern.test(value) && Number.parseInt(value, 10) > 0;\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls((declaration) => {\n if (\n !setHas(trackTemplateProperties, declaration.prop.toLowerCase())\n ) {\n return;\n }\n\n for (const repeatCall of findValueFunctionCalls(\n declaration.value,\n \"repeat\"\n )) {\n const invalidCount = getInvalidRepeatCount(repeatCall.body);\n\n if (isDefined(invalidCount)) {\n report({\n message: messages.rejected(invalidCount),\n node: declaration,\n result,\n ruleName,\n word: invalidCount,\n });\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n getGridLineSpanCounts,\n getGridPlacementSlots,\n isGridPlacementDeclaration,\n} from \"../_internal/grid-placement-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-invalid-span\");\nconst messages: { rejected: (span: number) => string } = ruleMessages(\n ruleName,\n {\n rejected: (span: number): string =>\n `Use a positive Grid span count; \\`span ${String(span)}\\` cannot place a grid item.`,\n }\n);\n\nconst docs = {\n description:\n \"Disallow non-positive `span` counts in CSS Grid placement declarations.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-invalid-span\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls((declaration) => {\n if (!isGridPlacementDeclaration(declaration)) {\n return;\n }\n\n for (const slot of getGridPlacementSlots(declaration.value)) {\n for (const span of getGridLineSpanCounts(slot)) {\n if (span <= 0) {\n report({\n message: messages.rejected(span),\n node: declaration,\n result,\n ruleName,\n word: String(span),\n });\n }\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isDefined, isEmpty } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridTemplateAreas,\n countGridTracks,\n findSiblingDeclaration,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-mismatched-template-rows\");\nconst messages: {\n rejected: (areaRows: number, trackRows: number) => string;\n} = ruleMessages(ruleName, {\n rejected: (areaRows: number, trackRows: number): string =>\n `\\`grid-template-areas\\` defines ${String(areaRows)} rows, but sibling \\`grid-template-rows\\` defines ${String(trackRows)} tracks.`,\n});\n\nconst docs = {\n description:\n \"Require `grid-template-rows` track count to match `grid-template-areas` row count.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-mismatched-template-rows\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n for (const template of collectGridTemplateAreas(root)) {\n if (isEmpty(template.diagnostics)) {\n const rowsDeclaration = findSiblingDeclaration(\n template.declaration,\n \"grid-template-rows\"\n );\n const trackRows = isDefined(rowsDeclaration)\n ? countGridTracks(rowsDeclaration.value)\n : undefined;\n\n if (\n isDefined(rowsDeclaration) &&\n isDefined(trackRows) &&\n trackRows !== template.rows.length\n ) {\n report({\n message: messages.rejected(\n template.rows.length,\n trackRows\n ),\n node: rowsDeclaration,\n result,\n ruleName,\n });\n }\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import type { ArrayElement } from \"type-fest\";\n\nimport stylelint, { type RuleBase } from \"stylelint\";\nimport { isDefined } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport { collectGridAreaUsages } from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-overlapping-areas\");\nconst messages: {\n rejected: (areaName: string, firstSelector: string) => string;\n} = ruleMessages(ruleName, {\n rejected: (areaName: string, firstSelector: string): string =>\n `Grid area \"${areaName}\" is assigned by more than one selector; it may overlap the earlier \"${firstSelector}\" item at runtime.`,\n});\n\nconst docs = {\n description:\n \"Disallow multiple selectors assigning the same single-name `grid-area` value in one stylesheet.\",\n recommended: false,\n url: createRuleDocsUrl(\"no-overlapping-areas\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n const firstUsageByName = new Map<\n string,\n ArrayElement<ReturnType<typeof collectGridAreaUsages>>\n >();\n\n for (const usage of collectGridAreaUsages(root)) {\n const firstUsage = firstUsageByName.get(usage.name);\n\n if (isDefined(firstUsage)) {\n report({\n message: messages.rejected(\n usage.name,\n firstUsage.selector ?? firstUsage.name\n ),\n node: usage.declaration,\n result,\n ruleName,\n word: usage.name,\n });\n } else {\n firstUsageByName.set(usage.name, usage);\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { arrayAt, arrayFirst, isDefined, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n getDirectDeclarations,\n getGridPlacementSlots,\n parseStandaloneGridLineInteger,\n} from \"../_internal/grid-placement-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-reversed-placement-lines\");\nconst messages: {\n rejected: (propertyName: string, start: number, end: number) => string;\n} = ruleMessages(ruleName, {\n rejected: (propertyName: string, start: number, end: number): string =>\n `Use an end line after the start line for \\`${propertyName}\\`; \\`${String(end)}\\` is not after \\`${String(start)}\\`.`,\n});\n\nconst docs = {\n description:\n \"Disallow reversed or zero-width numeric CSS Grid placement line ranges.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-reversed-placement-lines\"),\n} as const;\n\nconst shorthandProperties: ReadonlySet<string> = new Set([\n \"grid-column\",\n \"grid-row\",\n]);\n\nconst gridAreaPropertyName = \"grid-area\";\n\ntype PlacementLonghandPair = Readonly<{\n end: string;\n name: string;\n start: string;\n}>;\n\nconst longhandPairs: readonly PlacementLonghandPair[] = [\n {\n end: \"grid-column-end\",\n name: \"grid-column\",\n start: \"grid-column-start\",\n },\n {\n end: \"grid-row-end\",\n name: \"grid-row\",\n start: \"grid-row-start\",\n },\n];\n\nfunction getComparableLinePair(\n startValue: string,\n endValue: string\n): readonly [start: number, end: number] | undefined {\n const start = parseStandaloneGridLineInteger(startValue);\n const end = parseStandaloneGridLineInteger(endValue);\n\n if (!isDefined(start) || !isDefined(end) || start === 0 || end === 0) {\n return undefined;\n }\n\n if (Math.sign(start) !== Math.sign(end)) {\n return undefined;\n }\n\n return [start, end];\n}\n\nfunction isReversedOrZeroWidth(\n pair: readonly [start: number, end: number]\n): boolean {\n const [start, end] = pair;\n\n return end <= start;\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls((declaration) => {\n const propertyName = declaration.prop.toLowerCase();\n\n if (\n !setHas(shorthandProperties, propertyName) &&\n propertyName !== gridAreaPropertyName\n ) {\n return;\n }\n\n const slots = getGridPlacementSlots(declaration.value);\n const shorthandPairs =\n propertyName === gridAreaPropertyName\n ? [\n {\n endValue: arrayAt(slots, 2),\n propertyName: \"grid-row\",\n startValue: arrayFirst(slots),\n },\n {\n endValue: arrayAt(slots, 3),\n propertyName: \"grid-column\",\n startValue: arrayAt(slots, 1),\n },\n ]\n : [\n {\n endValue: arrayAt(slots, 1),\n propertyName,\n startValue: arrayFirst(slots),\n },\n ];\n\n for (const shorthandPair of shorthandPairs) {\n const {\n endValue,\n propertyName: pairName,\n startValue,\n } = shorthandPair;\n\n if (isDefined(startValue) && isDefined(endValue)) {\n const pair = getComparableLinePair(startValue, endValue);\n\n if (isDefined(pair) && isReversedOrZeroWidth(pair)) {\n const [start, end] = pair;\n\n report({\n message: messages.rejected(pairName, start, end),\n node: declaration,\n result,\n ruleName,\n word: endValue,\n });\n }\n }\n }\n });\n\n root.walkRules((ruleNode) => {\n const declarations = getDirectDeclarations(ruleNode);\n\n for (const pair of longhandPairs) {\n const startDeclaration = declarations.find(\n (declaration) =>\n declaration.prop.toLowerCase() === pair.start\n );\n const endDeclaration = declarations.find(\n (declaration) => declaration.prop.toLowerCase() === pair.end\n );\n\n if (isDefined(startDeclaration) && isDefined(endDeclaration)) {\n const linePair = getComparableLinePair(\n startDeclaration.value,\n endDeclaration.value\n );\n\n if (\n isDefined(linePair) &&\n isReversedOrZeroWidth(linePair)\n ) {\n const [start, end] = linePair;\n\n report({\n message: messages.rejected(pair.name, start, end),\n node: endDeclaration,\n result,\n ruleName,\n word: endDeclaration.value,\n });\n }\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isEmpty, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridAreaUsages,\n collectGridTemplateAreas,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-unknown-areas\");\nconst messages: { rejected: (areaName: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (areaName: string): string =>\n `Grid area \"${areaName}\" is referenced by \\`grid-area\\` but is not declared in any \\`grid-template-areas\\` template in this stylesheet.`,\n }\n);\n\nconst docs = {\n description:\n \"Disallow single-name `grid-area` references that do not match any named area declared in the same stylesheet.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-unknown-areas\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n const declaredAreaNames = new Set(\n collectGridTemplateAreas(root).flatMap((template) =>\n isEmpty(template.diagnostics) ? template.areaNames : []\n )\n );\n\n if (declaredAreaNames.size === 0) {\n return;\n }\n\n for (const usage of collectGridAreaUsages(root)) {\n if (!setHas(declaredAreaNames, usage.name)) {\n report({\n message: messages.rejected(usage.name),\n node: usage.declaration,\n result,\n ruleName,\n word: usage.name,\n });\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isEmpty, setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridAreaUsages,\n collectGridTemplateAreas,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-unused-areas\");\nconst messages: { rejected: (areaName: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (areaName: string): string =>\n `Grid template area \"${areaName}\" is declared but no single-name \\`grid-area: ${areaName}\\` declaration exists in this stylesheet.`,\n }\n);\n\nconst docs = {\n description:\n \"Disallow named template areas that are never referenced by a single-name `grid-area` declaration in the same stylesheet.\",\n recommended: false,\n url: createRuleDocsUrl(\"no-unused-areas\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n const usedAreaNames = new Set(\n collectGridAreaUsages(root).map((usage) => usage.name)\n );\n\n for (const template of collectGridTemplateAreas(root)) {\n if (isEmpty(template.diagnostics)) {\n for (const areaName of template.areaNames) {\n if (!setHas(usedAreaNames, areaName)) {\n report({\n message: messages.rejected(areaName),\n node: template.declaration,\n result,\n ruleName,\n word: areaName,\n });\n }\n }\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { arrayIncludes } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n getGridLineIntegerTokens,\n getGridPlacementSlots,\n isGridPlacementDeclaration,\n} from \"../_internal/grid-placement-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"no-zero-grid-lines\");\nconst messages: { rejected: () => string } = ruleMessages(ruleName, {\n rejected: (): string =>\n \"Do not use Grid line `0`; CSS Grid line numbering starts at `1` and `-1`.\",\n});\n\nconst docs = {\n description: \"Disallow line `0` in CSS Grid placement declarations.\",\n recommended: true,\n url: createRuleDocsUrl(\"no-zero-grid-lines\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls((declaration) => {\n if (!isGridPlacementDeclaration(declaration)) {\n return;\n }\n\n for (const slot of getGridPlacementSlots(declaration.value)) {\n if (arrayIncludes(getGridLineIntegerTokens(slot), 0)) {\n report({\n message: messages.rejected(),\n node: declaration,\n result,\n ruleName,\n word: \"0\",\n });\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import type { Declaration } from \"postcss\";\n\nimport stylelint, { type RuleBase } from \"stylelint\";\nimport { isDefined } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"prefer-gap-properties\");\nconst messages: {\n rejected: (propertyName: string, replacement: string) => string;\n} = ruleMessages(ruleName, {\n rejected: (propertyName: string, replacement: string): string =>\n `Prefer \\`${replacement}\\` over legacy \\`${propertyName}\\`.`,\n});\n\nconst docs = {\n description:\n \"Prefer modern `gap`, `row-gap`, and `column-gap` properties over legacy grid gap aliases.\",\n recommended: true,\n url: createRuleDocsUrl(\"prefer-gap-properties\"),\n} as const;\n\nconst replacements: Readonly<Record<string, string>> = {\n \"grid-column-gap\": \"column-gap\",\n \"grid-gap\": \"gap\",\n \"grid-row-gap\": \"row-gap\",\n};\n\nfunction getReplacement(\n declaration: Readonly<Declaration>\n): string | undefined {\n return replacements[declaration.prop.toLowerCase()];\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls((declaration) => {\n const replacement = getReplacement(declaration);\n\n if (!isDefined(replacement)) {\n return;\n }\n\n report({\n fix: () => {\n declaration.prop = replacement;\n },\n message: messages.rejected(declaration.prop, replacement),\n node: declaration,\n result,\n ruleName,\n word: declaration.prop,\n });\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n meta: {\n fixable: true,\n },\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { setHas } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport { splitTopLevelWhitespace } from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"prefer-minmax-zero-fr\");\nconst messages: { rejected: (track: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (track: string): string =>\n `Wrap bare flexible column track \\`${track}\\` in \\`minmax(0, ${track})\\` to avoid content-driven overflow.`,\n }\n);\n\nconst docs = {\n description:\n \"Prefer `minmax(0, <flex>)` for bare flexible CSS Grid column tracks.\",\n recommended: false,\n url: createRuleDocsUrl(\"prefer-minmax-zero-fr\"),\n} as const;\n\nconst ignoredTrackKeywords: ReadonlySet<string> = new Set([\n \"masonry\",\n \"none\",\n \"subgrid\",\n]);\n\nconst flexTrackPattern = /^\\+?(?:\\d+|\\d*\\.\\d+)fr$/v;\n\nfunction isBareFlexibleTrack(token: string): boolean {\n const normalizedToken = token.toLowerCase();\n\n return (\n !setHas(ignoredTrackKeywords, normalizedToken) &&\n flexTrackPattern.test(normalizedToken)\n );\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls(\"grid-template-columns\", (declaration) => {\n for (const token of splitTopLevelWhitespace(declaration.value)) {\n if (isBareFlexibleTrack(token)) {\n report({\n message: messages.rejected(token),\n node: declaration,\n result,\n ruleName,\n word: token,\n });\n }\n }\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isDefined } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n findSiblingDeclaration,\n splitTopLevelWhitespace,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"require-explicit-rows-with-column-flow\");\nconst messages: { rejected: () => string } = ruleMessages(ruleName, {\n rejected: (): string =>\n \"Pair `grid-auto-flow: column` with explicit row sizing in the same block, such as `grid-template-rows` or `grid-auto-rows`.\",\n});\n\nconst docs = {\n description:\n \"Require explicit row sizing when a rule uses `grid-auto-flow: column`.\",\n recommended: false,\n url: createRuleDocsUrl(\"require-explicit-rows-with-column-flow\"),\n} as const;\n\nfunction hasColumnFlow(value: string): boolean {\n return splitTopLevelWhitespace(value).some(\n (token) => token.toLowerCase() === \"column\"\n );\n}\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n root.walkDecls(\"grid-auto-flow\", (declaration) => {\n if (!hasColumnFlow(declaration.value)) {\n return;\n }\n\n const hasExplicitRows =\n isDefined(\n findSiblingDeclaration(declaration, \"grid-template-rows\")\n ) ||\n isDefined(\n findSiblingDeclaration(declaration, \"grid-auto-rows\")\n );\n\n if (hasExplicitRows) {\n return;\n }\n\n report({\n message: messages.rejected(),\n node: declaration,\n result,\n ruleName,\n word: \"column\",\n });\n });\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isEmpty } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridTemplateAreas,\n findSiblingDeclaration,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"require-explicit-tracks-with-areas\");\n\ntype SecondaryOptions = Readonly<{\n columns?: boolean;\n rows?: boolean;\n}>;\n\nconst messages: { rejected: (propertyName: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (propertyName: string): string =>\n `Pair \\`grid-template-areas\\` with \\`${propertyName}\\` in the same block so named areas have explicit track sizing.`,\n }\n);\n\nconst docs = {\n description:\n \"Require explicit track sizing alongside CSS Grid named area templates.\",\n recommended: false,\n url: createRuleDocsUrl(\"require-explicit-tracks-with-areas\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, SecondaryOptions | undefined> =\n (primary, secondary) => (root, result) => {\n if (\n !validateOptions(\n result,\n ruleName,\n {\n actual: primary,\n possible: [true],\n },\n {\n actual: secondary,\n optional: true,\n possible: {\n columns: [true, false],\n rows: [true, false],\n },\n }\n )\n ) {\n return;\n }\n\n const requireColumns = secondary?.columns ?? true;\n const requireRows = secondary?.rows ?? false;\n\n for (const template of collectGridTemplateAreas(root)) {\n if (isEmpty(template.diagnostics)) {\n if (\n requireColumns &&\n !findSiblingDeclaration(\n template.declaration,\n \"grid-template-columns\"\n )\n ) {\n report({\n message: messages.rejected(\"grid-template-columns\"),\n node: template.declaration,\n result,\n ruleName,\n word: template.declaration.prop,\n });\n }\n\n if (\n requireRows &&\n !findSiblingDeclaration(\n template.declaration,\n \"grid-template-rows\"\n )\n ) {\n report({\n message: messages.rejected(\"grid-template-rows\"),\n node: template.declaration,\n result,\n ruleName,\n word: template.declaration.prop,\n });\n }\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<\n boolean,\n SecondaryOptions | undefined,\n typeof messages\n> = createStylelintRule<boolean, SecondaryOptions | undefined, typeof messages>(\n {\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n }\n);\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { isEmpty } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridTemplateAreas,\n getAreaShapes,\n isRectangularArea,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"validate-area-shapes\");\nconst messages: { rejected: (areaName: string) => string } = ruleMessages(\n ruleName,\n {\n rejected: (areaName: string): string =>\n `Grid area \"${areaName}\" must form one contiguous rectangle in \\`grid-template-areas\\`.`,\n }\n);\n\nconst docs = {\n description:\n \"Require every named grid template area to form one contiguous rectangle.\",\n recommended: true,\n url: createRuleDocsUrl(\"validate-area-shapes\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n for (const template of collectGridTemplateAreas(root)) {\n if (isEmpty(template.diagnostics)) {\n for (const shape of getAreaShapes(template)) {\n if (!isRectangularArea(template, shape)) {\n report({\n message: messages.rejected(shape.name),\n node: template.declaration,\n result,\n ruleName,\n word: shape.name,\n });\n }\n }\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "import stylelint, { type RuleBase } from \"stylelint\";\nimport { arrayFirst, isDefined, isEmpty } from \"ts-extras\";\n\nimport {\n createStylelintRule,\n type StylelintPluginRule,\n} from \"../_internal/create-stylelint-rule.js\";\nimport {\n collectGridTemplateAreas,\n countGridTracks,\n findSiblingDeclaration,\n} from \"../_internal/grid-template-analysis.js\";\nimport {\n createRuleDocsUrl,\n createRuleName,\n} from \"../_internal/plugin-constants.js\";\n\nconst { report, ruleMessages, validateOptions } = stylelint.utils;\n\nconst ruleName = createRuleName(\"validate-track-counts\");\nconst messages: {\n columns: (areaColumns: number, trackColumns: number) => string;\n rows: (areaRows: number, trackRows: number) => string;\n} = ruleMessages(ruleName, {\n columns: (areaColumns: number, trackColumns: number): string =>\n `\\`grid-template-areas\\` defines ${String(areaColumns)} columns, but sibling \\`grid-template-columns\\` defines ${String(trackColumns)} tracks.`,\n rows: (areaRows: number, trackRows: number): string =>\n `\\`grid-template-areas\\` defines ${String(areaRows)} rows, but sibling \\`grid-template-rows\\` defines ${String(trackRows)} tracks.`,\n});\n\nconst docs = {\n description:\n \"Require template row and column track counts to match `grid-template-areas` dimensions.\",\n recommended: true,\n url: createRuleDocsUrl(\"validate-track-counts\"),\n} as const;\n\nconst ruleFunction: RuleBase<boolean, undefined> =\n (primary) => (root, result) => {\n if (\n !validateOptions(result, ruleName, {\n actual: primary,\n possible: [true],\n })\n ) {\n return;\n }\n\n for (const template of collectGridTemplateAreas(root)) {\n const expectedColumns = arrayFirst(template.rows)?.length;\n\n if (isEmpty(template.diagnostics) && isDefined(expectedColumns)) {\n const expectedRows = template.rows.length;\n const rowsDeclaration = findSiblingDeclaration(\n template.declaration,\n \"grid-template-rows\"\n );\n const columnsDeclaration = findSiblingDeclaration(\n template.declaration,\n \"grid-template-columns\"\n );\n const actualRows = isDefined(rowsDeclaration)\n ? countGridTracks(rowsDeclaration.value)\n : undefined;\n const actualColumns = isDefined(columnsDeclaration)\n ? countGridTracks(columnsDeclaration.value)\n : undefined;\n\n if (\n isDefined(rowsDeclaration) &&\n isDefined(actualRows) &&\n actualRows !== expectedRows\n ) {\n report({\n message: messages.rows(expectedRows, actualRows),\n node: rowsDeclaration,\n result,\n ruleName,\n });\n }\n\n if (\n isDefined(columnsDeclaration) &&\n isDefined(actualColumns) &&\n actualColumns !== expectedColumns\n ) {\n report({\n message: messages.columns(\n expectedColumns,\n actualColumns\n ),\n node: columnsDeclaration,\n result,\n ruleName,\n });\n }\n }\n }\n };\n\n/** Public Stylelint rule definition. */\nconst rule: StylelintPluginRule<boolean, undefined, typeof messages> =\n createStylelintRule<boolean, undefined, typeof messages>({\n docs,\n messages,\n rule: ruleFunction,\n ruleName,\n });\n\nexport default rule;\n", "/**\n * @packageDocumentation\n * Canonical registry of public Stylelint rules exported by this package.\n */\n/* eslint-disable import-x/max-dependencies -- The public registry intentionally imports every rule module exactly once. */\nimport type { StylelintPluginRuleContract } from \"./create-stylelint-rule.js\";\n\nimport * as consistentAreaNamingModule from \"../rules/consistent-area-naming.js\";\nimport * as noConflictingPlacementModule from \"../rules/no-conflicting-placement.js\";\nimport * as noDenseAutoFlowModule from \"../rules/no-dense-auto-flow.js\";\nimport * as noIneffectiveContainerPropertiesModule from \"../rules/no-ineffective-container-properties.js\";\nimport * as noInvalidAreasModule from \"../rules/no-invalid-areas.js\";\nimport * as noInvalidAutoRepeatModule from \"../rules/no-invalid-auto-repeat.js\";\nimport * as noInvalidMinmaxModule from \"../rules/no-invalid-minmax.js\";\nimport * as noInvalidRepeatCountModule from \"../rules/no-invalid-repeat-count.js\";\nimport * as noInvalidSpanModule from \"../rules/no-invalid-span.js\";\nimport * as noMismatchedTemplateRowsModule from \"../rules/no-mismatched-template-rows.js\";\nimport * as noOverlappingAreasModule from \"../rules/no-overlapping-areas.js\";\nimport * as noReversedPlacementLinesModule from \"../rules/no-reversed-placement-lines.js\";\nimport * as noUnknownAreasModule from \"../rules/no-unknown-areas.js\";\nimport * as noUnusedAreasModule from \"../rules/no-unused-areas.js\";\nimport * as noZeroGridLinesModule from \"../rules/no-zero-grid-lines.js\";\nimport * as preferGapPropertiesModule from \"../rules/prefer-gap-properties.js\";\nimport * as preferMinmaxZeroFrModule from \"../rules/prefer-minmax-zero-fr.js\";\nimport * as requireExplicitRowsWithColumnFlowModule from \"../rules/require-explicit-rows-with-column-flow.js\";\nimport * as requireExplicitTracksWithAreasModule from \"../rules/require-explicit-tracks-with-areas.js\";\nimport * as validateAreaShapesModule from \"../rules/validate-area-shapes.js\";\nimport * as validateTrackCountsModule from \"../rules/validate-track-counts.js\";\n/* eslint-enable import-x/max-dependencies -- Re-enable after the intentional registry import list. */\n\n/** Public rule registry keyed by unqualified rule name. */\nexport const gridRules: Readonly<Record<string, StylelintPluginRuleContract>> =\n {\n \"consistent-area-naming\": consistentAreaNamingModule.default,\n \"no-conflicting-placement\": noConflictingPlacementModule.default,\n \"no-dense-auto-flow\": noDenseAutoFlowModule.default,\n \"no-ineffective-container-properties\":\n noIneffectiveContainerPropertiesModule.default,\n \"no-invalid-areas\": noInvalidAreasModule.default,\n \"no-invalid-auto-repeat\": noInvalidAutoRepeatModule.default,\n \"no-invalid-minmax\": noInvalidMinmaxModule.default,\n \"no-invalid-repeat-count\": noInvalidRepeatCountModule.default,\n \"no-invalid-span\": noInvalidSpanModule.default,\n \"no-mismatched-template-rows\": noMismatchedTemplateRowsModule.default,\n \"no-overlapping-areas\": noOverlappingAreasModule.default,\n \"no-reversed-placement-lines\": noReversedPlacementLinesModule.default,\n \"no-unknown-areas\": noUnknownAreasModule.default,\n \"no-unused-areas\": noUnusedAreasModule.default,\n \"no-zero-grid-lines\": noZeroGridLinesModule.default,\n \"prefer-gap-properties\": preferGapPropertiesModule.default,\n \"prefer-minmax-zero-fr\": preferMinmaxZeroFrModule.default,\n \"require-explicit-rows-with-column-flow\":\n requireExplicitRowsWithColumnFlowModule.default,\n \"require-explicit-tracks-with-areas\":\n requireExplicitTracksWithAreasModule.default,\n \"validate-area-shapes\": validateAreaShapesModule.default,\n \"validate-track-counts\": validateTrackCountsModule.default,\n };\n\n/** Public rule registry type. */\nexport type GridRulesRegistry = typeof gridRules;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_ts_extras", "packageJson", "ruleName", "import_stylelint", "import_ts_extras", "docs", "messages", "rule", "ruleName", "meta", "stylelint", "import_ts_extras", "stylelint", "import_stylelint", "import_ts_extras", "import_ts_extras", "rule", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "isLineNameList", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "isFlexTrackBreadth", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "trackTemplateProperties", "ruleFunction", "rule", "import_stylelint", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "import_stylelint", "import_ts_extras", "report", "ruleMessages", "validateOptions", "stylelint", "ruleName", "messages", "docs", "ruleFunction", "rule", "ruleName", "rule"]
|
|
7
7
|
}
|