Skip to content

Commit 7db2269

Browse files
committed
chore: v4
0 parents  commit 7db2269

38 files changed

Lines changed: 8042 additions & 0 deletions

.eslintrc.js

Lines changed: 282 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,282 @@
1+
const path = require('path');
2+
3+
module.exports = {
4+
env: {
5+
es6: true,
6+
browser: true,
7+
node: true,
8+
},
9+
10+
parserOptions: {
11+
sourceType: 'module',
12+
ecmaFeatures: {
13+
jsx: true,
14+
},
15+
},
16+
17+
extends: ['eslint-config-prettier'],
18+
19+
plugins: [
20+
'babel',
21+
'eslint-comments',
22+
'import',
23+
'prettier',
24+
'simple-import-sort',
25+
],
26+
27+
rules: {
28+
'array-callback-return': 'error',
29+
'babel/no-invalid-this': 'error',
30+
'babel/valid-typeof': 'error',
31+
'constructor-super': 'error',
32+
'default-case': ['error', { commentPattern: '^no default$' }],
33+
'eslint-comments/disable-enable-pair': ['error', { allowWholeFile: true }],
34+
'eslint-comments/no-aggregating-enable': 'error',
35+
'eslint-comments/no-duplicate-disable': 'error',
36+
'eslint-comments/no-unlimited-disable': 'error',
37+
'eslint-comments/no-unused-disable': 'error',
38+
'eslint-comments/no-unused-enable': 'error',
39+
'for-direction': 'error',
40+
'getter-return': 'error',
41+
'import/export': 'error',
42+
'import/extensions': 'off',
43+
'import/imports-first': 'error',
44+
'import/named': 'off',
45+
'import/no-amd': 'error',
46+
'import/no-commonjs': 'error',
47+
'import/no-duplicates': 'error',
48+
'import/no-extraneous-dependencies': 'error',
49+
'import/no-self-import': 'error',
50+
'new-parens': 'error',
51+
'no-array-constructor': 'error',
52+
'no-caller': 'error',
53+
'no-case-declarations': 'error',
54+
'no-class-assign': 'error',
55+
'no-compare-neg-zero': 'error',
56+
'no-cond-assign': ['error', 'except-parens'],
57+
'no-const-assign': 'error',
58+
'no-constant-condition': 'error',
59+
'no-control-regex': 'error',
60+
'no-delete-var': 'error',
61+
'no-dupe-args': 'error',
62+
'no-dupe-class-members': 'error',
63+
'no-dupe-keys': 'error',
64+
'no-duplicate-case': 'error',
65+
'no-empty': 'error',
66+
'no-empty-character-class': 'error',
67+
'no-empty-pattern': 'error',
68+
'no-eval': 'error',
69+
'no-ex-assign': 'error',
70+
'no-extend-native': 'error',
71+
'no-extra-bind': 'error',
72+
'no-extra-boolean-cast': 'error',
73+
'no-extra-label': 'error',
74+
'no-extra-semi': 'error',
75+
'no-fallthrough': 'error',
76+
'no-func-assign': 'error',
77+
'no-global-assign': 'error',
78+
'no-implied-eval': 'error',
79+
'no-inner-declarations': 'error',
80+
'no-invalid-regexp': 'error',
81+
'no-iterator': 'error',
82+
'no-label-var': 'error',
83+
'no-labels': ['error', { allowLoop: true, allowSwitch: false }],
84+
'no-lone-blocks': 'error',
85+
'no-loop-func': 'error',
86+
'no-misleading-character-class': 'error',
87+
'no-multi-str': 'error',
88+
'no-new-func': 'error',
89+
'no-new-object': 'error',
90+
'no-new-symbol': 'error',
91+
'no-new-wrappers': 'error',
92+
'no-obj-calls': 'error',
93+
'no-octal': 'error',
94+
'no-octal-escape': 'error',
95+
'no-redeclare': 'error',
96+
'no-regex-spaces': 'error',
97+
'no-self-assign': 'error',
98+
'no-self-compare': 'error',
99+
'no-shadow-restricted-names': 'error',
100+
'no-sparse-arrays': 'error',
101+
'no-this-before-super': 'error',
102+
'no-throw-literal': 'error',
103+
'no-undef': 'error',
104+
'no-unexpected-multiline': 'error',
105+
'no-unreachable': 'error',
106+
'no-unsafe-finally': 'error',
107+
'no-unsafe-negation': 'error',
108+
'no-unused-labels': 'error',
109+
'no-unused-vars': 'error',
110+
'no-use-before-define': [
111+
'error',
112+
{ functions: false, classes: false, variables: false },
113+
],
114+
'no-useless-computed-key': 'error',
115+
'no-useless-concat': 'error',
116+
'no-useless-constructor': 'error',
117+
'no-useless-escape': 'error',
118+
'no-useless-rename': 'error',
119+
'no-with': 'error',
120+
'require-yield': 'error',
121+
'simple-import-sort/exports': 'error',
122+
'unicode-bom': 'error',
123+
'use-isnan': 'error',
124+
eqeqeq: ['error', 'smart'],
125+
126+
'import/no-unresolved': [
127+
'error',
128+
{ caseSensitive: false, ignore: ['vscode'] },
129+
],
130+
'prettier/prettier': [
131+
'error',
132+
{
133+
bracketSameLine: false,
134+
bracketSpacing: true,
135+
printWidth: 80,
136+
semi: true,
137+
singleQuote: true,
138+
tabWidth: 2,
139+
trailingComma: 'all',
140+
useTabs: false,
141+
endOfLine: 'auto',
142+
},
143+
],
144+
'simple-import-sort/imports': [
145+
'error',
146+
{ groups: [['^\\u0000'], ['^@?\\w'], ['^~/'], ['^../'], ['^./']] },
147+
],
148+
},
149+
overrides: [
150+
{
151+
files: ['*.ts', '*.tsx'],
152+
parser: require.resolve('@typescript-eslint/parser'),
153+
plugins: ['@typescript-eslint/eslint-plugin'],
154+
settings: {
155+
'import/extensions': ['.js', '.ts', '.tsx'],
156+
'import/parsers': {
157+
'@typescript-eslint/parser': ['.ts', '.tsx'],
158+
},
159+
'import/resolver': {
160+
node: {
161+
extensions: ['.js', '.ts', '.tsx'],
162+
},
163+
},
164+
},
165+
rules: {
166+
'@typescript-eslint/adjacent-overload-signatures': 'error',
167+
'@typescript-eslint/array-type': 'error',
168+
'@typescript-eslint/consistent-type-assertions': [
169+
'error',
170+
{ assertionStyle: 'as' },
171+
],
172+
'@typescript-eslint/member-delimiter-style': 'error',
173+
'@typescript-eslint/no-array-constructor': 'error',
174+
'@typescript-eslint/no-dynamic-delete': 'error',
175+
'@typescript-eslint/no-empty-interface': [
176+
'error',
177+
{ allowSingleExtends: true },
178+
],
179+
'@typescript-eslint/no-extra-non-null-assertion': 'error',
180+
'@typescript-eslint/no-extraneous-class': 'error',
181+
'@typescript-eslint/no-misused-new': 'error',
182+
'@typescript-eslint/no-namespace': 'error',
183+
'@typescript-eslint/no-unused-vars': [
184+
'error',
185+
{ argsIgnorePattern: '^_' },
186+
],
187+
'@typescript-eslint/no-use-before-define': [
188+
'error',
189+
{
190+
functions: false,
191+
classes: false,
192+
variables: false,
193+
typedefs: false,
194+
},
195+
],
196+
'@typescript-eslint/no-useless-constructor': 'error',
197+
'@typescript-eslint/prefer-for-of': 'error',
198+
'@typescript-eslint/prefer-function-type': 'error',
199+
'@typescript-eslint/prefer-namespace-keyword': 'error',
200+
'@typescript-eslint/prefer-optional-chain': 'error',
201+
'@typescript-eslint/triple-slash-reference': 'error',
202+
'@typescript-eslint/unified-signatures': 'error',
203+
'default-case': 'off',
204+
'no-dupe-class-members': 'off',
205+
'no-undef': 'off',
206+
'no-unused-vars': 'off',
207+
'no-array-constructor': 'off',
208+
'no-use-before-define': 'off',
209+
},
210+
},
211+
{
212+
plugins: ['jest'],
213+
files: ['*.{spec,test}.{js,ts,tsx}', '**/__tests__/**/*.{js,ts,tsx}'],
214+
env: {
215+
jest: true,
216+
},
217+
rules: {
218+
'import/no-extraneous-dependencies': [
219+
'error',
220+
{ devDependencies: true },
221+
],
222+
'jest/consistent-test-it': ['error', { fn: 'test' }],
223+
'jest/expect-expect': [
224+
'error',
225+
{ assertFunctionNames: ['expect', 'element'] },
226+
],
227+
'jest/no-disabled-tests': 'error',
228+
'jest/no-duplicate-hooks': 'error',
229+
'jest/no-export': 'error',
230+
'jest/no-focused-tests': 'error',
231+
'jest/no-identical-title': 'error',
232+
'jest/no-jasmine-globals': 'error',
233+
'jest/no-test-prefixes': 'error',
234+
'jest/no-test-return-statement': 'error',
235+
'jest/prefer-todo': 'error',
236+
'jest/require-to-throw-message': 'error',
237+
'jest/valid-describe-callback': 'error',
238+
'jest/valid-expect-in-promise': 'error',
239+
'jest/valid-expect': 'error',
240+
'jest/valid-title': 'error',
241+
'jest/no-restricted-matchers': [
242+
'error',
243+
{
244+
toBeTruthy: 'Avoid `toBeTruthy`',
245+
toBeFalsy: 'Avoid `toBeFalsy`',
246+
},
247+
],
248+
},
249+
},
250+
{
251+
files: ['*.js'],
252+
parser: require.resolve('@babel/eslint-parser'),
253+
parserOptions: {
254+
requireConfigFile: false,
255+
},
256+
rules: {
257+
'import/default': 'error',
258+
'import/namespace': 'error',
259+
'import/no-named-as-default': 'error',
260+
'import/no-named-as-default-member': 'error',
261+
'import/no-cycle': 'error',
262+
'import/no-deprecated': 'error',
263+
},
264+
},
265+
{
266+
files: ['*.config.js', '.*rc.js'],
267+
env: {
268+
node: true,
269+
},
270+
rules: {
271+
'import/no-commonjs': 'off',
272+
'import/no-extraneous-dependencies': [
273+
'error',
274+
{ devDependencies: true },
275+
],
276+
},
277+
},
278+
],
279+
globals: {
280+
jasmine: true,
281+
},
282+
};
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Typescript & lint
2+
3+
on:
4+
push:
5+
branches:
6+
- "*"
7+
8+
jobs:
9+
lint:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v2
13+
- uses: actions/setup-node@v2
14+
with:
15+
node-version: "16"
16+
17+
- uses: actions/cache@v2
18+
id: yarn-cache
19+
with:
20+
path: "**/node_modules"
21+
key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
22+
23+
- name: Install
24+
run: yarn install --frozen-lockfile
25+
26+
- name: Lint
27+
run: yarn lint
28+
29+
- name: Typescript
30+
run: yarn typescript

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
out
2+
node_modules
3+
.vscode-test/
4+
*.vsix
5+
*.log
6+
.DS_Store
7+
lib/

