From 115bd33a887bc0263acfe9eaeb2808579ecfc53b Mon Sep 17 00:00:00 2001 From: Matyas Szabo Date: Thu, 12 Sep 2024 10:38:11 +0200 Subject: [PATCH] refactor: convert inst ESLint plugin to the v9 syntax, delete old package --- eslint.config.mjs | 6 +- package-lock.json | 130 +-- package.json | 26 +- packages/__docs__/buildScripts/build-docs.mts | 1 + .../eslint-plugin-instructure-ui/.npmignore | 5 - .../eslint-plugin-instructure-ui/CHANGELOG.md | 989 ------------------ .../eslint-plugin-instructure-ui/README.md | 59 -- .../eslint-plugin-instructure-ui/lib/index.js | 35 - .../lib/rules/no-relative-package-imports.js | 115 -- .../eslint-plugin-instructure-ui/package.json | 30 - .../tsconfig.build.json | 8 - .../tsconfig.json | 4 - packages/pkg-utils/lib/get-package.js | 11 +- scripts/clean.js | 1 - scripts/eslint/no-relative-imports-plugin.mjs | 152 +++ 15 files changed, 191 insertions(+), 1381 deletions(-) delete mode 100644 packages/eslint-plugin-instructure-ui/.npmignore delete mode 100644 packages/eslint-plugin-instructure-ui/CHANGELOG.md delete mode 100644 packages/eslint-plugin-instructure-ui/README.md delete mode 100644 packages/eslint-plugin-instructure-ui/lib/index.js delete mode 100644 packages/eslint-plugin-instructure-ui/lib/rules/no-relative-package-imports.js delete mode 100644 packages/eslint-plugin-instructure-ui/package.json delete mode 100644 packages/eslint-plugin-instructure-ui/tsconfig.build.json delete mode 100644 packages/eslint-plugin-instructure-ui/tsconfig.json create mode 100644 scripts/eslint/no-relative-imports-plugin.mjs diff --git a/eslint.config.mjs b/eslint.config.mjs index d1c22b6b77..443178905f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -29,6 +29,7 @@ import notice from "eslint-plugin-notice" import eslintConfigPrettier from "eslint-config-prettier" import vitest from "@vitest/eslint-plugin" import globals from 'globals' +import instructurePlugin from './scripts/eslint/no-relative-imports-plugin.mjs' const COPYRIGHT_NOTICE = "/*\n" + " * The MIT License (MIT)\n" + @@ -64,7 +65,6 @@ const NODE_PACKAGES = [ 'ui-scripts', 'ui-webpack-config', 'command-utils', - 'eslint-plugin-instructure-ui', 'instui-cli', 'babel-plugin-transform-imports', 'pkg-utils' @@ -89,6 +89,7 @@ const finalConfig = tseslint.config( }, eslint.configs.recommended, ...tseslint.configs.recommended, + ...instructurePlugin.configs.recommended, { name: "instUI-eslint-config", linterOptions: { @@ -100,8 +101,7 @@ const finalConfig = tseslint.config( plugins: { ...reactPlugin.configs.flat.recommended.plugins, //'jsx-a11y', // TODO add this back if it supports ESLint v9 - notice, - //'instructure-ui' + notice }, rules: { ...reactPlugin.configs.flat.recommended.rules, diff --git a/package-lock.json b/package-lock.json index ba0a6d001b..fed2b1c51f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,8 @@ "@emotion/react": "^11.13.0", "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.9.0", - "@instructure/browserslist-config-instui": "10.2.0", + "@instructure/browserslist-config-instui": "10.2.1", + "@instructure/pkg-utils": "10.2.1", "@testing-library/dom": "^9.3.4", "@testing-library/jest-dom": "^6.4.6", "@testing-library/react": "^14.3.1", @@ -38,8 +39,9 @@ "esbuild": "^0.23.0", "eslint": "^9.9.0", "eslint-config-prettier": "^9.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.1", "eslint-plugin-compat": "^6.0.0", - "eslint-plugin-instructure-ui": "10.2.0", "eslint-plugin-notice": "^1.0.0", "eslint-plugin-react": "^7.35.0", "globals": "^15.9.0", @@ -10659,11 +10661,6 @@ "integrity": "sha512-b7bq23s4fgBB76n34m2b3RBf6M369B0Z9uRR8aHTMd8kZISRkmDEpPD8hhpYvDFzr3bJCPES96cm3Q6qRNDbQw==", "dev": true }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" - }, "node_modules/@types/karma": { "version": "6.3.4", "license": "MIT", @@ -12069,6 +12066,7 @@ "version": "3.1.8", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -12187,25 +12185,9 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array.prototype.flat": { "version": "1.3.2", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -12222,6 +12204,7 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.2", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -17399,6 +17382,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, "dependencies": { "hasown": "^2.0.0" } @@ -17648,6 +17632,7 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", + "dev": true, "license": "MIT", "dependencies": { "debug": "^3.2.7", @@ -17657,6 +17642,7 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -17666,6 +17652,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, "dependencies": { "debug": "^3.2.7" }, @@ -17680,6 +17667,7 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", + "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" @@ -17786,87 +17774,6 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/eslint-plugin-import/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/eslint-plugin-instructure-ui": { - "resolved": "packages/eslint-plugin-instructure-ui", - "link": true - }, "node_modules/eslint-plugin-notice": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-notice/-/eslint-plugin-notice-1.0.0.tgz", @@ -30088,6 +29995,7 @@ "version": "2.0.8", "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -30102,16 +30010,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.groupby": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" - } - }, "node_modules/object.map": { "version": "1.0.1", "license": "MIT", @@ -30148,6 +30046,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -40557,6 +40456,7 @@ }, "packages/eslint-plugin-instructure-ui": { "version": "10.2.1", + "extraneous": true, "license": "MIT", "dependencies": { "@instructure/pkg-utils": "10.2.1", diff --git a/package.json b/package.json index b9756fa501..cdb2f0eab5 100644 --- a/package.json +++ b/package.json @@ -64,17 +64,23 @@ "@commitlint/config-conventional": "^19.2.2", "@emotion/cache": "^11.13.1", "@emotion/react": "^11.13.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "^9.9.0", - "@instructure/browserslist-config-instui": "10.2.0", "@testing-library/dom": "^9.3.4", "@testing-library/jest-dom": "^6.4.6", "@testing-library/react": "^14.3.1", "@testing-library/user-event": "^14.5.2", - "@types/eslint__js": "^8.42.3", "@types/react-dom": "^18.3.0", - "@vitejs/plugin-react": "^4.3.1", + "@instructure/browserslist-config-instui": "10.2.1", + "@instructure/pkg-utils": "10.2.1", + "typescript-eslint": "^8.1.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-compat": "^6.0.0", "@vitest/eslint-plugin": "^1.0.3", + "eslint-plugin-notice": "^1.0.0", + "eslint-plugin-react": "^7.35.0", + "eslint-module-utils": "^2.8.1", + "eslint-import-resolver-node": "^0.3.9", + "globals": "^15.9.0", + "@vitejs/plugin-react": "^4.3.1", "chai": "^4.4.1", "chalk": "^4.1.2", "commitizen": "^4.3.0", @@ -83,18 +89,14 @@ "cypress-real-events": "^1.13.0", "esbuild": "^0.23.0", "eslint": "^9.9.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-compat": "^6.0.0", - "eslint-plugin-instructure-ui": "10.2.0", - "eslint-plugin-notice": "^1.0.0", - "eslint-plugin-react": "^7.35.0", - "globals": "^15.9.0", + "@eslint/js": "^9.9.0", + "@types/eslint__js": "^8.42.3", + "@eslint/eslintrc": "^3.1.0", "husky": "^9.1.4", "lerna": "^7.4.2", "lint-staged": "^15.2.8", "react": "^18.3.1", "typescript": "5.5.3", - "typescript-eslint": "^8.1.0", "vitest": "^2.0.2", "webpack": "^5.93.0" }, diff --git a/packages/__docs__/buildScripts/build-docs.mts b/packages/__docs__/buildScripts/build-docs.mts index 6f87160d30..5f4c627e4d 100644 --- a/packages/__docs__/buildScripts/build-docs.mts +++ b/packages/__docs__/buildScripts/build-docs.mts @@ -45,6 +45,7 @@ const require = createRequire(import.meta.url) // This needs to be required otherwise TSC will mess up the directory structure // in the output directory +// eslint-disable-next-line @instructure/no-relative-imports const rootPackage = require('../../../package.json') // root package.json const buildDir = './__build__/' diff --git a/packages/eslint-plugin-instructure-ui/.npmignore b/packages/eslint-plugin-instructure-ui/.npmignore deleted file mode 100644 index 9b51f84223..0000000000 --- a/packages/eslint-plugin-instructure-ui/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -**/.* -**/__tests__ -**/__testfixtures__ -*.config.js -*.conf.js diff --git a/packages/eslint-plugin-instructure-ui/CHANGELOG.md b/packages/eslint-plugin-instructure-ui/CHANGELOG.md deleted file mode 100644 index 75406e2895..0000000000 --- a/packages/eslint-plugin-instructure-ui/CHANGELOG.md +++ /dev/null @@ -1,989 +0,0 @@ -# Change Log - -All notable changes to this project will be documented in this file. -See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. - -## [10.2.1](https://github.com/instructure/instructure-ui/compare/v10.2.0...v10.2.1) (2024-08-30) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [10.2.0](https://github.com/instructure/instructure-ui/compare/v10.0.0...v10.2.0) (2024-08-23) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [10.1.0](https://github.com/instructure/instructure-ui/compare/v10.0.0...v10.1.0) (2024-08-23) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [10.0.0](https://github.com/instructure/instructure-ui/compare/v9.5.1...v10.0.0) (2024-07-31) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -## [9.5.1](https://github.com/instructure/instructure-ui/compare/v9.5.0...v9.5.1) (2024-07-30) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [9.5.0](https://github.com/instructure/instructure-ui/compare/v9.3.0...v9.5.0) (2024-07-26) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [9.4.0](https://github.com/instructure/instructure-ui/compare/v9.3.0...v9.4.0) (2024-07-26) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [9.3.0](https://github.com/instructure/instructure-ui/compare/v9.2.0...v9.3.0) (2024-07-17) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [9.2.0](https://github.com/instructure/instructure-ui/compare/v9.1.0...v9.2.0) (2024-07-09) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [9.1.0](https://github.com/instructure/instructure-ui/compare/v9.0.1...v9.1.0) (2024-06-14) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -## [9.0.1](https://github.com/instructure/instructure-ui/compare/v9.0.0...v9.0.1) (2024-05-09) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [9.0.0](https://github.com/instructure/instructure-ui/compare/v8.56.0...v9.0.0) (2024-05-09) - - -### Features - -* set tooling packages to private ([17ab811](https://github.com/instructure/instructure-ui/commit/17ab81187c0ad7778bf3afd1426ece7ee3ca1136)) - - -### BREAKING CHANGES - -* following packages have been set to private: -- cz-lerna-changelog -- slint-plugin-instructure-ui -- pkg-utils -- ui-babel-preset -- ui-eslint-config -- ui-karma-config -- ui-scripts -- ui-stylelint-config -- ui-webpack-config - - - - - -# [8.56.0](https://github.com/instructure/instructure-ui/compare/v8.55.1...v8.56.0) (2024-05-06) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -## [8.55.1](https://github.com/instructure/instructure-ui/compare/v8.55.0...v8.55.1) (2024-04-30) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [8.55.0](https://github.com/instructure/instructure-ui/compare/v8.54.0...v8.55.0) (2024-04-09) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [8.54.0](https://github.com/instructure/instructure-ui/compare/v8.53.2...v8.54.0) (2024-03-21) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -## [8.53.2](https://github.com/instructure/instructure-ui/compare/v8.53.1...v8.53.2) (2024-02-15) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -## [8.53.1](https://github.com/instructure/instructure-ui/compare/v8.53.0...v8.53.1) (2024-02-09) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - - - -# [8.53.0](https://github.com/instructure/instructure-ui/compare/v8.52.0...v8.53.0) (2024-02-08) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.52.0](https://github.com/instructure/instructure-ui/compare/v8.51.0...v8.52.0) (2024-02-02) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.51.0](https://github.com/instructure/instructure-ui/compare/v8.50.0...v8.51.0) (2023-12-14) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.50.0](https://github.com/instructure/instructure-ui/compare/v8.49.0...v8.50.0) (2023-12-05) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.49.0](https://github.com/instructure/instructure-ui/compare/v8.48.3...v8.49.0) (2023-11-24) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.48.3](https://github.com/instructure/instructure-ui/compare/v8.48.2...v8.48.3) (2023-11-23) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.48.2](https://github.com/instructure/instructure-ui/compare/v8.48.1...v8.48.2) (2023-11-21) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.48.1](https://github.com/instructure/instructure-ui/compare/v8.48.0...v8.48.1) (2023-11-17) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.48.0](https://github.com/instructure/instructure-ui/compare/v8.47.1...v8.48.0) (2023-11-10) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.47.1](https://github.com/instructure/instructure-ui/compare/v8.47.0...v8.47.1) (2023-11-06) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.47.0](https://github.com/instructure/instructure-ui/compare/v8.46.1...v8.47.0) (2023-10-27) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.46.1](https://github.com/instructure/instructure-ui/compare/v8.46.0...v8.46.1) (2023-10-13) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.46.0](https://github.com/instructure/instructure-ui/compare/v8.45.0...v8.46.0) (2023-10-11) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.45.0](https://github.com/instructure/instructure-ui/compare/v8.44.0...v8.45.0) (2023-10-03) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.44.0](https://github.com/instructure/instructure-ui/compare/v8.43.1...v8.44.0) (2023-09-21) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.43.1](https://github.com/instructure/instructure-ui/compare/v8.43.0...v8.43.1) (2023-09-11) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.43.0](https://github.com/instructure/instructure-ui/compare/v8.41.1...v8.43.0) (2023-09-07) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.42.0](https://github.com/instructure/instructure-ui/compare/v8.41.1...v8.42.0) (2023-09-07) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.41.1](https://github.com/instructure/instructure-ui/compare/v8.41.0...v8.41.1) (2023-08-24) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.41.0](https://github.com/instructure/instructure-ui/compare/v8.40.1...v8.41.0) (2023-08-21) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.40.1](https://github.com/instructure/instructure-ui/compare/v8.40.0...v8.40.1) (2023-08-18) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.40.0](https://github.com/instructure/instructure-ui/compare/v8.39.0...v8.40.0) (2023-08-17) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.39.0](https://github.com/instructure/instructure-ui/compare/v8.38.1...v8.39.0) (2023-07-21) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.38.1](https://github.com/instructure/instructure-ui/compare/v8.38.0...v8.38.1) (2023-06-13) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.38.0](https://github.com/instructure/instructure-ui/compare/v8.37.0...v8.38.0) (2023-05-15) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.37.0](https://github.com/instructure/instructure-ui/compare/v8.36.0...v8.37.0) (2023-04-25) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.36.0](https://github.com/instructure/instructure-ui/compare/v8.35.1...v8.36.0) (2023-03-23) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.35.1](https://github.com/instructure/instructure-ui/compare/v8.35.0...v8.35.1) (2023-03-10) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.35.0](https://github.com/instructure/instructure-ui/compare/v8.34.0...v8.35.0) (2023-02-17) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.34.0](https://github.com/instructure/instructure-ui/compare/v8.33.2...v8.34.0) (2023-02-10) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.33.2](https://github.com/instructure/instructure-ui/compare/v8.33.1...v8.33.2) (2023-01-25) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.33.1](https://github.com/instructure/instructure-ui/compare/v8.33.0...v8.33.1) (2023-01-06) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.33.0](https://github.com/instructure/instructure-ui/compare/v8.32.1...v8.33.0) (2023-01-04) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.32.1](https://github.com/instructure/instructure-ui/compare/v8.30.0...v8.32.1) (2022-12-01) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.32.0](https://github.com/instructure/instructure-ui/compare/v8.31.0...v8.32.0) (2022-11-23) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.31.0](https://github.com/instructure/instructure-ui/compare/v8.30.0...v8.31.0) (2022-11-21) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.30.0](https://github.com/instructure/instructure-ui/compare/v8.29.0...v8.30.0) (2022-10-26) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.29.0](https://github.com/instructure/instructure-ui/compare/v8.28.0...v8.29.0) (2022-09-29) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.28.2](https://github.com/instructure/instructure-ui/compare/v8.28.0...v8.28.2) (2022-09-16) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.28.1](https://github.com/instructure/instructure-ui/compare/v8.28.0...v8.28.1) (2022-09-12) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.28.0](https://github.com/instructure/instructure-ui/compare/v8.27.0...v8.28.0) (2022-09-02) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.27.0](https://github.com/instructure/instructure-ui/compare/v8.26.3...v8.27.0) (2022-07-25) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.26.3](https://github.com/instructure/instructure-ui/compare/v8.26.2...v8.26.3) (2022-07-14) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.26.2](https://github.com/instructure/instructure-ui/compare/v8.26.1...v8.26.2) (2022-07-11) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.26.1](https://github.com/instructure/instructure-ui/compare/v8.26.0...v8.26.1) (2022-07-06) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.26.0](https://github.com/instructure/instructure-ui/compare/v8.25.0...v8.26.0) (2022-06-30) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.25.0](https://github.com/instructure/instructure-ui/compare/v8.24.5...v8.25.0) (2022-06-03) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.24.5](https://github.com/instructure/instructure-ui/compare/v8.24.3...v8.24.5) (2022-05-31) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.24.4](https://github.com/instructure/instructure-ui/compare/v8.24.3...v8.24.4) (2022-05-27) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.24.3](https://github.com/instructure/instructure-ui/compare/v8.24.2...v8.24.3) (2022-05-25) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.24.2](https://github.com/instructure/instructure-ui/compare/v8.24.1...v8.24.2) (2022-05-02) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.24.1](https://github.com/instructure/instructure-ui/compare/v8.24.0...v8.24.1) (2022-04-29) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.24.0](https://github.com/instructure/instructure-ui/compare/v8.23.0...v8.24.0) (2022-04-26) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.23.0](https://github.com/instructure/instructure-ui/compare/v8.22.0...v8.23.0) (2022-04-07) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.22.0](https://github.com/instructure/instructure-ui/compare/v8.21.0...v8.22.0) (2022-03-31) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.21.0](https://github.com/instructure/instructure-ui/compare/v8.20.0...v8.21.0) (2022-03-30) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.20.0](https://github.com/instructure/instructure-ui/compare/v8.19.0...v8.20.0) (2022-03-22) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.19.0](https://github.com/instructure/instructure-ui/compare/v8.18.0...v8.19.0) (2022-03-16) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.18.0](https://github.com/instructure/instructure-ui/compare/v8.17.0...v8.18.0) (2022-02-23) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.17.0](https://github.com/instructure/instructure-ui/compare/v8.16.0...v8.17.0) (2022-02-07) - -### Bug Fixes - -- remove type:"commonjs" from package.json files ([0b243be](https://github.com/instructure/instructure-ui/commit/0b243bee389ee14493e6b3dbb30a8b660c295d3d)) - -# [8.16.0](https://github.com/instructure/instructure-ui/compare/v8.15.0...v8.16.0) (2022-02-03) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.15.0](https://github.com/instructure/instructure-ui/compare/v8.14.0...v8.15.0) (2022-01-26) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.14.0](https://github.com/instructure/instructure-ui/compare/v8.13.0...v8.14.0) (2021-12-16) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.13.0](https://github.com/instructure/instructure-ui/compare/v8.12.0...v8.13.0) (2021-12-01) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.12.0](https://github.com/instructure/instructure-ui/compare/v8.11.1...v8.12.0) (2021-11-17) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.11.1](https://github.com/instructure/instructure-ui/compare/v8.11.0...v8.11.1) (2021-10-19) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.11.0](https://github.com/instructure/instructure-ui/compare/v8.10.2...v8.11.0) (2021-10-15) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.10.2](https://github.com/instructure/instructure-ui/compare/v8.10.1...v8.10.2) (2021-10-01) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.10.1](https://github.com/instructure/instructure-ui/compare/v8.10.0...v8.10.1) (2021-10-01) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.10.0](https://github.com/instructure/instructure-ui/compare/v8.9.1...v8.10.0) (2021-09-28) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.9.1](https://github.com/instructure/instructure-ui/compare/v8.9.0...v8.9.1) (2021-09-16) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.9.0](https://github.com/instructure/instructure-ui/compare/v8.8.0...v8.9.0) (2021-09-15) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.8.0](https://github.com/instructure/instructure-ui/compare/v8.7.0...v8.8.0) (2021-08-27) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.7.0](https://github.com/instructure/instructure-ui/compare/v8.6.0...v8.7.0) (2021-07-16) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.6.0](https://github.com/instructure/instructure-ui/compare/v8.5.0...v8.6.0) (2021-06-18) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.5.0](https://github.com/instructure/instructure-ui/compare/v8.4.0...v8.5.0) (2021-06-09) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.4.0](https://github.com/instructure/instructure-ui/compare/v8.3.0...v8.4.0) (2021-05-11) - -### Bug Fixes - -- fix all inter-package dependencies using fix version ([75cd898](https://github.com/instructure/instructure-ui/commit/75cd8983b7e206e4e14dc67c490c103cb4a3d915)) - -# [8.3.0](https://github.com/instructure/instructure-ui/compare/v8.2.1...v8.3.0) (2021-05-04) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [8.2.1](https://github.com/instructure/instructure-ui/compare/v8.2.0...v8.2.1) (2021-04-22) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.2.0](https://github.com/instructure/instructure-ui/compare/v8.1.0...v8.2.0) (2021-04-22) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.1.0](https://github.com/instructure/instructure-ui/compare/v8.0.0...v8.1.0) (2021-04-15) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [8.0.0](https://github.com/instructure/instructure-ui/compare/v7.5.0...v8.0.0) (2021-03-29) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [7.5.0](https://github.com/instructure/instructure-ui/compare/v7.4.4...v7.5.0) (2021-03-22) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.4.4](https://github.com/instructure/instructure-ui/compare/v7.4.3...v7.4.4) (2021-03-12) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.4.3](https://github.com/instructure/instructure-ui/compare/v7.4.1...v7.4.3) (2021-03-11) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.4.2](https://github.com/instructure/instructure-ui/compare/v7.4.1...v7.4.2) (2021-03-11) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.4.1](https://github.com/instructure/instructure-ui/compare/v7.4.0...v7.4.1) (2021-03-04) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [7.4.0](https://github.com/instructure/instructure-ui/compare/v7.3.5...v7.4.0) (2021-02-01) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.3.5](https://github.com/instructure/instructure-ui/compare/v7.3.2...v7.3.5) (2021-01-21) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.3.4](https://github.com/instructure/instructure-ui/compare/v7.3.2...v7.3.4) (2021-01-14) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.3.3](https://github.com/instructure/instructure-ui/compare/v7.3.2...v7.3.3) (2021-01-13) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.3.2](https://github.com/instructure/instructure-ui/compare/v7.3.1...v7.3.2) (2020-12-10) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.3.1](https://github.com/instructure/instructure-ui/compare/v7.3.0...v7.3.1) (2020-11-30) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [7.3.0](https://github.com/instructure/instructure-ui/compare/v7.2.4...v7.3.0) (2020-10-26) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.2.4](https://github.com/instructure/instructure-ui/compare/v7.2.0...v7.2.4) (2020-10-09) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.2.3](https://github.com/instructure/instructure-ui/compare/v7.2.0...v7.2.3) (2020-10-08) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.2.2](https://github.com/instructure/instructure-ui/compare/v7.2.0...v7.2.2) (2020-10-08) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.2.1](https://github.com/instructure/instructure-ui/compare/v7.2.0...v7.2.1) (2020-10-07) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [7.2.0](https://github.com/instructure/instructure-ui/compare/v7.1.4...v7.2.0) (2020-09-23) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.1.4](https://github.com/instructure/instructure-ui/compare/v7.1.3...v7.1.4) (2020-09-09) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.1.3](https://github.com/instructure/instructure-ui/compare/v7.1.2...v7.1.3) (2020-08-10) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.1.2](https://github.com/instructure/instructure-ui/compare/v7.1.1...v7.1.2) (2020-07-17) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [7.1.1](https://github.com/instructure/instructure-ui/compare/v7.1.0...v7.1.1) (2020-07-01) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [7.1.0](https://github.com/instructure/instructure-ui/compare/v7.0.0...v7.1.0) (2020-06-25) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [7.0.0](https://github.com/instructure/instructure-ui/compare/v6.26.0...v7.0.0) (2020-05-27) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.26.0](https://github.com/instructure/instructure-ui/compare/v6.25.0...v6.26.0) (2020-04-30) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.25.0](https://github.com/instructure/instructure-ui/compare/v6.24.0...v6.25.0) (2020-04-27) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.24.0](https://github.com/instructure/instructure-ui/compare/v6.23.0...v6.24.0) (2020-04-14) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.23.0](https://github.com/instructure/instructure-ui/compare/v6.22.0...v6.23.0) (2020-04-02) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.22.0](https://github.com/instructure/instructure-ui/compare/v6.21.0...v6.22.0) (2020-03-16) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.21.0](https://github.com/instructure/instructure-ui/compare/v6.20.0...v6.21.0) (2020-02-26) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.20.0](https://github.com/instructure/instructure-ui/compare/v6.19.0...v6.20.0) (2020-02-13) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.19.0](https://github.com/instructure/instructure-ui/compare/v6.18.0...v6.19.0) (2020-02-11) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.18.0](https://github.com/instructure/instructure-ui/compare/v6.17.0...v6.18.0) (2020-02-04) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.17.0](https://github.com/instructure/instructure-ui/compare/v6.16.0...v6.17.0) (2020-01-22) - -### Bug Fixes - -- Update Package READMEs and align deprecation statements ([8f892e4](https://github.com/instructure/instructure-ui/commit/8f892e4)) - -# [6.16.0](https://github.com/instructure/instructure-ui/compare/v6.15.0...v6.16.0) (2019-12-13) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.15.0](https://github.com/instructure/instructure-ui/compare/v6.14.0...v6.15.0) (2019-11-18) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.14.0](https://github.com/instructure/instructure-ui/compare/v6.13.0...v6.14.0) (2019-10-14) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.13.0](https://github.com/instructure/instructure-ui/compare/v6.12.0...v6.13.0) (2019-09-24) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.12.0](https://github.com/instructure/instructure-ui/compare/v6.11.0...v6.12.0) (2019-09-17) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.11.0](https://github.com/instructure/instructure-ui/compare/v6.10.0...v6.11.0) (2019-09-16) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.10.0](https://github.com/instructure/instructure-ui/compare/v6.9.0...v6.10.0) (2019-08-27) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.9.0](https://github.com/instructure/instructure-ui/compare/v6.8.1...v6.9.0) (2019-08-07) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [6.8.1](https://github.com/instructure/instructure-ui/compare/v6.8.0...v6.8.1) (2019-08-02) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.8.0](https://github.com/instructure/instructure-ui/compare/v6.7.0...v6.8.0) (2019-07-31) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.7.0](https://github.com/instructure/instructure-ui/compare/v6.6.0...v6.7.0) (2019-07-15) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.6.0](https://github.com/instructure/instructure-ui/compare/v6.5.0...v6.6.0) (2019-07-03) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.5.0](https://github.com/instructure/instructure-ui/compare/v6.4.0...v6.5.0) (2019-07-01) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.4.0](https://github.com/instructure/instructure-ui/compare/v6.3.0...v6.4.0) (2019-06-13) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.3.0](https://github.com/instructure/instructure-ui/compare/v6.2.0...v6.3.0) (2019-05-28) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.2.0](https://github.com/instructure/instructure-ui/compare/v6.1.0...v6.2.0) (2019-05-13) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.1.0](https://github.com/instructure/instructure-ui/compare/v6.0.0...v6.1.0) (2019-05-09) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [6.0.0](https://github.com/instructure/instructure-ui/compare/v5.52.3...v6.0.0) (2019-05-03) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [5.52.3](https://github.com/instructure/instructure-ui/compare/v5.52.2...v5.52.3) (2019-04-25) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [5.52.2](https://github.com/instructure/instructure-ui/compare/v5.52.1...v5.52.2) (2019-04-17) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [5.52.1](https://github.com/instructure/instructure-ui/compare/v5.52.0...v5.52.1) (2019-04-08) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [5.52.0](https://github.com/instructure/instructure-ui/compare/v5.51.1...v5.52.0) (2019-04-03) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [5.51.1](https://github.com/instructure/instructure-ui/compare/v5.51.0...v5.51.1) (2019-03-30) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [5.51.0](https://github.com/instructure/instructure-ui/compare/v5.50.0...v5.51.0) (2019-03-29) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [5.50.0](https://github.com/instructure/instructure-ui/compare/v5.49.0...v5.50.0) (2019-03-28) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [5.49.0](https://github.com/instructure/instructure-ui/compare/v5.48.0...v5.49.0) (2019-03-22) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [5.48.0](https://github.com/instructure/instructure-ui/compare/v5.47.0...v5.48.0) (2019-03-18) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [5.47.0](https://github.com/instructure/instructure-ui/compare/v5.46.1...v5.47.0) (2019-03-15) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [5.46.1](https://github.com/instructure/instructure-ui/compare/v5.46.0...v5.46.1) (2019-03-13) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [5.46.0](https://github.com/instructure/instructure-ui/compare/v5.45.1...v5.46.0) (2019-03-12) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -## [5.45.1](https://github.com/instructure/instructure-ui/compare/v5.45.0...v5.45.1) (2019-03-12) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [5.45.0](https://github.com/instructure/instructure-ui/compare/v5.44.0...v5.45.0) (2019-03-11) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [5.44.0](https://github.com/instructure/instructure-ui/compare/v5.43.0...v5.44.0) (2019-03-01) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -# [5.43.0](https://github.com/instructure/instructure-ui/compare/v5.42.0...v5.43.0) (2019-02-27) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.42.0](https://github.com/instructure/instructure-ui/compare/v5.41.1...v5.42.0) (2019-02-15) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -## [5.41.1](https://github.com/instructure/instructure-ui/compare/v5.41.0...v5.41.1) (2019-01-30) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.41.0](https://github.com/instructure/instructure-ui/compare/v5.40.0...v5.41.0) (2019-01-29) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.40.0](https://github.com/instructure/instructure-ui/compare/v5.39.0...v5.40.0) (2019-01-15) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.39.0](https://github.com/instructure/instructure-ui/compare/v5.38.0...v5.39.0) (2019-01-11) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.38.0](https://github.com/instructure/instructure-ui/compare/v5.37.0...v5.38.0) (2019-01-04) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.37.0](https://github.com/instructure/instructure-ui/compare/v5.36.0...v5.37.0) (2018-12-18) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.36.0](https://github.com/instructure/instructure-ui/compare/v5.35.0...v5.36.0) (2018-12-12) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.35.0](https://github.com/instructure/instructure-ui/compare/v5.34.0...v5.35.0) (2018-12-06) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.34.0](https://github.com/instructure/instructure-ui/compare/v5.33.0...v5.34.0) (2018-11-20) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.33.0](https://github.com/instructure/instructure-ui/compare/v5.32.0...v5.33.0) (2018-11-14) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.32.0](https://github.com/instructure/instructure-ui/compare/v5.31.0...v5.32.0) (2018-10-31) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.31.0](https://github.com/instructure/instructure-ui/compare/v5.30.0...v5.31.0) (2018-10-26) - -### Features - -- **ui-presets:** upgrade eslint ([a1dcf1f](https://github.com/instructure/instructure-ui/commit/a1dcf1f)) - - - -# [5.30.0](https://github.com/instructure/instructure-ui/compare/v5.29.0...v5.30.0) (2018-09-27) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.29.0](https://github.com/instructure/instructure-ui/compare/v5.28.1...v5.29.0) (2018-09-26) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -## [5.28.1](https://github.com/instructure/instructure-ui/compare/v5.28.0...v5.28.1) (2018-09-18) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.28.0](https://github.com/instructure/instructure-ui/compare/v5.27.0...v5.28.0) (2018-09-13) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.27.0](https://github.com/instructure/instructure-ui/compare/v5.26.0...v5.27.0) (2018-09-10) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.26.0](https://github.com/instructure/instructure-ui/compare/v5.25.0...v5.26.0) (2018-09-06) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.25.0](https://github.com/instructure/instructure-ui/compare/v5.24.0...v5.25.0) (2018-08-24) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.24.0](https://github.com/instructure/instructure-ui/compare/v5.23.0...v5.24.0) (2018-08-08) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.23.0](https://github.com/instructure/instructure-ui/compare/v5.22.0...v5.23.0) (2018-08-03) - -### Features - -- **ui-presets:** add an install-react script ([d4e87fe](https://github.com/instructure/instructure-ui/commit/d4e87fe)) - - - -# [5.22.0](https://github.com/instructure/instructure-ui/compare/v5.21.0...v5.22.0) (2018-07-27) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.21.0](https://github.com/instructure/instructure-ui/compare/v5.20.1...v5.21.0) (2018-07-25) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -## [5.20.1](https://github.com/instructure/instructure-ui/compare/v5.20.0...v5.20.1) (2018-07-18) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.20.0](https://github.com/instructure/instructure-ui/compare/v5.19.0...v5.20.0) (2018-07-17) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.19.0](https://github.com/instructure/instructure-ui/compare/v5.18.0...v5.19.0) (2018-07-12) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.18.0](https://github.com/instructure/instructure-ui/compare/v5.17.0...v5.18.0) (2018-07-09) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.17.0](https://github.com/instructure/instructure-ui/compare/v5.16.0...v5.17.0) (2018-07-06) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.16.0](https://github.com/instructure/instructure-ui/compare/v5.15.0...v5.16.0) (2018-07-06) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.15.0](https://github.com/instructure/instructure-ui/compare/v5.14.0...v5.15.0) (2018-06-28) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.14.0](https://github.com/instructure/instructure-ui/compare/v5.13.1...v5.14.0) (2018-06-28) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -## [5.13.1](https://github.com/instructure/instructure-ui/compare/v5.13.0...v5.13.1) (2018-06-22) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.13.0](https://github.com/instructure/instructure-ui/compare/v5.12.0...v5.13.0) (2018-06-16) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.12.0](https://github.com/instructure/instructure-ui/compare/v5.11.0...v5.12.0) (2018-06-11) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - - - -# [5.11.0](https://github.com/instructure/instructure-ui/compare/v5.10.0...v5.11.0) (2018-06-06) - -**Note:** Version bump only for package eslint-plugin-instructure-ui - -See the instructure-ui mono-repo [change log](#CHANGELOG) for past changes. diff --git a/packages/eslint-plugin-instructure-ui/README.md b/packages/eslint-plugin-instructure-ui/README.md deleted file mode 100644 index 745ae05a96..0000000000 --- a/packages/eslint-plugin-instructure-ui/README.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -category: packages ---- - -## eslint-plugin-instructure-ui - -[![npm][npm]][npm-url] -[![MIT License][license-badge]][license] -[![Code of Conduct][coc-badge]][coc] - -An eslint configuration for Instructure UI. - -### Installation - -Install eslint - -```sh -npm install eslint --dev -``` - -```sh -npm install eslint-plugin-instructure-ui --dev -``` - -### Configuration - -Use our preset to get reasonable defaults: - -```json - "extends": [ - "eslint:recommended", - "plugin:instructure-ui/recommended" - ] -``` - -If you do not use a preset you will need to specify individual rules and add extra configuration. - -Add "instructure-ui" to the plugins section. - -```json -{ - "plugins": ["instructure-ui"] -} -``` - -Enable the rules that you would like to use. - -```json - "rules": { - "inst/no-relative-package-imports": "error" - } -``` - -[npm]: https://img.shields.io/npm/v/eslint-plugin-instructure-ui.svg -[npm-url]: https://npmjs.com/package/eslint-plugin-instructure-ui -[license-badge]: https://img.shields.io/npm/l/instructure-ui.svg?style=flat-square -[license]: https://github.com/instructure/instructure-ui/blob/master/LICENSE -[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square -[coc]: https://github.com/instructure/instructure-ui/blob/master/CODE_OF_CONDUCT.md diff --git a/packages/eslint-plugin-instructure-ui/lib/index.js b/packages/eslint-plugin-instructure-ui/lib/index.js deleted file mode 100644 index 6bb80eecbf..0000000000 --- a/packages/eslint-plugin-instructure-ui/lib/index.js +++ /dev/null @@ -1,35 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2015 - present Instructure, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -module.exports.rules = { - 'no-relative-package-imports': require('./rules/no-relative-package-imports') -} - -module.exports.configs = { - recommended: { - rules: { - 'instructure-ui/no-relative-package-imports': 2 - } - } -} diff --git a/packages/eslint-plugin-instructure-ui/lib/rules/no-relative-package-imports.js b/packages/eslint-plugin-instructure-ui/lib/rules/no-relative-package-imports.js deleted file mode 100644 index f3fed82950..0000000000 --- a/packages/eslint-plugin-instructure-ui/lib/rules/no-relative-package-imports.js +++ /dev/null @@ -1,115 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2015 - present Instructure, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -// note: This cannot be converted to ESM until ESLint v9 is released: -// https://github.com/eslint/eslint/issues/15453#issuecomment-1002015088 -const path = require('path') -const { readPackage } = require('@instructure/pkg-utils') - -const resolve = require('eslint-module-utils/resolve').default -const resolveImportType = - require('eslint-plugin-import/lib/core/importType').default - -module.exports = { - meta: { - docs: {} - }, - - create: function noRelativePackages(context) { - function findNamedPackage(filePath) { - const found = readPackage({ cwd: filePath }) - // console.log(found) - if (found.package && !found.package.name) { - return findNamedPackage(path.join(found.path, '../..')) - } - return found - } - - function checkImportForRelativePackage(importPath, node) { - const potentialViolationTypes = ['parent', 'index', 'sibling'] - if ( - potentialViolationTypes.indexOf( - resolveImportType(importPath, context) - ) === -1 - ) { - return - } - - const resolvedImport = resolve(importPath, context) - const resolvedContext = context.getFilename() - - if (!resolvedImport || !resolvedContext) { - return - } - - const importPkg = findNamedPackage(resolvedImport) - const contextPkg = findNamedPackage(resolvedContext) - - if ( - importPkg.package && - contextPkg.package && - importPkg.package.name !== contextPkg.package.name - ) { - const importBaseName = path.basename(importPath) - const importRoot = path.dirname(importPkg.path) - const properPath = path.relative(importRoot, resolvedImport) - const properImport = path.join( - importPkg.package.name, - path.dirname(properPath), - importBaseName === path.basename(importRoot) ? '' : importBaseName - ) - context.report({ - node, - message: - 'Relative import from another package is not allowed. ' + - `Use "${properImport}" instead of "${importPath}"` - }) - } - } - - return { - ImportDeclaration(node) { - checkImportForRelativePackage(node.source.value, node.source) - }, - CallExpression(node) { - if (isStaticRequire(node)) { - const [firstArgument] = node.arguments - checkImportForRelativePackage(firstArgument.value, firstArgument) - } - } - } - } -} - -function isStaticRequire(node) { - return ( - node && - node.callee && - node.callee.type === 'Identifier' && - node.callee.name === 'require' && - node.arguments.length === 1 && - node.arguments[0].type === 'Literal' && - typeof node.arguments[0].value === 'string' - ) -} diff --git a/packages/eslint-plugin-instructure-ui/package.json b/packages/eslint-plugin-instructure-ui/package.json deleted file mode 100644 index a2ec33e3af..0000000000 --- a/packages/eslint-plugin-instructure-ui/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "eslint-plugin-instructure-ui", - "private": true, - "version": "10.2.1", - "description": "An eslint configuration for Instructure UI", - "author": "Instructure, Inc. Engineering and Product Design", - "main": "./lib/index.js", - "repository": { - "type": "git", - "url": "https://github.com/instructure/instructure-ui.git" - }, - "homepage": "https://instructure.github.io/instructure-ui/", - "bugs": "https://github.com/instructure/instructure-ui/issues", - "scripts": { - "lint": "ui-scripts lint", - "lint:fix": "ui-scripts lint --fix" - }, - "license": "MIT", - "dependencies": { - "@instructure/pkg-utils": "10.2.1", - "eslint-module-utils": "^2.8.1", - "eslint-plugin-import": "^2.29.1" - }, - "peerDependencies": { - "eslint": "^9" - }, - "publishConfig": { - "access": "public" - } -} diff --git a/packages/eslint-plugin-instructure-ui/tsconfig.build.json b/packages/eslint-plugin-instructure-ui/tsconfig.build.json deleted file mode 100644 index 9c47b6ddaf..0000000000 --- a/packages/eslint-plugin-instructure-ui/tsconfig.build.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "../../tsconfig.build.json", - "compilerOptions": { - "outDir": "./types", - "module": "CommonJS" - }, - "include": ["lib/**/*"] -} diff --git a/packages/eslint-plugin-instructure-ui/tsconfig.json b/packages/eslint-plugin-instructure-ui/tsconfig.json deleted file mode 100644 index b29a7b46c4..0000000000 --- a/packages/eslint-plugin-instructure-ui/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": {} -} diff --git a/packages/pkg-utils/lib/get-package.js b/packages/pkg-utils/lib/get-package.js index 9ce88d3407..48a973f181 100644 --- a/packages/pkg-utils/lib/get-package.js +++ b/packages/pkg-utils/lib/get-package.js @@ -29,22 +29,23 @@ const Package = require('@lerna/package').Package exports.getPackage = function getPackage(options) { const result = readPackage(options) - return new Package(result.packageJson, path.dirname(result.path)) } exports.getPackageJSON = function getPackageJSON(options) { - const pkg = readPackage(options).packageJson - - return pkg + return readPackage(options).packageJson } exports.getPackagePath = function getPackagePath(options) { const packageJson = readPackage(options) - return packageJson.path } +/** + * Returns the closest Node project in the path upward + * @param options {readPkgUp.NormalizeOptions} + * @returns {readPkgUp.NormalizedReadResult} + */ function readPackage(options) { const opts = { cwd: process.cwd(), diff --git a/scripts/clean.js b/scripts/clean.js index 9cdc28484b..900ee0b7e5 100755 --- a/scripts/clean.js +++ b/scripts/clean.js @@ -36,7 +36,6 @@ const NODE_PACKAGES = [ 'ui-scripts', 'command-utils', 'cz-lerna-changelog', - 'eslint-plugin-instructure-ui', 'instui-cli', 'babel-plugin-transform-imports', 'pkg-utils' diff --git a/scripts/eslint/no-relative-imports-plugin.mjs b/scripts/eslint/no-relative-imports-plugin.mjs new file mode 100644 index 0000000000..099433ba42 --- /dev/null +++ b/scripts/eslint/no-relative-imports-plugin.mjs @@ -0,0 +1,152 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2015 - present Instructure, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +import path from 'path' +import pkgUtils from '@instructure/pkg-utils' +import { default as resolve } from 'eslint-module-utils/resolve.js' + +/** + * An ESLint plugin that checks against local relative imports from another package + * + * This code will fail: + * `import { abc } from '../../packages/ui-i18n'` + * + * This code is OK: + * `import { abc } from '@instructure/ui-i18n'` + * + * Usage: + * Add `instructurePlugin.configs.recommended` to your flat ESLint configuration + */ +const plugin = { + meta: { + name: "instructure-no-relative-imports-plugin", + version: "1.0.0" + }, + configs: {}, + rules: { + "no-relative-imports": { + create(context) { + return { + ImportDeclaration(node) { + checkImportForRelativePackage(node.source.value, node.source, context) + }, + CallExpression(node) { + if (isStaticRequire(node)) { + const [firstArgument] = node.arguments + checkImportForRelativePackage(firstArgument.value, firstArgument, context) + } + } + } + } + } + } +} + +function findNamedPackage(filePath) { + const found = pkgUtils.readPackage({ cwd: filePath }) + if (found.packageJson && !found.packageJson.name) { + return findNamedPackage(path.join(found.path, '../..')) + } + return found +} + +function checkImportForRelativePackage(importPath, node, context) { + if (!isImportParentOrIndexOrSibling(importPath, context)) { + return + } + const resolvedImport = resolve.default(importPath, context) + const resolvedContext = context.getFilename() + if (!resolvedImport || !resolvedContext) { + return + } + const importPkg = findNamedPackage(resolvedImport) + const contextPkg = findNamedPackage(resolvedContext) + if ( + importPkg.packageJson && + contextPkg.packageJson && + importPkg.packageJson.name !== contextPkg.packageJson.name + ) { + const importBaseName = path.basename(importPath) + const importRoot = path.dirname(importPkg.path) + const properImport = path.join( + importPkg.packageJson.name, + importBaseName === path.basename(importRoot) ? '' : importBaseName + ) + context.report({ + node, + message: + 'Relative import from another package is not allowed. ' + + `Use "${properImport}" instead of "${importPath}"` + }) + } +} + +// from https://github.com/import-js/eslint-plugin-import/blob/main/src/core/importType.js#L48 +function isRelativeToParent(name) { + return (/^\.\.$|^\.\.[\\/]/).test(name) +} + +function isIndex(name) { + const indexFiles = ['.', './', './index', './index.js'] + return indexFiles.indexOf(name) !== -1 +} + +function isRelativeToSibling(name) { + return (/^\.[\\/]/).test(name) +} + +function isImportParentOrIndexOrSibling(name, context) { + const path = resolve.default(name, context) + const { settings } = context + if (isRelativeToParent(name, settings, path)) { return true } + if (isIndex(name, settings, path)) { return true } + if (isRelativeToSibling(name, settings, path)) { return true } + return false +} + +function isStaticRequire(node) { + return ( + node && + node.callee && + node.callee.type === 'Identifier' && + node.callee.name === 'require' && + node.arguments.length === 1 && + node.arguments[0].type === 'Literal' && + typeof node.arguments[0].value === 'string' + ) +} + +// assign configs here so we can reference `plugin` +Object.assign(plugin.configs, { + recommended: [{ + plugins: { + "@instructure": plugin + }, + rules: { + "@instructure/no-relative-imports": "error" + } + }] +}) + +export default plugin