From 59adb2c616f7436b8cc7194278916cc4555e2db7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 23 Sep 2020 23:31:06 +0200 Subject: [PATCH 1/8] add eslint --- .eslintignore | 2 + .eslintrc.js | 45 +++++ package.json | 8 + yarn.lock | 540 ++++++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 576 insertions(+), 19 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..3cff7ede --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +**/*.css +**/*.json diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..3c8f03ef --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,45 @@ +module.exports = { + plugins: ['html', 'cypress'], + + parserOptions: { + parser: '@typescript-eslint/parser', + sourceType: 'module', + }, + + env: { + es6: true, + node: true, + 'cypress/globals': true, + }, + + globals: { + document: false, + window: false, + }, + + extends: [ + 'plugin:vue/strongly-recommended', + 'airbnb-base', + ], + + rules: { + semi: ['error', 'never'], + 'import/extensions': 'off', + 'import/no-extraneous-dependencies': 'off', + 'import/no-unresolved': 'off', + 'import/no-dynamic-require': 'off', + 'arrow-parens': ['error', 'as-needed'], + 'padded-blocks': 'off', + 'class-methods-use-this': 'off', + 'global-require': 'off', + 'func-names': ['error', 'never'], + 'vue/this-in-template': ['error', 'never'], + 'vue/max-attributes-per-line': ['error', { + singleline: 3, + multiline: { + max: 1, + allowFirstLine: false, + }, + }], + }, +} diff --git a/package.json b/package.json index 855b4319..003a71a1 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "build:docs": "yarn --cwd ./docs build", "build:packages": "yarn clean:packages && lerna exec --parallel -- microbundle --compress", "clean:packages": "rm -rf ./packages/*/dist", + "lint": "eslint --quiet --no-error-on-unmatched-pattern ./", "test:open": "cypress open --project tests", "test": "cypress run --project tests", "reset": "yarn clean:packages && rm -rf ./**/.cache && rm -rf ./**/node_modules && rm -rf ./yarn.lock && yarn install" @@ -30,7 +31,14 @@ "@types/prosemirror-state": "^1.2.5", "@types/prosemirror-transform": "^1.1.1", "@types/prosemirror-view": "^1.15.0", + "@typescript-eslint/parser": "^4.2.0", "cypress": "^5.2.0", + "eslint": "^7.9.0", + "eslint-config-airbnb-base": "^14.2.0", + "eslint-plugin-cypress": "^2.11.1", + "eslint-plugin-html": "^6.1.0", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-vue": "^6.2.2", "lerna": "^3.22.1", "microbundle": "^0.12.3", "sass-loader": "^9.0.3", diff --git a/yarn.lock b/yarn.lock index 0a44aebf..aeee13fd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1023,6 +1023,22 @@ debug "^3.1.0" lodash.once "^4.1.1" +"@eslint/eslintrc@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" + integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@evocateur/libnpmaccess@^3.1.2": version "3.1.2" resolved "https://registry.yarnpkg.com/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz#ecf7f6ce6b004e9f942b098d92200be4a4b1c845" @@ -2199,6 +2215,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + "@types/minimatch@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" @@ -2385,6 +2406,51 @@ "@types/unist" "*" "@types/vfile-message" "*" +"@typescript-eslint/parser@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.2.0.tgz#1879ef400abd73d972e20f14c3522e5b343d1d1b" + integrity sha512-54jJ6MwkOtowpE48C0QJF9iTz2/NZxfKVJzv1ha5imigzHbNSLN9yvbxFFH1KdlRPQrlR8qxqyOvLHHxd397VA== + dependencies: + "@typescript-eslint/scope-manager" "4.2.0" + "@typescript-eslint/types" "4.2.0" + "@typescript-eslint/typescript-estree" "4.2.0" + debug "^4.1.1" + +"@typescript-eslint/scope-manager@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.2.0.tgz#d10e6854a65e175b22a28265d372a97c8cce4bfc" + integrity sha512-Tb402cxxObSxWIVT+PnBp5ruT2V/36yj6gG4C9AjkgRlZpxrLAzWDk3neen6ToMBGeGdxtnfFLoJRUecGz9mYQ== + dependencies: + "@typescript-eslint/types" "4.2.0" + "@typescript-eslint/visitor-keys" "4.2.0" + +"@typescript-eslint/types@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.2.0.tgz#6f6b094329e72040f173123832397c7c0b910fc8" + integrity sha512-xkv5nIsxfI/Di9eVwN+G9reWl7Me9R5jpzmZUch58uQ7g0/hHVuGUbbn4NcxcM5y/R4wuJIIEPKPDb5l4Fdmwg== + +"@typescript-eslint/typescript-estree@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.2.0.tgz#9d746240991c305bf225ad5e96cbf57e7fea0551" + integrity sha512-iWDLCB7z4MGkLipduF6EOotdHNtgxuNKnYD54nMS/oitFnsk4S3S/TE/UYXQTra550lHtlv9eGmp+dvN9pUDtA== + dependencies: + "@typescript-eslint/types" "4.2.0" + "@typescript-eslint/visitor-keys" "4.2.0" + debug "^4.1.1" + globby "^11.0.1" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/visitor-keys@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.2.0.tgz#ae13838e3a260b63ae51021ecaf1d0cdea8dbba5" + integrity sha512-WIf4BNOlFOH2W+YqGWa6YKLcK/EB3gEj2apCrqLw6mme1RzBy0jtJ9ewJgnrZDB640zfnv8L+/gwGH5sYp/rGw== + dependencies: + "@typescript-eslint/types" "4.2.0" + eslint-visitor-keys "^2.0.0" + "@vue/babel-helper-vue-jsx-merge-props@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040" @@ -2719,6 +2785,11 @@ acorn-globals@^6.0.0: acorn "^7.1.1" acorn-walk "^7.1.1" +acorn-jsx@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" @@ -2729,7 +2800,7 @@ acorn@^6.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== -acorn@^7.1.0, acorn@^7.1.1: +acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== @@ -2770,7 +2841,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: version "6.12.5" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== @@ -2802,6 +2873,11 @@ ansi-colors@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -2950,6 +3026,15 @@ array-ify@^1.0.0: resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -2972,6 +3057,14 @@ array-unique@^0.3.2: resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -3017,6 +3110,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -4164,6 +4262,11 @@ configstore@^5.0.1: write-file-atomic "^3.0.0" xdg-basedir "^4.0.0" +confusing-browser-globals@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" + integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== + connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" @@ -4196,6 +4299,11 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + content-disposition@0.5.3, content-disposition@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -4423,7 +4531,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -4791,7 +4899,7 @@ debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: dependencies: ms "^2.1.1" -debug@^4.1.0, debug@^4.1.1: +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== @@ -4910,7 +5018,7 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deep-is@~0.1.3: +deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= @@ -5070,6 +5178,21 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + dom-converter@^0.2: version "0.2.0" resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" @@ -5331,6 +5454,13 @@ enhanced-resolve@^4.0.0, enhanced-resolve@^4.3.0: memory-fs "^0.5.0" tapable "^1.0.0" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + entities@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" @@ -5377,7 +5507,7 @@ error-stack-parser@^2.0.0: dependencies: stackframe "^1.1.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: version "1.17.6" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== @@ -5475,6 +5605,73 @@ escodegen@^1.14.1: optionalDependencies: source-map "~0.6.1" +eslint-config-airbnb-base@^14.2.0: + version "14.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz#fe89c24b3f9dc8008c9c0d0d88c28f95ed65e9c4" + integrity sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q== + dependencies: + confusing-browser-globals "^1.0.9" + object.assign "^4.1.0" + object.entries "^1.1.2" + +eslint-import-resolver-node@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-cypress@^2.11.1: + version "2.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.11.1.tgz#a945e2774b88211e2c706a059d431e262b5c2862" + integrity sha512-MxMYoReSO5+IZMGgpBZHHSx64zYPSPTpXDwsgW7ChlJTF/sA+obqRbHplxD6sBStE+g4Mi0LCLkG4t9liu//mQ== + dependencies: + globals "^11.12.0" + +eslint-plugin-html@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-html/-/eslint-plugin-html-6.1.0.tgz#0e0d4845d4b3eb6e199652385e272f7b722673db" + integrity sha512-xcqithhnjUxoEDRL0hYci4RSS8EZ1NGr3/H8x3BxJvxgbu4R3YaEUea9i93j95NuAgoAbOUfNmybta8fqi4UbA== + dependencies: + htmlparser2 "^4.1.0" + +eslint-plugin-import@^2.22.0: + version "2.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-vue@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe" + integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== + dependencies: + natural-compare "^1.4.0" + semver "^5.6.0" + vue-eslint-parser "^7.0.0" + eslint-scope@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" @@ -5483,12 +5680,105 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" +eslint-scope@^5.0.0, eslint-scope@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@^7.9.0: + version "7.9.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337" + integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.1.3" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.3.0" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.19" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +espree@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esrecurse@^4.1.0: +esquery@^1.0.1, esquery@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== @@ -5500,7 +5790,7 @@ estraverse@^4.1.1, estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.2.0: +estraverse@^5.1.0, estraverse@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== @@ -5813,7 +6103,7 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -5864,6 +6154,13 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + file-loader@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" @@ -6011,6 +6308,20 @@ find-versions@^3.0.0: dependencies: semver-regex "^2.0.0" +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -6171,6 +6482,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + gauge@~2.7.3: version "2.7.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" @@ -6398,11 +6714,18 @@ global-dirs@^2.0.1: dependencies: ini "^1.3.5" -globals@^11.1.0: +globals@^11.1.0, globals@^11.12.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + globalyzer@^0.1.0: version "0.1.4" resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.4.tgz#bc8e273afe1ac7c24eea8def5b802340c5cc534f" @@ -6422,7 +6745,7 @@ globby@10.0.0: merge2 "^1.2.3" slash "^3.0.0" -globby@^11.0.0: +globby@^11.0.0, globby@^11.0.1: version "11.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== @@ -7203,7 +7526,7 @@ ignore@^3.3.5: resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== -ignore@^4.0.3: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== @@ -7276,7 +7599,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.1.0: +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== @@ -7808,6 +8131,11 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-svg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" @@ -8032,6 +8360,11 @@ json-schema@0.2.3: resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" @@ -8196,6 +8529,14 @@ levenary@^1.1.1: dependencies: leven "^3.1.0" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" @@ -8264,6 +8605,16 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -9211,6 +9562,11 @@ napi-build-utils@^1.0.1: resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -9589,6 +9945,15 @@ object.assign@^4.1.0: has-symbols "^1.0.1" object-keys "^1.1.1" +object.entries@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" + integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + has "^1.0.3" + object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" @@ -9604,7 +9969,7 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" -object.values@^1.1.0: +object.values@^1.1.0, object.values@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== @@ -9672,6 +10037,18 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + orderedmap@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-1.1.1.tgz#c618e77611b3b21d0fe3edc92586265e0059c789" @@ -10102,6 +10479,13 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + path-type@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -10177,6 +10561,13 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -10640,6 +11031,11 @@ prebuild-install@^5.3.4: tunnel-agent "^0.6.0" which-pm-runs "^1.0.0" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -10714,7 +11110,7 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= -progress@^2.0.3: +progress@^2.0.0, progress@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== @@ -11144,6 +11540,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -11170,6 +11574,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -11307,6 +11720,11 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + regexpu-core@^4.7.0: version "4.7.1" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" @@ -11568,7 +11986,7 @@ resolve@1.12.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.16.0, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.8.1: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.16.0, resolve@^1.17.0, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== @@ -11630,6 +12048,13 @@ rimraf@2, rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + rimraf@^3.0.0: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -11919,7 +12344,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2: +semver@^7.2.1, semver@^7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== @@ -12127,6 +12552,15 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -12647,6 +13081,11 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -12759,6 +13198,16 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + tapable@2.0.0-beta.5: version "2.0.0-beta.5" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.0.0-beta.5.tgz#51def4d94c58ad8fadf00cac7661216502fe9c70" @@ -12896,6 +13345,11 @@ text-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + thenify-all@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" @@ -13138,16 +13592,33 @@ ts-loader@^8.0.4: micromatch "^4.0.0" semver "^6.0.0" +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + tslib@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== -tslib@^1.10.0, tslib@^1.13.0, tslib@^1.9.0: +tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1, tslib@^1.9.0: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -13165,6 +13636,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -13650,6 +14128,11 @@ uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -13735,6 +14218,18 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +vue-eslint-parser@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz#9cdbcc823e656b087507a1911732b867ac101e83" + integrity sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q== + dependencies: + debug "^4.1.1" + eslint-scope "^5.0.0" + eslint-visitor-keys "^1.1.0" + espree "^6.2.1" + esquery "^1.0.1" + lodash "^4.17.15" + vue-github-button@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/vue-github-button/-/vue-github-button-1.2.0.tgz#5624a2807b16bdac61589f55503b8a492d2a9d5b" @@ -14039,7 +14534,7 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -word-wrap@~1.2.3: +word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== @@ -14129,6 +14624,13 @@ write-pkg@^3.1.0: sort-keys "^2.0.0" write-json-file "^2.2.0" +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + ws@^7.2.3: version "7.3.1" resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" From 5dff1c00d85731eeb2f1395c55df017bffbc5c52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 23 Sep 2020 23:38:11 +0200 Subject: [PATCH 2/8] fix some linting errors --- .eslintignore | 2 + babel.config.js | 2 +- docs/babel.config.js | 2 +- docs/gridsome.config.js | 8 +-- docs/gridsome.server.js | 20 ++++---- .../Examples/ExportHtmlOrJson/index.spec.js | 50 +++++++++---------- docs/src/demos/Examples/Focus/index.spec.js | 2 +- docs/src/demos/Examples/History/index.spec.js | 4 +- .../Examples/MarkdownShortcuts/index.spec.js | 2 +- .../src/demos/Examples/ReadOnly/index.spec.js | 2 +- docs/src/demos/Examples/Simple/index.spec.js | 2 +- .../demos/Extensions/Blockquote/index.spec.js | 2 +- docs/src/demos/Extensions/Bold/index.spec.js | 2 +- .../demos/Extensions/BulletList/index.spec.js | 2 +- docs/src/demos/Extensions/Code/index.spec.js | 2 +- .../demos/Extensions/CodeBlock/index.spec.js | 2 +- .../demos/Extensions/Document/index.spec.js | 2 +- .../demos/Extensions/HardBreak/index.spec.js | 2 +- .../demos/Extensions/Heading/index.spec.js | 2 +- .../demos/Extensions/History/index.spec.js | 2 +- .../Extensions/HorizontalRule/index.spec.js | 2 +- .../src/demos/Extensions/Italic/index.spec.js | 2 +- docs/src/demos/Extensions/Link/index.spec.js | 2 +- .../demos/Extensions/ListItem/index.spec.js | 2 +- .../Extensions/OrderedList/index.spec.js | 2 +- .../demos/Extensions/Paragraph/index.spec.js | 2 +- .../src/demos/Extensions/Strike/index.spec.js | 2 +- docs/src/demos/Extensions/Text/index.spec.js | 2 +- .../demos/Extensions/Underline/index.spec.js | 2 +- docs/src/main.js | 3 +- packages/html/example.js | 23 +++++---- tests/cypress/support/commands.js | 2 +- 32 files changed, 82 insertions(+), 78 deletions(-) diff --git a/.eslintignore b/.eslintignore index 3cff7ede..7d758b7b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,4 @@ +dist/** +tests/** **/*.css **/*.json diff --git a/babel.config.js b/babel.config.js index 6e5192b8..ba993da5 100644 --- a/babel.config.js +++ b/babel.config.js @@ -5,4 +5,4 @@ module.exports = { plugins: [ '@babel/plugin-proposal-optional-chaining', ], -} \ No newline at end of file +} diff --git a/docs/babel.config.js b/docs/babel.config.js index 017d1e3b..30a18002 100644 --- a/docs/babel.config.js +++ b/docs/babel.config.js @@ -6,4 +6,4 @@ module.exports = { plugins: [ '@babel/plugin-proposal-optional-chaining', ], -} \ No newline at end of file +} diff --git a/docs/gridsome.config.js b/docs/gridsome.config.js index 3ca44c68..c65c4c6a 100644 --- a/docs/gridsome.config.js +++ b/docs/gridsome.config.js @@ -30,10 +30,10 @@ module.exports = { autolinkHeadings: { content: { type: 'text', - value: '#' - } - } - } + value: '#', + }, + }, + }, }, }, { diff --git a/docs/gridsome.server.js b/docs/gridsome.server.js index 7d9bfde2..480a422b 100644 --- a/docs/gridsome.server.js +++ b/docs/gridsome.server.js @@ -20,9 +20,9 @@ const packages = globby.sync('../packages/*', { onlyDirectories: true }) excludePrivate: true, // excludeNotDocumented: true, exclude: [ - "**/*.test.ts", - "**/__tests__/*", - "**/__mocks__/*" + '**/*.test.ts', + '**/__tests__/*', + '**/__mocks__/*', ], }) @@ -68,16 +68,16 @@ module.exports = function (api) { config.module .rule('typescript') - .test(/\.tsx?$/) - .use() - .loader('ts-loader') - .options({ transpileOnly: false, appendTsSuffixTo: [/\.vue$/] }) + .test(/\.tsx?$/) + .use() + .loader('ts-loader') + .options({ transpileOnly: false, appendTsSuffixTo: [/\.vue$/] }) config.module .rule('jsx') - .test(/\.jsx?$/) - .use() - .loader('babel-loader') + .test(/\.jsx?$/) + .use() + .loader('babel-loader') globby.sync('../packages/*', { onlyDirectories: true }) .map(name => name.replace('../packages/', '')) diff --git a/docs/src/demos/Examples/ExportHtmlOrJson/index.spec.js b/docs/src/demos/Examples/ExportHtmlOrJson/index.spec.js index 2e51a3dd..31e36b4b 100644 --- a/docs/src/demos/Examples/ExportHtmlOrJson/index.spec.js +++ b/docs/src/demos/Examples/ExportHtmlOrJson/index.spec.js @@ -8,44 +8,44 @@ context('/examples/export-html-or-json', () => { const json = editor.json() expect(json).to.deep.equal({ - 'type': 'document', - 'content': [ + type: 'document', + content: [ { - 'type': 'paragraph', - 'content': [ + type: 'paragraph', + content: [ { - 'type': 'text', - 'text': 'You are able to export your data as ' + type: 'text', + text: 'You are able to export your data as ', }, { - 'type': 'text', - 'marks': [ + type: 'text', + marks: [ { - 'type': 'code' - } + type: 'code', + }, ], - 'text': 'HTML' + text: 'HTML', }, { - 'type': 'text', - 'text': ' or ' + type: 'text', + text: ' or ', }, { - 'type': 'text', - 'marks': [ + type: 'text', + marks: [ { - 'type': 'code' - } + type: 'code', + }, ], - 'text': 'JSON' + text: 'JSON', }, { - 'type': 'text', - 'text': '.' - } - ] - } - ] + type: 'text', + text: '.', + }, + ], + }, + ], }) }) }) @@ -57,4 +57,4 @@ context('/examples/export-html-or-json', () => { expect(html).to.equal('

