HEX
Server: nginx/1.18.0
System: Linux test-ipsremont 5.4.0-214-generic #234-Ubuntu SMP Fri Mar 14 23:50:27 UTC 2025 x86_64
User: ips (1000)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/quadcode.com/node_modules/eslint-plugin-svelte/lib/rules/block-lang.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../utils");
const ast_utils_1 = require("../utils/ast-utils");
exports.default = (0, utils_1.createRule)("block-lang", {
    meta: {
        docs: {
            description: "disallows the use of languages other than those specified in the configuration for the lang attribute of `<script>` and `<style>` blocks.",
            category: "Best Practices",
            recommended: false,
        },
        schema: [
            {
                type: "object",
                properties: {
                    enforceScriptPresent: {
                        type: "boolean",
                    },
                    enforceStylePresent: {
                        type: "boolean",
                    },
                    script: {
                        oneOf: [
                            {
                                type: ["string", "null"],
                            },
                            {
                                type: "array",
                                items: {
                                    type: ["string", "null"],
                                },
                                minItems: 1,
                            },
                        ],
                    },
                    style: {
                        oneOf: [
                            {
                                type: ["string", "null"],
                            },
                            {
                                type: "array",
                                items: {
                                    type: ["string", "null"],
                                },
                                minItems: 1,
                            },
                        ],
                    },
                },
                additionalProperties: false,
            },
        ],
        messages: {},
        type: "suggestion",
    },
    create(context) {
        if (!context.parserServices.isSvelte) {
            return {};
        }
        const enforceScriptPresent = context.options[0]?.enforceScriptPresent ?? false;
        const enforceStylePresent = context.options[0]?.enforceStylePresent ?? false;
        const scriptOption = context.options[0]?.script ?? null;
        const allowedScriptLangs = Array.isArray(scriptOption)
            ? scriptOption
            : [scriptOption];
        const scriptNodes = [];
        const styleOption = context.options[0]?.style ?? null;
        const allowedStyleLangs = Array.isArray(styleOption)
            ? styleOption
            : [styleOption];
        const styleNodes = [];
        return {
            SvelteScriptElement(node) {
                scriptNodes.push(node);
            },
            SvelteStyleElement(node) {
                styleNodes.push(node);
            },
            "Program:exit"() {
                if (scriptNodes.length === 0 && enforceScriptPresent) {
                    context.report({
                        loc: { line: 1, column: 1 },
                        message: `The <script> block should be present and its lang attribute should be ${prettyPrintLangs(allowedScriptLangs)}.`,
                    });
                }
                for (const scriptNode of scriptNodes) {
                    if (!allowedScriptLangs.includes((0, ast_utils_1.getLangValue)(scriptNode)?.toLowerCase() ?? null)) {
                        context.report({
                            node: scriptNode,
                            message: `The lang attribute of the <script> block should be ${prettyPrintLangs(allowedScriptLangs)}.`,
                        });
                    }
                }
                if (styleNodes.length === 0 && enforceStylePresent) {
                    context.report({
                        loc: { line: 1, column: 1 },
                        message: `The <style> block should be present and its lang attribute should be ${prettyPrintLangs(allowedStyleLangs)}.`,
                    });
                }
                for (const styleNode of styleNodes) {
                    if (!allowedStyleLangs.includes((0, ast_utils_1.getLangValue)(styleNode)?.toLowerCase() ?? null)) {
                        context.report({
                            node: styleNode,
                            message: `The lang attribute of the <style> block should be ${prettyPrintLangs(allowedStyleLangs)}.`,
                        });
                    }
                }
            },
        };
    },
});
function prettyPrintLangs(langs) {
    const hasNull = langs.includes(null);
    const nonNullLangs = langs
        .filter((lang) => lang !== null)
        .map((lang) => `"${lang}"`);
    if (nonNullLangs.length === 0) {
        return "omitted";
    }
    const hasNullText = hasNull ? "either omitted or " : "";
    const nonNullText = nonNullLangs.length === 1
        ? nonNullLangs[0]
        : `one of ${nonNullLangs.join(", ")}`;
    return hasNullText + nonNullText;
}