Actualizacion maquina principal
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / eslint / lib / rules / require-jsdoc.js
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/eslint/lib/rules/require-jsdoc.js b/.config/coc/extensions/node_modules/coc-prettier/node_modules/eslint/lib/rules/require-jsdoc.js
new file mode 100644 (file)
index 0000000..416a22c
--- /dev/null
@@ -0,0 +1,117 @@
+/**
+ * @fileoverview Rule to check for jsdoc presence.
+ * @author Gyandeep Singh
+ */
+"use strict";
+
+module.exports = {
+    meta: {
+        type: "suggestion",
+
+        docs: {
+            description: "require JSDoc comments",
+            category: "Stylistic Issues",
+            recommended: false,
+            url: "https://eslint.org/docs/rules/require-jsdoc"
+        },
+
+        schema: [
+            {
+                type: "object",
+                properties: {
+                    require: {
+                        type: "object",
+                        properties: {
+                            ClassDeclaration: {
+                                type: "boolean",
+                                default: false
+                            },
+                            MethodDefinition: {
+                                type: "boolean",
+                                default: false
+                            },
+                            FunctionDeclaration: {
+                                type: "boolean",
+                                default: true
+                            },
+                            ArrowFunctionExpression: {
+                                type: "boolean",
+                                default: false
+                            },
+                            FunctionExpression: {
+                                type: "boolean",
+                                default: false
+                            }
+                        },
+                        additionalProperties: false,
+                        default: {}
+                    }
+                },
+                additionalProperties: false
+            }
+        ],
+
+        deprecated: true,
+        replacedBy: []
+    },
+
+    create(context) {
+        const source = context.getSourceCode();
+        const DEFAULT_OPTIONS = {
+            FunctionDeclaration: true,
+            MethodDefinition: false,
+            ClassDeclaration: false,
+            ArrowFunctionExpression: false,
+            FunctionExpression: false
+        };
+        const options = Object.assign(DEFAULT_OPTIONS, context.options[0] && context.options[0].require);
+
+        /**
+         * Report the error message
+         * @param {ASTNode} node node to report
+         * @returns {void}
+         */
+        function report(node) {
+            context.report({ node, message: "Missing JSDoc comment." });
+        }
+
+        /**
+         * Check if the jsdoc comment is present or not.
+         * @param {ASTNode} node node to examine
+         * @returns {void}
+         */
+        function checkJsDoc(node) {
+            const jsdocComment = source.getJSDocComment(node);
+
+            if (!jsdocComment) {
+                report(node);
+            }
+        }
+
+        return {
+            FunctionDeclaration(node) {
+                if (options.FunctionDeclaration) {
+                    checkJsDoc(node);
+                }
+            },
+            FunctionExpression(node) {
+                if (
+                    (options.MethodDefinition && node.parent.type === "MethodDefinition") ||
+                    (options.FunctionExpression && (node.parent.type === "VariableDeclarator" || (node.parent.type === "Property" && node === node.parent.value)))
+                ) {
+                    checkJsDoc(node);
+                }
+            },
+            ClassDeclaration(node) {
+                if (options.ClassDeclaration) {
+                    checkJsDoc(node);
+                }
+            },
+            ArrowFunctionExpression(node) {
+                if (options.ArrowFunctionExpression && node.parent.type === "VariableDeclarator") {
+                    checkJsDoc(node);
+                }
+            }
+        };
+    }
+};