You are able to export your data as HTML or JSON.

') }) }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Examples/Focus/index.spec.js b/docs/src/demos/Examples/Focus/index.spec.js index fd963af4..f36629de 100644 --- a/docs/src/demos/Examples/Focus/index.spec.js +++ b/docs/src/demos/Examples/Focus/index.spec.js @@ -10,4 +10,4 @@ context('/examples/focus', () => { cy.get('.ProseMirror p:first').should('have.class', 'has-focus') }) }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Examples/History/index.spec.js b/docs/src/demos/Examples/History/index.spec.js index dd7ffd92..cafd08c9 100644 --- a/docs/src/demos/Examples/History/index.spec.js +++ b/docs/src/demos/Examples/History/index.spec.js @@ -4,7 +4,7 @@ context('/examples/history', () => { }) it('should not have a mistake', () => { - cy.get('.ProseMirror').then(([{ editor }]) => { + cy.get('.ProseMirror').then(() => { cy.get('.ProseMirror h2:first').should('not.contain', 'Mistake') }) }) @@ -22,4 +22,4 @@ context('/examples/history', () => { cy.get('.ProseMirror h2:first').should('not.contain', 'Mistake') }) }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Examples/MarkdownShortcuts/index.spec.js b/docs/src/demos/Examples/MarkdownShortcuts/index.spec.js index 99223f00..d284e7b2 100644 --- a/docs/src/demos/Examples/MarkdownShortcuts/index.spec.js +++ b/docs/src/demos/Examples/MarkdownShortcuts/index.spec.js @@ -99,4 +99,4 @@ context('/examples/markdown-shortcuts', () => { .find('blockquote') .should('contain', 'foobar') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Examples/ReadOnly/index.spec.js b/docs/src/demos/Examples/ReadOnly/index.spec.js index 88e79df5..ed60f7c5 100644 --- a/docs/src/demos/Examples/ReadOnly/index.spec.js +++ b/docs/src/demos/Examples/ReadOnly/index.spec.js @@ -22,4 +22,4 @@ context('/examples/read-only', () => { cy.get('.ProseMirror p:first').should('contain', 'Edited: ') }) }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Examples/Simple/index.spec.js b/docs/src/demos/Examples/Simple/index.spec.js index c518a16b..4d3c52e0 100644 --- a/docs/src/demos/Examples/Simple/index.spec.js +++ b/docs/src/demos/Examples/Simple/index.spec.js @@ -2,4 +2,4 @@ context('/examples/simple', () => { before(() => { cy.visit('/examples/simple') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Blockquote/index.spec.js b/docs/src/demos/Extensions/Blockquote/index.spec.js index 1e99b564..f5122dab 100644 --- a/docs/src/demos/Extensions/Blockquote/index.spec.js +++ b/docs/src/demos/Extensions/Blockquote/index.spec.js @@ -73,4 +73,4 @@ context('/api/extensions/blockquote', () => { .find('blockquote') .should('contain', 'Quote') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Bold/index.spec.js b/docs/src/demos/Extensions/Bold/index.spec.js index e6bf9edd..da2d4f48 100644 --- a/docs/src/demos/Extensions/Bold/index.spec.js +++ b/docs/src/demos/Extensions/Bold/index.spec.js @@ -58,4 +58,4 @@ context('/api/extensions/bold', () => { .find('strong') .should('contain', 'Bold') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/BulletList/index.spec.js b/docs/src/demos/Extensions/BulletList/index.spec.js index f58bb113..2636ba56 100644 --- a/docs/src/demos/Extensions/BulletList/index.spec.js +++ b/docs/src/demos/Extensions/BulletList/index.spec.js @@ -128,4 +128,4 @@ context('/api/extensions/bullet-list', () => { .find('p') .should('contain', '* Example') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Code/index.spec.js b/docs/src/demos/Extensions/Code/index.spec.js index 1e409cf5..2b48929d 100644 --- a/docs/src/demos/Extensions/Code/index.spec.js +++ b/docs/src/demos/Extensions/Code/index.spec.js @@ -32,4 +32,4 @@ context('/api/extensions/code', () => { cy.get('.ProseMirror code') .should('not.exist') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/CodeBlock/index.spec.js b/docs/src/demos/Extensions/CodeBlock/index.spec.js index b8a97ede..56585632 100644 --- a/docs/src/demos/Extensions/CodeBlock/index.spec.js +++ b/docs/src/demos/Extensions/CodeBlock/index.spec.js @@ -64,4 +64,4 @@ context('/api/extensions/code-block', () => { .find('pre') .should('contain', 'Code') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Document/index.spec.js b/docs/src/demos/Extensions/Document/index.spec.js index 907f9b74..e5480a1b 100644 --- a/docs/src/demos/Extensions/Document/index.spec.js +++ b/docs/src/demos/Extensions/Document/index.spec.js @@ -2,4 +2,4 @@ context('/api/extensions/document', () => { before(() => { cy.visit('/api/extensions/document') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/HardBreak/index.spec.js b/docs/src/demos/Extensions/HardBreak/index.spec.js index 62edd304..9cb12634 100644 --- a/docs/src/demos/Extensions/HardBreak/index.spec.js +++ b/docs/src/demos/Extensions/HardBreak/index.spec.js @@ -41,4 +41,4 @@ context('/api/extensions/hard-break', () => { cy.get('.ProseMirror br') .should('exist') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Heading/index.spec.js b/docs/src/demos/Extensions/Heading/index.spec.js index 0dc1ca49..82df0de4 100644 --- a/docs/src/demos/Extensions/Heading/index.spec.js +++ b/docs/src/demos/Extensions/Heading/index.spec.js @@ -74,4 +74,4 @@ context('/api/extensions/heading', () => { .find('h1') .should('contain', 'Headline') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/History/index.spec.js b/docs/src/demos/Extensions/History/index.spec.js index a5356f59..ab1b18b5 100644 --- a/docs/src/demos/Extensions/History/index.spec.js +++ b/docs/src/demos/Extensions/History/index.spec.js @@ -37,7 +37,7 @@ context('/api/extensions/history', () => { .should('not.contain', 'Mistake') cy.get('.demo__preview button:nth-child(2)') - .click() + .click() cy.get('.ProseMirror') .should('contain', 'Mistake') diff --git a/docs/src/demos/Extensions/HorizontalRule/index.spec.js b/docs/src/demos/Extensions/HorizontalRule/index.spec.js index 0213a48d..0f700668 100644 --- a/docs/src/demos/Extensions/HorizontalRule/index.spec.js +++ b/docs/src/demos/Extensions/HorizontalRule/index.spec.js @@ -49,4 +49,4 @@ context('/api/extensions/horizontal-rule', () => { .should('exist') }) }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Italic/index.spec.js b/docs/src/demos/Extensions/Italic/index.spec.js index d6513035..0bd952ac 100644 --- a/docs/src/demos/Extensions/Italic/index.spec.js +++ b/docs/src/demos/Extensions/Italic/index.spec.js @@ -47,4 +47,4 @@ context('/api/extensions/italic', () => { .find('em') .should('not.exist') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Link/index.spec.js b/docs/src/demos/Extensions/Link/index.spec.js index dee73154..6fcc747c 100644 --- a/docs/src/demos/Extensions/Link/index.spec.js +++ b/docs/src/demos/Extensions/Link/index.spec.js @@ -9,4 +9,4 @@ context('/api/extensions/link', () => { editor.selectAll() }) }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/ListItem/index.spec.js b/docs/src/demos/Extensions/ListItem/index.spec.js index 19aa202d..798b7b97 100644 --- a/docs/src/demos/Extensions/ListItem/index.spec.js +++ b/docs/src/demos/Extensions/ListItem/index.spec.js @@ -2,4 +2,4 @@ context('/api/extensions/list-item', () => { before(() => { cy.visit('/api/extensions/list-item') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/OrderedList/index.spec.js b/docs/src/demos/Extensions/OrderedList/index.spec.js index aeab1b8b..a6d58920 100644 --- a/docs/src/demos/Extensions/OrderedList/index.spec.js +++ b/docs/src/demos/Extensions/OrderedList/index.spec.js @@ -94,4 +94,4 @@ context('/api/extensions/ordered-list', () => { .find('p') .should('contain', '1. Example') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Paragraph/index.spec.js b/docs/src/demos/Extensions/Paragraph/index.spec.js index 45d75355..734f9d31 100644 --- a/docs/src/demos/Extensions/Paragraph/index.spec.js +++ b/docs/src/demos/Extensions/Paragraph/index.spec.js @@ -42,4 +42,4 @@ context('/api/extensions/paragraph', () => { .find('p') .should('have.length', 1) }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Strike/index.spec.js b/docs/src/demos/Extensions/Strike/index.spec.js index dfe5bfd7..ad51e03f 100644 --- a/docs/src/demos/Extensions/Strike/index.spec.js +++ b/docs/src/demos/Extensions/Strike/index.spec.js @@ -55,4 +55,4 @@ context('/api/extensions/strike', () => { .find('s') .should('contain', 'Strike') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Text/index.spec.js b/docs/src/demos/Extensions/Text/index.spec.js index d7824d26..a9d851de 100644 --- a/docs/src/demos/Extensions/Text/index.spec.js +++ b/docs/src/demos/Extensions/Text/index.spec.js @@ -15,4 +15,4 @@ context('/api/extensions/text', () => { .find('p') .should('contain', 'Example Text') }) -}) \ No newline at end of file +}) diff --git a/docs/src/demos/Extensions/Underline/index.spec.js b/docs/src/demos/Extensions/Underline/index.spec.js index 32694fb9..19a28377 100644 --- a/docs/src/demos/Extensions/Underline/index.spec.js +++ b/docs/src/demos/Extensions/Underline/index.spec.js @@ -48,4 +48,4 @@ context('/api/extensions/underline', () => { .find('u') .should('not.exist') }) -}) \ No newline at end of file +}) diff --git a/docs/src/main.js b/docs/src/main.js index ceb96a51..d1ef1255 100644 --- a/docs/src/main.js +++ b/docs/src/main.js @@ -1,3 +1,4 @@ +// eslint-disable-next-line import Prism from 'prismjs' import 'prismjs/components/prism-jsx.js' import 'prismjs/components/prism-scss.js' @@ -6,7 +7,7 @@ import Demo from '~/components/Demo' import Tab from '~/components/Tab' import ReactRenderer from '~/components/ReactRenderer' -export default function (Vue, { router, head, isClient }) { +export default function (Vue) { Vue.component('Layout', App) Vue.component('Demo', Demo) Vue.component('Tab', Tab) diff --git a/packages/html/example.js b/packages/html/example.js index d5850526..44f84326 100644 --- a/packages/html/example.js +++ b/packages/html/example.js @@ -4,20 +4,21 @@ import Document from '@tiptap/extension-document' import Paragraph from '@tiptap/extension-paragraph' import Text from '@tiptap/extension-text' +// eslint-disable-next-line const html = generateHtml({ - 'type': 'document', - 'content': [{ - 'type': 'paragraph', - 'attrs': { - 'align': 'left' + type: 'document', + content: [{ + type: 'paragraph', + attrs: { + align: 'left', }, - 'content': [{ - 'type': 'text', - 'text': 'Example Text' - }] - }] + content: [{ + type: 'text', + text: 'Example Text', + }], + }], }, [ new Document(), new Paragraph(), new Text(), -]) \ No newline at end of file +]) diff --git a/tests/cypress/support/commands.js b/tests/cypress/support/commands.js index 4993fccf..6b80b911 100644 --- a/tests/cypress/support/commands.js +++ b/tests/cypress/support/commands.js @@ -69,4 +69,4 @@ Cypress.Commands.overwrite('click', (originalFn, element, text, options) => { const newOptions = defaults(options, 'force', true) return originalFn(element, text, newOptions) -}) \ No newline at end of file +}) From 08955550546380573617a075a2da22f12fd7d586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 23 Sep 2020 23:39:13 +0200 Subject: [PATCH 3/8] add .editorconfig --- .editorconfig | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..525cb6d4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# EditorConfig is awesome: http://EditorConfig.org + +root = true + +[*] +end_of_line = lf +charset = utf-8 +insert_final_newline = true +max_line_length = 100 + +[*.{html,ts,js,jsx,css,scss,vue}] +trim_trailing_whitespace = true +indent_style = space +indent_size = 2 From aefb4ca8e67c910e775e51d91a679ea0a3fe25ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 24 Sep 2020 00:06:12 +0200 Subject: [PATCH 4/8] improve eslint config --- .eslintrc.js | 5 ++++- package.json | 3 ++- yarn.lock | 31 ++++++++++++++++++++++++++++--- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 3c8f03ef..9f7aa29a 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,5 +1,5 @@ module.exports = { - plugins: ['html', 'cypress'], + plugins: ['html', 'cypress', '@typescript-eslint'], parserOptions: { parser: '@typescript-eslint/parser', @@ -33,6 +33,7 @@ module.exports = { 'class-methods-use-this': 'off', 'global-require': 'off', 'func-names': ['error', 'never'], + 'arrow-body-style': 'off', 'vue/this-in-template': ['error', 'never'], 'vue/max-attributes-per-line': ['error', { singleline: 3, @@ -41,5 +42,7 @@ module.exports = { allowFirstLine: false, }, }], + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': ['error'], }, } diff --git a/package.json b/package.json index 003a71a1..67db0426 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "build:docs": "yarn --cwd ./docs build", "build:packages": "yarn clean:packages && lerna exec --parallel -- microbundle --compress", "clean:packages": "rm -rf ./packages/*/dist", - "lint": "eslint --quiet --no-error-on-unmatched-pattern ./", + "lint": "eslint --quiet --no-error-on-unmatched-pattern --ext .js,.jsx,.ts,.vue ./docs ./packages", "test:open": "cypress open --project tests", "test": "cypress run --project tests", "reset": "yarn clean:packages && rm -rf ./**/.cache && rm -rf ./**/node_modules && rm -rf ./yarn.lock && yarn install" @@ -31,6 +31,7 @@ "@types/prosemirror-state": "^1.2.5", "@types/prosemirror-transform": "^1.1.1", "@types/prosemirror-view": "^1.15.0", + "@typescript-eslint/eslint-plugin": "^4.2.0", "@typescript-eslint/parser": "^4.2.0", "cypress": "^5.2.0", "eslint": "^7.9.0", diff --git a/yarn.lock b/yarn.lock index aeee13fd..869185df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2210,7 +2210,7 @@ "@types/parse5" "*" "@types/tough-cookie" "*" -"@types/json-schema@^7.0.5": +"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5": version "7.0.6" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== @@ -2406,6 +2406,31 @@ "@types/unist" "*" "@types/vfile-message" "*" +"@typescript-eslint/eslint-plugin@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.2.0.tgz#a3d5c11b377b7e18f3cd9c4e87d465fe9432669b" + integrity sha512-zBNRkzvLSwo6y5TG0DVcmshZIYBHKtmzD4N+LYnfTFpzc4bc79o8jNRSb728WV7A4Cegbs+MV5IRAj8BKBgOVQ== + dependencies: + "@typescript-eslint/experimental-utils" "4.2.0" + "@typescript-eslint/scope-manager" "4.2.0" + debug "^4.1.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + semver "^7.3.2" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.2.0.tgz#3d0b5cd4aa61f5eb7aa1e873dea0db1410b062d2" + integrity sha512-5BBj6BjgHEndBaQQpUVzRIPERz03LBc0MCQkHwUaH044FJFL08SwWv/sQftk7gf0ShZ2xZysz0LTwCwNt4Xu3w== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/scope-manager" "4.2.0" + "@typescript-eslint/types" "4.2.0" + "@typescript-eslint/typescript-estree" "4.2.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + "@typescript-eslint/parser@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.2.0.tgz#1879ef400abd73d972e20f14c3522e5b343d1d1b" @@ -5688,7 +5713,7 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.0: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^2.1.0: +eslint-utils@^2.0.0, eslint-utils@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== @@ -11720,7 +11745,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexpp@^3.1.0: +regexpp@^3.0.0, regexpp@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== From ac33eb483e862eca369ee91d55749369836842b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 24 Sep 2020 00:29:05 +0200 Subject: [PATCH 5/8] fix more linting errors --- .eslintrc.js | 4 ++ docs/src/components/Demo/index.vue | 14 ++--- docs/src/components/PageNavigation/index.vue | 4 +- docs/src/components/Prism/index.vue | 4 +- docs/src/components/ReactRenderer/index.vue | 4 +- docs/src/components/Tab/index.vue | 8 +-- docs/src/demos/Api/Schema/index.vue | 32 +++++----- docs/src/demos/Examples/Basic/index.vue | 4 +- .../demos/Examples/ExportHtmlOrJson/index.vue | 2 +- docs/src/demos/Examples/Focus/index.vue | 2 +- docs/src/demos/Examples/History/index.vue | 4 +- .../Examples/MarkdownShortcuts/index.vue | 4 +- docs/src/demos/Examples/ReadOnly/index.vue | 2 +- docs/src/demos/Examples/Simple/index.vue | 2 +- .../demos/ExtensionConfiguration/index.vue | 2 +- .../src/demos/Extensions/Blockquote/index.vue | 4 +- docs/src/demos/Extensions/Bold/index.vue | 4 +- .../src/demos/Extensions/BulletList/index.vue | 4 +- docs/src/demos/Extensions/Code/index.vue | 4 +- docs/src/demos/Extensions/CodeBlock/index.vue | 4 +- docs/src/demos/Extensions/Document/index.vue | 4 +- docs/src/demos/Extensions/HardBreak/index.vue | 4 +- docs/src/demos/Extensions/Heading/index.vue | 4 +- docs/src/demos/Extensions/History/index.vue | 4 +- .../demos/Extensions/HorizontalRule/index.vue | 4 +- docs/src/demos/Extensions/Italic/index.vue | 4 +- docs/src/demos/Extensions/Link/index.vue | 4 +- docs/src/demos/Extensions/ListItem/index.vue | 4 +- .../demos/Extensions/OrderedList/index.vue | 4 +- docs/src/demos/Extensions/Paragraph/index.vue | 4 +- docs/src/demos/Extensions/Strike/index.vue | 4 +- docs/src/demos/Extensions/Text/index.vue | 4 +- docs/src/demos/Extensions/Underline/index.vue | 4 +- docs/src/demos/General/Installation/index.vue | 2 +- .../src/demos/Guide/BuildYourEditor/index.vue | 2 +- docs/src/demos/Guide/GettingStarted/index.vue | 2 +- docs/src/demos/React/components/Editor.jsx | 8 ++- docs/src/demos/React/index.jsx | 58 +++++++++---------- docs/src/demos/SimpleMenuBar/index.vue | 2 +- docs/src/layouts/App/index.vue | 17 +++--- docs/src/templates/ApiPage/index.vue | 2 +- docs/src/templates/DocPage/index.vue | 2 +- packages/core/src/CommandManager.ts | 23 ++++---- packages/core/src/ComponentRenderer.ts | 2 +- packages/core/src/Editor.ts | 21 +++++-- packages/core/src/EventEmitter.ts | 2 +- packages/core/src/Extension.ts | 13 +++-- packages/core/src/ExtensionManager.ts | 29 +++++++--- packages/core/src/Mark.ts | 2 +- packages/core/src/commands/deleteSelection.ts | 2 +- packages/core/src/commands/focus.ts | 11 ++-- packages/core/src/commands/insertHTML.ts | 12 ++-- packages/core/src/commands/liftListItem.ts | 4 +- packages/core/src/commands/removeMark.ts | 8 ++- packages/core/src/commands/removeMarks.ts | 4 +- packages/core/src/commands/replaceWithNode.ts | 4 +- packages/core/src/commands/selectAll.ts | 2 +- .../core/src/commands/selectParentNode.ts | 2 +- packages/core/src/commands/setContent.ts | 4 +- packages/core/src/commands/sinkListItem.ts | 4 +- packages/core/src/commands/splitListItem.ts | 4 +- packages/core/src/commands/toggleList.ts | 2 +- packages/core/src/commands/toggleMark.ts | 4 +- packages/core/src/commands/toggleNode.ts | 4 +- packages/core/src/commands/updateMark.ts | 5 +- packages/core/src/inputRules/nodeInputRule.ts | 2 +- packages/core/src/pasteRules/markPasteRule.ts | 4 +- packages/core/src/plugins/editable.ts | 2 +- packages/core/src/plugins/focus.ts | 2 +- packages/core/src/plugins/index.ts | 4 +- packages/core/src/types.ts | 2 +- packages/core/src/utils/capitalize.ts | 2 +- packages/core/src/utils/elementFromString.ts | 4 +- packages/core/src/utils/generateHtml.ts | 2 +- packages/core/src/utils/getAllMethodNames.ts | 8 +-- .../core/src/utils/getHtmlFromFragment.ts | 3 +- .../core/src/utils/getMarksFromExtensions.ts | 4 +- .../core/src/utils/getNodesFromExtensions.ts | 4 +- packages/core/src/utils/getSchema.ts | 2 +- .../core/src/utils/getSchemaTypeByName.ts | 2 +- .../src/utils/getTopNodeFromExtensions.ts | 2 +- packages/core/src/utils/magicMethods.ts | 16 ++--- packages/core/src/utils/minMax.ts | 2 +- packages/core/src/utils/removeElement.ts | 2 +- .../core/src/utils/resolveExtensionConfig.ts | 2 +- packages/core/src/utils/sleep.ts | 2 +- packages/extension-blockquote/index.ts | 2 - packages/extension-bold/index.ts | 6 +- packages/extension-code-block/index.ts | 2 +- packages/extension-code/index.ts | 10 ++-- packages/extension-document/index.ts | 2 +- packages/extension-focus/index.ts | 2 +- packages/extension-hard-break/index.ts | 6 +- packages/extension-history/index.ts | 4 +- packages/extension-italic/index.ts | 6 +- packages/extension-ordered-list/index.ts | 2 +- packages/extension-paragraph/index.ts | 2 +- packages/extension-paragraph/paragraph.vue | 2 +- packages/extension-strike/index.ts | 12 ++-- packages/extension-text/index.ts | 2 +- packages/extension-underline/index.ts | 6 +- packages/html/getHtmlFromFragment.ts | 6 +- packages/starter-kit/index.ts | 2 +- packages/vue-starter-kit/index.ts | 5 +- packages/vue/index.ts | 2 +- packages/vue/src/Renderer.ts | 3 +- 106 files changed, 310 insertions(+), 274 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 9f7aa29a..d5a7a0c3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -34,6 +34,7 @@ module.exports = { 'global-require': 'off', 'func-names': ['error', 'never'], 'arrow-body-style': 'off', + 'max-len': 'off', 'vue/this-in-template': ['error', 'never'], 'vue/max-attributes-per-line': ['error', { singleline: 3, @@ -42,6 +43,9 @@ module.exports = { allowFirstLine: false, }, }], + 'no-param-reassign': 'off', + 'import/prefer-default-export': 'off', + 'consistent-return': 'off', 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': ['error'], }, diff --git a/docs/src/components/Demo/index.vue b/docs/src/components/Demo/index.vue index 0647a2cd..aa476198 100644 --- a/docs/src/components/Demo/index.vue +++ b/docs/src/components/Demo/index.vue @@ -23,7 +23,7 @@
- Demo/{{ this.name }} + Demo/{{ name }}
Edit on GitHub → @@ -31,7 +31,7 @@
- Could not find a demo called “{{ this.name }}”. + Could not find a demo called “{{ name }}”.
@@ -66,7 +66,7 @@ export default { hideSourceCode: { type: Boolean, default: false, - } + }, }, data() { @@ -106,7 +106,7 @@ export default { }, mounted() { - this.files = collect(require.context(`~/demos/`, true, /.+\..+$/).keys()) + this.files = collect(require.context('~/demos/', true, /.+\..+$/).keys()) .filter(path => path.startsWith(`./${this.name}`)) .map(path => path.replace('./', '')) .map(path => { @@ -120,13 +120,13 @@ export default { highlight: this.syntax[extension] || extension, } }) - .filter((item) => { + .filter(item => { return ['vue', 'jsx', 'scss'].includes(item.extension) }) .sortBy(item => item.path.split('/').length) .toArray() - } + }, } - \ No newline at end of file + diff --git a/docs/src/components/Prism/index.vue b/docs/src/components/Prism/index.vue index 5deb2bd2..8c336bbc 100644 --- a/docs/src/components/Prism/index.vue +++ b/docs/src/components/Prism/index.vue @@ -34,11 +34,11 @@ export default { methods: { highlightCode() { Prism.highlightAllUnder(this.$el) - } + }, }, mounted() { this.highlightCode() }, } - \ No newline at end of file + diff --git a/docs/src/components/ReactRenderer/index.vue b/docs/src/components/ReactRenderer/index.vue index a54a8ace..b78f22fb 100644 --- a/docs/src/components/ReactRenderer/index.vue +++ b/docs/src/components/ReactRenderer/index.vue @@ -10,7 +10,7 @@ export default { props: { component: { required: true, - } + }, }, mounted() { @@ -21,4 +21,4 @@ export default { ReactDOM.unmountComponentAtNode(this.$el) }, } - \ No newline at end of file + diff --git a/docs/src/components/Tab/index.vue b/docs/src/components/Tab/index.vue index 057309a9..7af19c14 100644 --- a/docs/src/components/Tab/index.vue +++ b/docs/src/components/Tab/index.vue @@ -8,18 +8,18 @@ import { outdent } from '@mvasilkov/outdent' export default { data() { return { - formattedCode: null + formattedCode: null, } }, methods: { updateCode() { - const text = this.$slots.default[0].text + const { text } = this.$slots.default[0] if (text) { this.formattedCode = outdent(text) } - } + }, }, beforeUpdate() { @@ -30,4 +30,4 @@ export default { this.updateCode() }, } - \ No newline at end of file + diff --git a/docs/src/demos/Api/Schema/index.vue b/docs/src/demos/Api/Schema/index.vue index 9003dd36..a2d47419 100644 --- a/docs/src/demos/Api/Schema/index.vue +++ b/docs/src/demos/Api/Schema/index.vue @@ -1,5 +1,5 @@ \ No newline at end of file + diff --git a/docs/src/demos/Examples/Basic/index.vue b/docs/src/demos/Examples/Basic/index.vue index ea2ab8c2..ac98419d 100644 --- a/docs/src/demos/Examples/Basic/index.vue +++ b/docs/src/demos/Examples/Basic/index.vue @@ -83,7 +83,7 @@ export default { mounted() { this.editor = new Editor({ extensions: defaultExtensions(), - content: ` + content: `

Hi there,

@@ -112,4 +112,4 @@ export default { this.editor.destroy() }, } - \ No newline at end of file + diff --git a/docs/src/demos/Examples/ExportHtmlOrJson/index.vue b/docs/src/demos/Examples/ExportHtmlOrJson/index.vue index fbb6bd27..c10b0369 100644 --- a/docs/src/demos/Examples/ExportHtmlOrJson/index.vue +++ b/docs/src/demos/Examples/ExportHtmlOrJson/index.vue @@ -88,4 +88,4 @@ export default { } - - \ No newline at end of file + diff --git a/docs/src/templates/ApiPage/index.vue b/docs/src/templates/ApiPage/index.vue index 54c64f10..de9a02f5 100644 --- a/docs/src/templates/ApiPage/index.vue +++ b/docs/src/templates/ApiPage/index.vue @@ -35,4 +35,4 @@ export default { } - \ No newline at end of file + diff --git a/docs/src/templates/DocPage/index.vue b/docs/src/templates/DocPage/index.vue index c25fa000..0fb293a6 100644 --- a/docs/src/templates/DocPage/index.vue +++ b/docs/src/templates/DocPage/index.vue @@ -6,4 +6,4 @@ - \ No newline at end of file + diff --git a/packages/core/src/CommandManager.ts b/packages/core/src/CommandManager.ts index 2ebeab31..91ee92c0 100644 --- a/packages/core/src/CommandManager.ts +++ b/packages/core/src/CommandManager.ts @@ -1,10 +1,11 @@ -import { EditorState, Transaction } from "prosemirror-state" -import { ChainedCommands, Editor, CommandSpec } from "./Editor" +import { EditorState, Transaction } from 'prosemirror-state' +import { ChainedCommands, Editor, CommandSpec } from './Editor' import getAllMethodNames from './utils/getAllMethodNames' export default class CommandManager { editor: Editor + commands: { [key: string]: any } = {} constructor(editor: Editor) { @@ -35,13 +36,13 @@ export default class CommandManager { const { commands, editor } = this const { state, view } = editor const command = commands[name] - + if (!command) { // TODO: prevent vue devtools to throw error // throw new Error(`tiptap: command '${name}' not found.`) return } - + return (...args: any) => { const { tr } = state const props = this.buildProps(tr) @@ -87,7 +88,7 @@ export default class CommandManager { return proxy } - } + }, }) as ChainedCommands } @@ -108,16 +109,16 @@ export default class CommandManager { .map(([name, command]) => { return [name, (...args: any[]) => command(...args)(props)] })) - } + }, } return props } public chainableState(tr: Transaction, state: EditorState): EditorState { - let selection = tr.selection - let doc = tr.doc - let storedMarks = tr.storedMarks + let { selection } = tr + let { doc } = tr + let { storedMarks } = tr return { ...state, @@ -143,7 +144,7 @@ export default class CommandManager { return tr }, - }; + } } -} \ No newline at end of file +} diff --git a/packages/core/src/ComponentRenderer.ts b/packages/core/src/ComponentRenderer.ts index 1b69445e..39d9d865 100644 --- a/packages/core/src/ComponentRenderer.ts +++ b/packages/core/src/ComponentRenderer.ts @@ -2,4 +2,4 @@ export default abstract class ComponentRenderer { static type: string -} \ No newline at end of file +} diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index 8a9dddef..6987abca 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -1,5 +1,5 @@ import { EditorState, Plugin, Transaction } from 'prosemirror-state' -import { EditorView} from 'prosemirror-view' +import { EditorView } from 'prosemirror-view' import { Schema, DOMParser, DOMSerializer } from 'prosemirror-model' import magicMethods from './utils/magicMethods' import elementFromString from './utils/elementFromString' @@ -18,7 +18,7 @@ import Node from './Node' import Mark from './Mark' import ComponentRenderer from './ComponentRenderer' import defaultPlugins from './plugins' -import * as commands from './commands' +import * as coreCommands from './commands' export type Command = (props: { editor: Editor, @@ -77,14 +77,23 @@ declare module './Editor' { export class Editor extends EventEmitter { public renderer!: any + private proxy!: Editor + private commandManager!: CommandManager + private extensionManager!: ExtensionManager + private css!: HTMLStyleElement + public schema!: Schema + public view!: EditorView + public selection = { from: 0, to: 0 } + public isFocused = false + public options: EditorOptions = { element: document.createElement('div'), content: '', @@ -109,7 +118,7 @@ export class Editor extends EventEmitter { this.createSchema() this.extensionManager.resolveConfigs() this.createView() - this.registerCommands(commands) + this.registerCommands(coreCommands) if (this.options.injectCSS) { require('./style.css') @@ -190,7 +199,7 @@ export class Editor extends EventEmitter { * @param plugin A ProseMirror plugin * @param handlePlugins Control how to merge the plugin into the existing plugins. */ - public registerPlugin(plugin: Plugin, handlePlugins?: (plugin: Plugin, plugins: Plugin[]) => Plugin[]) { + public registerPlugin(plugin: Plugin, handlePlugins?: (newPlugin: Plugin, plugins: Plugin[]) => Plugin[]) { const plugins = typeof handlePlugins === 'function' ? handlePlugins(plugin, this.state.plugins) : [plugin, ...this.state.plugins] @@ -333,7 +342,7 @@ export class Editor extends EventEmitter { if (schemaType === 'node') { return nodeIsActive(this.state, this.schema.nodes[name], attrs) - } else if (schemaType === 'mark') { + } if (schemaType === 'mark') { return markIsActive(this.state, this.schema.marks[name]) } @@ -381,5 +390,5 @@ export class Editor extends EventEmitter { this.removeAllListeners() removeElement(this.css) } - + } diff --git a/packages/core/src/EventEmitter.ts b/packages/core/src/EventEmitter.ts index f15c81ce..7d83d475 100644 --- a/packages/core/src/EventEmitter.ts +++ b/packages/core/src/EventEmitter.ts @@ -8,7 +8,7 @@ export default class EventEmitter { } this._callbacks[event].push(fn) - + return this } diff --git a/packages/core/src/Extension.ts b/packages/core/src/Extension.ts index 873c424b..e244c86b 100644 --- a/packages/core/src/Extension.ts +++ b/packages/core/src/Extension.ts @@ -41,8 +41,11 @@ export default class Extension< Methods extends ExtensionMethods = ExtensionMethods > { type = 'extension' + config: AnyObject = {} - configs: Configs = {} + + configs: Configs = {} + options: Partial = {} protected storeConfig(key: string, value: any, stategy: MergeStrategy) { @@ -102,12 +105,10 @@ export default class Extension< this.storeConfig(key, value, 'extend') return this } - - public create() { - type ParentOptions = Options - return (options?: Partial>) => { - return cloneDeep(this, true).configure(options as Options) + public create() { + return (options?: Partial>) => { + return cloneDeep(this, true).configure(options as NewOptions) } } } diff --git a/packages/core/src/ExtensionManager.ts b/packages/core/src/ExtensionManager.ts index df056a02..5309e75a 100644 --- a/packages/core/src/ExtensionManager.ts +++ b/packages/core/src/ExtensionManager.ts @@ -2,10 +2,10 @@ import deepmerge from 'deepmerge' import collect from 'collect.js' import { Plugin } from 'prosemirror-state' import { keymap } from 'prosemirror-keymap' -import { Schema } from 'prosemirror-model' +import { Schema, Node as ProsemirrorNode } from 'prosemirror-model' import { inputRules } from 'prosemirror-inputrules' import { EditorView, Decoration } from 'prosemirror-view' -import { Node as ProsemirrorNode } from 'prosemirror-model' + import { Editor } from './Editor' import capitalize from './utils/capitalize' import { Extensions } from './types' @@ -18,6 +18,7 @@ import getSchema from './utils/getSchema' export default class ExtensionManager { editor: Editor + extensions: Extensions constructor(extensions: Extensions, editor: Editor) { @@ -28,17 +29,27 @@ export default class ExtensionManager { resolveConfigs() { this.extensions.forEach(extension => { const { editor } = this - const name = extension.config.name + const { name } = extension.config const options = deepmerge(extension.config.defaults, extension.options) const type = extension.type === 'node' ? editor.schema.nodes[name] : editor.schema.marks[name] - resolveExtensionConfig(extension, 'commands', { name, options, editor, type }) - resolveExtensionConfig(extension, 'inputRules', { name, options, editor, type }) - resolveExtensionConfig(extension, 'pasteRules', { name, options, editor, type }) - resolveExtensionConfig(extension, 'keys', { name, options, editor, type }) - resolveExtensionConfig(extension, 'plugins', { name, options, editor, type }) + resolveExtensionConfig(extension, 'commands', { + name, options, editor, type, + }) + resolveExtensionConfig(extension, 'inputRules', { + name, options, editor, type, + }) + resolveExtensionConfig(extension, 'pasteRules', { + name, options, editor, type, + }) + resolveExtensionConfig(extension, 'keys', { + name, options, editor, type, + }) + resolveExtensionConfig(extension, 'plugins', { + name, options, editor, type, + }) if (extension.config.commands) { editor.registerCommands(extension.config.commands) @@ -57,7 +68,7 @@ export default class ExtensionManager { get nodes(): any { return getNodesFromExtensions(this.extensions) } - + get marks(): any { return getMarksFromExtensions(this.extensions) } diff --git a/packages/core/src/Mark.ts b/packages/core/src/Mark.ts index 60394a9b..7d4f0ae2 100644 --- a/packages/core/src/Mark.ts +++ b/packages/core/src/Mark.ts @@ -25,4 +25,4 @@ export default class Mark< this.storeConfig('schema', value, 'overwrite') return this } -} \ No newline at end of file +} diff --git a/packages/core/src/commands/deleteSelection.ts b/packages/core/src/commands/deleteSelection.ts index 7d74c5df..067cdebd 100644 --- a/packages/core/src/commands/deleteSelection.ts +++ b/packages/core/src/commands/deleteSelection.ts @@ -1,5 +1,5 @@ -import { Command } from '../Editor' import { deleteSelection as originalDeleteSelection } from 'prosemirror-commands' +import { Command } from '../Editor' type DeleteSelectionCommand = () => Command diff --git a/packages/core/src/commands/focus.ts b/packages/core/src/commands/focus.ts index b9b9ae51..1042852e 100644 --- a/packages/core/src/commands/focus.ts +++ b/packages/core/src/commands/focus.ts @@ -1,7 +1,8 @@ -import { Editor, Command } from '../Editor' import { TextSelection } from 'prosemirror-state' +import { Editor, Command } from '../Editor' import minMax from '../utils/minMax' +type Position = 'start' | 'end' | number | boolean | null type FocusCommand = (position?: Position) => Command declare module '../Editor' { @@ -15,8 +16,6 @@ interface ResolvedSelection { to: number, } -type Position = 'start' | 'end' | number | boolean | null - function resolveSelection(editor: Editor, position: Position = null): ResolvedSelection { if (position === null) { return editor.selection @@ -31,7 +30,7 @@ function resolveSelection(editor: Editor, position: Position = null): ResolvedSe if (position === 'end') { const { size } = editor.state.doc.content - + return { from: size, to: size - 1, // TODO: -1 only for nodes with content @@ -54,9 +53,9 @@ export const focus: FocusCommand = (position = null) => ({ editor, view, tr }) = const resolvedFrom = minMax(from, 0, doc.content.size) const resolvedEnd = minMax(to, 0, doc.content.size) const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd) - + tr.setSelection(selection) view.focus() return true -} \ No newline at end of file +} diff --git a/packages/core/src/commands/insertHTML.ts b/packages/core/src/commands/insertHTML.ts index ccee22f9..9d06dddf 100644 --- a/packages/core/src/commands/insertHTML.ts +++ b/packages/core/src/commands/insertHTML.ts @@ -1,8 +1,8 @@ import { DOMParser } from 'prosemirror-model' import { Selection, Transaction } from 'prosemirror-state' +import { ReplaceStep, ReplaceAroundStep } from 'prosemirror-transform' import { Command } from '../Editor' import elementFromString from '../utils/elementFromString' -import {ReplaceStep, ReplaceAroundStep} from "prosemirror-transform" type InsertHTMLCommand = (value: string) => Command @@ -15,13 +15,13 @@ declare module '../Editor' { // TODO: move to utils // https://github.com/ProseMirror/prosemirror-state/blob/master/src/selection.js#L466 function selectionToInsertionEnd(tr: Transaction, startLen: number, bias: number) { - let last = tr.steps.length - 1 + const last = tr.steps.length - 1 if (last < startLen) return - let step = tr.steps[last] + const step = tr.steps[last] if (!(step instanceof ReplaceStep || step instanceof ReplaceAroundStep)) return - let map = tr.mapping.maps[last] + const map = tr.mapping.maps[last] let end = 0 - map.forEach((_from, _to, _newFrom, newTo) => { if (end == 0) end = newTo }) + map.forEach((_from, _to, _newFrom, newTo) => { if (end === 0) end = newTo }) tr.setSelection(Selection.near(tr.doc.resolve(end as unknown as number), bias)) } @@ -34,4 +34,4 @@ export const insertHTML: InsertHTMLCommand = value => ({ tr, state }) => { selectionToInsertionEnd(tr, tr.steps.length - 1, -1) return true -} \ No newline at end of file +} diff --git a/packages/core/src/commands/liftListItem.ts b/packages/core/src/commands/liftListItem.ts index 0508e2ae..ad0db3ad 100644 --- a/packages/core/src/commands/liftListItem.ts +++ b/packages/core/src/commands/liftListItem.ts @@ -1,6 +1,6 @@ -import { Command } from '../Editor' import { liftListItem as originalLiftListItem } from 'prosemirror-schema-list' import { NodeType } from 'prosemirror-model' +import { Command } from '../Editor' import getNodeType from '../utils/getNodeType' type LiftListItem = (typeOrName: string | NodeType) => Command @@ -11,7 +11,7 @@ declare module '../Editor' { } } -export const liftListItem: LiftListItem = (typeOrName) => ({ state, dispatch }) => { +export const liftListItem: LiftListItem = typeOrName => ({ state, dispatch }) => { const type = getNodeType(typeOrName, state.schema) return originalLiftListItem(type)(state, dispatch) diff --git a/packages/core/src/commands/removeMark.ts b/packages/core/src/commands/removeMark.ts index 71456afb..9950819f 100644 --- a/packages/core/src/commands/removeMark.ts +++ b/packages/core/src/commands/removeMark.ts @@ -1,5 +1,5 @@ -import { Command } from '../Editor' import { MarkType } from 'prosemirror-model' +import { Command } from '../Editor' import getMarkType from '../utils/getMarkType' import getMarkRange from '../utils/getMarkRange' @@ -11,10 +11,12 @@ declare module '../Editor' { } } -export const removeMark: RemoveMarkCommand = (typeOrName) => ({ tr, state }) => { +export const removeMark: RemoveMarkCommand = typeOrName => ({ tr, state }) => { const { selection } = tr const type = getMarkType(typeOrName, state.schema) - let { from, to, $from, empty } = selection + let { + from, to, $from, empty, + } = selection if (empty) { const range = getMarkRange($from, type) diff --git a/packages/core/src/commands/removeMarks.ts b/packages/core/src/commands/removeMarks.ts index f71400d2..d2eb17c4 100644 --- a/packages/core/src/commands/removeMarks.ts +++ b/packages/core/src/commands/removeMarks.ts @@ -8,7 +8,7 @@ declare module '../Editor' { } } -export const removeMarks: RemoveMarksCommand = () => ({ tr, state, view }) => { +export const removeMarks: RemoveMarksCommand = () => ({ tr, state }) => { const { selection } = tr const { from, to, empty } = selection @@ -18,7 +18,7 @@ export const removeMarks: RemoveMarksCommand = () => ({ tr, state, view }) => { Object .entries(state.schema.marks) - .forEach(([name, mark]) => { + .forEach(([, mark]) => { tr.removeMark(from, to, mark as any) }) diff --git a/packages/core/src/commands/replaceWithNode.ts b/packages/core/src/commands/replaceWithNode.ts index 233897d6..d992735a 100644 --- a/packages/core/src/commands/replaceWithNode.ts +++ b/packages/core/src/commands/replaceWithNode.ts @@ -1,5 +1,5 @@ -import { Command } from '../Editor' import { NodeType } from 'prosemirror-model' +import { Command } from '../Editor' import getNodeType from '../utils/getNodeType' interface Range { @@ -29,7 +29,7 @@ export const replaceWithNode: ReplaceWithNodeCommand = (typeOrName, attrs = {}, if (!$from.parent.canReplaceWith(index, index, type)) { return false } - + view.dispatch(tr.replaceWith(from, to, type.create(attrs))) return true diff --git a/packages/core/src/commands/selectAll.ts b/packages/core/src/commands/selectAll.ts index 293bc8c6..6aca7b86 100644 --- a/packages/core/src/commands/selectAll.ts +++ b/packages/core/src/commands/selectAll.ts @@ -1,5 +1,5 @@ -import { Command } from '../Editor' import { selectAll as originalSelectAll } from 'prosemirror-commands' +import { Command } from '../Editor' type SelectAllCommand = () => Command diff --git a/packages/core/src/commands/selectParentNode.ts b/packages/core/src/commands/selectParentNode.ts index 32ccbc05..7e51e7c9 100644 --- a/packages/core/src/commands/selectParentNode.ts +++ b/packages/core/src/commands/selectParentNode.ts @@ -1,5 +1,5 @@ -import { Command } from '../Editor' import { selectParentNode as originalSelectParentNode } from 'prosemirror-commands' +import { Command } from '../Editor' type SelectParentNodeCommand = () => Command diff --git a/packages/core/src/commands/setContent.ts b/packages/core/src/commands/setContent.ts index 8daa605d..fb1c5d1e 100644 --- a/packages/core/src/commands/setContent.ts +++ b/packages/core/src/commands/setContent.ts @@ -1,5 +1,5 @@ -import { Command } from '../Editor' import { TextSelection } from 'prosemirror-state' +import { Command } from '../Editor' type SetContentCommand = ( content: string, @@ -18,7 +18,7 @@ export const setContent: SetContentCommand = (content = '', emitUpdate = false, const { doc } = tr const document = createDocument(content, parseOptions) const selection = TextSelection.create(doc, 0, doc.content.size) - + tr.setSelection(selection) .replaceSelectionWith(document, false) .setMeta('preventUpdate', !emitUpdate) diff --git a/packages/core/src/commands/sinkListItem.ts b/packages/core/src/commands/sinkListItem.ts index fc1743fb..04dea8b9 100644 --- a/packages/core/src/commands/sinkListItem.ts +++ b/packages/core/src/commands/sinkListItem.ts @@ -1,6 +1,6 @@ -import { Command } from '../Editor' import { sinkListItem as originalSinkListItem } from 'prosemirror-schema-list' import { NodeType } from 'prosemirror-model' +import { Command } from '../Editor' import getNodeType from '../utils/getNodeType' type SinkListItem = (typeOrName: string | NodeType) => Command @@ -11,7 +11,7 @@ declare module '../Editor' { } } -export const sinkListItem: SinkListItem = (typeOrName) => ({ state, dispatch }) => { +export const sinkListItem: SinkListItem = typeOrName => ({ state, dispatch }) => { const type = getNodeType(typeOrName, state.schema) return originalSinkListItem(type)(state, dispatch) diff --git a/packages/core/src/commands/splitListItem.ts b/packages/core/src/commands/splitListItem.ts index 75dc79f4..807eee36 100644 --- a/packages/core/src/commands/splitListItem.ts +++ b/packages/core/src/commands/splitListItem.ts @@ -1,6 +1,6 @@ -import { Command } from '../Editor' import { splitListItem as originalSplitListItem } from 'prosemirror-schema-list' import { NodeType } from 'prosemirror-model' +import { Command } from '../Editor' import getNodeType from '../utils/getNodeType' type SplitListItem = (typeOrName: string | NodeType) => Command @@ -11,7 +11,7 @@ declare module '../Editor' { } } -export const splitListItem: SplitListItem = (typeOrName) => ({ state, dispatch }) => { +export const splitListItem: SplitListItem = typeOrName => ({ state, dispatch }) => { const type = getNodeType(typeOrName, state.schema) return originalSplitListItem(type)(state, dispatch) diff --git a/packages/core/src/commands/toggleList.ts b/packages/core/src/commands/toggleList.ts index 699decdb..2a2238cd 100644 --- a/packages/core/src/commands/toggleList.ts +++ b/packages/core/src/commands/toggleList.ts @@ -1,7 +1,7 @@ -import { Command } from '../Editor' import { wrapInList, liftListItem } from 'prosemirror-schema-list' import { findParentNode } from 'prosemirror-utils' import { Node, NodeType, Schema } from 'prosemirror-model' +import { Command } from '../Editor' import getNodeType from '../utils/getNodeType' type ToggleListCommand = ( diff --git a/packages/core/src/commands/toggleMark.ts b/packages/core/src/commands/toggleMark.ts index 2dad4937..65aacab7 100644 --- a/packages/core/src/commands/toggleMark.ts +++ b/packages/core/src/commands/toggleMark.ts @@ -1,6 +1,6 @@ -import { Command } from '../Editor' import { toggleMark as originalToggleMark } from 'prosemirror-commands' import { MarkType } from 'prosemirror-model' +import { Command } from '../Editor' import getMarkType from '../utils/getMarkType' type ToggleMarkCommand = (typeOrName: string | MarkType) => Command @@ -11,7 +11,7 @@ declare module '../Editor' { } } -export const toggleMark: ToggleMarkCommand = (typeOrName) => ({ state, dispatch }) => { +export const toggleMark: ToggleMarkCommand = typeOrName => ({ state, dispatch }) => { const type = getMarkType(typeOrName, state.schema) return originalToggleMark(type)(state, dispatch) diff --git a/packages/core/src/commands/toggleNode.ts b/packages/core/src/commands/toggleNode.ts index 95642645..342e6781 100644 --- a/packages/core/src/commands/toggleNode.ts +++ b/packages/core/src/commands/toggleNode.ts @@ -23,7 +23,7 @@ export const toggleNode: ToggleNodeCommand = (typeOrName, toggleTypeOrName, attr if (isActive) { return setBlockType(toggleType)(state, dispatch) - } else { - return setBlockType(type, attrs)(state, dispatch) } + return setBlockType(type, attrs)(state, dispatch) + } diff --git a/packages/core/src/commands/updateMark.ts b/packages/core/src/commands/updateMark.ts index c66a6449..4e09e46c 100644 --- a/packages/core/src/commands/updateMark.ts +++ b/packages/core/src/commands/updateMark.ts @@ -1,5 +1,5 @@ -import { Command } from '../Editor' import { MarkType } from 'prosemirror-model' +import { Command } from '../Editor' import getMarkType from '../utils/getMarkType' import getMarkRange from '../utils/getMarkRange' @@ -16,7 +16,8 @@ declare module '../Editor' { export const updateMark: UpdateMarkCommand = (typeOrName, attrs = {}) => ({ tr, state }) => { const { selection, doc } = tr - let { from, to, $from, empty } = selection + let { from, to } = selection + const { $from, empty } = selection const type = getMarkType(typeOrName, state.schema) if (empty) { diff --git a/packages/core/src/inputRules/nodeInputRule.ts b/packages/core/src/inputRules/nodeInputRule.ts index 057798b9..c69cc700 100644 --- a/packages/core/src/inputRules/nodeInputRule.ts +++ b/packages/core/src/inputRules/nodeInputRule.ts @@ -12,4 +12,4 @@ export default function (regexp: RegExp, type: NodeType, getAttrs?: Function) { return tr }) -} \ No newline at end of file +} diff --git a/packages/core/src/pasteRules/markPasteRule.ts b/packages/core/src/pasteRules/markPasteRule.ts index 0fe2fd49..25cf7e44 100644 --- a/packages/core/src/pasteRules/markPasteRule.ts +++ b/packages/core/src/pasteRules/markPasteRule.ts @@ -5,13 +5,13 @@ export default function (regexp: RegExp, type: MarkType, getAttrs?: Function) { const handler = (fragment: Fragment, parent?: any) => { const nodes: any[] = [] - + fragment.forEach(child => { if (child.isText && child.text) { const { text } = child let pos = 0 let match - + // eslint-disable-next-line while ((match = regexp.exec(text)) !== null) { const m = match.length - 1 diff --git a/packages/core/src/plugins/editable.ts b/packages/core/src/plugins/editable.ts index 28212bea..1a2078f2 100644 --- a/packages/core/src/plugins/editable.ts +++ b/packages/core/src/plugins/editable.ts @@ -6,4 +6,4 @@ export default (editor: Editor) => new Plugin({ props: { editable: () => editor.options.editable, }, -}) \ No newline at end of file +}) diff --git a/packages/core/src/plugins/focus.ts b/packages/core/src/plugins/focus.ts index 07fb7243..794346e9 100644 --- a/packages/core/src/plugins/focus.ts +++ b/packages/core/src/plugins/focus.ts @@ -25,4 +25,4 @@ export default (editor: Editor) => new Plugin({ }, }, }, -}) \ No newline at end of file +}) diff --git a/packages/core/src/plugins/index.ts b/packages/core/src/plugins/index.ts index 188a1b3d..3f630521 100644 --- a/packages/core/src/plugins/index.ts +++ b/packages/core/src/plugins/index.ts @@ -2,9 +2,9 @@ import { keymap } from 'prosemirror-keymap' import { baseKeymap } from 'prosemirror-commands' import { dropCursor } from 'prosemirror-dropcursor' import { gapCursor } from 'prosemirror-gapcursor' +import { undoInputRule } from 'prosemirror-inputrules' import editable from './editable' import focus from './focus' -import { undoInputRule } from 'prosemirror-inputrules' export default [ () => dropCursor(), @@ -13,4 +13,4 @@ export default [ () => keymap(baseKeymap), editable, focus, -] \ No newline at end of file +] diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 745605e5..bc33c59c 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -2,4 +2,4 @@ import Extension from './Extension' import Node from './Node' import Mark from './Mark' -export type Extensions = (Extension | Node | Mark)[] \ No newline at end of file +export type Extensions = (Extension | Node | Mark)[] diff --git a/packages/core/src/utils/capitalize.ts b/packages/core/src/utils/capitalize.ts index 43abafe6..e153512d 100644 --- a/packages/core/src/utils/capitalize.ts +++ b/packages/core/src/utils/capitalize.ts @@ -1,3 +1,3 @@ export default function capitalize(value: string = ''): string { return value.charAt(0).toUpperCase() + value.slice(1) -} \ No newline at end of file +} diff --git a/packages/core/src/utils/elementFromString.ts b/packages/core/src/utils/elementFromString.ts index 14c7055e..6240a975 100644 --- a/packages/core/src/utils/elementFromString.ts +++ b/packages/core/src/utils/elementFromString.ts @@ -1,7 +1,7 @@ export default function elementFromString(value: string): HTMLElement { const htmlString = `
${value}
` - const parser = new window.DOMParser + const parser = new window.DOMParser() const element = parser.parseFromString(htmlString, 'text/html').body return element -} \ No newline at end of file +} diff --git a/packages/core/src/utils/generateHtml.ts b/packages/core/src/utils/generateHtml.ts index 05ebc31f..45d723ab 100644 --- a/packages/core/src/utils/generateHtml.ts +++ b/packages/core/src/utils/generateHtml.ts @@ -1,6 +1,6 @@ +import { Node } from 'prosemirror-model' import getSchema from './getSchema' import getHtmlFromFragment from './getHtmlFromFragment' -import { Node } from 'prosemirror-model' import { Extensions } from '../types' export default function generateHtml(doc: object, extensions: Extensions): string { diff --git a/packages/core/src/utils/getAllMethodNames.ts b/packages/core/src/utils/getAllMethodNames.ts index de23f7c3..f773df95 100644 --- a/packages/core/src/utils/getAllMethodNames.ts +++ b/packages/core/src/utils/getAllMethodNames.ts @@ -1,10 +1,10 @@ export default function getAllMethodNames(obj: Object) { - let methods = new Set() + const methods = new Set() while (obj = Reflect.getPrototypeOf(obj)) { - let keys = Reflect.ownKeys(obj) - keys.forEach((k) => methods.add(k)) + const keys = Reflect.ownKeys(obj) + keys.forEach(k => methods.add(k)) } return Array.from(methods) -} \ No newline at end of file +} diff --git a/packages/core/src/utils/getHtmlFromFragment.ts b/packages/core/src/utils/getHtmlFromFragment.ts index 64a7ecef..a1332b2f 100644 --- a/packages/core/src/utils/getHtmlFromFragment.ts +++ b/packages/core/src/utils/getHtmlFromFragment.ts @@ -1,5 +1,4 @@ -import { Node, DOMSerializer } from 'prosemirror-model' -import { Schema } from 'prosemirror-model' +import { Node, DOMSerializer, Schema } from 'prosemirror-model' export default function getHtmlFromFragment(doc: Node, schema: Schema): string { const fragment = DOMSerializer diff --git a/packages/core/src/utils/getMarksFromExtensions.ts b/packages/core/src/utils/getMarksFromExtensions.ts index 63c890bf..13152522 100644 --- a/packages/core/src/utils/getMarksFromExtensions.ts +++ b/packages/core/src/utils/getMarksFromExtensions.ts @@ -1,5 +1,5 @@ -import Mark from '../Mark' import collect from 'collect.js' +import Mark from '../Mark' import { Extensions } from '../types' export default function getMarksFromExtensions(extensions: Extensions): any { @@ -7,4 +7,4 @@ export default function getMarksFromExtensions(extensions: Extensions): any { .where('type', 'mark') .mapWithKeys((extension: Mark) => [extension.config.name, extension.config.schema]) .all() -} \ No newline at end of file +} diff --git a/packages/core/src/utils/getNodesFromExtensions.ts b/packages/core/src/utils/getNodesFromExtensions.ts index 409c04fc..34290eec 100644 --- a/packages/core/src/utils/getNodesFromExtensions.ts +++ b/packages/core/src/utils/getNodesFromExtensions.ts @@ -1,5 +1,5 @@ -import Node from '../Node' import collect from 'collect.js' +import Node from '../Node' import { Extensions } from '../types' export default function getNodesFromExtensions(extensions: Extensions): any { @@ -7,4 +7,4 @@ export default function getNodesFromExtensions(extensions: Extensions): any { .where('type', 'node') .mapWithKeys((extension: Node) => [extension.config.name, extension.config.schema]) .all() -} \ No newline at end of file +} diff --git a/packages/core/src/utils/getSchema.ts b/packages/core/src/utils/getSchema.ts index 58b455d2..066af5f5 100644 --- a/packages/core/src/utils/getSchema.ts +++ b/packages/core/src/utils/getSchema.ts @@ -12,7 +12,7 @@ export default function getSchema(extensions: Extensions): Schema { resolveExtensionConfig(extension, 'defaults') resolveExtensionConfig(extension, 'topNode') - const name = extension.config.name + const { name } = extension.config const options = deepmerge(extension.config.defaults, extension.options) resolveExtensionConfig(extension, 'schema', { name, options }) diff --git a/packages/core/src/utils/getSchemaTypeByName.ts b/packages/core/src/utils/getSchemaTypeByName.ts index 5f445d27..bf8250f0 100644 --- a/packages/core/src/utils/getSchemaTypeByName.ts +++ b/packages/core/src/utils/getSchemaTypeByName.ts @@ -10,4 +10,4 @@ export default function getSchemaTypeByName(name: string, schema: Schema) { } return null -} \ No newline at end of file +} diff --git a/packages/core/src/utils/getTopNodeFromExtensions.ts b/packages/core/src/utils/getTopNodeFromExtensions.ts index a7ce3e63..693070e1 100644 --- a/packages/core/src/utils/getTopNodeFromExtensions.ts +++ b/packages/core/src/utils/getTopNodeFromExtensions.ts @@ -7,4 +7,4 @@ export default function getTopNodeFromExtensions(extensions: Extensions): any { if (topNode) { return topNode.config.name } -} \ No newline at end of file +} diff --git a/packages/core/src/utils/magicMethods.ts b/packages/core/src/utils/magicMethods.ts index c5421321..e48bf22e 100644 --- a/packages/core/src/utils/magicMethods.ts +++ b/packages/core/src/utils/magicMethods.ts @@ -1,10 +1,10 @@ -export default function magicMethods(clazz: any) { +export default function magicMethods(Clazz: any) { const classHandler = Object.create(null) - classHandler.construct = (target: any, args: any) => { - const instance = new clazz(...args) + classHandler.construct = (_, args: any) => { + const instance = new Clazz(...args) const instanceHandler = Object.create(null) - const get = Object.getOwnPropertyDescriptor(clazz.prototype, '__get') + const get = Object.getOwnPropertyDescriptor(Clazz.prototype, '__get') if (get) { instanceHandler.get = (target: any, name: any) => { @@ -18,9 +18,9 @@ export default function magicMethods(clazz: any) { if (exists) { return target[name] - } else { - return get.value.call(target, name) } + + return get.value.call(target, name) } } @@ -30,5 +30,5 @@ export default function magicMethods(clazz: any) { return instance.proxy } - return new Proxy(clazz, classHandler) -} \ No newline at end of file + return new Proxy(Clazz, classHandler) +} diff --git a/packages/core/src/utils/minMax.ts b/packages/core/src/utils/minMax.ts index 332cbc59..c1aa6838 100644 --- a/packages/core/src/utils/minMax.ts +++ b/packages/core/src/utils/minMax.ts @@ -1,3 +1,3 @@ export default function minMax(value: number = 0, min: number = 0, max: number = 0): number { return Math.min(Math.max(value, min), max) -} \ No newline at end of file +} diff --git a/packages/core/src/utils/removeElement.ts b/packages/core/src/utils/removeElement.ts index a2cca1e0..7aab5fff 100644 --- a/packages/core/src/utils/removeElement.ts +++ b/packages/core/src/utils/removeElement.ts @@ -2,4 +2,4 @@ export default function removeElement(element: HTMLElement) { if (element && element.parentNode) { element.parentNode.removeChild(element) } -} \ No newline at end of file +} diff --git a/packages/core/src/utils/resolveExtensionConfig.ts b/packages/core/src/utils/resolveExtensionConfig.ts index 384e0268..05a73ded 100644 --- a/packages/core/src/utils/resolveExtensionConfig.ts +++ b/packages/core/src/utils/resolveExtensionConfig.ts @@ -32,4 +32,4 @@ export default function resolveExtensionConfig( return accumulator }, undefined) -} \ No newline at end of file +} diff --git a/packages/core/src/utils/sleep.ts b/packages/core/src/utils/sleep.ts index e9a79bbc..63930530 100644 --- a/packages/core/src/utils/sleep.ts +++ b/packages/core/src/utils/sleep.ts @@ -1,3 +1,3 @@ export default function sleep(milliseconds: number): Promise { return new Promise(resolve => setTimeout(resolve, milliseconds)) -} \ No newline at end of file +} diff --git a/packages/extension-blockquote/index.ts b/packages/extension-blockquote/index.ts index 5c2fac4c..d5d09f77 100644 --- a/packages/extension-blockquote/index.ts +++ b/packages/extension-blockquote/index.ts @@ -35,5 +35,3 @@ export default new Node() textblockTypeInputRule(inputRegex, type), ]) .create() - - diff --git a/packages/extension-bold/index.ts b/packages/extension-bold/index.ts index 2ac2a9e5..31f06829 100644 --- a/packages/extension-bold/index.ts +++ b/packages/extension-bold/index.ts @@ -1,4 +1,6 @@ -import { Command, Mark, markInputRule, markPasteRule } from '@tiptap/core' +import { + Command, Mark, markInputRule, markPasteRule, +} from '@tiptap/core' export type BoldCommand = () => Command @@ -37,7 +39,7 @@ export default new Mark() }, })) .keys(({ editor }) => ({ - 'Mod-b': () => editor.bold() + 'Mod-b': () => editor.bold(), })) .inputRules(({ type }) => [ markInputRule(starInputRegex, type), diff --git a/packages/extension-code-block/index.ts b/packages/extension-code-block/index.ts index 91aa9309..9358f1b5 100644 --- a/packages/extension-code-block/index.ts +++ b/packages/extension-code-block/index.ts @@ -29,7 +29,7 @@ export default new Node() }, })) .keys(({ editor }) => ({ - 'Shift-Ctrl-\\': () => editor.codeBlock() + 'Shift-Ctrl-\\': () => editor.codeBlock(), })) .inputRules(({ type }) => [ textblockTypeInputRule(/^```$/, type), diff --git a/packages/extension-code/index.ts b/packages/extension-code/index.ts index 7731cb50..b9615fd0 100644 --- a/packages/extension-code/index.ts +++ b/packages/extension-code/index.ts @@ -1,4 +1,6 @@ -import { Command, Mark, markInputRule, markPasteRule } from '@tiptap/core' +import { + Command, Mark, markInputRule, markPasteRule, +} from '@tiptap/core' export type CodeCommand = () => Command @@ -26,12 +28,12 @@ export default new Mark() }, })) .keys(({ editor }) => ({ - 'Mod-`': () => editor.code() + 'Mod-`': () => editor.code(), })) .inputRules(({ type }) => [ - markInputRule(inputRegex, type) + markInputRule(inputRegex, type), ]) .pasteRules(({ type }) => [ - markPasteRule(inputRegex, type) + markPasteRule(inputRegex, type), ]) .create() diff --git a/packages/extension-document/index.ts b/packages/extension-document/index.ts index 7099a8d4..11e688aa 100644 --- a/packages/extension-document/index.ts +++ b/packages/extension-document/index.ts @@ -6,4 +6,4 @@ export default new Node() .schema(() => ({ content: 'block+', })) - .create() \ No newline at end of file + .create() diff --git a/packages/extension-focus/index.ts b/packages/extension-focus/index.ts index 73c605d8..c4388807 100644 --- a/packages/extension-focus/index.ts +++ b/packages/extension-focus/index.ts @@ -22,7 +22,7 @@ export default new Extension() const decorations: Decoration[] = [] if (!isEditable || !isFocused) { - return + return DecorationSet.create(doc, []) } doc.descendants((node, pos) => { diff --git a/packages/extension-hard-break/index.ts b/packages/extension-hard-break/index.ts index 1baaa68a..fee38fbe 100644 --- a/packages/extension-hard-break/index.ts +++ b/packages/extension-hard-break/index.ts @@ -20,8 +20,10 @@ export default new Node() ], toDOM: () => ['br'], })) - .commands(({ editor, type }) => ({ - hardBreak: () => ({ tr, state, dispatch, view }) => { + .commands(({ type }) => ({ + hardBreak: () => ({ + tr, state, dispatch, view, + }) => { return chainCommands(exitCode, () => { dispatch(tr.replaceSelectionWith(type.create()).scrollIntoView()) return true diff --git a/packages/extension-history/index.ts b/packages/extension-history/index.ts index 0f389dbe..67058d1d 100644 --- a/packages/extension-history/index.ts +++ b/packages/extension-history/index.ts @@ -3,8 +3,6 @@ import { history, undo, redo, - undoDepth, - redoDepth, } from 'prosemirror-history' declare module '@tiptap/core/src/Editor' { @@ -37,6 +35,6 @@ export default new Extension() 'Shift-Mod-z': () => editor.redo(), })) .plugins(({ options }) => [ - history(options.historyPluginOptions) + history(options.historyPluginOptions), ]) .create() diff --git a/packages/extension-italic/index.ts b/packages/extension-italic/index.ts index 3bf2e1f3..11472c5b 100644 --- a/packages/extension-italic/index.ts +++ b/packages/extension-italic/index.ts @@ -1,4 +1,6 @@ -import { Command, Mark, markInputRule, markPasteRule } from '@tiptap/core' +import { + Command, Mark, markInputRule, markPasteRule, +} from '@tiptap/core' export type ItalicCommand = () => Command @@ -29,7 +31,7 @@ export default new Mark() }, })) .keys(({ editor }) => ({ - 'Mod-i': () => editor.italic() + 'Mod-i': () => editor.italic(), })) .inputRules(({ type }) => [ markInputRule(starInputRegex, type), diff --git a/packages/extension-ordered-list/index.ts b/packages/extension-ordered-list/index.ts index 492dc546..797f80a8 100644 --- a/packages/extension-ordered-list/index.ts +++ b/packages/extension-ordered-list/index.ts @@ -23,7 +23,7 @@ export default new Node() tag: 'ol', getAttrs: node => ({ order: (node as HTMLElement).hasAttribute('start') - ? parseInt((node as HTMLElement).getAttribute('start') || '') + ? parseInt((node as HTMLElement).getAttribute('start') || '', 10) : 1, }), }], diff --git a/packages/extension-paragraph/index.ts b/packages/extension-paragraph/index.ts index a09ee093..a0a721d1 100644 --- a/packages/extension-paragraph/index.ts +++ b/packages/extension-paragraph/index.ts @@ -10,4 +10,4 @@ export default new Node() toDOM: () => ['p', 0], // toVue: ParagraphComponent, })) - .create() \ No newline at end of file + .create() diff --git a/packages/extension-paragraph/paragraph.vue b/packages/extension-paragraph/paragraph.vue index be3b6ae6..7fc13d8c 100644 --- a/packages/extension-paragraph/paragraph.vue +++ b/packages/extension-paragraph/paragraph.vue @@ -6,4 +6,4 @@ export default { } - \ No newline at end of file + diff --git a/packages/extension-strike/index.ts b/packages/extension-strike/index.ts index e8470564..2f33e1cc 100644 --- a/packages/extension-strike/index.ts +++ b/packages/extension-strike/index.ts @@ -1,4 +1,6 @@ -import { Command, Mark, markInputRule, markPasteRule } from '@tiptap/core' +import { + Command, Mark, markInputRule, markPasteRule, +} from '@tiptap/core' type StrikeCommand = () => Command @@ -26,7 +28,7 @@ export default new Mark() }, { style: 'text-decoration', - getAttrs: node => node === 'line-through' ? {} : false, + getAttrs: node => (node === 'line-through' ? {} : false), }, ], toDOM: () => ['s', 0], @@ -37,12 +39,12 @@ export default new Mark() }, })) .keys(({ editor }) => ({ - 'Mod-d': () => editor.strike() + 'Mod-d': () => editor.strike(), })) .inputRules(({ type }) => [ - markInputRule(inputRegex, type) + markInputRule(inputRegex, type), ]) .pasteRules(({ type }) => [ - markPasteRule(inputRegex, type) + markPasteRule(inputRegex, type), ]) .create() diff --git a/packages/extension-text/index.ts b/packages/extension-text/index.ts index 46fe7b40..96e8355f 100644 --- a/packages/extension-text/index.ts +++ b/packages/extension-text/index.ts @@ -5,4 +5,4 @@ export default new Node() .schema(() => ({ group: 'inline', })) - .create() \ No newline at end of file + .create() diff --git a/packages/extension-underline/index.ts b/packages/extension-underline/index.ts index 0ba4541e..aedfe852 100644 --- a/packages/extension-underline/index.ts +++ b/packages/extension-underline/index.ts @@ -17,17 +17,17 @@ export default new Mark() }, { style: 'text-decoration', - getAttrs: node => node === 'underline' ? {} : false, + getAttrs: node => (node === 'underline' ? {} : false), }, ], toDOM: () => ['u', 0], })) - .commands(({ editor, name }) => ({ + .commands(({ name }) => ({ underline: () => ({ commands }) => { return commands.toggleMark(name) }, })) .keys(({ editor }) => ({ - 'Mod-u': () => editor.underline() + 'Mod-u': () => editor.underline(), })) .create() diff --git a/packages/html/getHtmlFromFragment.ts b/packages/html/getHtmlFromFragment.ts index 38a678f7..644c9ab6 100644 --- a/packages/html/getHtmlFromFragment.ts +++ b/packages/html/getHtmlFromFragment.ts @@ -1,5 +1,5 @@ -import { Node, DOMSerializer } from 'prosemirror-model' -import { Schema } from 'prosemirror-model' +import { Node, DOMSerializer, Schema } from 'prosemirror-model' + import { JSDOM } from 'jsdom' export default function getHtmlFromFragment(doc: Node, schema: Schema): string { @@ -7,7 +7,7 @@ export default function getHtmlFromFragment(doc: Node, schema: Schema): string { .fromSchema(schema) .serializeFragment(doc.content) - const temporaryDocument = new JSDOM(``).window.document + const temporaryDocument = new JSDOM('').window.document const container = temporaryDocument.createElement('div') container.appendChild(fragment) diff --git a/packages/starter-kit/index.ts b/packages/starter-kit/index.ts index d16ab0dd..31995f9e 100644 --- a/packages/starter-kit/index.ts +++ b/packages/starter-kit/index.ts @@ -36,4 +36,4 @@ export default function defaultExtensions() { OrderedList(), ListItem(), ] -} \ No newline at end of file +} diff --git a/packages/vue-starter-kit/index.ts b/packages/vue-starter-kit/index.ts index fe6a96ff..66c80143 100644 --- a/packages/vue-starter-kit/index.ts +++ b/packages/vue-starter-kit/index.ts @@ -1,6 +1,7 @@ -export * from '@tiptap/vue' import originalDefaultExtensions from '@tiptap/starter-kit' +export * from '@tiptap/vue' + export function defaultExtensions() { return originalDefaultExtensions() -} \ No newline at end of file +} diff --git a/packages/vue/index.ts b/packages/vue/index.ts index e6de937c..79050a05 100644 --- a/packages/vue/index.ts +++ b/packages/vue/index.ts @@ -6,4 +6,4 @@ export { default as EditorContent } from './src/components/EditorContent' export class Editor extends CoreEditor { renderer = Renderer -} \ No newline at end of file +} diff --git a/packages/vue/src/Renderer.ts b/packages/vue/src/Renderer.ts index 405c2da6..ad40af79 100644 --- a/packages/vue/src/Renderer.ts +++ b/packages/vue/src/Renderer.ts @@ -6,7 +6,7 @@ export default class Renderer extends ComponentRenderer { static type = 'vue' vm!: Vue - + constructor(component: Vue, options: any) { super() this.mount(component) @@ -30,4 +30,3 @@ export default class Renderer extends ComponentRenderer { } } - From 617cdd4d99ff513e7094806c6998c3b58afbd196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 24 Sep 2020 00:37:31 +0200 Subject: [PATCH 6/8] fix more linting issues --- .eslintrc.js | 2 ++ docs/src/components/PageNavigation/index.vue | 2 +- packages/core/src/Editor.ts | 3 +-- packages/core/src/commands/removeMark.ts | 5 ++--- packages/core/src/utils/magicMethods.ts | 2 +- packages/extension-bold/index.ts | 4 ++-- packages/extension-italic/index.ts | 4 ++-- packages/vue/src/Renderer.ts | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index d5a7a0c3..fca7f571 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -48,5 +48,7 @@ module.exports = { 'consistent-return': 'off', 'no-unused-vars': 'off', '@typescript-eslint/no-unused-vars': ['error'], + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': ['error'], }, } diff --git a/docs/src/components/PageNavigation/index.vue b/docs/src/components/PageNavigation/index.vue index c83b5858..4b0760b0 100644 --- a/docs/src/components/PageNavigation/index.vue +++ b/docs/src/components/PageNavigation/index.vue @@ -35,7 +35,7 @@ export default { computed: { items() { - return this.linkGroups.reduce((acc, group) => (acc.push(...group.items), acc), []) + return this.linkGroups.reduce((acc, group) => ((acc.push(...group.items), acc)), []) }, currentIndex() { diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index 6987abca..92618588 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -1,6 +1,6 @@ import { EditorState, Plugin, Transaction } from 'prosemirror-state' import { EditorView } from 'prosemirror-view' -import { Schema, DOMParser, DOMSerializer } from 'prosemirror-model' +import { Schema, DOMParser } from 'prosemirror-model' import magicMethods from './utils/magicMethods' import elementFromString from './utils/elementFromString' import nodeIsActive from './utils/nodeIsActive' @@ -16,7 +16,6 @@ import EventEmitter from './EventEmitter' import Extension from './Extension' import Node from './Node' import Mark from './Mark' -import ComponentRenderer from './ComponentRenderer' import defaultPlugins from './plugins' import * as coreCommands from './commands' diff --git a/packages/core/src/commands/removeMark.ts b/packages/core/src/commands/removeMark.ts index 9950819f..49028fdf 100644 --- a/packages/core/src/commands/removeMark.ts +++ b/packages/core/src/commands/removeMark.ts @@ -14,9 +14,8 @@ declare module '../Editor' { export const removeMark: RemoveMarkCommand = typeOrName => ({ tr, state }) => { const { selection } = tr const type = getMarkType(typeOrName, state.schema) - let { - from, to, $from, empty, - } = selection + let { from, to } = selection + const { $from, empty } = selection if (empty) { const range = getMarkRange($from, type) diff --git a/packages/core/src/utils/magicMethods.ts b/packages/core/src/utils/magicMethods.ts index e48bf22e..b12456c2 100644 --- a/packages/core/src/utils/magicMethods.ts +++ b/packages/core/src/utils/magicMethods.ts @@ -1,7 +1,7 @@ export default function magicMethods(Clazz: any) { const classHandler = Object.create(null) - classHandler.construct = (_, args: any) => { + classHandler.construct = (_: any, args: any) => { const instance = new Clazz(...args) const instanceHandler = Object.create(null) const get = Object.getOwnPropertyDescriptor(Clazz.prototype, '__get') diff --git a/packages/extension-bold/index.ts b/packages/extension-bold/index.ts index 31f06829..5f937e56 100644 --- a/packages/extension-bold/index.ts +++ b/packages/extension-bold/index.ts @@ -10,8 +10,8 @@ declare module '@tiptap/core/src/Editor' { } } -export const starInputRegex = /(?:^|\s)((?:\*\*)((?:[^\*\*]+))(?:\*\*))$/gm -export const starPasteRegex = /(?:^|\s)((?:\*\*)((?:[^\*\*]+))(?:\*\*))/gm +export const starInputRegex = /(?:^|\s)((?:\*\*)((?:[^*]+))(?:\*\*))$/gm +export const starPasteRegex = /(?:^|\s)((?:\*\*)((?:[^*]+))(?:\*\*))/gm export const underscoreInputRegex = /(?:^|\s)((?:__)((?:[^__]+))(?:__))$/gm export const underscorePasteRegex = /(?:^|\s)((?:__)((?:[^__]+))(?:__))/gm diff --git a/packages/extension-italic/index.ts b/packages/extension-italic/index.ts index 11472c5b..e6021921 100644 --- a/packages/extension-italic/index.ts +++ b/packages/extension-italic/index.ts @@ -10,8 +10,8 @@ declare module '@tiptap/core/src/Editor' { } } -export const starInputRegex = /(?:^|\s)((?:\*)((?:[^\*]+))(?:\*))$/gm -export const starPasteRegex = /(?:^|\s)((?:\*)((?:[^\*]+))(?:\*))/gm +export const starInputRegex = /(?:^|\s)((?:\*)((?:[^*]+))(?:\*))$/gm +export const starPasteRegex = /(?:^|\s)((?:\*)((?:[^*]+))(?:\*))/gm export const underscoreInputRegex = /(?:^|\s)((?:_)((?:[^_]+))(?:_))$/gm export const underscorePasteRegex = /(?:^|\s)((?:_)((?:[^_]+))(?:_))/gm diff --git a/packages/vue/src/Renderer.ts b/packages/vue/src/Renderer.ts index ad40af79..67d3e6ec 100644 --- a/packages/vue/src/Renderer.ts +++ b/packages/vue/src/Renderer.ts @@ -7,7 +7,7 @@ export default class Renderer extends ComponentRenderer { vm!: Vue - constructor(component: Vue, options: any) { + constructor(component: Vue) { super() this.mount(component) } From 0b40a0db0fd75322023d7617e0659038c270946b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 24 Sep 2020 09:35:18 +0200 Subject: [PATCH 7/8] improve eslint config --- .eslintignore | 4 -- .eslintrc.js | 99 +++++++++++++++------------ package.json | 2 +- packages/core/src/Editor.ts | 1 + packages/core/src/EventEmitter.ts | 26 +++---- packages/core/src/ExtensionManager.ts | 7 +- shims/vue.d.ts | 7 +- tests/cypress/plugins/index.js | 1 + 8 files changed, 80 insertions(+), 67 deletions(-) delete mode 100644 .eslintignore diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 7d758b7b..00000000 --- a/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -dist/** -tests/** -**/*.css -**/*.json diff --git a/.eslintrc.js b/.eslintrc.js index fca7f571..f8f8b40b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,54 +1,67 @@ module.exports = { - plugins: ['html', 'cypress', '@typescript-eslint'], - parserOptions: { parser: '@typescript-eslint/parser', sourceType: 'module', }, - env: { es6: true, node: true, - 'cypress/globals': true, }, - - globals: { - document: false, - window: false, - }, - - extends: [ - 'plugin:vue/strongly-recommended', - 'airbnb-base', - ], - - rules: { - semi: ['error', 'never'], - 'import/extensions': 'off', - 'import/no-extraneous-dependencies': 'off', - 'import/no-unresolved': 'off', - 'import/no-dynamic-require': 'off', - 'arrow-parens': ['error', 'as-needed'], - 'padded-blocks': 'off', - 'class-methods-use-this': 'off', - 'global-require': 'off', - 'func-names': ['error', 'never'], - 'arrow-body-style': 'off', - 'max-len': 'off', - 'vue/this-in-template': ['error', 'never'], - 'vue/max-attributes-per-line': ['error', { - singleline: 3, - multiline: { - max: 1, - allowFirstLine: false, + overrides: [ + { + files: [ + './**/*.ts', + './**/*.js', + './**/*.vue', + ], + excludedFiles: [ + 'dist/**', + ], + plugins: [ + 'html', + 'cypress', + '@typescript-eslint', + ], + env: { + 'cypress/globals': true, }, - }], - 'no-param-reassign': 'off', - 'import/prefer-default-export': 'off', - 'consistent-return': 'off', - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': ['error'], - 'no-use-before-define': 'off', - '@typescript-eslint/no-use-before-define': ['error'], - }, + globals: { + document: false, + window: false, + }, + extends: [ + 'plugin:vue/strongly-recommended', + 'airbnb-base', + ], + rules: { + semi: ['error', 'never'], + 'import/extensions': 'off', + 'import/no-extraneous-dependencies': 'off', + 'import/no-unresolved': 'off', + 'import/no-dynamic-require': 'off', + 'arrow-parens': ['error', 'as-needed'], + 'padded-blocks': 'off', + 'class-methods-use-this': 'off', + 'global-require': 'off', + 'func-names': ['error', 'never'], + 'arrow-body-style': 'off', + 'max-len': 'off', + 'vue/this-in-template': ['error', 'never'], + 'vue/max-attributes-per-line': ['error', { + singleline: 3, + multiline: { + max: 1, + allowFirstLine: false, + }, + }], + 'no-param-reassign': 'off', + 'import/prefer-default-export': 'off', + 'consistent-return': 'off', + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': ['error'], + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': ['error'], + }, + }, + ], } diff --git a/package.json b/package.json index 67db0426..40e28492 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "build:docs": "yarn --cwd ./docs build", "build:packages": "yarn clean:packages && lerna exec --parallel -- microbundle --compress", "clean:packages": "rm -rf ./packages/*/dist", - "lint": "eslint --quiet --no-error-on-unmatched-pattern --ext .js,.jsx,.ts,.vue ./docs ./packages", + "lint": "eslint --quiet --no-error-on-unmatched-pattern ./", "test:open": "cypress open --project tests", "test": "cypress run --project tests", "reset": "yarn clean:packages && rm -rf ./**/.cache && rm -rf ./**/node_modules && rm -rf ./yarn.lock && yarn install" diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index 92618588..2194a5d6 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -131,6 +131,7 @@ export class Editor extends EventEmitter { * * @param name The name of the command */ + // eslint-disable-next-line private __get(name: string) { return this.commandManager.runSingleCommand(name) } diff --git a/packages/core/src/EventEmitter.ts b/packages/core/src/EventEmitter.ts index 7d83d475..fa5d7f2a 100644 --- a/packages/core/src/EventEmitter.ts +++ b/packages/core/src/EventEmitter.ts @@ -1,19 +1,19 @@ export default class EventEmitter { - _callbacks: { [key: string]: Function[] } = {} + private callbacks: { [key: string]: Function[] } = {} - on(event: string, fn: Function) { - if (!this._callbacks[event]) { - this._callbacks[event] = [] + public on(event: string, fn: Function) { + if (!this.callbacks[event]) { + this.callbacks[event] = [] } - this._callbacks[event].push(fn) + this.callbacks[event].push(fn) return this } - emit(event: string, ...args: any) { - const callbacks = this._callbacks[event] + protected emit(event: string, ...args: any) { + const callbacks = this.callbacks[event] if (callbacks) { callbacks.forEach(callback => callback.apply(this, args)) @@ -22,21 +22,21 @@ export default class EventEmitter { return this } - off(event: string, fn?: Function) { - const callbacks = this._callbacks[event] + public off(event: string, fn?: Function) { + const callbacks = this.callbacks[event] if (callbacks) { if (fn) { - this._callbacks[event] = callbacks.filter(callback => callback !== fn) + this.callbacks[event] = callbacks.filter(callback => callback !== fn) } else { - delete this._callbacks[event] + delete this.callbacks[event] } } return this } - removeAllListeners() { - this._callbacks = {} + protected removeAllListeners() { + this.callbacks = {} } } diff --git a/packages/core/src/ExtensionManager.ts b/packages/core/src/ExtensionManager.ts index 5309e75a..d0c8b67f 100644 --- a/packages/core/src/ExtensionManager.ts +++ b/packages/core/src/ExtensionManager.ts @@ -2,12 +2,13 @@ import deepmerge from 'deepmerge' import collect from 'collect.js' import { Plugin } from 'prosemirror-state' import { keymap } from 'prosemirror-keymap' -import { Schema, Node as ProsemirrorNode } from 'prosemirror-model' +import { Schema } from 'prosemirror-model' +// import { Schema, Node as ProsemirrorNode } from 'prosemirror-model' import { inputRules } from 'prosemirror-inputrules' -import { EditorView, Decoration } from 'prosemirror-view' +// import { EditorView, Decoration } from 'prosemirror-view' import { Editor } from './Editor' -import capitalize from './utils/capitalize' +// import capitalize from './utils/capitalize' import { Extensions } from './types' import getTopNodeFromExtensions from './utils/getTopNodeFromExtensions' import getNodesFromExtensions from './utils/getNodesFromExtensions' diff --git a/shims/vue.d.ts b/shims/vue.d.ts index c360906b..5596f90e 100644 --- a/shims/vue.d.ts +++ b/shims/vue.d.ts @@ -1,4 +1,5 @@ -declare module "*.vue" { - import Vue from "vue" +declare module '*.vue' { + import Vue from 'vue' + export default Vue -} \ No newline at end of file +} diff --git a/tests/cypress/plugins/index.js b/tests/cypress/plugins/index.js index fd170fba..94620a2c 100644 --- a/tests/cypress/plugins/index.js +++ b/tests/cypress/plugins/index.js @@ -11,6 +11,7 @@ // This function is called when a project is opened or re-opened (e.g. due to // the project's config changing) +// eslint-disable-next-line module.exports = (on, config) => { // `on` is used to hook into various events Cypress emits // `config` is the resolved Cypress config From 5d8d353bd0e70b02bbeb1d747a53df44dc9a8522 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 24 Sep 2020 09:49:46 +0200 Subject: [PATCH 8/8] fix all eslint errors --- packages/core/src/CommandManager.ts | 5 ++++- packages/core/src/Editor.ts | 8 ++++---- packages/core/src/utils/getAllMethodNames.ts | 12 +++--------- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/packages/core/src/CommandManager.ts b/packages/core/src/CommandManager.ts index 91ee92c0..c9352af2 100644 --- a/packages/core/src/CommandManager.ts +++ b/packages/core/src/CommandManager.ts @@ -8,8 +8,11 @@ export default class CommandManager { commands: { [key: string]: any } = {} + methodNames: string[] = [] + constructor(editor: Editor) { this.editor = editor + this.methodNames = getAllMethodNames(this.editor) } /** @@ -23,7 +26,7 @@ export default class CommandManager { throw new Error(`tiptap: command '${name}' is already defined.`) } - if (getAllMethodNames(this.editor).includes(name)) { + if (this.methodNames.includes(name)) { throw new Error(`tiptap: '${name}' is a protected name.`) } diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index 2194a5d6..3e4b448e 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -40,14 +40,14 @@ export interface Commands {} export type CommandNames = Extract export type SingleCommands = { - [Command in keyof Commands]: Commands[Command] extends (...args: any[]) => any - ? (...args: Parameters) => boolean + [Item in keyof Commands]: Commands[Item] extends (...args: any[]) => any + ? (...args: Parameters) => boolean : never } export type ChainedCommands = { - [Command in keyof Commands]: Commands[Command] extends (...args: any[]) => any - ? (...args: Parameters) => ChainedCommands + [Item in keyof Commands]: Commands[Item] extends (...args: any[]) => any + ? (...args: Parameters) => ChainedCommands : never } & { run: () => boolean diff --git a/packages/core/src/utils/getAllMethodNames.ts b/packages/core/src/utils/getAllMethodNames.ts index f773df95..62081b6d 100644 --- a/packages/core/src/utils/getAllMethodNames.ts +++ b/packages/core/src/utils/getAllMethodNames.ts @@ -1,10 +1,4 @@ -export default function getAllMethodNames(obj: Object) { - const methods = new Set() - - while (obj = Reflect.getPrototypeOf(obj)) { - const keys = Reflect.ownKeys(obj) - keys.forEach(k => methods.add(k)) - } - - return Array.from(methods) +export default function getAllMethodNames(obj: Object): string[] { + return Reflect.ownKeys(Reflect.getPrototypeOf(obj)) + .map(name => name.toString()) }