first commit
This commit is contained in:
+125
@@ -0,0 +1,125 @@
|
||||
/**
|
||||
* @fileoverview Markdown plugin.
|
||||
* @author Brandon Mills
|
||||
*/
|
||||
//-----------------------------------------------------------------------------
|
||||
// Imports
|
||||
//-----------------------------------------------------------------------------
|
||||
import { processor } from "./processor.js";
|
||||
import { MarkdownLanguage } from "./language/markdown-language.js";
|
||||
import { MarkdownSourceCode } from "./language/markdown-source-code.js";
|
||||
import recommendedRules from "./build/recommended-config.js";
|
||||
import rules from "./build/rules.js";
|
||||
//-----------------------------------------------------------------------------
|
||||
// Type Definitions
|
||||
//-----------------------------------------------------------------------------
|
||||
/**
|
||||
* @import { ConfigObject, RulesConfig } from "@eslint/core";
|
||||
*/
|
||||
//-----------------------------------------------------------------------------
|
||||
// Exports
|
||||
//-----------------------------------------------------------------------------
|
||||
/** @satisfies {RulesConfig} */
|
||||
const processorRulesConfig = {
|
||||
// The Markdown parser automatically trims trailing
|
||||
// newlines from code blocks.
|
||||
"eol-last": "off",
|
||||
// In code snippets and examples, these rules are often
|
||||
// counterproductive to clarity and brevity.
|
||||
"no-undef": "off",
|
||||
"no-unused-expressions": "off",
|
||||
"no-unused-vars": "off",
|
||||
"padded-blocks": "off",
|
||||
// Adding a "use strict" directive at the top of every
|
||||
// code block is tedious and distracting. The config
|
||||
// opts into strict mode parsing without the directive.
|
||||
strict: "off",
|
||||
// The processor will not receive a Unicode Byte Order
|
||||
// Mark from the Markdown parser.
|
||||
"unicode-bom": "off",
|
||||
};
|
||||
let recommendedPlugins, processorPlugins;
|
||||
const plugin = {
|
||||
meta: {
|
||||
name: "@eslint/markdown",
|
||||
version: "8.0.3", // x-release-please-version
|
||||
},
|
||||
processors: {
|
||||
markdown: processor,
|
||||
},
|
||||
languages: {
|
||||
commonmark: new MarkdownLanguage({ mode: "commonmark" }),
|
||||
gfm: new MarkdownLanguage({ mode: "gfm" }),
|
||||
},
|
||||
rules,
|
||||
configs: {
|
||||
"recommended-legacy": {
|
||||
plugins: ["markdown"],
|
||||
overrides: [
|
||||
{
|
||||
files: ["*.md"],
|
||||
processor: "markdown/markdown",
|
||||
},
|
||||
{
|
||||
files: ["**/*.md/**"],
|
||||
parserOptions: {
|
||||
ecmaFeatures: {
|
||||
// Adding a "use strict" directive at the top of
|
||||
// every code block is tedious and distracting, so
|
||||
// opt into strict mode parsing without the
|
||||
// directive.
|
||||
impliedStrict: true,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
...processorRulesConfig,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
recommended: [
|
||||
{
|
||||
name: "markdown/recommended",
|
||||
files: ["**/*.md"],
|
||||
language: "markdown/commonmark",
|
||||
plugins: (recommendedPlugins = {}),
|
||||
rules: recommendedRules,
|
||||
},
|
||||
],
|
||||
processor: /** @type {ConfigObject[]} */ ([
|
||||
{
|
||||
name: "markdown/recommended/plugin",
|
||||
plugins: (processorPlugins = {}),
|
||||
},
|
||||
{
|
||||
name: "markdown/recommended/processor",
|
||||
files: ["**/*.md"],
|
||||
processor: "markdown/markdown",
|
||||
},
|
||||
{
|
||||
name: "markdown/recommended/code-blocks",
|
||||
files: ["**/*.md/**"],
|
||||
languageOptions: {
|
||||
parserOptions: {
|
||||
ecmaFeatures: {
|
||||
// Adding a "use strict" directive at the top of
|
||||
// every code block is tedious and distracting, so
|
||||
// opt into strict mode parsing without the
|
||||
// directive.
|
||||
impliedStrict: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
...processorRulesConfig,
|
||||
},
|
||||
},
|
||||
]),
|
||||
},
|
||||
};
|
||||
Object.assign(recommendedPlugins, { markdown: plugin });
|
||||
Object.assign(processorPlugins, { markdown: plugin });
|
||||
export default plugin;
|
||||
export { MarkdownSourceCode };
|
||||
export * from "./language/markdown-language.js";
|
||||
export * from "./types.js";
|
||||
Reference in New Issue
Block a user