diff --git a/.github/dependabot.yml b/.github/dependabot.yml index de1ed18f..b9251802 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -24,8 +24,6 @@ updates: update-types: ["version-update:semver-major"] - dependency-name: 'bootstrap' update-types: ["version-update:semver-major"] - - dependency-name: 'eslint-plugin-prettier' - update-types: ["version-update:semver-major"] labels: - "_bot" - "maint:dependency" diff --git a/README.md b/README.md index 3439c3cc..c1d5b5a0 100644 --- a/README.md +++ b/README.md @@ -28,11 +28,14 @@
-[Neurobagel's](https://www.neurobagel.org/) annotation tool takes BID-style [phenotypic data](https://github.com/neurobagel/annotation_tool/blob/main/cypress/fixtures/examples/good/ds003653_participant.tsv) and [corresponding data description files](https://github.com/neurobagel/annotation_tool/blob/main/cypress/fixtures/examples/good/ds003653_participant.json) and gives users the ability to annotate their data using the Neurobagel data model for preparation to inject that modeled data into Neurobagel's graph database for [federated querying](https://github.com/neurobagel/query-tool). +[Neurobagel's](https://www.neurobagel.org/) annotation tool takes BIDS-style [phenotypic data](https://github.com/neurobagel/annotation_tool/blob/main/cypress/fixtures/examples/good/ds003653_participant.tsv) and [corresponding data description files](https://github.com/neurobagel/annotation_tool/blob/main/cypress/fixtures/examples/good/ds003653_participant.json) and gives users the ability to annotate their data using the Neurobagel data model for preparation to inject that modeled data into Neurobagel's graph database for [federated querying](https://github.com/neurobagel/query-tool). The annotation tool is a Vue application, developed in [JavaScript](https://www.javascript.com/) using a variety of tools including [Nuxt](https://nuxtjs.org/), [Cypress](https://www.cypress.io/), and [BootstrapVue](https://bootstrap-vue.org/docs). +Please refer to our [**official documentation**](https://neurobagel.org/annotation_tool/) for more information on how to use the annotation tool. + [Quickstart](#quickstart) | +[Documentation](https://neurobagel.org/annotation_tool/) | [Local Installation](#local-installation) | [Workflow](#annotation-workflow) | [Navigation](#general-navigation) | diff --git a/assets/css/main.css b/assets/css/main.css index 7347aca7..b5f02254 100644 --- a/assets/css/main.css +++ b/assets/css/main.css @@ -75,4 +75,14 @@ background-color: white; color: black; +} + +.category-transparent { + + opacity: 0.5; +} + +.category-opaque { + + opacity: 1.0; } \ No newline at end of file diff --git a/components/category-select-table.vue b/components/category-select-table.vue index 66e5977c..eed5a07a 100644 --- a/components/category-select-table.vue +++ b/components/category-select-table.vue @@ -2,9 +2,9 @@
- + - + - - \ No newline at end of file + \ No newline at end of file diff --git a/components/category-toolgroup.vue b/components/category-toolgroup.vue index 3c2ceb14..e6ad7b2b 100644 --- a/components/category-toolgroup.vue +++ b/components/category-toolgroup.vue @@ -1,18 +1,17 @@ diff --git a/cypress.config.js b/cypress.config.js index 5e90efb9..f25f21be 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -6,6 +6,8 @@ const fs = require("fs"); module.exports = defineConfig({ e2e: { + viewportHeight: 1080, + viewportWidth: 1920, baseUrl: "http://localhost:3000", diff --git a/cypress/component/category-toolgroup.cy.js b/cypress/component/category-toolgroup.cy.js index 801d59a0..b9f4ca15 100644 --- a/cypress/component/category-toolgroup.cy.js +++ b/cypress/component/category-toolgroup.cy.js @@ -24,7 +24,7 @@ describe("Tool Group component", () => { }; getters = { getColumnsForCategory: () => (p_category) => { - return ["column1", "column3"]; + return ["column1", "column2", "column3"]; }, getSelectedTools: () => { return [ @@ -88,8 +88,8 @@ describe("Tool Group component", () => { }}) }); - cy.get("[data-cy='assessment-column-table']").find("tr:contains('column1')").should('not.have.class', 'selected-tool'); - cy.get("[data-cy='assessment-column-table']").find("tr:contains('column3')").should('not.have.class', 'selected-tool'); + cy.get("[data-cy='assessment-column-table']").find("tr:contains('column1')").should('not.have.class', 'category-style-5'); + cy.get("[data-cy='assessment-column-table']").find("tr:contains('column3')").should('not.have.class', 'category-style-5'); }); @@ -220,15 +220,26 @@ describe("Tool Group component", () => { mocks: { $store: store }, computed: store.getters }); - // Starting out with a different tool selected + // Starting out with a different tool selected and then checking the background color cy.get("[data-cy='assessment-tool-table']").find("tr:contains('MOCA')").click(); cy.get("[data-cy='assessment-column-table']").find("tr:contains('column3')") .invoke("css", "background-color").then((InitialBackgroundColor) => { cy.get("[data-cy='assessment-tool-table']") // Selecting the tool my column is mapped to should change my columns styling .find("tr:contains('UPDRSIII')").click(); - // assert that element has different color after - cy.get("[data-cy='assessment-column-table']").find("tr:contains('column3')").should("not.have.css", "background-color", InitialBackgroundColor); + // assert that element has the same background color after + cy.get("[data-cy='assessment-column-table']").find("tr:contains('column3')").should("have.css", "background-color", InitialBackgroundColor); + }); + + // Starting out with a different tool selected and then checking the opacity + cy.get("[data-cy='assessment-tool-table']").find("tr:contains('MOCA')").click(); + cy.get("[data-cy='assessment-column-table']").find("tr:contains('column3')") + .invoke("css", "opacity").then((InitialOpacity) => { + cy.get("[data-cy='assessment-tool-table']") + // Selecting the tool my column is mapped to should change my columns styling + .find("tr:contains('UPDRSIII')").click(); + // assert that element has a different opacity after + cy.get("[data-cy='assessment-column-table']").find("tr:contains('column3')").should("not.have.css", "Opacity", InitialOpacity); }); }); }); diff --git a/cypress/component/index_page.cy.js b/cypress/component/index_page.cy.js index 3517c42d..750c2fb8 100644 --- a/cypress/component/index_page.cy.js +++ b/cypress/component/index_page.cy.js @@ -35,9 +35,9 @@ describe("The index page", () => { }); // Assert - cy.get("[data-cy='data-table-display']").should("be.visible.and.empty"); + cy.get("[data-cy='data-table-display']").should("not.exist"); cy.get("[data-cy='data-table-selector']").should("be.visible").contains("Choose file"); - cy.get("[data-cy='data-dictionary-display']").should("be.visible.and.empty"); + cy.get("[data-cy='data-dictionary-display']").should("not.exist"); cy.get("[data-cy='data-dictionary-selector']").should("be.visible").contains("Choose file"); }); @@ -77,10 +77,9 @@ describe("The index page", () => { plugins: ["bootstrap-vue"] }); - // Assert - Because we're looking at an input field, we need to assert - // over the value and can't just use .contains as usual - cy.get("[data-cy='data-table-display']").should('include.value', 'val1\tval2'); - cy.get("[data-cy='data-dictionary-display']").should('include.value', '"col1": "something"'); + cy.get("[data-cy='data-table-display']").contains("val1"); + cy.get("[data-cy='data-table-display']").contains("val2"); + cy.get("[data-cy='data-dictionary-display']").contains('"col1": "something"'); }); it("Dispatches an action when a dataTable is loaded", () => { diff --git a/cypress/e2e/app/simple-e2etest.cy.js b/cypress/e2e/app/simple-e2etest.cy.js index ad2c75d3..95f21b3d 100644 --- a/cypress/e2e/app/simple-e2etest.cy.js +++ b/cypress/e2e/app/simple-e2etest.cy.js @@ -13,11 +13,7 @@ describe("End to end test using a simple UI path through the app", () => { ]; beforeEach(() => { - - // Standard setup for annotation tool testing - cy.appSetup(); - - // 2. Open the index page + // 1. Open the index page cy.visit("/"); }); diff --git a/cypress/e2e/app/validate-output-example-synthetic-e2etest.cy.js b/cypress/e2e/app/validate-output-example-synthetic-e2etest.cy.js index a6eea532..e3bebba0 100644 --- a/cypress/e2e/app/validate-output-example-synthetic-e2etest.cy.js +++ b/cypress/e2e/app/validate-output-example-synthetic-e2etest.cy.js @@ -6,7 +6,7 @@ describe("to annotate an assessment ", () => { /* ==== Generated with Cypress Studio ==== */ cy.get('[data-cy="data-dictionary-selector"] > .row > form > .file-selector-button').click(); - cy.get('[data-cy="data-dictionary-selector"] > .row > form > .file-selector-button > input').selectFile('cypress/fixtures/examples/good/example_synthetic.json', { force: true }); + cy.get('[data-cy="data-dictionary-selector"] > .row > form > .file-selector-button > input').selectFile('cypress/fixtures/examples/good/example_synthetic_participants.json', { force: true }); /* ==== End Cypress Studio ==== */ cy.get("[data-cy='button-nextpage']").click(); @@ -105,7 +105,7 @@ describe("to annotate an assessment ", () => { cy.task("downloads", "cypress/downloads").then(folderStateAfter => { cy.readFile('cypress/downloads/' + folderStateAfter[folderStateAfter.length - 1]).then((outputContent) => { - const expectedOutput = require('../../fixtures/examples/good/example_synthetic_expected_output.json'); + const expectedOutput = require('../../fixtures/examples/good/example_synthetic.json'); expect(outputContent).to.deep.equal(expectedOutput); }); }); diff --git a/cypress/e2e/page/annotation-pagetests.cy.js b/cypress/e2e/page/annotation-pagetests.cy.js index 75e0199b..5009b97d 100644 --- a/cypress/e2e/page/annotation-pagetests.cy.js +++ b/cypress/e2e/page/annotation-pagetests.cy.js @@ -8,12 +8,6 @@ describe("tests on annotation page ui with programmatic state loading and store // NOTE: Add more dataset json files here via 'require' ]; - beforeEach(() => { - - // Standard app setup - cy.appSetup(); - }); - datasets.forEach((p_dataset) => { context("Annotation page tests with " + p_dataset.description + " data", () => { diff --git a/cypress/e2e/page/categorization-pagetests.cy.js b/cypress/e2e/page/categorization-pagetests.cy.js index 936c04cc..69aa827e 100644 --- a/cypress/e2e/page/categorization-pagetests.cy.js +++ b/cypress/e2e/page/categorization-pagetests.cy.js @@ -9,12 +9,6 @@ describe("Tests on categorization page ui via programmatic state loading and sto // NOTE: Add more dataset json files here via 'require' ]; - beforeEach(() => { - - // Standard app setup - cy.appSetup(); - }); - datasets.forEach((p_dataset) => { context("Categorization page tests with " + p_dataset.description + " data", () => { diff --git a/cypress/e2e/page/download-pagetests.cy.js b/cypress/e2e/page/download-pagetests.cy.js index 2bdf4a88..9131d3b2 100644 --- a/cypress/e2e/page/download-pagetests.cy.js +++ b/cypress/e2e/page/download-pagetests.cy.js @@ -9,12 +9,6 @@ describe("tests on download page ui via programmatic state loading and store int // NOTE: Add more dataset json files here via 'require' ]; - beforeEach(() => { - - // Standard app setup - cy.appSetup(); - }); - datasets.forEach((p_dataset) => { context("download page tests with " + p_dataset.description + " data", () => { diff --git a/cypress/e2e/page/home-pagetests.cy.js b/cypress/e2e/page/home-pagetests.cy.js new file mode 100644 index 00000000..92f20bab --- /dev/null +++ b/cypress/e2e/page/home-pagetests.cy.js @@ -0,0 +1,14 @@ +describe("On My homepage", () => { + it("I can upload some data", () => { + cy.visit('/'); + // Before I load anything, I have a little notification that my preview will + // appear once I upload a table + // Load a table + cy.get('[data-cy="data-table-selector"]').get('input').selectFile('cypress/fixtures/examples/good/example_synthetic.tsv', { force: true }); + + /* ==== Generated with Cypress Studio ==== */ + cy.get('[data-cy="data-dictionary-selector"] > .row > form > .file-selector-button').click(); + cy.get('[data-cy="data-dictionary-selector"] > .row > form > .file-selector-button > input').selectFile('cypress/fixtures/examples/good/example_synthetic_participants.json', { force: true }); + /* ==== End Cypress Studio ==== */ + }); +}); \ No newline at end of file diff --git a/cypress/e2e/page/index-pagetests.cy.js b/cypress/e2e/page/index-pagetests.cy.js index c3389d2c..bff5ebf5 100644 --- a/cypress/e2e/page/index-pagetests.cy.js +++ b/cypress/e2e/page/index-pagetests.cy.js @@ -12,12 +12,6 @@ describe("Tests on the index page via store interaction", () => { // NOTE: Add more dataset json files here via 'require' ]; - beforeEach(() => { - - // Standard app setup - cy.appSetup(); - }); - datasets.forEach((p_dataset) => { context("index page with " + p_dataset.description + " data", () => { diff --git a/cypress/fixtures/examples/good/example.json b/cypress/fixtures/examples/good/example.json index df6d885c..61a584fe 100644 --- a/cypress/fixtures/examples/good/example.json +++ b/cypress/fixtures/examples/good/example.json @@ -6,8 +6,8 @@ "sex": { "Description": "sex of the participant as reported by the participant", "Levels": { - "M": "male", - "F": "female" + "1": "male", + "2": "female" } }, "group": { diff --git a/cypress/fixtures/examples/good/example_synthetic.json b/cypress/fixtures/examples/good/example_synthetic.json index 41e75aac..1e1c2b5b 100644 --- a/cypress/fixtures/examples/good/example_synthetic.json +++ b/cypress/fixtures/examples/good/example_synthetic.json @@ -1,34 +1,131 @@ { - "participant_id":{ - "Description":"A participant ID" + "participant_id": { + "Description": "A participant ID", + "Annotations": { + "IsAbout": { + "TermURL": "nb:ParticipantID", + "Label": "Subject Unique Identifier" + }, + "Identifies": "participant" + } }, - "session_id":{ - "Description":"A session ID" + "session_id": { + "Description": "A session ID" }, - "pheno_age":{ - "Description":"Age of the participant" + "pheno_age": { + "Description": "Age of the participant", + "Annotations": { + "IsAbout": { + "TermURL": "nb:Age", + "Label": "Age" + }, + "Transformation": { + "TermURL": "nb:FromEuro", + "Label": "european decimal value" + }, + "MissingValues": [ + "NA" + ] + } }, - "pheno_sex":{ - "Description":"Sex variable", - "Levels":{ - "M":"Male", - "F":"Female" - } + "pheno_sex": { + "Description": "Sex variable", + "Levels": { + "M": "Male", + "F": "Female" + }, + "Annotations": { + "IsAbout": { + "TermURL": "nb:Sex", + "Label": "Sex" + }, + "Levels": { + "M": { + "TermURL": "snomed:248153007", + "Label": "Male" + }, + "F": { + "TermURL": "snomed:248152002", + "Label": "Female" + } + }, + "MissingValues": [ + "missing" + ] + } }, - "pheno_group":{ - "Description":"Group variable", - "Levels":{ - "PAT":"Patient", - "CTRL":"Control subject" - } + "pheno_group": { + "Description": "Group variable", + "Levels": { + "PAT": "Patient", + "CTRL": "Control subject" + }, + "Annotations": { + "IsAbout": { + "TermURL": "nb:Diagnosis", + "Label": "Diagnosis" + }, + "Levels": { + "PAT": { + "TermURL": "snomed:406506008", + "Label": "Attention deficit hyperactivity disorder" + }, + "CTRL": { + "TermURL": "ncit:C94342", + "Label": "Healthy Control" + } + }, + "MissingValues": [ + "NA" + ] + } }, - "tool1_item1":{ - "Description":"item 1 scores for tool1" + "tool1_item1": { + "Description": "item 1 scores for tool1", + "Annotations": { + "IsAbout": { + "TermURL": "nb:Assessment", + "Label": "Assessment tool" + }, + "IsPartOf": { + "TermURL": "cogatlas:trm_57964b8a66aed", + "Label": "Montreal Cognitive Assessment" + }, + "MissingValues": [ + "missing" + ] + } }, - "tool1_item2":{ - "Description":"item 2 scores for tool1" + "tool1_item2": { + "Description": "item 2 scores for tool1", + "Annotations": { + "IsAbout": { + "TermURL": "nb:Assessment", + "Label": "Assessment tool" + }, + "IsPartOf": { + "TermURL": "cogatlas:trm_57964b8a66aed", + "Label": "Montreal Cognitive Assessment" + }, + "MissingValues": [ + "missing" + ] + } }, - "tool2_item1":{ - "Description":"item 1 scores for tool2" + "tool2_item1": { + "Description": "item 1 scores for tool2", + "Annotations": { + "IsAbout": { + "TermURL": "nb:Assessment", + "Label": "Assessment tool" + }, + "IsPartOf": { + "TermURL": "cogatlas:tsk_4a57abb949ece", + "Label": "Unified Parkinson's Disease Rating Scale" + }, + "MissingValues": [ + "not completed" + ] + } } -} +} \ No newline at end of file diff --git a/cypress/fixtures/examples/good/example_synthetic_expected_output.json b/cypress/fixtures/examples/good/example_synthetic_expected_output.json deleted file mode 100644 index 3f7dafb3..00000000 --- a/cypress/fixtures/examples/good/example_synthetic_expected_output.json +++ /dev/null @@ -1,131 +0,0 @@ -{ - "participant_id":{ - "Description":"A participant ID", - "Annotations":{ - "IsAbout":{ - "TermURL":"nb:ParticipantID", - "Label":"Subject Unique Identifier" - }, - "Identifies":"participant" - } - }, - "session_id":{ - "Description":"A session ID" - }, - "pheno_age":{ - "Description":"Age of the participant", - "Annotations":{ - "IsAbout":{ - "TermURL":"nb:Age", - "Label":"Age" - }, - "Transformation":{ - "TermURL":"nb:FromEuro", - "Label":"european decimal value" - }, - "MissingValues":[ - "NA" - ] - } - }, - "pheno_sex":{ - "Description":"Sex variable", - "Levels":{ - "M":"Male", - "F":"Female" - }, - "Annotations":{ - "IsAbout":{ - "TermURL":"nb:Sex", - "Label":"Sex" - }, - "Levels":{ - "M":{ - "TermURL":"snomed:248153007", - "Label":"Male" - }, - "F":{ - "TermURL":"snomed:248152002", - "Label":"Female" - } - }, - "MissingValues":[ - "missing" - ] - } - }, - "pheno_group":{ - "Description":"Group variable", - "Levels":{ - "PAT":"Patient", - "CTRL":"Control subject" - }, - "Annotations":{ - "IsAbout":{ - "TermURL":"nb:Diagnosis", - "Label":"Diagnosis" - }, - "Levels":{ - "PAT":{ - "TermURL":"snomed:406506008", - "Label":"Attention deficit hyperactivity disorder" - }, - "CTRL":{ - "TermURL":"ncit:C94342", - "Label":"Healthy Control" - } - }, - "MissingValues":[ - "NA" - ] - } - }, - "tool1_item1":{ - "Description":"item 1 scores for tool1", - "Annotations":{ - "IsAbout":{ - "TermURL":"nb:Assessment", - "Label":"Assessment tool" - }, - "IsPartOf":{ - "TermURL":"cogatlas:trm_57964b8a66aed", - "Label":"Montreal Cognitive Assessment" - }, - "MissingValues":[ - "missing" - ] - } - }, - "tool1_item2":{ - "Description":"item 2 scores for tool1", - "Annotations":{ - "IsAbout":{ - "TermURL":"nb:Assessment", - "Label":"Assessment tool" - }, - "IsPartOf":{ - "TermURL":"cogatlas:trm_57964b8a66aed", - "Label":"Montreal Cognitive Assessment" - }, - "MissingValues":[ - "missing" - ] - } - }, - "tool2_item1":{ - "Description":"item 1 scores for tool2", - "Annotations":{ - "IsAbout":{ - "TermURL":"nb:Assessment", - "Label":"Assessment tool" - }, - "IsPartOf":{ - "TermURL":"cogatlas:tsk_4a57abb949ece", - "Label":"Unified Parkinson's Disease Rating Scale" - }, - "MissingValues":[ - "not completed" - ] - } - } -} diff --git a/cypress/fixtures/examples/good/example_synthetic_participants.json b/cypress/fixtures/examples/good/example_synthetic_participants.json new file mode 100644 index 00000000..51dfed5b --- /dev/null +++ b/cypress/fixtures/examples/good/example_synthetic_participants.json @@ -0,0 +1,34 @@ +{ + "participant_id": { + "Description": "A participant ID" + }, + "session_id": { + "Description": "A session ID" + }, + "pheno_age": { + "Description": "Age of the participant" + }, + "pheno_sex": { + "Description": "Sex variable", + "Levels": { + "M": "Male", + "F": "Female" + } + }, + "pheno_group": { + "Description": "Group variable", + "Levels": { + "PAT": "Patient", + "CTRL": "Control subject" + } + }, + "tool1_item1": { + "Description": "item 1 scores for tool1" + }, + "tool1_item2": { + "Description": "item 2 scores for tool1" + }, + "tool2_item1": { + "Description": "item 1 scores for tool2" + } +} \ No newline at end of file diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 0bddf0cf..e75f05d8 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -26,16 +26,6 @@ // Standard setup functionality for each collection of tests // NOTE: In the future we will likely want to parametrize this for different -// test setups (i.e. testing across different viewport sizes). -Cypress.Commands.add("appSetup", () => { - - // Standard setup for annotation tool testing - - // A. Set viewport size - // NOTE: Standard 13-inch laptop screen to start, but this can be expanded - cy.viewport("macbook-13"); -}); - Cypress.Commands.add("assertButtonStatus", (p_buttonName, p_enabled) => { let chainer = ( p_enabled ) ? "not.have.class" : "have.class"; diff --git a/cypress/unit/store-getter-getValueDescription.cy.js b/cypress/unit/store-getter-getValueDescription.cy.js index 649ffc06..6aa0ecd1 100644 --- a/cypress/unit/store-getter-getValueDescription.cy.js +++ b/cypress/unit/store-getter-getValueDescription.cy.js @@ -5,17 +5,13 @@ const state = { dataDictionary: { annotated: { "goodColumn": { - "levels": { - "value1": { - "description": "my description" - }, - "value2": { - "description": "my other description" + "Levels": { + "value1": "my description", + "value2": "my other description" } - } }, "levelsButNothingElse": { - "levels": { + "Levels": { } }, "badColumn": { @@ -33,12 +29,12 @@ describe("getValueDescription", () => { expect(result).to.be.equal("my description"); }); - it("Returns an empty string if the value does not have a description", () => { + it("Returns 'no description available' if the value does not have a description", () => { const resultNoValue = getters.getValueDescription(state)("levelsButNothingElse", "notExistValue"); - expect(resultNoValue).to.be.empty; + expect(resultNoValue).to.be.equal("no description available"); const resultNoLevels = getters.getValueDescription(state)("badColumn", "notExistValue"); - expect(resultNoLevels).to.be.empty; + expect(resultNoLevels).to.be.equal("no description available"); }); }); \ No newline at end of file diff --git a/nuxt.config.js b/nuxt.config.js index 4fd364ba..08770bd2 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -25,7 +25,6 @@ export default { // Global CSS: https://go.nuxtjs.dev/config-css css: [ - "@/assets/css/main.css" ], diff --git a/package-lock.json b/package-lock.json index 53b26c72..f7c44ffd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,22 +19,20 @@ "papaparse": "^5.4.1", "vue": "^2.6.14", "vue-select": "^3.20.2", - "vue-server-renderer": "^2.6.14", + "vue-server-renderer": "^2.7.15", "vue-template-compiler": "^2.6.14", "webpack": "^4.47.0" }, "devDependencies": { "cy-verify-downloads": "^0.2.2", - "cypress": "^13.3.3", + "cypress": "^13.4.0", "editorconfig": "^2.0.0", - "eslint": "^8.52.0", + "eslint": "^8.53.0", "eslint-config-airbnb": "^19.0.4", - "eslint-config-prettier": "^9.0.0", "eslint-plugin-cypress": "^2.15.1", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-vue": "^9.17.0", + "eslint-plugin-vue": "^9.18.1", "husky": "^8.0.3", - "lint-staged": "^15.0.2", + "lint-staged": "^15.1.0", "push-dir": "^0.4.1" } }, @@ -2831,9 +2829,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -2870,9 +2868,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -2891,9 +2889,9 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", - "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -6837,9 +6835,9 @@ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, "node_modules/cypress": { - "version": "13.3.3", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.3.3.tgz", - "integrity": "sha512-mbdkojHhKB1xbrj7CrKWHi22uFx9P9vQFiR0sYDZZoK99OMp9/ZYN55TO5pjbXmV7xvCJ4JwBoADXjOJK8aCJw==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.4.0.tgz", + "integrity": "sha512-KeWNC9xSHG/ewZURVbaQsBQg2mOKw4XhjJZFKjWbEjgZCdxpPXLpJnfq5Jns1Gvnjp6AlnIfpZfWFlDgVKXdWQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -7680,15 +7678,15 @@ } }, "node_modules/eslint": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", - "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.52.0", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -7774,18 +7772,6 @@ "eslint-plugin-import": "^2.25.2" } }, - "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, "node_modules/eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", @@ -8023,27 +8009,6 @@ "dev": true, "peer": true }, - "node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, "node_modules/eslint-plugin-react": { "version": "7.29.4", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", @@ -8124,9 +8089,9 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", - "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz", + "integrity": "sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", @@ -8777,12 +8742,6 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, "node_modules/fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -11022,9 +10981,9 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/lint-staged": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.0.2.tgz", - "integrity": "sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.1.0.tgz", + "integrity": "sha512-ZPKXWHVlL7uwVpy8OZ7YQjYDAuO5X4kMh0XgZvPNxLcCCngd0PO5jKQyy3+s4TL2EnHoIXIzP1422f/l3nZKMw==", "dev": true, "dependencies": { "chalk": "5.3.0", @@ -11036,7 +10995,7 @@ "micromatch": "4.0.5", "pidtree": "0.6.0", "string-argv": "0.3.2", - "yaml": "2.3.3" + "yaml": "2.3.4" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -14917,7 +14876,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", - "devOptional": true, + "optional": true, "bin": { "prettier": "bin-prettier.js" }, @@ -14925,18 +14884,6 @@ "node": ">=10.13.0" } }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -19148,9 +19095,9 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", - "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true, "engines": { "node": ">= 14" @@ -20797,9 +20744,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", + "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -20826,9 +20773,9 @@ } }, "globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -20843,9 +20790,9 @@ } }, "@eslint/js": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", - "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", + "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", "dev": true }, "@gar/promisify": { @@ -23870,9 +23817,9 @@ "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=" }, "cypress": { - "version": "13.3.3", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.3.3.tgz", - "integrity": "sha512-mbdkojHhKB1xbrj7CrKWHi22uFx9P9vQFiR0sYDZZoK99OMp9/ZYN55TO5pjbXmV7xvCJ4JwBoADXjOJK8aCJw==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.4.0.tgz", + "integrity": "sha512-KeWNC9xSHG/ewZURVbaQsBQg2mOKw4XhjJZFKjWbEjgZCdxpPXLpJnfq5Jns1Gvnjp6AlnIfpZfWFlDgVKXdWQ==", "dev": true, "requires": { "@cypress/request": "^3.0.0", @@ -24535,15 +24482,15 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", - "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", + "version": "8.53.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", + "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.52.0", + "@eslint/eslintrc": "^2.1.3", + "@eslint/js": "8.53.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -24700,13 +24647,6 @@ "semver": "^6.3.0" } }, - "eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", - "dev": true, - "requires": {} - }, "eslint-import-resolver-node": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", @@ -24909,15 +24849,6 @@ } } }, - "eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, "eslint-plugin-react": { "version": "7.29.4", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", @@ -24980,9 +24911,9 @@ "requires": {} }, "eslint-plugin-vue": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", - "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.18.1.tgz", + "integrity": "sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", @@ -25367,12 +25298,6 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, "fast-glob": { "version": "3.2.11", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", @@ -27012,9 +26937,9 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "lint-staged": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.0.2.tgz", - "integrity": "sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.1.0.tgz", + "integrity": "sha512-ZPKXWHVlL7uwVpy8OZ7YQjYDAuO5X4kMh0XgZvPNxLcCCngd0PO5jKQyy3+s4TL2EnHoIXIzP1422f/l3nZKMw==", "dev": true, "requires": { "chalk": "5.3.0", @@ -27026,7 +26951,7 @@ "micromatch": "4.0.5", "pidtree": "0.6.0", "string-argv": "0.3.2", - "yaml": "2.3.3" + "yaml": "2.3.4" }, "dependencies": { "ansi-escapes": { @@ -29585,16 +29510,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", - "devOptional": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } + "optional": true }, "pretty-bytes": { "version": "5.6.0", @@ -32848,9 +32764,9 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yaml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", - "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true }, "yauzl": { diff --git a/package.json b/package.json index f9fd342f..488770e2 100644 --- a/package.json +++ b/package.json @@ -26,22 +26,20 @@ "papaparse": "^5.4.1", "vue": "^2.6.14", "vue-select": "^3.20.2", - "vue-server-renderer": "^2.6.14", + "vue-server-renderer": "^2.7.15", "vue-template-compiler": "^2.6.14", "webpack": "^4.47.0" }, "devDependencies": { "cy-verify-downloads": "^0.2.2", - "cypress": "^13.3.3", + "cypress": "^13.4.0", "editorconfig": "^2.0.0", - "eslint": "^8.52.0", + "eslint": "^8.53.0", "eslint-config-airbnb": "^19.0.4", - "eslint-config-prettier": "^9.0.0", "eslint-plugin-cypress": "^2.15.1", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-vue": "^9.17.0", + "eslint-plugin-vue": "^9.18.1", "husky": "^8.0.3", - "lint-staged": "^15.0.2", + "lint-staged": "^15.1.0", "push-dir": "^0.4.1" } } diff --git a/pages/categorization.vue b/pages/categorization.vue index 9f41ca6d..a939c059 100644 --- a/pages/categorization.vue +++ b/pages/categorization.vue @@ -34,11 +34,7 @@ - - - - - + diff --git a/pages/index.vue b/pages/index.vue index 0ecfedc6..bfbd80ef 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -7,15 +7,6 @@

{{ uiText.dataTableHeader }}

- - -