.vscode/extensions.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"recommendations": ["ms-vscode.vscode-typescript-tslint-plugin"]
3+
}

.vscode/launch.json

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"version": "0.2.0",
3+
"configurations": [
4+
{
5+
"name": "Run Extension",
6+
"type": "extensionHost",
7+
"request": "launch",
8+
"runtimeExecutable": "${execPath}",
9+
"args": ["--extensionDevelopmentPath=${workspaceFolder}"],
10+
"outFiles": ["${workspaceFolder}/out/**/*.js"],
11+
"preLaunchTask": "npm: watch"
12+
},
13+
{
14+
"name": "Extension Tests",
15+
"type": "extensionHost",
16+
"request": "launch",
17+
"runtimeExecutable": "${execPath}",
18+
"args": [
19+
"--extensionDevelopmentPath=${workspaceFolder}",
20+
"--extensionTestsPath=${workspaceFolder}/out/test"
21+
],
22+
"outFiles": ["${workspaceFolder}/out/test/**/*.js"],
23+
"preLaunchTask": "npm: watch"
24+
}
25+
]
26+
}

.vscode/settings.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"editor.tabSize": 2,
3+
"javascript.format.enable": false,
4+
"typescript.format.enable": false,
5+
"typescript.tsdk": "node_modules/typescript/lib",
6+
"editor.defaultFormatter": "esbenp.prettier-vscode",
7+
"editor.codeActionsOnSave": {
8+
"source.fixAll.eslint": true
9+
},
10+
}

.vscode/tasks.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"version": "2.0.0",
3+
"tasks": [
4+
{
5+
"type": "npm",
6+
"script": "watch",
7+
"problemMatcher": "$tsc-watch",
8+
"isBackground": true,
9+
"presentation": {
10+
"reveal": "never"
11+
},
12+
"group": {
13+
"kind": "build",
14+
"isDefault": true
15+
}
16+
}
17+
]
18+
}

.vscodeignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
**/tsconfig.json
2+
*.ts
3+
.github/**
4+
.gitignore
5+
.vscode/**
6+
docs/**
7+
src/**

0 commit comments

Comments
 (0)