Skip to content

Commit 726a4b7

Browse files
author
Dimitri POSTOLOV
authored
Forbid h1 # ... elements, enforce h2 ## ... as first heading on page (#334)
1 parent 4d74e94 commit 726a4b7

18 files changed

+591
-1489
lines changed

.eslintrc.cjs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
module.exports = {
2+
root: true,
3+
overrides: [
4+
{
5+
files: ['*.{ts,tsx,js,jsx,mjs,cjs}'],
6+
extends: ['@edgeandnode/eslint-config', '@edgeandnode/eslint-config/next'],
7+
settings: {
8+
next: { rootDir: 'website' },
9+
},
10+
},
11+
{
12+
files: ['*.{ts,tsx}'],
13+
parserOptions: {
14+
project: 'tsconfig.json',
15+
},
16+
},
17+
{
18+
// We lint only english pages because other languages will be translated from english
19+
files: ['website/pages/en/**/*.{md,mdx}'],
20+
parser: 'eslint-mdx',
21+
processor: 'mdx/remark',
22+
plugins: ['mdx'],
23+
rules: {
24+
'mdx/remark': 'error',
25+
},
26+
},
27+
],
28+
}

.eslintrc.js

Lines changed: 0 additions & 11 deletions
This file was deleted.

.remarkrc.cjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module.exports = {
2+
plugins: [
3+
'frontmatter', // should be defined
4+
['remark-lint-first-heading-level', 2],
5+
['remark-lint-restrict-elements', { type: 'heading', depth: 1 }],
6+
// 'remark-lint-heading-increment',
7+
],
8+
}

package.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
"docker:clean": "docker builder prune",
1212
"docker:up": "docker run --rm -it -p 3000:80 -v \"$(pwd)/nginx.conf:/etc/nginx/nginx.conf\" docs",
1313
"export": "pnpm --filter @graphprotocol/docs export",
14-
"lint": "eslint . --cache --ext .js,.jsx,.ts,.tsx,.mjs --ignore-path .gitignore --max-warnings 0",
15-
"lint:fix": "eslint . --cache --ext .js,.jsx,.ts,.tsx,.mjs --ignore-path .gitignore --fix && pnpm prettier",
14+
"lint": "eslint . --cache --ignore-path .gitignore --max-warnings 0",
15+
"lint:fix": "eslint . --cache --ignore-path .gitignore --fix && pnpm prettier",
1616
"pre-commit": "lint-staged --concurrent false",
1717
"pre-push": "pnpm build",
1818
"prepare": "husky install && chmod +x .husky/*",
@@ -23,11 +23,16 @@
2323
},
2424
"devDependencies": {
2525
"@edgeandnode/eslint-config": "^1.3.1",
26-
"eslint": "^8.38.0",
26+
"eslint": "^8.39.0",
27+
"eslint-plugin-mdx": "^2.0.5",
2728
"husky": "^8.0.3",
2829
"lint-staged": "^13.2.1",
29-
"prettier": "^2.8.7",
30+
"prettier": "^2.8.8",
3031
"prettier-plugin-pkg": "^0.17.1",
32+
"remark-frontmatter": "^4.0.1",
33+
"remark-lint-first-heading-level": "^3.1.1",
34+
"remark-lint-heading-increment": "^3.1.1",
35+
"remark-lint-restrict-elements": "workspace:*",
3136
"typescript": "5.0.4"
3237
},
3338
"lint-staged": {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { lintRule } from 'unified-lint-rule'
2+
import { visit } from 'unist-util-visit'
3+
4+
export default lintRule(
5+
{
6+
origin: 'remark-lint:restrict-elements',
7+
url: '',
8+
},
9+
/** @type {import('unified-lint-rule').Rule<Root, void>} */
10+
(tree, file, settings) => {
11+
if (!settings) {
12+
throw new Error('Missing config with restrict elements')
13+
}
14+
const selectors = Array.isArray(settings) ? settings : [settings]
15+
16+
for (const selector of selectors) {
17+
visit(tree, settings, (node) => {
18+
file.message(`Element ${JSON.stringify(selector)} is restricted`, node)
19+
})
20+
}
21+
}
22+
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "remark-lint-restrict-elements",
3+
"version": "0.0.0",
4+
"type": "module",
5+
"author": "Dimitri POSTOLOV <[email protected]>",
6+
"module": "index.js",
7+
"keywords": [
8+
"remark",
9+
"lint",
10+
"rule",
11+
"remark forbid elements",
12+
"remark restricts elements"
13+
],
14+
"dependencies": {
15+
"unified-lint-rule": "^2.1.1",
16+
"unist-util-visit": "^4.1.2"
17+
},
18+
"sideEffects": false
19+
}

0 commit comments

Comments
 (0)