mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2024-12-23 01:20:24 +03:00
Installed TS and updated linter
This commit is contained in:
parent
8be17cce8a
commit
343a93b984
7 changed files with 1983 additions and 338 deletions
81
.eslintrc
81
.eslintrc
|
@ -1,45 +1,58 @@
|
||||||
{
|
{
|
||||||
"extends": [
|
|
||||||
"adidas-env/browser",
|
|
||||||
"adidas-env/module",
|
|
||||||
"adidas-env/node",
|
|
||||||
"adidas-es6",
|
|
||||||
"adidas-babel",
|
|
||||||
"adidas-react"
|
|
||||||
],
|
|
||||||
"plugins": ["jest"],
|
"plugins": ["jest"],
|
||||||
"env": {
|
"env": {
|
||||||
"jest/globals": true
|
"jest/globals": true
|
||||||
},
|
},
|
||||||
|
"parserOptions": {
|
||||||
|
"tsconfigRootDir": ".",
|
||||||
|
"createDefaultProgram": true
|
||||||
|
},
|
||||||
"globals": {
|
"globals": {
|
||||||
"process": true,
|
"process": true,
|
||||||
"setImmediate": true
|
"setImmediate": true
|
||||||
},
|
},
|
||||||
"settings": {
|
"overrides": [
|
||||||
"react": {
|
{
|
||||||
"version": "16.3"
|
"files": ["**/*.js"],
|
||||||
|
"extends": [
|
||||||
|
"adidas-env/browser",
|
||||||
|
"adidas-env/module",
|
||||||
|
"adidas-env/node",
|
||||||
|
"adidas-es9",
|
||||||
|
"adidas-babel",
|
||||||
|
"adidas-react"
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
"react": {
|
||||||
|
"version": "detect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"comma-dangle": ["error", "always-multiline"],
|
||||||
|
"no-invalid-this": "off",
|
||||||
|
"no-inline-comments": "off",
|
||||||
|
"no-console": "warn",
|
||||||
|
"template-curly-spacing": ["error", "never"],
|
||||||
|
"no-warning-comments": "off",
|
||||||
|
"no-undefined": "off",
|
||||||
|
"indent": ["error", 2, {"SwitchCase": 1}],
|
||||||
|
"no-empty-function": "off",
|
||||||
|
"lines-around-comment": "off",
|
||||||
|
"no-magic-numbers": "off",
|
||||||
|
"react/no-array-index-key": "off",
|
||||||
|
"react/no-did-update-set-state": "off",
|
||||||
|
"react/jsx-curly-spacing": ["error", "never"],
|
||||||
|
"react/jsx-indent-props": ["error", 2],
|
||||||
|
"react/jsx-first-prop-new-line": ["error", "multiline-multiprop"],
|
||||||
|
"react/jsx-closing-bracket-location": ["error", "tag-aligned"],
|
||||||
|
"react/jsx-filename-extension": ["error", {"extensions": [".js", ".jsx"]}]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"files": ["**/*.ts", "**/*.tsx"],
|
||||||
|
"extends": [
|
||||||
|
"@shlinkio/js-coding-standard"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
]
|
||||||
"rules": {
|
|
||||||
"comma-dangle": ["error", "always-multiline"],
|
|
||||||
"no-invalid-this": "off",
|
|
||||||
"no-console": "warn",
|
|
||||||
"template-curly-spacing": ["error", "never"],
|
|
||||||
"no-warning-comments": "off",
|
|
||||||
"no-magic-numbers": "off",
|
|
||||||
"no-undefined": "off",
|
|
||||||
"no-inline-comments": "off",
|
|
||||||
"lines-around-comment": "off",
|
|
||||||
"indent": ["error", 2, {
|
|
||||||
"SwitchCase": 1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"react/jsx-curly-spacing": ["error", "never"],
|
|
||||||
"react/jsx-indent-props": ["error", 2],
|
|
||||||
"react/jsx-first-prop-new-line": ["error", "multiline-multiprop"],
|
|
||||||
"react/jsx-closing-bracket-location": ["error", "tag-aligned"],
|
|
||||||
"react/no-array-index-key": "off",
|
|
||||||
"react/no-did-update-set-state": "off",
|
|
||||||
"react/display-name": "off"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
2182
package-lock.json
generated
2182
package-lock.json
generated
File diff suppressed because it is too large
Load diff
15
package.json
15
package.json
|
@ -68,6 +68,7 @@
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.6.2",
|
"@babel/core": "^7.6.2",
|
||||||
|
"@shlinkio/eslint-config-js-coding-standard": "~1.1.0",
|
||||||
"@stryker-mutator/core": "^3.2.4",
|
"@stryker-mutator/core": "^3.2.4",
|
||||||
"@stryker-mutator/javascript-mutator": "^3.2.4",
|
"@stryker-mutator/javascript-mutator": "^3.2.4",
|
||||||
"@stryker-mutator/jest-runner": "^3.2.4",
|
"@stryker-mutator/jest-runner": "^3.2.4",
|
||||||
|
@ -75,7 +76,6 @@
|
||||||
"adm-zip": "^0.4.13",
|
"adm-zip": "^0.4.13",
|
||||||
"autoprefixer": "^9.6.3",
|
"autoprefixer": "^9.6.3",
|
||||||
"babel-core": "7.0.0-bridge.0",
|
"babel-core": "7.0.0-bridge.0",
|
||||||
"babel-eslint": "^10.0.3",
|
|
||||||
"babel-jest": "^24.9.0",
|
"babel-jest": "^24.9.0",
|
||||||
"babel-loader": "^8.0.6",
|
"babel-loader": "^8.0.6",
|
||||||
"babel-plugin-named-asset-import": "^0.3.4",
|
"babel-plugin-named-asset-import": "^0.3.4",
|
||||||
|
@ -89,17 +89,8 @@
|
||||||
"dotenv-expand": "^5.1.0",
|
"dotenv-expand": "^5.1.0",
|
||||||
"enzyme": "^3.11.0",
|
"enzyme": "^3.11.0",
|
||||||
"enzyme-adapter-react-16": "^1.15.2",
|
"enzyme-adapter-react-16": "^1.15.2",
|
||||||
"eslint": "^5.11.1",
|
"eslint": "^6.8.0",
|
||||||
"eslint-config-adidas-babel": "^1.1.0",
|
|
||||||
"eslint-config-adidas-env": "^1.1.0",
|
|
||||||
"eslint-config-adidas-es6": "^1.2.0",
|
|
||||||
"eslint-config-adidas-react": "^1.1.1",
|
|
||||||
"eslint-loader": "^3.0.2",
|
"eslint-loader": "^3.0.2",
|
||||||
"eslint-plugin-import": "^2.18.2",
|
|
||||||
"eslint-plugin-jest": "^22.17.0",
|
|
||||||
"eslint-plugin-jsx-a11y": "^6.2.3",
|
|
||||||
"eslint-plugin-promise": "^4.2.1",
|
|
||||||
"eslint-plugin-react": "^7.16.0",
|
|
||||||
"file-loader": "^4.2.0",
|
"file-loader": "^4.2.0",
|
||||||
"fork-ts-checker-webpack-plugin-alt": "^0.4.14",
|
"fork-ts-checker-webpack-plugin-alt": "^0.4.14",
|
||||||
"fs-extra": "^8.1.0",
|
"fs-extra": "^8.1.0",
|
||||||
|
@ -134,6 +125,8 @@
|
||||||
"stylelint-scss": "^3.11.1",
|
"stylelint-scss": "^3.11.1",
|
||||||
"sw-precache-webpack-plugin": "^0.11.5",
|
"sw-precache-webpack-plugin": "^0.11.5",
|
||||||
"terser-webpack-plugin": "^2.1.2",
|
"terser-webpack-plugin": "^2.1.2",
|
||||||
|
"ts-jest": "^26.0.0",
|
||||||
|
"typescript": "^3.9.3",
|
||||||
"url-loader": "^2.2.0",
|
"url-loader": "^2.2.0",
|
||||||
"webpack": "^4.41.0",
|
"webpack": "^4.41.0",
|
||||||
"webpack-dev-server": "^3.8.2",
|
"webpack-dev-server": "^3.8.2",
|
||||||
|
|
|
@ -10,7 +10,7 @@ const propTypes = {
|
||||||
|
|
||||||
// FIXME Replace with typescript: (ServersImporter)
|
// FIXME Replace with typescript: (ServersImporter)
|
||||||
const ImportServersBtn = ({ importServersFromFile }) => {
|
const ImportServersBtn = ({ importServersFromFile }) => {
|
||||||
const ImportServersBtnComp = ({ createServers, fileRef, onImport = () => {} }) => {
|
const ImportServersBtnComp = ({ createServers, fileRef, onImport = () => '' }) => {
|
||||||
const ref = fileRef || useRef();
|
const ref = fileRef || useRef();
|
||||||
const onChange = ({ target }) =>
|
const onChange = ({ target }) =>
|
||||||
importServersFromFile(target.files[0])
|
importServersFromFile(target.files[0])
|
||||||
|
|
|
@ -33,7 +33,7 @@ export default class ColorGenerator {
|
||||||
this.storage.set('colors', this.colors);
|
this.storage.set('colors', this.colors);
|
||||||
|
|
||||||
return color;
|
return color;
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export const colorGeneratorType = PropTypes.shape({
|
export const colorGeneratorType = PropTypes.shape({
|
||||||
|
|
|
@ -106,14 +106,14 @@ const generateDataset = (stats, label, color) => ({
|
||||||
|
|
||||||
const LineChartCard = ({ title, visits, highlightedVisits, highlightedLabel = 'Selected' }) => {
|
const LineChartCard = ({ title, visits, highlightedVisits, highlightedLabel = 'Selected' }) => {
|
||||||
const [ step, setStep ] = useState(
|
const [ step, setStep ] = useState(
|
||||||
visits.length > 0 ? determineInitialStep(visits[visits.length - 1].date) : 'monthly'
|
visits.length > 0 ? determineInitialStep(visits[visits.length - 1].date) : 'monthly',
|
||||||
);
|
);
|
||||||
const [ skipNoVisits, toggleSkipNoVisits ] = useToggle(true);
|
const [ skipNoVisits, toggleSkipNoVisits ] = useToggle(true);
|
||||||
|
|
||||||
const groupedVisitsWithGaps = useMemo(() => groupVisitsByStep(step, reverse(visits)), [ step, visits ]);
|
const groupedVisitsWithGaps = useMemo(() => groupVisitsByStep(step, reverse(visits)), [ step, visits ]);
|
||||||
const [ labels, groupedVisits ] = useMemo(
|
const [ labels, groupedVisits ] = useMemo(
|
||||||
() => generateLabelsAndGroupedVisits(visits, groupedVisitsWithGaps, step, skipNoVisits),
|
() => generateLabelsAndGroupedVisits(visits, groupedVisitsWithGaps, step, skipNoVisits),
|
||||||
[ visits, step, skipNoVisits ]
|
[ visits, step, skipNoVisits ],
|
||||||
);
|
);
|
||||||
const groupedHighlighted = useMemo(
|
const groupedHighlighted = useMemo(
|
||||||
() => fillTheGaps(groupVisitsByStep(step, reverse(highlightedVisits)), labels),
|
() => fillTheGaps(groupVisitsByStep(step, reverse(highlightedVisits)), labels),
|
||||||
|
|
35
tsconfig.json
Normal file
35
tsconfig.json
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"allowJs": true,
|
||||||
|
"allowSyntheticDefaultImports": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"lib": [
|
||||||
|
"dom",
|
||||||
|
"es2019"
|
||||||
|
],
|
||||||
|
"module": "esnext",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"noEmit": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"noUnusedParameters": true,
|
||||||
|
"preserveConstEnums": true,
|
||||||
|
"removeComments": false,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"strict": true,
|
||||||
|
"target": "esnext",
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true
|
||||||
|
},
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"**/*.spec.*"
|
||||||
|
],
|
||||||
|
"include": [
|
||||||
|
"*.d.ts",
|
||||||
|
"**/*.ts",
|
||||||
|
"**/*.tsx"
|
||||||
|
]
|
||||||
|
}
|
Loading…
Reference in a new issue