| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | /** * @fileoverview enforce default parameters to be last * @author Chiawen Chen */"use strict";/** @type {import('../shared/types').Rule} */module.exports = {    meta: {        type: "suggestion",        docs: {            description: "Enforce default parameters to be last",            recommended: false,            url: "https://eslint.org/docs/rules/default-param-last"        },        schema: [],        messages: {            shouldBeLast: "Default parameters should be last."        }    },    create(context) {        /**         * Handler for function contexts.         * @param {ASTNode} node function node         * @returns {void}         */        function handleFunction(node) {            let hasSeenPlainParam = false;            for (let i = node.params.length - 1; i >= 0; i -= 1) {                const param = node.params[i];                if (                    param.type !== "AssignmentPattern" &&                    param.type !== "RestElement"                ) {                    hasSeenPlainParam = true;                    continue;                }                if (hasSeenPlainParam && param.type === "AssignmentPattern") {                    context.report({                        node: param,                        messageId: "shouldBeLast"                    });                }            }        }        return {            FunctionDeclaration: handleFunction,            FunctionExpression: handleFunction,            ArrowFunctionExpression: handleFunction        };    }};
 |