/**
 * @fileoverview Rule to prevent empty blocks in CSS.
 * @author Nicholas C. Zakas
 */
//-----------------------------------------------------------------------------
// Type Definitions
//-----------------------------------------------------------------------------
/**
 * @import { CSSRuleDefinition } from "../types.js"
 * @typedef {"emptyBlock"} NoEmptyBlocksMessageIds
 * @typedef {CSSRuleDefinition<{ RuleOptions: [], MessageIds: NoEmptyBlocksMessageIds }>} NoEmptyBlocksRuleDefinition
 */
//-----------------------------------------------------------------------------
// Rule Definition
//-----------------------------------------------------------------------------
export default /** @satisfies {NoEmptyBlocksRuleDefinition} */ ({
    meta: {
        type: "problem",
        docs: {
            description: "Disallow empty blocks",
            recommended: true,
            url: "https://github.com/eslint/css/blob/main/docs/rules/no-empty-blocks.md",
        },
        messages: {
            emptyBlock: "Unexpected empty block found.",
        },
    },
    create(context) {
        return {
            Block(node) {
                if (node.children.length === 0) {
                    context.report({
                        loc: node.loc,
                        messageId: "emptyBlock",
                    });
                }
            },
        };
    },
});
