From 84df2ea1cf34dbb2c3def2847903145afa7dcaef Mon Sep 17 00:00:00 2001 From: Erik Michelson Date: Mon, 31 Aug 2020 12:48:58 +0200 Subject: [PATCH] Add 'yarn lint' command and run it in GH actions (#517) * Add 'yarn lint' command and run it in GH actions * Move linting to own workflow * Remove linting from build-workflow * Solve linting warnings Signed-off-by: Tilman Vatteroth Co-authored-by: Tilman Vatteroth --- .github/workflows/build.yml | 4 +-- .github/workflows/lint.yml | 28 +++++++++++++++++++ package.json | 1 + .../table-of-contents/table-of-contents.tsx | 2 +- .../editor/yaml-metadata/yaml-metadata.ts | 4 +-- .../alert-container.ts} | 5 ++-- .../markdown-renderer/markdown-renderer.tsx | 2 +- 7 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/lint.yml rename src/components/markdown-renderer/{container-plugins/alert.ts => markdown-it-plugins/alert-container.ts} (74%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 79990cf6d..673a6a8a9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: lint and build +name: test, build on: push: @@ -12,7 +12,7 @@ jobs: strategy: matrix: node: ['12', '14'] - name: Test with NodeJS ${{ matrix.node }} + name: Test and build with NodeJS ${{ matrix.node }} steps: - name: Checkout repository uses: actions/checkout@v2 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 000000000..0a5ded42a --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,28 @@ +name: lint + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + lint: + runs-on: ubuntu-latest + name: Lints all .ts and .tsx files + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Cache node_modules + uses: actions/cache@v1.1.0 + with: + path: node_modules + key: node_modules + - name: Set up NodeJS + uses: actions/setup-node@v1 + with: + node-version: 14 + - name: Install dependencies + run: yarn install + - name: Lint code + run: yarn lint diff --git a/package.json b/package.json index 23951fff9..1e6e8e826 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,7 @@ "build:serve": "http-server build/ -s -p 3001 -P \"http://127.0.0.1:3001?\"", "build": "react-scripts build", "test": "react-scripts test", + "lint": "eslint --ext .ts,.tsx src", "eject": "react-scripts eject", "cy:open": "cypress open", "cy:run:chrome": "cypress run --browser chrome", diff --git a/src/components/editor/table-of-contents/table-of-contents.tsx b/src/components/editor/table-of-contents/table-of-contents.tsx index edc0ae915..d2bfc73bb 100644 --- a/src/components/editor/table-of-contents/table-of-contents.tsx +++ b/src/components/editor/table-of-contents/table-of-contents.tsx @@ -9,7 +9,7 @@ export interface TableOfContentsProps { className?: string } -export const slugify = (content:string) => { +export const slugify = (content:string): string => { return encodeURIComponent(String(content).trim().toLowerCase().replace(/\s+/g, '-')) } diff --git a/src/components/editor/yaml-metadata/yaml-metadata.ts b/src/components/editor/yaml-metadata/yaml-metadata.ts index 6e0ffd295..55783e272 100644 --- a/src/components/editor/yaml-metadata/yaml-metadata.ts +++ b/src/components/editor/yaml-metadata/yaml-metadata.ts @@ -13,8 +13,8 @@ export interface RawYAMLMetadata { GA: string | undefined disqus: string | undefined type: string | undefined - slideOptions: any - opengraph: any + slideOptions: unknown + opengraph: { [key: string]:string } } export class YAMLMetaData { diff --git a/src/components/markdown-renderer/container-plugins/alert.ts b/src/components/markdown-renderer/markdown-it-plugins/alert-container.ts similarity index 74% rename from src/components/markdown-renderer/container-plugins/alert.ts rename to src/components/markdown-renderer/markdown-it-plugins/alert-container.ts index b459f697a..de92d4643 100644 --- a/src/components/markdown-renderer/container-plugins/alert.ts +++ b/src/components/markdown-renderer/markdown-it-plugins/alert-container.ts @@ -1,12 +1,13 @@ +import MarkdownIt from 'markdown-it' import Renderer from 'markdown-it/lib/renderer' import Token from 'markdown-it/lib/token' -type RenderContainerReturn = (tokens: Token[], index: number, options: any, env: any, self: Renderer) => void; +type RenderContainerReturn = (tokens: Token[], index: number, options: MarkdownIt.Options, env: unknown, self: Renderer) => void; type ValidAlertLevels = ('warning' | 'danger' | 'success' | 'info') export const validAlertLevels: ValidAlertLevels[] = ['success', 'danger', 'info', 'warning'] export const createRenderContainer = (level: ValidAlertLevels): RenderContainerReturn => { - return (tokens: Token[], index: number, options: any, env: any, self: Renderer) => { + return (tokens: Token[], index: number, options: MarkdownIt.Options, env: unknown, self: Renderer) => { tokens[index].attrJoin('role', 'alert') tokens[index].attrJoin('class', 'alert') tokens[index].attrJoin('class', `alert-${level}`) diff --git a/src/components/markdown-renderer/markdown-renderer.tsx b/src/components/markdown-renderer/markdown-renderer.tsx index 6b03f13c0..2fadaf085 100644 --- a/src/components/markdown-renderer/markdown-renderer.tsx +++ b/src/components/markdown-renderer/markdown-renderer.tsx @@ -34,7 +34,7 @@ import { ShowIf } from '../common/show-if/show-if' import { ForkAwesomeIcons } from '../editor/editor-pane/tool-bar/emoji-picker/icon-names' import { slugify } from '../editor/table-of-contents/table-of-contents' import { RawYAMLMetadata, YAMLMetaData } from '../editor/yaml-metadata/yaml-metadata' -import { createRenderContainer, validAlertLevels } from './container-plugins/alert' +import { createRenderContainer, validAlertLevels } from './markdown-it-plugins/alert-container' import { highlightedCode } from './markdown-it-plugins/highlighted-code' import { lineNumberMarker } from './markdown-it-plugins/line-number-marker' import { linkifyExtra } from './markdown-it-plugins/linkify-extra'