diff --git a/.eslintrc.js b/.eslintrc.js index 416ba78ea7..f9c7d922bc 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -9,7 +9,7 @@ module.exports = { globals: { _: 'readonly' }, - plugins: ['prettier'], + plugins: ['prettier', 'simple-import-sort'], extends: [ 'eslint:recommended', 'plugin:compat/recommended', @@ -28,6 +28,8 @@ module.exports = { } }, rules: { + 'simple-import-sort/imports': 'warn', + 'simple-import-sort/exports': 'warn', 'vue/no-deprecated-dollar-listeners-api': 'warn', 'vue/no-deprecated-events-api': 'warn', 'vue/no-v-for-template-key': 'off', diff --git a/example/eventGenerator/plugin.js b/example/eventGenerator/plugin.js index 73f02a1d64..6da2c9c670 100644 --- a/example/eventGenerator/plugin.js +++ b/example/eventGenerator/plugin.js @@ -19,8 +19,8 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -import EventTelemetryProvider from './EventTelemetryProvider'; import EventMetadataProvider from './EventMetadataProvider'; +import EventTelemetryProvider from './EventTelemetryProvider'; export default function EventGeneratorPlugin(options) { return function install(openmct) { diff --git a/example/eventGenerator/pluginSpec.js b/example/eventGenerator/pluginSpec.js index f6f1ffeef4..2e4caee272 100644 --- a/example/eventGenerator/pluginSpec.js +++ b/example/eventGenerator/pluginSpec.js @@ -19,8 +19,8 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -import EventMessageGeneratorPlugin from './plugin.js'; import { createOpenMct, resetApplicationState } from '../../src/utils/testing'; +import EventMessageGeneratorPlugin from './plugin.js'; describe('the plugin', () => { let openmct; diff --git a/example/exampleUser/ExampleUserProvider.js b/example/exampleUser/ExampleUserProvider.js index c92d780125..89f87d0e9c 100644 --- a/example/exampleUser/ExampleUserProvider.js +++ b/example/exampleUser/ExampleUserProvider.js @@ -22,6 +22,7 @@ import EventEmitter from 'EventEmitter'; import { v4 as uuid } from 'uuid'; + import createExampleUser from './exampleUserCreator'; const STATUSES = [ diff --git a/example/generator/plugin.js b/example/generator/plugin.js index 97d2371c07..d419196156 100644 --- a/example/generator/plugin.js +++ b/example/generator/plugin.js @@ -20,11 +20,11 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ +import GeneratorMetadataProvider from './GeneratorMetadataProvider'; import GeneratorProvider from './GeneratorProvider'; import SinewaveLimitProvider from './SinewaveLimitProvider'; import SinewaveStalenessProvider from './SinewaveStalenessProvider'; import StateGeneratorProvider from './StateGeneratorProvider'; -import GeneratorMetadataProvider from './GeneratorMetadataProvider'; export default function (openmct) { openmct.types.addType('example.state-generator', { diff --git a/example/simpleVuePlugin/plugin.js b/example/simpleVuePlugin/plugin.js index fb9e0b0c5d..9ff73043f8 100644 --- a/example/simpleVuePlugin/plugin.js +++ b/example/simpleVuePlugin/plugin.js @@ -1,4 +1,5 @@ import Vue from 'vue'; + import HelloWorld from './HelloWorld.vue'; function SimpleVuePlugin() { diff --git a/package.json b/package.json index 30509869ba..9f9586ed6e 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "eslint-plugin-compat": "4.1.4", "eslint-plugin-playwright": "0.12.0", "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-simple-import-sort": "10.0.0", "eslint-plugin-vue": "9.15.0", "eslint-plugin-you-dont-need-lodash-underscore": "6.12.0", "eventemitter3": "1.2.0", diff --git a/src/api/actions/ActionCollectionSpec.js b/src/api/actions/ActionCollectionSpec.js index c5588d1b4e..26a67233e4 100644 --- a/src/api/actions/ActionCollectionSpec.js +++ b/src/api/actions/ActionCollectionSpec.js @@ -20,8 +20,8 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ -import ActionCollection from './ActionCollection'; import { createOpenMct, resetApplicationState } from '../../utils/testing'; +import ActionCollection from './ActionCollection'; describe('The ActionCollection', () => { let openmct; diff --git a/src/api/actions/ActionsAPI.js b/src/api/actions/ActionsAPI.js index f27c402127..cbe3bb280b 100644 --- a/src/api/actions/ActionsAPI.js +++ b/src/api/actions/ActionsAPI.js @@ -20,9 +20,10 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ import EventEmitter from 'EventEmitter'; -import ActionCollection from './ActionCollection'; import _ from 'lodash'; +import ActionCollection from './ActionCollection'; + class ActionsAPI extends EventEmitter { constructor(openmct) { super(); diff --git a/src/api/actions/ActionsAPISpec.js b/src/api/actions/ActionsAPISpec.js index 2916a14eff..d597b5b278 100644 --- a/src/api/actions/ActionsAPISpec.js +++ b/src/api/actions/ActionsAPISpec.js @@ -20,9 +20,9 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ -import ActionsAPI from './ActionsAPI'; import { createOpenMct, resetApplicationState } from '../../utils/testing'; import ActionCollection from './ActionCollection'; +import ActionsAPI from './ActionsAPI'; describe('The Actions API', () => { let openmct; diff --git a/src/api/annotation/AnnotationAPI.js b/src/api/annotation/AnnotationAPI.js index f13a26de58..c56d005c98 100644 --- a/src/api/annotation/AnnotationAPI.js +++ b/src/api/annotation/AnnotationAPI.js @@ -20,9 +20,9 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ -import { v4 as uuid } from 'uuid'; import EventEmitter from 'EventEmitter'; import _ from 'lodash'; +import { v4 as uuid } from 'uuid'; /** * @readonly diff --git a/src/api/annotation/AnnotationAPISpec.js b/src/api/annotation/AnnotationAPISpec.js index 2499c9f0cf..8c865be15d 100644 --- a/src/api/annotation/AnnotationAPISpec.js +++ b/src/api/annotation/AnnotationAPISpec.js @@ -20,8 +20,8 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ -import { createOpenMct, resetApplicationState } from '../../utils/testing'; import ExampleTagsPlugin from '../../../example/exampleTags/plugin'; +import { createOpenMct, resetApplicationState } from '../../utils/testing'; describe('The Annotation API', () => { let openmct; diff --git a/src/api/composition/CompositionAPI.js b/src/api/composition/CompositionAPI.js index 39a6192dc0..b45705fd48 100644 --- a/src/api/composition/CompositionAPI.js +++ b/src/api/composition/CompositionAPI.js @@ -20,8 +20,8 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ -import DefaultCompositionProvider from './DefaultCompositionProvider'; import CompositionCollection from './CompositionCollection'; +import DefaultCompositionProvider from './DefaultCompositionProvider'; /** * @typedef {import('./CompositionProvider').default} CompositionProvider diff --git a/src/api/composition/CompositionProvider.js b/src/api/composition/CompositionProvider.js index 499e8e7157..e606baf3a4 100644 --- a/src/api/composition/CompositionProvider.js +++ b/src/api/composition/CompositionProvider.js @@ -20,6 +20,7 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ import _ from 'lodash'; + import objectUtils from '../objects/object-utils'; /** diff --git a/src/api/composition/DefaultCompositionProvider.js b/src/api/composition/DefaultCompositionProvider.js index 129789d0ef..0c31db23e5 100644 --- a/src/api/composition/DefaultCompositionProvider.js +++ b/src/api/composition/DefaultCompositionProvider.js @@ -19,9 +19,10 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ +import { toRaw } from 'vue'; + import objectUtils from '../objects/object-utils'; import CompositionProvider from './CompositionProvider'; -import { toRaw } from 'vue'; /** * @typedef {import('../objects/ObjectAPI').DomainObject} DomainObject diff --git a/src/api/forms/FormController.js b/src/api/forms/FormController.js index a238196a8e..eb608e0f7e 100644 --- a/src/api/forms/FormController.js +++ b/src/api/forms/FormController.js @@ -1,6 +1,8 @@ +import mount from 'utils/mount'; + import AutoCompleteField from './components/controls/AutoCompleteField.vue'; -import ClockDisplayFormatField from './components/controls/ClockDisplayFormatField.vue'; import CheckBoxField from './components/controls/CheckBoxField.vue'; +import ClockDisplayFormatField from './components/controls/ClockDisplayFormatField.vue'; import Datetime from './components/controls/Datetime.vue'; import FileInput from './components/controls/FileInput.vue'; import Locator from './components/controls/Locator.vue'; @@ -9,8 +11,6 @@ import SelectField from './components/controls/SelectField.vue'; import TextAreaField from './components/controls/TextAreaField.vue'; import TextField from './components/controls/TextField.vue'; import ToggleSwitchField from './components/controls/ToggleSwitchField.vue'; - -import mount from 'utils/mount'; export const DEFAULT_CONTROLS_MAP = { autocomplete: AutoCompleteField, checkbox: CheckBoxField, diff --git a/src/api/forms/FormsAPI.js b/src/api/forms/FormsAPI.js index 86338996a5..367aca18a1 100644 --- a/src/api/forms/FormsAPI.js +++ b/src/api/forms/FormsAPI.js @@ -20,12 +20,12 @@ * at runtime from the About dialog for additional information. *****************************************************************************/ -import FormController from './FormController'; -import FormProperties from './components/FormProperties.vue'; - import _ from 'lodash'; import mount from 'utils/mount'; +import FormProperties from './components/FormProperties.vue'; +import FormController from './FormController'; + export default class FormsAPI { constructor(openmct) { this.openmct = openmct; diff --git a/src/api/forms/components/FormProperties.vue b/src/api/forms/components/FormProperties.vue index bf3a24d9a5..b4c0676b45 100644 --- a/src/api/forms/components/FormProperties.vue +++ b/src/api/forms/components/FormProperties.vue @@ -73,9 +73,10 @@