diff --git a/.circleci/config.yml b/.circleci/config.yml index a326ec9..9864435 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -44,12 +44,10 @@ jobs: key: v10-dependencies-{{ checksum "yarn.lock" }} # run tests! + - run: yarn lint - run: yarn build - - run: cd packages/vue-apollo-option && yarn lint - run: cd packages/vue-apollo-option && yarn test:types - run: cd packages/vue-apollo-option && yarn test:unit - - run: cd packages/vue-apollo-components && yarn lint - - run: cd packages/vue-apollo-composable && yarn lint - run: cd packages/vue-apollo-composable && yarn test:types - run: cd packages/test-e2e && yarn test:e2e - run: cd packages/test-e2e-composition && yarn test:e2e diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..8d886a1 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,89 @@ +module.exports = { + root: true, + env: { + browser: true, + }, + extends: [ + 'plugin:vue/recommended', + '@vue/standard', + '@vue/typescript/recommended', + ], + parserOptions: { + ecmaVersion: 2020, + }, + globals: { + name: 'off', + }, + rules: { + 'vue/html-closing-bracket-newline': [ + 'error', + { + singleline: 'never', + multiline: 'always', + }, + ], + 'no-var': ['error'], + '@typescript-eslint/member-delimiter-style': [ + 'error', + { + multiline: { + delimiter: 'none', + }, + singleline: { + delimiter: 'comma', + }, + }, + ], + '@typescript-eslint/no-use-before-define': 'off', + 'comma-dangle': ['error', 'always-multiline'], + 'vue/no-multiple-template-root': 'off', + indent: 'off', + '@typescript-eslint/indent': ['error', 2], + quotes: ['error', 'single', { allowTemplateLiterals: true }], + 'no-use-before-define': 'warn', + 'accessor-pairs': 'off', + 'no-async-promise-executor': 'off', + '@typescript-eslint/no-empty-function': 'warn', + 'no-return-assign': 'off', + 'multiline-ternary': 'off', + }, + overrides: [ + { + files: ['*.vue'], + rules: { + '@typescript-eslint/no-unused-vars': 'off', + }, + }, + { + files: [ + 'packages/*/server.js', + 'packages/*/apollo.config.js', + 'packages/*/apollo-server/**/*', + 'packages/*/tests/**/*.js', + 'packages/*/build/**/*.js', + 'packages/*/lib/**/*.js', + ], + rules: { + '@typescript-eslint/no-var-requires': 'off', + }, + }, + { + files: [ + '**/*.test.ts', + 'packages/*/types/test/**/*.ts', + ], + rules: { + camelcase: 'off', + 'no-unused-expressions': 'off', + 'array-callback-return': 'warn', + }, + }, + ], + ignorePatterns: [ + 'node_modules/', + 'dist/', + 'generated/', + '!.*', + 'schema.graphql', + ], +} diff --git a/package.json b/package.json index 05ea839..3cd68a5 100644 --- a/package.json +++ b/package.json @@ -8,14 +8,25 @@ "scripts": { "build": "lerna run build --concurrency 1 --scope \"{vue-apollo,@vue/apollo}*\"", "test": "lerna run test --concurrency 1", - "lint": "lerna run lint", + "lint": "eslint . --ext js,vue,ts", "release": "lerna publish" }, "devDependencies": { + "@typescript-eslint/eslint-plugin": "^4.2.0", + "@typescript-eslint/parser": "^4.2.0", + "@vue/eslint-config-standard": "^6.0.0", + "@vue/eslint-config-typescript": "^7.0.0", "core-js": "^3.4.1", "esbuild": "^0.8.44", "esbuild-node-externals": "^1.0.2", - "lerna": "^3.18.4" + "eslint": "^7.19.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^4.2.1", + "eslint-plugin-standard": "^5.0.0", + "eslint-plugin-vue": "^7.5.0", + "lerna": "^3.18.4", + "typescript": "^4.1.5" }, "resolutions": { "eslint-scope": "^5.0.0", diff --git a/packages/docs/src/.vuepress/components/sponsor-button.vue b/packages/docs/src/.vuepress/components/sponsor-button.vue index 7eec310..ec25b92 100644 --- a/packages/docs/src/.vuepress/components/sponsor-button.vue +++ b/packages/docs/src/.vuepress/components/sponsor-button.vue @@ -1,6 +1,11 @@