From 808e0d1ef29d699cf28968060cbd71f52039d5b7 Mon Sep 17 00:00:00 2001 From: Gerard Burns Date: Wed, 5 Jul 2023 18:00:50 +0100 Subject: [PATCH] Linting improvements (#11119) --- .eslintrc.json | 19 +- babel.config.json | 3 + package.json | 18 +- .../src/FancyForm/FancyButtonRadio.svelte | 2 - .../bbui/src/Form/Core/EnvDropdown.svelte | 2 +- packages/bbui/src/Table/CellRenderer.svelte | 1 - packages/bbui/src/Table/Table.svelte | 2 +- .../src/builderStore/store/frontend.js | 2 +- .../FlowChart/ActionModal.svelte | 2 +- .../FlowChart/AutomationBlockTagline.svelte | 1 + .../CreateAutomationModal.svelte | 2 +- .../components/backend/DataTable/Table.svelte | 3 - .../DataTable/modals/CreateEditColumn.svelte | 4 - .../DatasourceNavigator.svelte | 2 +- .../DatasourceNavigator/icons/Budibase.svelte | 82 +- .../ExistingTableDataImport.svelte | 2 - .../TableNavigator/TableDataImport.svelte | 2 - .../commandPalette/CommandPalette.svelte | 24 +- .../src/components/common/CustomSVG.svelte | 1 + .../common/bindings/BindingPicker.svelte | 3 +- .../src/components/deploy/AppActions.svelte | 3 - .../actions/TriggerAutomation.svelte | 7 - .../FieldConfiguration.svelte | 4 - .../controls/FilterEditor/FilterDrawer.svelte | 2 +- .../FlatButtonGroup/FlatButton.svelte | 1 + .../settings/controls/PropertyControl.svelte | 2 +- .../components/portal/page/SideNavItem.svelte | 1 - .../_components/BuilderSidePanel.svelte | 6 - .../EditDatasourceConfigButton.svelte | 1 - .../[screenId]/_components/AppPreview.svelte | 1 + .../navigation/ComponentTree.svelte | 2 - .../src/pages/builder/apps/index.svelte | 2 +- .../portal/_components/MobileMenu.svelte | 2 +- .../pages/builder/portal/apps/create.svelte | 4 - .../pages/builder/portal/apps/index.svelte | 4 - .../_components/DeletionFailureModal.svelte | 2 - .../builder/portal/users/users/index.svelte | 2 +- .../client/src/components/ClientApp.svelte | 3 + .../client/src/components/Component.svelte | 2 +- .../client/src/components/app/Embed.svelte | 1 + .../client/src/components/app/Grid.svelte | 2 +- .../app/dynamic-filter/FilterModal.svelte | 2 +- .../grid/cells/RelationshipCell.svelte | 2 +- .../grid/overlays/ResizeOverlay.svelte | 11 +- yarn.lock | 1254 ++++++++++++++--- 45 files changed, 1190 insertions(+), 310 deletions(-) create mode 100644 babel.config.json diff --git a/.eslintrc.json b/.eslintrc.json index d94c749042..75584b8163 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -5,7 +5,7 @@ "jest": true, "node": true }, - "parser": "babel-eslint", + "parser": "@babel/eslint-parser", "parserOptions": { "ecmaVersion": 2019, "sourceType": "module", @@ -18,17 +18,23 @@ "*.spec.js", "bundle.js" ], - "plugins": ["svelte3"], "extends": ["eslint:recommended"], "overrides": [ { - "files": ["*.svelte"], - "processor": "svelte3/svelte3" + "files": ["**/*.svelte"], + "extends": "plugin:svelte/recommended", + "parser": "svelte-eslint-parser", + "parserOptions": { + "parser": "@babel/eslint-parser", + "ecmaVersion": 2019, + "sourceType": "module", + "allowImportExportEverywhere": true + } + }, { "files": ["**/*.ts"], "parser": "@typescript-eslint/parser", - "plugins": [], "extends": ["eslint:recommended"], "rules": { "no-unused-vars": "off", @@ -41,7 +47,8 @@ } ], "rules": { - "no-self-assign": "off" + "no-self-assign": "off", + "no-unused-vars": ["error", { "varsIgnorePattern": "^_", "argsIgnorePattern": "^_", "destructuredArrayIgnorePattern": "^_" }] }, "globals": { "GeolocationPositionError": true diff --git a/babel.config.json b/babel.config.json new file mode 100644 index 0000000000..a6c42326bb --- /dev/null +++ b/babel.config.json @@ -0,0 +1,3 @@ +{ + "presets": [["@babel/preset-env", { "targets": { "node": "current" } }]] +} diff --git a/package.json b/package.json index 42e528dfce..a4b830d40b 100644 --- a/package.json +++ b/package.json @@ -6,12 +6,10 @@ "@nx/js": "16.2.1", "@rollup/plugin-json": "^4.0.2", "@typescript-eslint/parser": "5.45.0", - "babel-eslint": "^10.0.3", "esbuild": "^0.17.18", "esbuild-node-externals": "^1.7.0", - "eslint": "^7.28.0", + "eslint": "^8.44.0", "eslint-plugin-cypress": "^2.11.3", - "eslint-plugin-svelte3": "^3.2.0", "husky": "^8.0.3", "js-yaml": "^4.1.0", "kill-port": "^1.6.1", @@ -23,7 +21,12 @@ "rimraf": "^3.0.2", "rollup-plugin-replace": "^2.2.0", "svelte": "^3.38.2", - "typescript": "4.7.3" + "typescript": "4.7.3", + "@babel/core": "^7.22.5", + "@babel/eslint-parser": "^7.22.5", + "@babel/preset-env": "^7.22.5", + "eslint-plugin-svelte": "^2.32.2", + "svelte-eslint-parser": "^0.32.0" }, "scripts": { "preinstall": "node scripts/syncProPackage.js", @@ -52,10 +55,10 @@ "dev:built": "yarn run kill-all && cd packages/server && yarn dev:stack:up && cd ../../ && lerna run --stream --parallel dev:built", "dev:docker": "yarn build:docker:pre && docker-compose -f hosting/docker-compose.build.yaml -f hosting/docker-compose.dev.yaml --env-file hosting/.env up --build --scale proxy-service=0", "test": "lerna run --stream test --stream", - "lint:eslint": "eslint packages && eslint qa-core", + "lint:eslint": "eslint packages qa-core --max-warnings=0", "lint:prettier": "prettier --check \"packages/**/*.{js,ts,svelte}\" && prettier --write \"examples/**/*.{js,ts,svelte}\" && prettier --check \"qa-core/**/*.{js,ts,svelte}\"", "lint": "yarn run lint:eslint && yarn run lint:prettier", - "lint:fix:eslint": "eslint --fix packages qa-core", + "lint:fix:eslint": "eslint --fix --max-warnings=0 packages qa-core", "lint:fix:prettier": "prettier --write \"packages/**/*.{js,ts,svelte}\" && prettier --write \"examples/**/*.{js,ts,svelte}\" && prettier --write \"qa-core/**/*.{js,ts,svelte}\"", "lint:fix": "yarn run lint:fix:prettier && yarn run lint:fix:eslint", "build:specs": "lerna run --stream specs", @@ -103,5 +106,6 @@ "@budibase/string-templates": "0.0.0", "@budibase/types": "0.0.0" }, - "dependencies": {} + "dependencies": { + } } diff --git a/packages/bbui/src/FancyForm/FancyButtonRadio.svelte b/packages/bbui/src/FancyForm/FancyButtonRadio.svelte index 510fd8efb8..3048b09555 100644 --- a/packages/bbui/src/FancyForm/FancyButtonRadio.svelte +++ b/packages/bbui/src/FancyForm/FancyButtonRadio.svelte @@ -15,8 +15,6 @@ const dispatch = createEventDispatcher() - $: placeholder = !value - const extractProperty = (value, property) => { if (value && typeof value === "object") { return value[property] diff --git a/packages/bbui/src/Form/Core/EnvDropdown.svelte b/packages/bbui/src/Form/Core/EnvDropdown.svelte index 0c647a1911..2edf8a5f9d 100644 --- a/packages/bbui/src/Form/Core/EnvDropdown.svelte +++ b/packages/bbui/src/Form/Core/EnvDropdown.svelte @@ -150,7 +150,7 @@ {:else if variables.length}
- {#each variables as variable, idx} + {#each variables as variable}
  • x.column === schema?.name) $: renderer = customRenderer?.component ?? typeMap[type] ?? StringRenderer - $: width = schema?.width || "150px" $: cellValue = getCellValue(value, schema.template) const getType = schema => { diff --git a/packages/bbui/src/Table/Table.svelte b/packages/bbui/src/Table/Table.svelte index f8528aac36..3a86295178 100644 --- a/packages/bbui/src/Table/Table.svelte +++ b/packages/bbui/src/Table/Table.svelte @@ -379,7 +379,7 @@
  • {/if} {#if sortedRows?.length} - {#each sortedRows as row, idx} + {#each sortedRows as row}
    {#if showEditColumn}
    { links: { save: async (url, title) => { const navigation = get(store).navigation - let links = [...navigation?.links] + let links = [...(navigation?.links ?? [])] // Skip if we have an identical link if (links.find(link => link.url === url && link.text === title)) { diff --git a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ActionModal.svelte b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ActionModal.svelte index 96dc8f4686..15dd864168 100644 --- a/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ActionModal.svelte +++ b/packages/builder/src/components/automation/AutomationBuilder/FlowChart/ActionModal.svelte @@ -168,7 +168,7 @@ Plugins
    - {#each Object.entries(plugins) as [idx, action]} + {#each Object.entries(plugins) as [_, action]}
    + {@html html}
    diff --git a/packages/builder/src/components/automation/AutomationPanel/CreateAutomationModal.svelte b/packages/builder/src/components/automation/AutomationPanel/CreateAutomationModal.svelte index 5fb27eaaf3..647a8081cf 100644 --- a/packages/builder/src/components/automation/AutomationPanel/CreateAutomationModal.svelte +++ b/packages/builder/src/components/automation/AutomationPanel/CreateAutomationModal.svelte @@ -71,7 +71,7 @@
    - {#each triggers as [idx, trigger]} + {#each triggers as [_, trigger]}
    { Object.values(schema || {}).forEach(col => { diff --git a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte index 665175a435..620783be34 100644 --- a/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte +++ b/packages/builder/src/components/backend/DataTable/modals/CreateEditColumn.svelte @@ -57,7 +57,6 @@ let table = $tables.selected let confirmDeleteDialog - let deletion let savingColumn let deleteColName let jsonSchemaModal @@ -215,7 +214,6 @@ notifications.success(`Column ${editableColumn.name} deleted`) confirmDeleteDialog.hide() hide() - deletion = false dispatch("updatecolumns") } } catch (error) { @@ -266,13 +264,11 @@ function confirmDelete() { confirmDeleteDialog.show() - deletion = true } function hideDeleteDialog() { confirmDeleteDialog.hide() deleteColName = "" - deletion = false } function getRelationshipOptions(field) { diff --git a/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte b/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte index 99d7d5285d..f7b6f61a10 100644 --- a/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte +++ b/packages/builder/src/components/backend/DatasourceNavigator/DatasourceNavigator.svelte @@ -169,7 +169,7 @@ on:click={() => selectTable(TableNames.USERS)} selectedBy={$userSelectedResourceMap[TableNames.USERS]} /> - {#each enrichedDataSources as datasource, idx} + {#each enrichedDataSources as datasource} @@ -102,24 +102,24 @@ diff --git a/packages/builder/src/components/backend/TableNavigator/ExistingTableDataImport.svelte b/packages/builder/src/components/backend/TableNavigator/ExistingTableDataImport.svelte index eba17e8ab9..6ea2d771e9 100644 --- a/packages/builder/src/components/backend/TableNavigator/ExistingTableDataImport.svelte +++ b/packages/builder/src/components/backend/TableNavigator/ExistingTableDataImport.svelte @@ -6,7 +6,6 @@ let error = null let fileName = null - let fileType = null let loading = false let updateExistingRows = false @@ -74,7 +73,6 @@ const response = await parseFile(e) rows = response.rows fileName = response.fileName - fileType = response.fileType } catch (e) { loading = false error = e diff --git a/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte b/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte index f34a3e9c98..40af470b4d 100644 --- a/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte +++ b/packages/builder/src/components/backend/TableNavigator/TableDataImport.svelte @@ -7,7 +7,6 @@ let fileInput let error = null let fileName = null - let fileType = null let loading = false let validation = {} @@ -60,7 +59,6 @@ rows = response.rows schema = response.schema fileName = response.fileName - fileType = response.fileType } catch (e) { loading = false error = e diff --git a/packages/builder/src/components/commandPalette/CommandPalette.svelte b/packages/builder/src/components/commandPalette/CommandPalette.svelte index f77736055e..3c95dbbd0b 100644 --- a/packages/builder/src/components/commandPalette/CommandPalette.svelte +++ b/packages/builder/src/components/commandPalette/CommandPalette.svelte @@ -93,42 +93,42 @@ `https://github.com/Budibase/budibase/issues/new?assignees=&labels=bug&template=bug_report.md&title=` ), }, - ...$datasources?.list.map(datasource => ({ + ...($datasources?.list?.map(datasource => ({ type: "Datasource", name: `${datasource.name}`, icon: "Data", action: () => $goto(`./data/datasource/${datasource._id}`), - })), - ...$tables?.list.map(table => ({ + })) ?? []), + ...($tables?.list?.map(table => ({ type: "Table", name: table.name, icon: "Table", action: () => $goto(`./data/table/${table._id}`), - })), - ...$views?.list.map(view => ({ + })) ?? []), + ...($views?.list?.map(view => ({ type: "View", name: view.name, icon: "Remove", action: () => $goto(`./data/view/${view.name}`), - })), - ...$queries?.list.map(query => ({ + })) ?? []), + ...($queries?.list?.map(query => ({ type: "Query", name: query.name, icon: "SQLQuery", action: () => $goto(`./data/query/${query._id}`), - })), + })) ?? []), ...$sortedScreens.map(screen => ({ type: "Screen", name: screen.routing.route, icon: "WebPage", action: () => $goto(`./design/${screen._id}/components`), })), - ...$automationStore?.automations.map(automation => ({ + ...($automationStore?.automations?.map(automation => ({ type: "Automation", name: automation.name, icon: "ShareAndroid", action: () => $goto(`./automation/${automation._id}`), - })), + })) ?? []), ...Constants.Themes.map(theme => ({ type: "Change Builder Theme", name: theme.name, @@ -237,11 +237,11 @@
    - {#each categories as [name, results], catIdx} + {#each categories as [name, results]}
    {name}
    - {#each results as command, cmdIdx} + {#each results as command}
    runAction(command)} diff --git a/packages/builder/src/components/common/CustomSVG.svelte b/packages/builder/src/components/common/CustomSVG.svelte index ce6e964c38..3cd73a8d7a 100644 --- a/packages/builder/src/components/common/CustomSVG.svelte +++ b/packages/builder/src/components/common/CustomSVG.svelte @@ -20,4 +20,5 @@ } + {@html substituteSize(svgHtml)} diff --git a/packages/builder/src/components/common/bindings/BindingPicker.svelte b/packages/builder/src/components/common/bindings/BindingPicker.svelte index 50e7c66682..f752e37315 100644 --- a/packages/builder/src/components/common/bindings/BindingPicker.svelte +++ b/packages/builder/src/components/common/bindings/BindingPicker.svelte @@ -88,6 +88,7 @@ {/if} {#if hoverTarget.description}
    + {@html hoverTarget.description}
    {/if} @@ -124,7 +125,6 @@ /> - { @@ -162,7 +162,6 @@
      {#each category.bindings as binding} -
    • { diff --git a/packages/builder/src/components/deploy/AppActions.svelte b/packages/builder/src/components/deploy/AppActions.svelte index 485ab7150b..3c308618c3 100644 --- a/packages/builder/src/components/deploy/AppActions.svelte +++ b/packages/builder/src/components/deploy/AppActions.svelte @@ -139,7 +139,6 @@
      - {#if updateAvailable && $isOnlyUser}
      @@ -181,7 +180,6 @@
      -
      { @@ -221,7 +219,6 @@ >
      - 0 $: selectedAutomation = automations?.find( a => a._id === parameters?.automationId ) @@ -145,12 +144,6 @@ padding-bottom: 20px; } - .params { - display: flex; - flex-wrap: nowrap; - gap: 25px; - } - .synchronous-info { display: flex; gap: var(--spacing-s); diff --git a/packages/builder/src/components/design/settings/controls/FieldConfiguration/FieldConfiguration.svelte b/packages/builder/src/components/design/settings/controls/FieldConfiguration/FieldConfiguration.svelte index f9127460e2..2778ce4f74 100644 --- a/packages/builder/src/components/design/settings/controls/FieldConfiguration/FieldConfiguration.svelte +++ b/packages/builder/src/components/design/settings/controls/FieldConfiguration/FieldConfiguration.svelte @@ -8,7 +8,6 @@ getSchemaForDatasource, } from "builderStore/dataBinding" import { currentAsset } from "builderStore" - import { getFields } from "helpers/searchFields" export let componentInstance export let value = [] @@ -31,9 +30,6 @@ $: options = Object.keys(schema || {}) $: sanitisedValue = getValidColumns(value, options) $: updateBoundValue(sanitisedValue) - $: enrichedSchemaFields = getFields(Object.values(schema || {}), { - allowLinks: true, - }) const getSchema = (asset, datasource) => { const schema = getSchemaForDatasource(asset, datasource).schema diff --git a/packages/builder/src/components/design/settings/controls/FilterEditor/FilterDrawer.svelte b/packages/builder/src/components/design/settings/controls/FilterEditor/FilterDrawer.svelte index f56d7a78d4..d703ace92d 100644 --- a/packages/builder/src/components/design/settings/controls/FilterEditor/FilterDrawer.svelte +++ b/packages/builder/src/components/design/settings/controls/FilterEditor/FilterDrawer.svelte @@ -192,7 +192,7 @@
      - {#each rawFilters as filter, idx} + {#each rawFilters as filter} 1} on:wheel={e => (focused ? e.stopPropagation() : null)} > - {#each value || [] as relationship, idx} + {#each value || [] as relationship} {#if relationship.primaryDisplay}
      =0.0.4" -source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.0: +source-map@^0.5.6, source-map@~0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -23777,6 +24685,17 @@ svelte-dnd-action@^0.9.8: resolved "https://registry.yarnpkg.com/svelte-dnd-action/-/svelte-dnd-action-0.9.22.tgz#003eee9dddb31d8c782f6832aec8b1507fff194d" integrity sha512-lOQJsNLM1QWv5mdxIkCVtk6k4lHCtLgfE59y8rs7iOM6erchbLC9hMEFYSveZz7biJV0mpg7yDSs4bj/RT/YkA== +svelte-eslint-parser@^0.32.0: + version "0.32.0" + resolved "https://registry.yarnpkg.com/svelte-eslint-parser/-/svelte-eslint-parser-0.32.0.tgz#4a9bd21fd8e9f29136c3eaf140ba1ce90e8cb353" + integrity sha512-Q8Nh3GHHoWZMv3Ej4zw+3+gyWPR8I5pPTJXEOvW+JOgwhGXqGKh7mOKNlVcEPtk+PCGiK9TPaRtvRkKoJR327A== + dependencies: + eslint-scope "^7.0.0" + eslint-visitor-keys "^3.0.0" + espree "^9.0.0" + postcss "^8.4.23" + postcss-scss "^4.0.6" + svelte-flatpickr@3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/svelte-flatpickr/-/svelte-flatpickr-3.2.3.tgz#db5dd7ad832ef83262b45e09737955ad3d591fc8" @@ -26127,11 +27046,6 @@ yauzl@^2.10.0, yauzl@^2.4.2: buffer-crc32 "~0.2.3" fd-slicer "~1.1.0" -year@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/year/-/year-0.2.1.tgz#4083ae520a318b23ec86037f3000cb892bdf9bb0" - integrity sha512-9GnJUZ0QM4OgXuOzsKNzTJ5EOkums1Xc+3YQXp+Q+UxFjf7zLucp9dQ8QMIft0Szs1E1hUiXFim1OYfEKFq97w== - ylru@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.3.2.tgz#0de48017473275a4cbdfc83a1eaf67c01af8a785"