From de40414a0de42b805453d0c3eb61e4679eeeb126 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 08:55:49 +0000 Subject: [PATCH 01/27] build(deps): bump @mdi/font from 7.1.96 to 7.2.96 Bumps [@mdi/font](https://github.com/Templarian/MaterialDesign-Webfont) from 7.1.96 to 7.2.96. - [Commits](https://github.com/Templarian/MaterialDesign-Webfont/compare/v7.1.96...v7.2.96) --- updated-dependencies: - dependency-name: "@mdi/font" dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 7 ++++--- package.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index c1028213..09c7d076 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dependencies": { "@electron/remote": "~2.0.1", "@faker-js/faker": "~6.1.2", - "@mdi/font": "~7.1.96", + "@mdi/font": "~7.2.96", "@turf/helpers": "~6.5.0", "@vueuse/core": "~8.7.5", "ace-builds": "~1.14.0", @@ -2078,8 +2078,9 @@ } }, "node_modules/@mdi/font": { - "version": "7.1.96", - "license": "Apache-2.0" + "version": "7.2.96", + "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.2.96.tgz", + "integrity": "sha512-e//lmkmpFUMZKhmCY9zdjRe4zNXfbOIJnn6xveHbaV2kSw5aJ5dLXUxcRt1Gxfi7ZYpFLUWlkG2MGSFAiqAu7w==" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", diff --git a/package.json b/package.json index ef40124c..cb9300e1 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "dependencies": { "@electron/remote": "~2.0.1", "@faker-js/faker": "~6.1.2", - "@mdi/font": "~7.1.96", + "@mdi/font": "~7.2.96", "@turf/helpers": "~6.5.0", "@vueuse/core": "~8.7.5", "ace-builds": "~1.14.0", From 8c4c93cb07d38cea196e6826d9f3bd7543e373b2 Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Fri, 4 Aug 2023 12:28:03 +0200 Subject: [PATCH 02/27] chore(translation): add translation helper script --- package-lock.json | 153 ++++++++++++++++++++++++++++++++++++ package.json | 2 + scripts/translationCheck.js | 0 scripts/translationCheck.ts | 45 +++++++++++ 4 files changed, 200 insertions(+) delete mode 100644 scripts/translationCheck.js create mode 100644 scripts/translationCheck.ts diff --git a/package-lock.json b/package-lock.json index e26ff70c..a76a9b18 100644 --- a/package-lock.json +++ b/package-lock.json @@ -89,6 +89,7 @@ "stylelint-scss": "~4.3.0", "tree-kill": "~1.2.2", "ts-loader": "~9.2.8", + "ts-node": "~10.9.1", "typescript": "~4.6.3", "unzip-crx-3": "~0.2.0", "vue-eslint-parser": "~8.3.0", @@ -1697,6 +1698,28 @@ "node": ">=6.9.0" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@csstools/selector-specificity": { "version": "2.2.0", "dev": true, @@ -2148,6 +2171,30 @@ "node": ">=10" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, "node_modules/@turf/helpers": { "version": "6.5.0", "license": "MIT", @@ -3116,6 +3163,15 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/add-stream": { "version": "1.0.0", "dev": true, @@ -3387,6 +3443,12 @@ "dev": true, "license": "ISC" }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "node_modules/argparse": { "version": "2.0.1", "license": "Python-2.0" @@ -4881,6 +4943,12 @@ "node": ">=10.0.0" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "node_modules/cross-env": { "version": "7.0.3", "dev": true, @@ -5279,6 +5347,15 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dir-compare": { "version": "2.4.0", "dev": true, @@ -9170,6 +9247,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "node_modules/map-obj": { "version": "4.3.0", "dev": true, @@ -13635,6 +13718,61 @@ "dev": true, "license": "ISC" }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/tsconfig-paths": { "version": "3.14.2", "dev": true, @@ -14015,6 +14153,12 @@ "dev": true, "license": "MIT" }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "dev": true, @@ -14940,6 +15084,15 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "dev": true, diff --git a/package.json b/package.json index cdfbfc2a..2d9eef5a 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "release:beta": "npm run release -- --prerelease beta", "devtools:install": "node scripts/devtoolsInstaller", "postinstall": "electron-builder install-app-deps", + "translation:check": "ts-node ./scripts/translationCheck.ts", "test:e2e": "npm run compile && npm run test:e2e-dry", "test:e2e-dry": "xvfb-maybe -- playwright test", "lint": "eslint . --ext .js,.ts,.vue && stylelint \"./src/**/*.{css,scss,sass,vue}\"", @@ -198,6 +199,7 @@ "stylelint-scss": "~4.3.0", "tree-kill": "~1.2.2", "ts-loader": "~9.2.8", + "ts-node": "~10.9.1", "typescript": "~4.6.3", "unzip-crx-3": "~0.2.0", "vue-eslint-parser": "~8.3.0", diff --git a/scripts/translationCheck.js b/scripts/translationCheck.js deleted file mode 100644 index e69de29b..00000000 diff --git a/scripts/translationCheck.ts b/scripts/translationCheck.ts new file mode 100644 index 00000000..09a74ed4 --- /dev/null +++ b/scripts/translationCheck.ts @@ -0,0 +1,45 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +import { localesNames } from '../src/renderer/i18n/supported-locales'; +import { enUS } from '../src/renderer/i18n/en-US'; +const locale = process.argv[2]; +let fullCount = 0; +let checkCount = 0; + +if (!locale) { + console.log('Please specify locale code as first argument.'); + process.exit(); +} + +if (!Object.keys(localesNames).includes(locale)) { + console.log(`Translation ${locale} not fount in supported locales.`); + process.exit(); +} + +console.log('Checking missing translations for:', locale); + +const i18nFile = require(`../src/renderer/i18n/${locale}`)[locale.replace('-', '')]; + +for (const group in enUS) { + // @ts-ignore + fullCount += Object.keys(enUS[group]).length; + + if (!Object.keys(i18nFile).includes(group)) { + console.log(`Group "\u001b[31m${group}\u001b[0m" missing!`); + continue; + } + + // @ts-ignore + for (const term in enUS[group]) { + if (!Object.keys(i18nFile[group]).includes(term)) + console.log(`Translation "\u001b[33m${group}.${term}\u001b[0m" missing!`); + // @ts-ignore + else if (i18nFile[group][term] === enUS[group][term]) { + console.log(`Term "\u001b[36m${group}.${term}\u001b[0m" not translated!`); + checkCount++; + } + else + checkCount++; + } +} + +console.log(checkCount, 'of', fullCount, 'strings are present in', locale, `(\u001b[32m${(checkCount*100/fullCount).toFixed(1)}%\u001b[0m)`); From ad7e459c689d70ca664b9a3091d3dcab3f26ce4d Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Tue, 8 Aug 2023 18:05:27 +0200 Subject: [PATCH 03/27] feat: support to links in changelog --- .../components/ModalSettingsChangelog.vue | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/ModalSettingsChangelog.vue b/src/renderer/components/ModalSettingsChangelog.vue index d71bf4ad..6e982b51 100644 --- a/src/renderer/components/ModalSettingsChangelog.vue +++ b/src/renderer/components/ModalSettingsChangelog.vue @@ -18,6 +18,7 @@ import { marked } from 'marked'; import BaseLoader from '@/components/BaseLoader.vue'; import { useApplicationStore } from '@/stores/application'; import { ref } from 'vue'; +import { shell } from 'electron'; const { appVersion } = useApplicationStore(); @@ -26,6 +27,10 @@ const isLoading = ref(true); const error = ref(''); const isError = ref(false); +const openOutside = (link: string) => { + shell.openExternal(link); +}; + const getChangelog = async () => { try { const apiRes = await fetch(`https://api.github.com/repos/antares-sql/antares/releases/tags/v${appVersion}`, { @@ -40,7 +45,7 @@ const getChangelog = async () => { const renderer = { link (href: string, title: string, text: string) { - return text; + return `${text}`; }, listitem (text: string) { return `
  • ${text.replace(/ *\([^)]*\) */g, '')}
  • `; @@ -57,6 +62,17 @@ const getChangelog = async () => { } isLoading.value = false; + + setTimeout(() => { + const links = document.querySelectorAll('.changelog-link'); + + for (const link of links) { + link.addEventListener('click', e => { + e.preventDefault(); + openOutside(link.href); + }); + } + }, 0); }; getChangelog(); From 083198af8fc6127dc164509a73d07b3ced8e7943 Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Wed, 9 Aug 2023 18:44:31 +0200 Subject: [PATCH 04/27] chore: update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f9a6fbf2..8fb92015 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,8 @@ # Antares SQL Client -![GitHub package.json version](https://img.shields.io/github/package-json/v/fabio286/antares) ![GitHub](https://img.shields.io/github/license/fabio286/antares) [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Ffabio286%2Fantares%2Fbadge&style=flat)](https://actions-badge.atrox.dev/fabio286/antares/goto) [![antares](https://snapcraft.io/antares/badge.svg)](https://snapcraft.io/antares) [![antares](https://snapcraft.io/antares/trending.svg?name=0)](https://snapcraft.io/antares) [![Twitter Follow](https://img.shields.io/twitter/follow/AntaresSQL?style=social)](https://twitter.com/AntaresSQL) [![Plant a Tree](https://raw.githubusercontent.com/Fabio286/treedom-badge/master/svg/plant-a-tree.svg)](https://www.treedom.net/en/user/fabio-di-stasio/event/antares-for-the-planet) +![GitHub package.json version](https://img.shields.io/github/package-json/v/fabio286/antares) ![GitHub](https://img.shields.io/github/license/fabio286/antares) [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Ffabio286%2Fantares%2Fbadge&style=flat)](https://actions-badge.atrox.dev/fabio286/antares/goto) [![antares](https://snapcraft.io/antares/badge.svg)](https://snapcraft.io/antares) [![antares](https://snapcraft.io/antares/trending.svg?name=0)](https://snapcraft.io/antares) +![Mastodon Follow](https://img.shields.io/mastodon/follow/%20110860460902482117?domain=https%3A%2F%2Ffosstodon.org&style=social) [![Twitter Follow](https://img.shields.io/twitter/follow/AntaresSQL?style=social)](https://twitter.com/AntaresSQL) [![Plant a Tree](https://raw.githubusercontent.com/Fabio286/treedom-badge/master/svg/plant-a-tree.svg)](https://www.treedom.net/en/user/fabio-di-stasio/event/antares-for-the-planet) Antares is an SQL client based on [Electron.js](https://github.com/electron/electron) and [Vue.js](https://github.com/vuejs/vue) that aims to become a useful tool, especially for developers. Our target is to support as many databases as possible, and all major operating systems, including the ARM versions. @@ -17,7 +18,7 @@ However, there are all the features necessary to have a pleasant database manage We are actively working on it, hoping to provide new cool features, improvements and fixes as soon as possible. 🔗 If you are curious to try Antares you can download and install the [latest release](https://github.com/Fabio286/antares/releases/latest). -👁 To stay tuned for new releases [follow Antares SQL](https://twitter.com/AntaresSQL) on Twitter. +👁 To stay tuned for new releases follow Antares SQL on [Mastodon](https://fosstodon.org/@AntaresSQL) or [Twitter](https://twitter.com/AntaresSQL). 🌟 Don't forget to **leave a star** if you appreciate this project. 🗳️ Polls: From 2e39d810b519401d0410cbb76520c07c595329fc Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Fri, 11 Aug 2023 09:52:25 +0200 Subject: [PATCH 05/27] feat: ability to change sql dump file name --- src/renderer/components/ModalExportSchema.vue | 25 ++++++++++++------- src/renderer/i18n/en-US.ts | 1 + 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/renderer/components/ModalExportSchema.vue b/src/renderer/components/ModalExportSchema.vue index 2b8bd143..e5f3091f 100644 --- a/src/renderer/components/ModalExportSchema.vue +++ b/src/renderer/components/ModalExportSchema.vue @@ -42,10 +42,16 @@
    -
    -
    - - {{ filename }} +
    +
    + +
    @@ -54,7 +60,7 @@ :title="t('general.refresh')" @click="refresh" > - +
    @@ -316,6 +322,7 @@ const options: Ref> = ref({ sqlInsertDivider: 'bytes' as 'bytes' | 'rows' }); const basePath = ref(''); +const chosenFilename = ref(''); const currentWorkspace = computed(() => getWorkspace(selectedWorkspace.value)); const clientCustoms: Ref = computed(() => currentWorkspace.value.customizations); @@ -328,9 +335,9 @@ const schemaItems = computed(() => { }); const filename = computed(() => { const date = moment().format('YYYY-MM-DD_HH-mm-ss'); - return `${props.selectedSchema}_${date}.${options.value.outputFormat}`; + return `${props.selectedSchema}_${date}`; }); -const dumpFilePath = computed(() => `${basePath.value}/${filename.value}`); +const dumpFilePath = computed(() => `${basePath.value}/${chosenFilename.value || filename.value}.${options.value.outputFormat}`); const includeStructureStatus = computed(() => { if (tables.value.every(item => item.includeStructure)) return 1; else if (tables.value.some(item => item.includeStructure)) return 2; diff --git a/src/renderer/i18n/en-US.ts b/src/renderer/i18n/en-US.ts index e79a7f51..44510a67 100644 --- a/src/renderer/i18n/en-US.ts +++ b/src/renderer/i18n/en-US.ts @@ -290,6 +290,7 @@ export const enUS = { color: 'Color', label: 'Label', icon: 'Icon', + fileName: 'File name', madeWithJS: 'Made with 💛 and JavaScript!', checkForUpdates: 'Check for updates', noUpdatesAvailable: 'No updates available', From 84b2255bf405431070511890b2bca770fc4cc2bc Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Fri, 11 Aug 2023 11:49:49 +0200 Subject: [PATCH 06/27] feat: ability to export a table dump from table context menu --- src/renderer/App.vue | 16 ++++++- src/renderer/components/ModalExportSchema.vue | 46 +++++++++++++------ .../WorkspaceExploreBarSchemaContext.vue | 16 ++----- .../WorkspaceExploreBarTableContext.vue | 14 ++++++ src/renderer/i18n/en-US.ts | 1 + src/renderer/stores/schemaExport.ts | 21 +++++++++ 6 files changed, 88 insertions(+), 26 deletions(-) create mode 100644 src/renderer/stores/schemaExport.ts diff --git a/src/renderer/App.vue b/src/renderer/App.vue index 3a20a72d..5686c4dd 100644 --- a/src/renderer/App.vue +++ b/src/renderer/App.vue @@ -21,7 +21,15 @@
    - + + +
    @@ -33,9 +41,11 @@ import { useI18n } from 'vue-i18n'; import { Menu, getCurrentWindow } from '@electron/remote'; import { useApplicationStore } from '@/stores/application'; import { useConnectionsStore } from '@/stores/connections'; +import { useSchemaExportStore } from '@/stores/schemaExport'; import { useSettingsStore } from '@/stores/settings'; import { useWorkspacesStore } from '@/stores/workspaces'; import TheSettingBar from '@/components/TheSettingBar.vue'; +import ModalExportSchema from '@/components/ModalExportSchema.vue'; const { t } = useI18n(); @@ -65,6 +75,10 @@ const { getSelected: selectedWorkspace } = storeToRefs(workspacesStore); const { checkVersionUpdate } = applicationStore; const { changeApplicationTheme } = settingsStore; +const schemaExportStore = useSchemaExportStore(); +const { hideExportModal } = schemaExportStore; +const { isExportModal: isExportSchemaModal } = storeToRefs(schemaExportStore); + const isAllConnectionsModal: Ref = ref(false); document.addEventListener('DOMContentLoaded', () => { diff --git a/src/renderer/components/ModalExportSchema.vue b/src/renderer/components/ModalExportSchema.vue index e5f3091f..14072bb3 100644 --- a/src/renderer/components/ModalExportSchema.vue +++ b/src/renderer/components/ModalExportSchema.vue @@ -154,6 +154,7 @@ v-for="item in tables" :key="item.table" class="tr" + :class="{'selected': item.table === selectedTable}" >
    {{ item.table }} @@ -278,6 +279,7 @@ import { useI18n } from 'vue-i18n'; import { ClientCode, SchemaInfos } from 'common/interfaces/antares'; import { ExportOptions, ExportState } from 'common/interfaces/exporter'; import { useNotificationsStore } from '@/stores/notifications'; +import { useSchemaExportStore } from '@/stores/schemaExport'; import { useWorkspacesStore } from '@/stores/workspaces'; import { useFocusTrap } from '@/composables/useFocusTrap'; import Application from '@/ipc-api/Application'; @@ -285,15 +287,12 @@ import Schema from '@/ipc-api/Schema'; import { Customizations } from 'common/interfaces/customizations'; import BaseSelect from '@/components/BaseSelect.vue'; -const props = defineProps({ - selectedSchema: String -}); - const emit = defineEmits(['close']); const { t } = useI18n(); const { addNotification } = useNotificationsStore(); const workspacesStore = useWorkspacesStore(); +const schemaExportStore = useSchemaExportStore(); const { getSelected: selectedWorkspace } = storeToRefs(workspacesStore); @@ -304,6 +303,8 @@ const { refreshSchema } = workspacesStore; +const { selectedTable, selectedSchema } = storeToRefs(schemaExportStore); + const isExporting = ref(false); const isRefreshing = ref(false); const progressPercentage = ref(0); @@ -315,7 +316,7 @@ const tables: Ref<{ includeDropStatement: boolean; }[]> = ref([]); const options: Ref> = ref({ - schema: props.selectedSchema, + schema: selectedSchema.value, includes: {} as {[key: string]: boolean}, outputFormat: 'sql' as 'sql' | 'sql.zip', sqlInsertAfter: 250, @@ -327,7 +328,7 @@ const chosenFilename = ref(''); const currentWorkspace = computed(() => getWorkspace(selectedWorkspace.value)); const clientCustoms: Ref = computed(() => currentWorkspace.value.customizations); const schemaItems = computed(() => { - const db: SchemaInfos = currentWorkspace.value.structure.find((db: SchemaInfos) => db.name === props.selectedSchema); + const db: SchemaInfos = currentWorkspace.value.structure.find((db: SchemaInfos) => db.name === selectedSchema.value); if (db) return db.tables.filter(table => table.type === 'table'); @@ -335,7 +336,7 @@ const schemaItems = computed(() => { }); const filename = computed(() => { const date = moment().format('YYYY-MM-DD_HH-mm-ss'); - return `${props.selectedSchema}_${date}`; + return `${selectedTable.value || selectedSchema.value}_${date}`; }); const dumpFilePath = computed(() => `${basePath.value}/${chosenFilename.value || filename.value}.${options.value.outputFormat}`); const includeStructureStatus = computed(() => { @@ -360,7 +361,7 @@ const startExport = async () => { const params = { uid, type: client, - schema: props.selectedSchema, + schema: selectedSchema.value, outputFile: dumpFilePath.value, tables: [...tables.value], ...options.value @@ -438,7 +439,7 @@ const toggleAllTablesOption = (option: 'includeStructure' | 'includeContent' |'i const refresh = async () => { isRefreshing.value = true; - await refreshSchema({ uid: currentWorkspace.value.uid, schema: props.selectedSchema }); + await refreshSchema({ uid: currentWorkspace.value.uid, schema: selectedSchema.value }); isRefreshing.value = false; }; @@ -453,12 +454,31 @@ const openPathDialog = async () => { window.addEventListener('keydown', onKey); + if (selectedTable.value) { + setTimeout(() => { + const element = document.querySelector('.modal.active .selected'); + + if (element) { + const rect = element.getBoundingClientRect(); + const elemTop = rect.top; + const elemBottom = rect.bottom; + const isVisible = (elemTop >= 0) && (elemBottom <= window.innerHeight); + + if (!isVisible) { + element.setAttribute('tabindex', '-1'); + element.focus(); + element.removeAttribute('tabindex'); + } + } + }, 100); + } + basePath.value = await Application.getDownloadPathDirectory(); tables.value = schemaItems.value.map(item => ({ table: item.name, - includeStructure: true, - includeContent: true, - includeDropStatement: true + includeStructure: !selectedTable.value ? true : selectedTable.value === item.name, + includeContent: !selectedTable.value ? true : selectedTable.value === item.name, + includeDropStatement: !selectedTable.value ? true : selectedTable.value === item.name })); const structure = ['functions', 'views', 'triggers', 'routines', 'schedulers']; @@ -466,7 +486,7 @@ const openPathDialog = async () => { structure.forEach((feat: keyof Customizations) => { const val = clientCustoms.value[feat]; if (val) - options.value.includes[feat] = true; + options.value.includes[feat] = !selectedTable.value; }); ipcRenderer.on('export-progress', updateProgress); diff --git a/src/renderer/components/WorkspaceExploreBarSchemaContext.vue b/src/renderer/components/WorkspaceExploreBarSchemaContext.vue index 19d1c790..ed80cdb8 100644 --- a/src/renderer/components/WorkspaceExploreBarSchemaContext.vue +++ b/src/renderer/components/WorkspaceExploreBarSchemaContext.vue @@ -109,11 +109,6 @@ :selected-schema="selectedSchema" @close="hideEditModal" /> - void}> = ref(null); const isDeleteModal = ref(false); const isEditModal = ref(false); -const isExportSchemaModal = ref(false); const isImportSchemaModal = ref(false); const workspace = computed(() => getWorkspace(selectedWorkspace.value)); @@ -220,11 +216,7 @@ const hideEditModal = () => { }; const showExportSchemaModal = () => { - isExportSchemaModal.value = true; -}; - -const hideExportSchemaModal = () => { - isExportSchemaModal.value = false; + showExportModal(props.selectedSchema); closeContext(); }; diff --git a/src/renderer/components/WorkspaceExploreBarTableContext.vue b/src/renderer/components/WorkspaceExploreBarTableContext.vue index cb8e1cf4..8abc97f9 100644 --- a/src/renderer/components/WorkspaceExploreBarTableContext.vue +++ b/src/renderer/components/WorkspaceExploreBarTableContext.vue @@ -10,6 +10,13 @@ > {{ t('application.settings') }}
    +
    + {{ t('database.exportTable') }} +
    getWorkspace(selectedWorkspace.value)); const customizations = computed(() => workspace.value && workspace.value.customizations ? workspace.value.customizations : null); +const showTableExportModal = () => { + showExportModal(props.selectedSchema, props.selectedTable.name); + closeContext(); +}; + const showDeleteModal = () => { isDeleteModal.value = true; }; diff --git a/src/renderer/i18n/en-US.ts b/src/renderer/i18n/en-US.ts index 44510a67..f6fc1e3a 100644 --- a/src/renderer/i18n/en-US.ts +++ b/src/renderer/i18n/en-US.ts @@ -181,6 +181,7 @@ export const enUS = { emptyTable: 'Empty table', duplicateTable: 'Duplicate table', deleteTable: 'Delete table', + exportTable: 'Export table', emptyConfirm: 'Do you confirm to empty', thereAreNoIndexes: 'There are no indexes', thereAreNoForeign: 'There are no foreign keys', diff --git a/src/renderer/stores/schemaExport.ts b/src/renderer/stores/schemaExport.ts new file mode 100644 index 00000000..8f41fd35 --- /dev/null +++ b/src/renderer/stores/schemaExport.ts @@ -0,0 +1,21 @@ +import { defineStore } from 'pinia'; + +export const useSchemaExportStore = defineStore('schemaExport', { + state: () => ({ + isExportModal: false, + selectedTable: undefined as undefined | string, + selectedSchema: undefined as undefined | string + }), + actions: { + showExportModal (schema?: string, table?: string) { + this.selectedTable = table; + this.selectedSchema = schema; + this.isExportModal = true; + }, + hideExportModal () { + this.isExportModal = false; + this.selectedTable = undefined; + this.selectedSchema = undefined; + } + } +}); From 6cd2f89bbf408cf90f70690225a5c0a8701b1c85 Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Fri, 11 Aug 2023 16:42:34 +0200 Subject: [PATCH 07/27] refactor: ts improvements --- src/main/libs/clients/PostgreSQLClient.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/libs/clients/PostgreSQLClient.ts b/src/main/libs/clients/PostgreSQLClient.ts index c12762c4..f679055b 100644 --- a/src/main/libs/clients/PostgreSQLClient.ts +++ b/src/main/libs/clients/PostgreSQLClient.ts @@ -1,11 +1,11 @@ import * as antares from 'common/interfaces/antares'; -import * as mysql from 'mysql2'; import * as pg from 'pg'; import * as pgAst from 'pgsql-ast-parser'; import { AntaresCore } from '../AntaresCore'; import dataTypes from 'common/data-types/postgresql'; import SSH2Promise = require('ssh2-promise'); import SSHConfig from 'ssh2-promise/lib/sshConfig'; +import { ConnectionOptions } from 'tls'; // eslint-disable-next-line @typescript-eslint/no-explicit-any function pgToString (value: any) { @@ -98,7 +98,7 @@ export class PostgreSQLClient extends AntaresCore { _varchar: 'CHARACTER VARYING' } - _params: pg.ClientConfig & {schema: string; ssl?: mysql.SslOptions; ssh?: SSHConfig; readonly: boolean}; + _params: pg.ClientConfig & {schema: string; ssl?: ConnectionOptions; ssh?: SSHConfig; readonly: boolean}; constructor (args: antares.ClientParams) { super(args); @@ -156,7 +156,7 @@ export class PostgreSQLClient extends AntaresCore { user: this._params.user, database: 'postgres' as string, password: this._params.password, - ssl: null as mysql.SslOptions + ssl: null as ConnectionOptions }; if (this._params.database?.length) dbConfig.database = this._params.database; From 3a77f0818d0a626556da0a4a642e91a9fbb12393 Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Fri, 11 Aug 2023 16:50:20 +0200 Subject: [PATCH 08/27] chore(release): 0.7.16-beta.0 --- CHANGELOG.md | 14 ++++++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be5e2ce5..98615312 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [0.7.16-beta.0](https://github.com/antares-sql/antares/compare/v0.7.15...v0.7.16-beta.0) (2023-08-11) + + +### Features + +* ability to change sql dump file name ([2e39d81](https://github.com/antares-sql/antares/commit/2e39d810b519401d0410cbb76520c07c595329fc)) +* ability to export a table dump from table context menu ([84b2255](https://github.com/antares-sql/antares/commit/84b2255bf405431070511890b2bca770fc4cc2bc)) +* support to links in changelog ([ad7e459](https://github.com/antares-sql/antares/commit/ad7e459c689d70ca664b9a3091d3dcab3f26ce4d)) + + +### Bug Fixes + +* **MySQL:** missing error details on mysql importer with some exceptione ([7b1cb4f](https://github.com/antares-sql/antares/commit/7b1cb4ff86dddb5fb4b4d960b47ea17f38a24aa6)) + ### [0.7.15](https://github.com/antares-sql/antares/compare/v0.7.14...v0.7.15) (2023-07-31) diff --git a/package-lock.json b/package-lock.json index a76a9b18..99558853 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "antares", - "version": "0.7.15", + "version": "0.7.16-beta.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "antares", - "version": "0.7.15", + "version": "0.7.16-beta.0", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 2d9eef5a..a5bfc1c3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "antares", "productName": "Antares", - "version": "0.7.15", + "version": "0.7.16-beta.0", "description": "A modern, fast and productivity driven SQL client with a focus in UX.", "license": "MIT", "repository": "https://github.com/antares-sql/antares.git", From e03f2eef497f9e82cac775abe3bf15ab1ef3c1fe Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Fri, 11 Aug 2023 17:34:27 +0200 Subject: [PATCH 09/27] ci: update snapcraft.yaml --- snap/snapcraft.yaml | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 701d2131..879735bc 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -4,7 +4,7 @@ summary: Open source SQL client made to be simple and complete. description: | Antares is an SQL client that aims to become an useful and complete tool, especially for developers. The target is to support as many databases as possible, and all major operating systems, including the ARM versions. -base: core20 +base: core22 grade: stable confinement: strict @@ -31,10 +31,10 @@ parts: fi # Get the latest releases json echo "Get GitHub releases..." - wget --quiet https://api.github.com/repos/fabio286/antares/releases/latest -O releases.json + wget --quiet https://api.github.com/repos/fabio286/antares/releases -O releases.json # Get the version from the tag_name and the download URL. - VERSION=$(jq . releases.json | grep tag_name | cut -d'"' -f4 | sed s'/release-//') - DEB_URL=$(cat releases.json | jq -r ".assets[] | select(.name | test(\"${FILTER}\")) | .browser_download_url") + VERSION=$(jq . releases.json | grep tag_name | head -1 | cut -d'"' -f4 | sed s'/release-//') + DEB_URL=$(cat releases.json | jq -r ".[0].assets[] | select(.name | test(\"${FILTER}\")) | .browser_download_url") DEB=$(basename "${DEB_URL}") echo "Downloading ${DEB_URL}..." wget --quiet "${DEB_URL}" -O "${SNAPCRAFT_PART_INSTALL}/${DEB}" @@ -119,10 +119,10 @@ parts: cleanup: after: [antares] plugin: nil - build-snaps: [gnome-3-38-2004] + build-snaps: [gnome-42-2204] override-prime: | set -eux - cd /snap/gnome-3-38-2004/current + cd /snap/gnome-42-2204/current find . -type f,l -exec rm -f $SNAPCRAFT_PRIME/{} \; mdns-lookup: @@ -136,7 +136,7 @@ parts: - libnss-mdns override-prime: | set -eux - sed -Ee 's/^\s*hosts:(\s+)files/hosts:\1files mdns4_minimal \[NOTFOUND=return\]/' /snap/core20/current/etc/nsswitch.conf > $SNAPCRAFT_STAGE/etc/nsswitch.conf + sed -Ee 's/^\s*hosts:(\s+)files/hosts:\1files mdns4_minimal \[NOTFOUND=return\]/' /snap/core22/current/etc/nsswitch.conf > $SNAPCRAFT_STAGE/etc/nsswitch.conf snapcraftctl prime prime: - lib/$SNAPCRAFT_ARCH_TRIPLET/libnss_mdns4_minimal* @@ -146,10 +146,7 @@ apps: antares: command: opt/Antares/antares --no-sandbox desktop: usr/share/applications/antares.desktop - extensions: [gnome-3-38] - environment: - # Fallback to XWayland if running in a Wayland session. - DISABLE_WAYLAND: 1 + extensions: [gnome] plugs: - browser-support - cups-control From dd264f802ea5f8a1edea7878e9ee3c9ca64671fb Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Fri, 11 Aug 2023 18:12:38 +0200 Subject: [PATCH 10/27] ci: update snapcraft.yaml --- snap/snapcraft.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 879735bc..12a54435 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -79,7 +79,7 @@ parts: - libdb5.3 - libdbus-1-3 - libexpat1 - - libffi7 + - libffi8 - libgcc-s1 - libgcrypt20 - libglib2.0-0 @@ -87,9 +87,9 @@ parts: - libgnutls30 - libgpg-error0 - libgssapi-krb5-2 - - libhogweed5 + - libhogweed6 - libidn2-0 - - libjson-c4 + - libjson-c5 - libk5crypto3 - libkeyutils1 - libkrb5-3 @@ -97,12 +97,12 @@ parts: - liblz4-1 - liblzma5 - libmount1 - - libnettle7 + - libnettle8 - libp11-kit0 - libpcre2-8-0 - libselinux1 - libsqlite3-0 - - libssl1.1 + - libssl3 - libstdc++6 - libsystemd0 - libtasn1-6 From 9c6f1a9ea52b4791082bdbae91b764c486684c3b Mon Sep 17 00:00:00 2001 From: Marc Vilella Date: Sun, 13 Aug 2023 19:20:26 +0200 Subject: [PATCH 11/27] feat: Add catalan language --- src/renderer/i18n/ca-ES.ts | 528 +++++++++++++++++++++++++ src/renderer/i18n/index.ts | 4 +- src/renderer/i18n/supported-locales.ts | 3 +- 3 files changed, 533 insertions(+), 2 deletions(-) create mode 100644 src/renderer/i18n/ca-ES.ts diff --git a/src/renderer/i18n/ca-ES.ts b/src/renderer/i18n/ca-ES.ts new file mode 100644 index 00000000..02a07288 --- /dev/null +++ b/src/renderer/i18n/ca-ES.ts @@ -0,0 +1,528 @@ +export const caES = { + word: { + edit: 'Editar', + save: 'Desar', + close: 'Tancar', + delete: 'Esborrar', + confirm: 'Confirmar', + cancel: 'Cancel·lar', + send: 'Enviar', + connectionName: 'Nom de la connexió', + client: 'Client', + hostName: 'Nom de l\'amfitrió', + port: 'Port', + user: 'Usuari', + password: 'Contrasenya', + credentials: 'Credencials', + connect: 'Connectar', + connected: 'Connectat', + disconnect: 'Desconnectar', + disconnected: 'Desconnectat', + refresh: 'Actualitzar', + settings: 'Configuració', + general: 'General', + themes: 'Temes', + update: 'Actualitzar', + about: 'Sobre', + language: 'Idioma', + version: 'Versió', + donate: 'Donar', + run: 'Executar', + schema: 'Esquema', + results: 'Resultats', + size: 'Mida', + seconds: 'Segons', + type: 'Tipus', + mimeType: 'Tipus MIME', + download: 'Descarregar', + add: 'Afegir', + data: 'Dades', + properties: 'Propietats', + insert: 'Inserir', + connecting: 'Connectant', + name: 'Nom', + collation: 'Ordenació', + clear: 'Netejar', + options: 'Opcions', + autoRefresh: 'Actualització automàtica', + indexes: 'Índexs', + foreignKeys: 'Claus foranes', + length: 'Longitud', + unsigned: 'Sense signe', + default: 'Per defecte', + comment: 'Comentari', + key: 'Clau | Claus', + order: 'Ordre', + expression: 'Expressió', + autoIncrement: 'Autoincrement', + engine: 'Motor', + field: 'Camp | Camps', + approximately: 'Aproximadament', + total: 'Total', + table: 'Taula', + discard: 'Descartar', + stay: 'Quedar-se', + author: 'Autor', + light: 'Clar', + dark: 'Fosc', + autoCompletion: 'Autocompletat', + application: 'Aplicació', + editor: 'Editor', + view: 'Vista', + definer: 'Definidor', + algorithm: 'Algorisme', + trigger: 'Desencadenador | Desencadenadors', + storedRoutine: 'Rutina emmagatzemada | Rutines emmagatzemades', + scheduler: 'Planificador | Planificadors', + event: 'Esdeveniment', + parameters: 'Paràmetres', + function: 'Funció | Funcions', + deterministic: 'Determinista', + context: 'Context', + export: 'Exportar', + import: 'Importar', + returns: 'Retorna', + timing: 'Temporització', + state: 'Estat', + execution: 'Execució', + starts: 'Comença', + ends: 'Acaba', + ssl: 'SSL', + privateKey: 'Clau privada', + certificate: 'Certificat', + caCertificate: 'Certificat CA', + ciphers: 'Xifrats', + upload: 'Pujar', + browse: 'Navegar', + faker: 'Falsificador', + content: 'Contingut', + cut: 'Tallar', + copy: 'Copiar', + paste: 'Enganxar', + tools: 'Eines', + variables: 'Variables', + processes: 'Processos', + database: 'Base de dades', + scratchpad: 'Bloc de notes', + array: 'Matriu', + changelog: 'Registre de canvis', + format: 'Format', + sshTunnel: 'Túnel SSH', + structure: 'Estructura', + small: 'Petit', + medium: 'Mitjà', + large: 'Gran', + row: 'Fila | Files', + cell: 'Cel·la | Cel·les', + triggerFunction: 'Funció de desencadenador | Funcions de desencadenador', + all: 'Tot', + duplicate: 'Duplicar', + routine: 'Rutina', + new: 'Nou', + history: 'Històric', + select: 'Seleccionar', + passphrase: 'Frase de contrasenya', + filter: 'Filtre', + change: 'Canviar', + views: 'Vistes', + triggers: 'Desencadenadors', + routines: 'Rutines', + functions: 'Funcions', + schedulers: 'Planificadors', + includes: 'Inclou', + drop: 'Descartar', + completed: 'Completat', + aborted: 'Avortat', + disabled: 'Deshabilitat', + enable: 'Habilitar', + disable: 'Deshabilitar', + commit: 'Validar', + rollback: 'Desfer', + connectionString: 'Cadena de connexió', + contributors: 'Contribuïdors', + pin: 'Fixar', + unpin: 'Desfixar', + console: 'Consola', + shortcuts: 'Dreceres', + folder: 'Carpeta | Carpetes', + appearance: 'Aparença', + color: 'Color', + label: 'Etiqueta', + icon: 'Icona', + resultsTable: 'Taula de resultats', + ddl: 'DDL', + none: 'Cap', + singleQuote: 'Cometa simple', + doubleQuote: 'Cometa doble' + }, + message: { + appWelcome: 'Benvingut a Antares SQL Client!', + appFirstStep: 'El teu primer pas: crea una nova connexió a la base de dades.', + addConnection: 'Afegeix connexió', + createConnection: 'Crea connexió', + createNewConnection: 'Crea una nova connexió', + askCredentials: 'Demana credencials', + testConnection: 'Prova la connexió', + editConnection: 'Edita la connexió', + deleteConnection: 'Esborra la connexió', + deleteConfirm: 'Confirmes la cancel·lació de', + connectionSuccessfullyMade: 'Connexió realitzada amb èxit!', + madeWithJS: 'Fet amb 💛 i JavaScript!', + checkForUpdates: 'Comprova actualitzacions', + noUpdatesAvailable: 'No hi ha actualitzacions disponibles', + checkingForUpdate: 'Comprovant actualitzacions', + checkFailure: 'La comprovació ha fallat, si us plau, torna-ho a intentar més tard', + updateAvailable: 'Actualització disponible', + downloadingUpdate: 'Descarregant actualització', + updateDownloaded: 'Actualització descarregada', + restartToInstall: 'Reinicia Antares per instal·lar', + unableEditFieldWithoutPrimary: 'No es pot editar un camp sense una clau primària en el conjunt de resultats', + editCell: 'Edita la cel·la', + deleteRows: 'Esborra fila | Esborra {count} files', + confirmToDeleteRows: 'Confirmes esborrar una fila? | Confirmes esborrar {count} files?', + notificationsTimeout: 'Temps d\'espera de notificacions', + uploadFile: 'Puja fitxer', + addNewRow: 'Afegeix una nova fila', + numberOfInserts: 'Nombre d\'insercions', + openNewTab: 'Obre una nova pestanya', + affectedRows: 'Files afectades', + createNewDatabase: 'Crea una nova base de dades', + databaseName: 'Nom de la base de dades', + serverDefault: 'Per defecte del servidor', + deleteDatabase: 'Esborra la base de dades', + editDatabase: 'Edita la base de dades', + clearChanges: 'Neteja els canvis', + addNewField: 'Afegeix un nou camp', + manageIndexes: 'Gestiona els índexs', + manageForeignKeys: 'Gestiona les claus foranes', + allowNull: 'Permet NULL', + zeroFill: 'Omplir amb zeros', + customValue: 'Valor personalitzat', + onUpdate: 'A l\'actualitzar', + deleteField: 'Esborra camp', + createNewIndex: 'Crea un nou índex', + addToIndex: 'Afegeix a l\'índex', + createNewTable: 'Crea una nova taula', + emptyTable: 'Taula buida', + deleteTable: 'Esborra la taula', + emptyConfirm: 'Confirmes buidar', + unsavedChanges: 'Canvis no desats', + discardUnsavedChanges: 'Tens alguns canvis no desats. Tancant aquesta pestanya aquests canvis es descartaran.', + thereAreNoIndexes: 'No hi ha índexs', + thereAreNoForeign: 'No hi ha claus foranes', + createNewForeign: 'Crea una nova clau forana', + referenceTable: 'Taula de referència', + referenceField: 'Camp de referència', + foreignFields: 'Camps foranis', + invalidDefault: 'Valor per defecte no vàlid', + onDelete: 'Al esborrar', + applicationTheme: 'Tema de l\'aplicació', + editorTheme: 'Tema de l\'editor', + wrapLongLines: 'Ajusta línies llargues', + selectStatement: 'Sentència SELECT', + triggerStatement: 'Sentència TRIGGER', + sqlSecurity: 'Seguretat SQL', + updateOption: 'Opció d\'actualització', + deleteView: 'Esborra vista', + createNewView: 'Crea una nova vista', + deleteTrigger: 'Esborra disparador', + createNewTrigger: 'Crea un nou disparador', + currentUser: 'Usuari actual', + routineBody: 'Cos de la rutina', + dataAccess: 'Accés a dades', + thereAreNoParameters: 'No hi ha paràmetres', + createNewParameter: 'Crea un nou paràmetre', + createNewRoutine: 'Crea una nova rutina emmagatzemada', + deleteRoutine: 'Esborra rutina emmagatzemada', + functionBody: 'Cos de la funció', + createNewFunction: 'Crea una nova funció', + deleteFunction: 'Esborra funció', + schedulerBody: 'Cos del planificador', + createNewScheduler: 'Crea un nou planificador', + deleteScheduler: 'Esborra planificador', + preserveOnCompletion: 'Conserva en finalitzar', + enableSsl: 'Activa SSL', + manualValue: 'Valor manual', + tableFiller: 'Ompletaula', + fakeDataLanguage: 'Idioma de dades fictícies', + searchForElements: 'Cerca elements', + selectAll: 'Selecciona tot', + queryDuration: 'Durada de la consulta', + includeBetaUpdates: 'Inclou actualitzacions beta', + setNull: 'Estableix NULL', + processesList: 'Llista de processos', + processInfo: 'Informació del procés', + manageUsers: 'Gestiona usuaris', + createNewSchema: 'Crea un nou esquema', + schemaName: 'Nom de l\'esquema', + editSchema: 'Edita l\'esquema', + deleteSchema: 'Esborra l\'esquema', + markdownSupported: 'Suporta markdown', + plantATree: 'Planta un arbre', + dataTabPageSize: 'Mida de pàgina de la pestanya DATA', + enableSsh: 'Activa SSH', + pageNumber: 'Número de pàgina', + duplicateTable: 'Duplica taula', + noOpenTabs: 'No hi ha pestanyes obertes, navega per la barra de l\'esquerra o:', + noSchema: 'No hi ha esquema', + restorePreviousSession: 'Restaura la sessió anterior', + runQuery: 'Executa consulta', + thereAreNoTableFields: 'No hi ha camps a la taula', + newTable: 'Nova taula', + newView: 'Nova vista', + newTrigger: 'Nou disparador', + newRoutine: 'Nova rutina', + newFunction: 'Nova funció', + newScheduler: 'Nou planificador', + newTriggerFunction: 'Nova funció de disparador', + thereIsNoQueriesYet: 'Encara no hi ha consultes', + searchForQueries: 'Cerca consultes', + killProcess: 'Mata procés', + closeTab: 'Tanca pestanya', + exportSchema: 'Exporta esquema', + importSchema: 'Importa esquema', + directoryPath: 'Ruta del directori', + newInsertStmtEvery: 'Nova sentència INSERT cada', + processingTableExport: 'Processant {table}', + fetchingTableExport: 'Obtenint dades de {table}', + writingTableExport: 'Escrivint dades de {table}', + checkAllTables: 'Marca totes les taules', + uncheckAllTables: 'Desmarca totes les taules', + goToDownloadPage: 'Ves a la pàgina de descàrrega', + readOnlyMode: 'Mode de lectura', + killQuery: 'Mata consulta', + insertRow: 'Insereix fila | Insereix files', + commitMode: 'Mode de validació', + autoCommit: 'Validació automàtica', + manualCommit: 'Validació manual', + actionSuccessful: '{action} realitzat amb èxit', + importQueryErrors: 'Avís: ha ocorregut {n} error | Avís: han ocorregut {n} errors', + executedQueries: '{n} consulta executada | {n} consultes executades', + outputFormat: 'Format de sortida', + singleFile: 'Arxiu {ext} únic', + zipCompressedFile: 'Arxiu {ext} comprimit en ZIP', + disableBlur: 'Desactiva el desenfoc', + untrustedConnection: 'Connexió no confiable', + missingOrIncompleteTranslation: 'Traducció absent o incompleta?', + findOutHowToContribute: 'Descobreix com contribuir', + disableFKChecks: 'Desactiva les comprovacions de claus foranes', + allConnections: 'Totes les connexions', + searchForConnections: 'Cerca connexions', + disableScratchpad: 'Desactiva el bloc de notes', + reportABug: 'Informa d\'un error', + nextTab: 'Pestanya següent', + previousTab: 'Pestanya anterior', + selectTabNumber: 'Selecciona el número de pestanya {param}', + toggleConsole: 'Commuta la consola', + addShortcut: 'Afegeix drecera', + editShortcut: 'Edita drecera', + deleteShortcut: 'Esborra drecera', + restoreDefaults: 'Restaura els valors per defecte', + restoreDefaultsQuestion: 'Confirmes restaurar els valors per defecte?', + registerAShortcut: 'Registra una drecera', + invalidShortcutMessage: 'Combinació no vàlida, continua escrivint', + shortcutAlreadyExists: 'La drecera ja existeix', + saveContent: 'Desa el contingut', + openAllConnections: 'Obre totes les connexions', + openSettings: 'Obre configuració', + openScratchpad: 'Obre el bloc de notes', + runOrReload: 'Executa o recarrega', + formatQuery: 'Formata consulta', + queryHistory: 'Històric de consultes', + clearQuery: 'Neteja consulta', + openFilter: 'Obre filtre', + nextResultsPage: 'Pàgina de resultats següent', + previousResultsPage: 'Pàgina de resultats anterior', + fillCell: 'Omplir cel·la', + editFolder: 'Edita carpeta', + folderName: 'Nom de la carpeta', + deleteFolder: 'Esborra carpeta', + editConnectionAppearance: 'Edita l\'aparença de la connexió', + executeSelectedQuery: 'Executa la consulta seleccionada', + defaultCopyType: 'Tipus de còpia per defecte', + showTableSize: 'Mostra la mida de la taula a la barra lateral', + showTableSizeDescription: 'Només MySQL/MariaDB. Activar aquesta opció pot afectar el rendiment en esquemes amb moltes taules.', + searchForSchemas: 'Cerca esquemes', + switchSearchMethod: 'Canvia el mètode de cerca', + noResultsPresent: 'No hi ha resultats', + sqlExportOptions: 'Opcions d\'exportació SQL', + targetTable: 'Taula objectiu', + phpArray: 'Matriu PHP', + closeAllTabs: 'Tanca totes les pestanyes', + closeOtherTabs: 'Tanca altres pestanyes', + closeTabsToLeft: 'Tanca pestanyes a l\'esquerra', + closeTabsToRight: 'Tanca pestanyes a la dreta', + switchDatabase: 'Canvia la base de dades', + csvExportOptions: 'Opcions d\'exportació CSV', + csvFieldDelimiter: 'Delimitador de camp', + csvLinesTerminator: 'Terminador de línia', + csvStringDelimiter: 'Delimitador de cadena', + csvIncludeHeader: 'Inclou capçalera', + scratchPadDefaultValue: '# COM SUPORTAR ANTARES\n\n- [ ] Deixa una estrella a Antares [repositori GitHub](https://github.com/antares-sql/antares)\n- [ ] Envia comentaris i consells\n- [ ] Informa d\'errors\n- [ ] Si t\'agrada, comparteix Antares amb amics\n\n# SOBRE EL BLOC DE NOTES\n\nAquest és un bloc de notes on pots guardar les teves **notes personals**. Suporta format `markdown`, però pots usar text pla.\nAquest contingut és simplement un espai reservat, pots esborrar-lo per fer lloc per les teves notes.\n' + }, + faker: { + address: 'Adreça', + commerce: 'Comerç', + company: 'Empresa', + database: 'Base de dades', + date: 'Data', + finance: 'Finances', + git: 'Git', + hacker: 'Hacker', + internet: 'Internet', + lorem: 'Lorem', + name: 'Nom', + music: 'Música', + phone: 'Telèfon', + random: 'Aleatori', + system: 'Sistema', + time: 'Hora', + vehicle: 'Vehicle', + zipCode: 'Codi postal', + zipCodeByState: 'Codi postal per estat', + city: 'Ciutat', + cityPrefix: 'Prefix de ciutat', + citySuffix: 'Sufix de ciutat', + streetName: 'Nom del carrer', + streetAddress: 'Adreça del carrer', + streetSuffix: 'Sufix del carrer', + streetPrefix: 'Prefix del carrer', + secondaryAddress: 'Adreça secundària', + county: 'Comtat', + country: 'País', + countryCode: 'Codi de país', + state: 'Estat', + stateAbbr: 'Abreviatura de l\'estat', + latitude: 'Latitud', + longitude: 'Longitud', + direction: 'Direcció', + cardinalDirection: 'Direcció cardinal', + ordinalDirection: 'Direcció ordinal', + nearbyGPSCoordinate: 'Coordenada GPS propera', + timeZone: 'Zona horària', + color: 'Color', + department: 'Departament', + productName: 'Nom del producte', + price: 'Preu', + productAdjective: 'Adjectiu del producte', + productMaterial: 'Material del producte', + product: 'Producte', + productDescription: 'Descripció del producte', + suffixes: 'Sufixos', + companyName: 'Nom de l\'empresa', + companySuffix: 'Sufix de l\'empresa', + catchPhrase: 'Frase feta', + bs: 'BS', + catchPhraseAdjective: 'Adjectiu de la frase feta', + catchPhraseDescriptor: 'Descriptor de la frase feta', + catchPhraseNoun: 'Substantiu de la frase feta', + bsAdjective: 'Adjectiu BS', + bsBuzz: 'Buzz BS', + bsNoun: 'Substantiu BS', + column: 'Columna', + type: 'Tipus', + collation: 'Ordenació', + engine: 'Motor', + past: 'Passat', + now: 'Ara', + future: 'Futur', + between: 'Entre', + recent: 'Recent', + soon: 'Aviat', + month: 'Mes', + weekday: 'Dia de la setmana', + account: 'Compte', + accountName: 'Nom del compte', + routingNumber: 'Número de ruta', + mask: 'Màscara', + amount: 'Quantitat', + transactionType: 'Tipus de transacció', + currencyCode: 'Codi de moneda', + currencyName: 'Nom de la moneda', + currencySymbol: 'Símbol de moneda', + bitcoinAddress: 'Adreça Bitcoin', + litecoinAddress: 'Adreça Litecoin', + creditCardNumber: 'Número de targeta de crèdit', + creditCardCVV: 'CVV de la targeta de crèdit', + ethereumAddress: 'Adreça Ethereum', + iban: 'Iban', + bic: 'Bic', + transactionDescription: 'Descripció de la transacció', + branch: 'Branca', + commitEntry: 'Entrada de commit', + commitMessage: 'Missatge de commit', + commitSha: 'SHA de commit', + shortSha: 'SHA curt', + abbreviation: 'Abreviació', + adjective: 'Adjectiu', + noun: 'Substantiu', + verb: 'Verb', + ingverb: 'Gerundi', + phrase: 'Frase', + avatar: 'Avatar', + email: 'Correu electrònic', + exampleEmail: 'Correu electrònic d\'exemple', + userName: 'Nom d\'usuari', + protocol: 'Protocol', + url: 'Url', + domainName: 'Nom de domini', + domainSuffix: 'Sufix de domini', + domainWord: 'Paraula de domini', + ip: 'Ip', + ipv6: 'Ipv6', + userAgent: 'Agent d\'usuari', + mac: 'Mac', + password: 'Contrasenya', + word: 'Paraula', + words: 'Paraules', + sentence: 'Frase', + slug: 'Slug', + sentences: 'Frases', + paragraph: 'Paràgraf', + paragraphs: 'Paràgrafs', + text: 'Text', + lines: 'Línies', + genre: 'Gènere', + firstName: 'Nom', + lastName: 'Cognom', + middleName: 'Segon nom', + findName: 'Nom complet', + jobTitle: 'Títol del treball', + gender: 'Gènere', + prefix: 'Prefix', + suffix: 'Sufix', + title: 'Títol', + jobDescriptor: 'Descriptor de treball', + jobArea: 'Àrea de treball', + jobType: 'Tipus de treball', + phoneNumber: 'Número de telèfon', + phoneNumberFormat: 'Format de número de telèfon', + phoneFormats: 'Formats de telèfon', + number: 'Número', + float: 'Decimal', + arrayElement: 'Element de matriu', + arrayElements: 'Elements de matriu', + objectElement: 'Element d\'objecte', + uuid: 'Uuid', + boolean: 'Booleà', + image: 'Imatge', + locale: 'Localització', + alpha: 'Alfa', + alphaNumeric: 'Alfanumèric', + hexaDecimal: 'Hexadecimal', + fileName: 'Nom del fitxer', + commonFileName: 'Nom de fitxer comú', + mimeType: 'Tipus de mime', + commonFileType: 'Tipus de fitxer comú', + commonFileExt: 'Extensió de fitxer comú', + fileType: 'Tipus de fitxer', + fileExt: 'Extensió de fitxer', + directoryPath: 'Ruta del directori', + filePath: 'Ruta del fitxer', + semver: 'Semver', + manufacturer: 'Fabricant', + model: 'Model', + fuel: 'Combustible', + vin: 'Vin' + } +}; \ No newline at end of file diff --git a/src/renderer/i18n/index.ts b/src/renderer/i18n/index.ts index 5b1cb667..35c294c5 100644 --- a/src/renderer/i18n/index.ts +++ b/src/renderer/i18n/index.ts @@ -13,6 +13,7 @@ import { ruRU } from './ru-RU'; import { idID } from './id-ID'; import { koKR } from './ko-KR'; import { nlNL } from './nl-NL'; +import { caES } from './ca-ES'; const messages = { 'en-US': enUS, 'it-IT': itIT, @@ -27,7 +28,8 @@ const messages = { 'ru-RU': ruRU, 'id-ID': idID, 'ko-KR': koKR, - 'nl-NL': nlNL + 'nl-NL': nlNL, + 'ca-ES': caES }; type NestedPartial = { diff --git a/src/renderer/i18n/supported-locales.ts b/src/renderer/i18n/supported-locales.ts index 1c9b0a7e..b1b28ab0 100644 --- a/src/renderer/i18n/supported-locales.ts +++ b/src/renderer/i18n/supported-locales.ts @@ -12,5 +12,6 @@ export const localesNames: {[key: string]: string} = { 'ru-RU': 'Русский', 'id-ID': 'Bahasa Indonesia', 'ko-KR': '한국어', - 'nl-NL': 'Nederlands' + 'nl-NL': 'Nederlands', + 'ca-ES': 'Català' }; From 6dc4bdd0c08773fd3a2358341bef2f3e81643814 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 07:06:39 +0000 Subject: [PATCH 12/27] docs: update README.md [skip ci] --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8fb92015..6c433303 100644 --- a/README.md +++ b/README.md @@ -153,6 +153,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d Anton Mikhalev
    Anton Mikhalev

    🌍 René
    René

    💻 🌍 Woodenman
    Woodenman

    📦 + Marc Vilella
    Marc Vilella

    🌍 From f2c2f33afa196dc5514de22f511c66df9e653e8a Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 07:06:40 +0000 Subject: [PATCH 13/27] docs: update .all-contributorsrc [skip ci] --- .all-contributorsrc | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.all-contributorsrc b/.all-contributorsrc index 47e8fa01..c6ffca67 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -239,6 +239,15 @@ "contributions": [ "platform" ] + }, + { + "login": "markusand", + "name": "Marc Vilella", + "avatar_url": "https://avatars.githubusercontent.com/u/12972543?v=4", + "profile": "https://github.com/markusand", + "contributions": [ + "translation" + ] } ], "contributorsPerLine": 7, From aba67f3872c72d2df85666aad340dbbfbb7447a8 Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Mon, 14 Aug 2023 09:16:40 +0200 Subject: [PATCH 14/27] refactor(translation): refactor ca-ES to new format --- src/renderer/i18n/ca-ES.ts | 309 ++++++++++++++++++------------------- 1 file changed, 152 insertions(+), 157 deletions(-) diff --git a/src/renderer/i18n/ca-ES.ts b/src/renderer/i18n/ca-ES.ts index 02a07288..f170722b 100644 --- a/src/renderer/i18n/ca-ES.ts +++ b/src/renderer/i18n/ca-ES.ts @@ -1,5 +1,5 @@ export const caES = { - word: { + general: { edit: 'Editar', save: 'Desar', close: 'Tancar', @@ -7,6 +7,66 @@ export const caES = { confirm: 'Confirmar', cancel: 'Cancel·lar', send: 'Enviar', + refresh: 'Actualitzar', + autoRefresh: 'Actualització automàtica', + version: 'Versió', + donate: 'Donar', + run: 'Executar', + results: 'Resultats', + size: 'Mida', + mimeType: 'Tipus MIME', + download: 'Descarregar', + add: 'Afegir', + data: 'Dades', + properties: 'Propietats', + insert: 'Inserir', + name: 'Nom', + clear: 'Netejar', + seconds: 'Segons', + options: 'Opcions', + discard: 'Descartar', + stay: 'Quedar-se', + author: 'Autor', + upload: 'Pujar', + browse: 'Navegar', + content: 'Contingut', + cut: 'Tallar', + copy: 'Copiar', + paste: 'Enganxar', + tools: 'Eines', + format: 'Format', + all: 'Tot', + duplicate: 'Duplicar', + new: 'Nou', + history: 'Històric', + select: 'Seleccionar', + filter: 'Filtre', + change: 'Canviar', + includes: 'Inclou', + completed: 'Completat', + aborted: 'Avortat', + disabled: 'Deshabilitat', + enable: 'Habilitar', + disable: 'Deshabilitar', + contributors: 'Contribuïdors', + pin: 'Fixar', + unpin: 'Desfixar', + folder: 'Carpeta | Carpetes', + none: 'Cap', + singleQuote: 'Cometa simple', + doubleQuote: 'Cometa doble', + deleteConfirm: 'Confirmes la cancel·lació de', + uploadFile: 'Puja fitxer', + manualValue: 'Valor manual', + selectAll: 'Selecciona tot', + pageNumber: 'Número de pàgina', + directoryPath: 'Ruta del directori', + actionSuccessful: '{action} realitzat amb èxit', + outputFormat: 'Format de sortida', + singleFile: 'Arxiu {ext} únic', + zipCompressedFile: 'Arxiu {ext} comprimit en ZIP' + }, + connection: { connectionName: 'Nom de la connexió', client: 'Client', hostName: 'Nom de l\'amfitrió', @@ -18,39 +78,38 @@ export const caES = { connected: 'Connectat', disconnect: 'Desconnectar', disconnected: 'Desconnectat', - refresh: 'Actualitzar', - settings: 'Configuració', - general: 'General', - themes: 'Temes', - update: 'Actualitzar', - about: 'Sobre', - language: 'Idioma', - version: 'Versió', - donate: 'Donar', - run: 'Executar', + ssl: 'SSL', + privateKey: 'Clau privada', + certificate: 'Certificat', + caCertificate: 'Certificat CA', + ciphers: 'Xifrats', + sshTunnel: 'Túnel SSH', + passphrase: 'Frase de contrasenya', + connectionString: 'Cadena de connexió', + addConnection: 'Afegeix connexió', + createConnection: 'Crea connexió', + createNewConnection: 'Crea una nova connexió', + askCredentials: 'Demana credencials', + testConnection: 'Prova la connexió', + editConnection: 'Edita la connexió', + deleteConnection: 'Esborra la connexió', + connectionSuccessfullyMade: 'Connexió realitzada amb èxit!', + enableSsl: 'Activa SSL', + enableSsh: 'Activa SSH', + readOnlyMode: 'Mode de lectura', + untrustedConnection: 'Connexió no confiable', + allConnections: 'Totes les connexions', + searchForConnections: 'Cerca connexions' + }, + database: { schema: 'Esquema', - results: 'Resultats', - size: 'Mida', - seconds: 'Segons', type: 'Tipus', - mimeType: 'Tipus MIME', - download: 'Descarregar', - add: 'Afegir', - data: 'Dades', - properties: 'Propietats', - insert: 'Inserir', - connecting: 'Connectant', - name: 'Nom', - collation: 'Ordenació', - clear: 'Netejar', - options: 'Opcions', - autoRefresh: 'Actualització automàtica', - indexes: 'Índexs', foreignKeys: 'Claus foranes', length: 'Longitud', unsigned: 'Sense signe', default: 'Per defecte', comment: 'Comentari', + collation: 'Ordenació', key: 'Clau | Claus', order: 'Ordre', expression: 'Expressió', @@ -60,15 +119,8 @@ export const caES = { approximately: 'Aproximadament', total: 'Total', table: 'Taula', - discard: 'Descartar', - stay: 'Quedar-se', - author: 'Autor', - light: 'Clar', - dark: 'Fosc', - autoCompletion: 'Autocompletat', - application: 'Aplicació', - editor: 'Editor', view: 'Vista', + indexes: 'Índexs', definer: 'Definidor', algorithm: 'Algorisme', trigger: 'Desencadenador | Desencadenadors', @@ -87,104 +139,26 @@ export const caES = { execution: 'Execució', starts: 'Comença', ends: 'Acaba', - ssl: 'SSL', - privateKey: 'Clau privada', - certificate: 'Certificat', - caCertificate: 'Certificat CA', - ciphers: 'Xifrats', - upload: 'Pujar', - browse: 'Navegar', - faker: 'Falsificador', - content: 'Contingut', - cut: 'Tallar', - copy: 'Copiar', - paste: 'Enganxar', - tools: 'Eines', variables: 'Variables', processes: 'Processos', database: 'Base de dades', - scratchpad: 'Bloc de notes', array: 'Matriu', - changelog: 'Registre de canvis', - format: 'Format', - sshTunnel: 'Túnel SSH', structure: 'Estructura', - small: 'Petit', - medium: 'Mitjà', - large: 'Gran', row: 'Fila | Files', cell: 'Cel·la | Cel·les', triggerFunction: 'Funció de desencadenador | Funcions de desencadenador', - all: 'Tot', - duplicate: 'Duplicar', routine: 'Rutina', - new: 'Nou', - history: 'Històric', - select: 'Seleccionar', - passphrase: 'Frase de contrasenya', - filter: 'Filtre', - change: 'Canviar', - views: 'Vistes', - triggers: 'Desencadenadors', - routines: 'Rutines', - functions: 'Funcions', - schedulers: 'Planificadors', - includes: 'Inclou', - drop: 'Descartar', - completed: 'Completat', - aborted: 'Avortat', - disabled: 'Deshabilitat', - enable: 'Habilitar', - disable: 'Deshabilitar', commit: 'Validar', rollback: 'Desfer', - connectionString: 'Cadena de connexió', - contributors: 'Contribuïdors', - pin: 'Fixar', - unpin: 'Desfixar', - console: 'Consola', - shortcuts: 'Dreceres', - folder: 'Carpeta | Carpetes', - appearance: 'Aparença', - color: 'Color', - label: 'Etiqueta', - icon: 'Icona', resultsTable: 'Taula de resultats', ddl: 'DDL', - none: 'Cap', - singleQuote: 'Cometa simple', - doubleQuote: 'Cometa doble' - }, - message: { - appWelcome: 'Benvingut a Antares SQL Client!', - appFirstStep: 'El teu primer pas: crea una nova connexió a la base de dades.', - addConnection: 'Afegeix connexió', - createConnection: 'Crea connexió', - createNewConnection: 'Crea una nova connexió', - askCredentials: 'Demana credencials', - testConnection: 'Prova la connexió', - editConnection: 'Edita la connexió', - deleteConnection: 'Esborra la connexió', - deleteConfirm: 'Confirmes la cancel·lació de', - connectionSuccessfullyMade: 'Connexió realitzada amb èxit!', - madeWithJS: 'Fet amb 💛 i JavaScript!', - checkForUpdates: 'Comprova actualitzacions', - noUpdatesAvailable: 'No hi ha actualitzacions disponibles', - checkingForUpdate: 'Comprovant actualitzacions', - checkFailure: 'La comprovació ha fallat, si us plau, torna-ho a intentar més tard', - updateAvailable: 'Actualització disponible', - downloadingUpdate: 'Descarregant actualització', - updateDownloaded: 'Actualització descarregada', - restartToInstall: 'Reinicia Antares per instal·lar', + drop: 'Descartar', unableEditFieldWithoutPrimary: 'No es pot editar un camp sense una clau primària en el conjunt de resultats', editCell: 'Edita la cel·la', deleteRows: 'Esborra fila | Esborra {count} files', confirmToDeleteRows: 'Confirmes esborrar una fila? | Confirmes esborrar {count} files?', - notificationsTimeout: 'Temps d\'espera de notificacions', - uploadFile: 'Puja fitxer', addNewRow: 'Afegeix una nova fila', numberOfInserts: 'Nombre d\'insercions', - openNewTab: 'Obre una nova pestanya', affectedRows: 'Files afectades', createNewDatabase: 'Crea una nova base de dades', databaseName: 'Nom de la base de dades', @@ -206,8 +180,6 @@ export const caES = { emptyTable: 'Taula buida', deleteTable: 'Esborra la taula', emptyConfirm: 'Confirmes buidar', - unsavedChanges: 'Canvis no desats', - discardUnsavedChanges: 'Tens alguns canvis no desats. Tancant aquesta pestanya aquests canvis es descartaran.', thereAreNoIndexes: 'No hi ha índexs', thereAreNoForeign: 'No hi ha claus foranes', createNewForeign: 'Crea una nova clau forana', @@ -216,9 +188,6 @@ export const caES = { foreignFields: 'Camps foranis', invalidDefault: 'Valor per defecte no vàlid', onDelete: 'Al esborrar', - applicationTheme: 'Tema de l\'aplicació', - editorTheme: 'Tema de l\'editor', - wrapLongLines: 'Ajusta línies llargues', selectStatement: 'Sentència SELECT', triggerStatement: 'Sentència TRIGGER', sqlSecurity: 'Seguretat SQL', @@ -241,14 +210,9 @@ export const caES = { createNewScheduler: 'Crea un nou planificador', deleteScheduler: 'Esborra planificador', preserveOnCompletion: 'Conserva en finalitzar', - enableSsl: 'Activa SSL', - manualValue: 'Valor manual', tableFiller: 'Ompletaula', fakeDataLanguage: 'Idioma de dades fictícies', - searchForElements: 'Cerca elements', - selectAll: 'Selecciona tot', queryDuration: 'Durada de la consulta', - includeBetaUpdates: 'Inclou actualitzacions beta', setNull: 'Estableix NULL', processesList: 'Llista de processos', processInfo: 'Informació del procés', @@ -257,15 +221,8 @@ export const caES = { schemaName: 'Nom de l\'esquema', editSchema: 'Edita l\'esquema', deleteSchema: 'Esborra l\'esquema', - markdownSupported: 'Suporta markdown', - plantATree: 'Planta un arbre', - dataTabPageSize: 'Mida de pàgina de la pestanya DATA', - enableSsh: 'Activa SSH', - pageNumber: 'Número de pàgina', duplicateTable: 'Duplica taula', - noOpenTabs: 'No hi ha pestanyes obertes, navega per la barra de l\'esquerra o:', noSchema: 'No hi ha esquema', - restorePreviousSession: 'Restaura la sessió anterior', runQuery: 'Executa consulta', thereAreNoTableFields: 'No hi ha camps a la taula', newTable: 'Nova taula', @@ -278,36 +235,82 @@ export const caES = { thereIsNoQueriesYet: 'Encara no hi ha consultes', searchForQueries: 'Cerca consultes', killProcess: 'Mata procés', - closeTab: 'Tanca pestanya', exportSchema: 'Exporta esquema', importSchema: 'Importa esquema', - directoryPath: 'Ruta del directori', newInsertStmtEvery: 'Nova sentència INSERT cada', processingTableExport: 'Processant {table}', fetchingTableExport: 'Obtenint dades de {table}', writingTableExport: 'Escrivint dades de {table}', checkAllTables: 'Marca totes les taules', uncheckAllTables: 'Desmarca totes les taules', - goToDownloadPage: 'Ves a la pàgina de descàrrega', - readOnlyMode: 'Mode de lectura', killQuery: 'Mata consulta', insertRow: 'Insereix fila | Insereix files', commitMode: 'Mode de validació', autoCommit: 'Validació automàtica', manualCommit: 'Validació manual', - actionSuccessful: '{action} realitzat amb èxit', + disableFKChecks: 'Desactiva les comprovacions de claus foranes', + formatQuery: 'Formata consulta', + queryHistory: 'Històric de consultes', + clearQuery: 'Neteja consulta', + fillCell: 'Omplir cel·la', + executeSelectedQuery: 'Executa la consulta seleccionada', + noResultsPresent: 'No hi ha resultats', + sqlExportOptions: 'Opcions d\'exportació SQL', + targetTable: 'Taula objectiu', + switchDatabase: 'Canvia la base de dades', importQueryErrors: 'Avís: ha ocorregut {n} error | Avís: han ocorregut {n} errors', - executedQueries: '{n} consulta executada | {n} consultes executades', - outputFormat: 'Format de sortida', - singleFile: 'Arxiu {ext} únic', - zipCompressedFile: 'Arxiu {ext} comprimit en ZIP', + executedQueries: '{n} consulta executada | {n} consultes executades' + }, + application: { + settings: 'Configuració', + general: 'General', + themes: 'Temes', + update: 'Actualitzar', + about: 'Sobre', + language: 'Idioma', + light: 'Clar', + dark: 'Fosc', + autoCompletion: 'Autocompletat', + application: 'Aplicació', + editor: 'Editor', + scratchpad: 'Bloc de notes', + changelog: 'Registre de canvis', + small: 'Petit', + medium: 'Mitjà', + large: 'Gran', + console: 'Consola', + shortcuts: 'Dreceres', + appearance: 'Aparença', + color: 'Color', + label: 'Etiqueta', + icon: 'Icona', + madeWithJS: 'Fet amb 💛 i JavaScript!', + checkForUpdates: 'Comprova actualitzacions', + noUpdatesAvailable: 'No hi ha actualitzacions disponibles', + checkingForUpdate: 'Comprovant actualitzacions', + checkFailure: 'La comprovació ha fallat, si us plau, torna-ho a intentar més tard', + updateAvailable: 'Actualització disponible', + downloadingUpdate: 'Descarregant actualització', + updateDownloaded: 'Actualització descarregada', + restartToInstall: 'Reinicia Antares per instal·lar', + notificationsTimeout: 'Temps d\'espera de notificacions', + openNewTab: 'Obre una nova pestanya', + unsavedChanges: 'Canvis no desats', + discardUnsavedChanges: 'Tens alguns canvis no desats. Tancant aquesta pestanya aquests canvis es descartaran.', + applicationTheme: 'Tema de l\'aplicació', + editorTheme: 'Tema de l\'editor', + wrapLongLines: 'Ajusta línies llargues', + includeBetaUpdates: 'Inclou actualitzacions beta', + markdownSupported: 'Suporta markdown', + plantATree: 'Planta un arbre', + dataTabPageSize: 'Mida de pàgina de la pestanya DATA', + noOpenTabs: 'No hi ha pestanyes obertes, navega per la barra de l\'esquerra o:', + restorePreviousSession: 'Restaura la sessió anterior', + closeTab: 'Tanca pestanya', + goToDownloadPage: 'Ves a la pàgina de descàrrega', disableBlur: 'Desactiva el desenfoc', - untrustedConnection: 'Connexió no confiable', missingOrIncompleteTranslation: 'Traducció absent o incompleta?', findOutHowToContribute: 'Descobreix com contribuir', - disableFKChecks: 'Desactiva les comprovacions de claus foranes', - allConnections: 'Totes les connexions', - searchForConnections: 'Cerca connexions', disableScratchpad: 'Desactiva el bloc de notes', reportABug: 'Informa d\'un error', nextTab: 'Pestanya següent', @@ -327,38 +330,30 @@ export const caES = { openSettings: 'Obre configuració', openScratchpad: 'Obre el bloc de notes', runOrReload: 'Executa o recarrega', - formatQuery: 'Formata consulta', - queryHistory: 'Històric de consultes', - clearQuery: 'Neteja consulta', openFilter: 'Obre filtre', nextResultsPage: 'Pàgina de resultats següent', previousResultsPage: 'Pàgina de resultats anterior', - fillCell: 'Omplir cel·la', editFolder: 'Edita carpeta', folderName: 'Nom de la carpeta', deleteFolder: 'Esborra carpeta', editConnectionAppearance: 'Edita l\'aparença de la connexió', - executeSelectedQuery: 'Executa la consulta seleccionada', defaultCopyType: 'Tipus de còpia per defecte', showTableSize: 'Mostra la mida de la taula a la barra lateral', showTableSizeDescription: 'Només MySQL/MariaDB. Activar aquesta opció pot afectar el rendiment en esquemes amb moltes taules.', searchForSchemas: 'Cerca esquemes', + searchForElements: 'Cerca elements', switchSearchMethod: 'Canvia el mètode de cerca', - noResultsPresent: 'No hi ha resultats', - sqlExportOptions: 'Opcions d\'exportació SQL', - targetTable: 'Taula objectiu', - phpArray: 'Matriu PHP', closeAllTabs: 'Tanca totes les pestanyes', closeOtherTabs: 'Tanca altres pestanyes', closeTabsToLeft: 'Tanca pestanyes a l\'esquerra', closeTabsToRight: 'Tanca pestanyes a la dreta', - switchDatabase: 'Canvia la base de dades', - csvExportOptions: 'Opcions d\'exportació CSV', csvFieldDelimiter: 'Delimitador de camp', csvLinesTerminator: 'Terminador de línia', csvStringDelimiter: 'Delimitador de cadena', csvIncludeHeader: 'Inclou capçalera', - scratchPadDefaultValue: '# COM SUPORTAR ANTARES\n\n- [ ] Deixa una estrella a Antares [repositori GitHub](https://github.com/antares-sql/antares)\n- [ ] Envia comentaris i consells\n- [ ] Informa d\'errors\n- [ ] Si t\'agrada, comparteix Antares amb amics\n\n# SOBRE EL BLOC DE NOTES\n\nAquest és un bloc de notes on pots guardar les teves **notes personals**. Suporta format `markdown`, però pots usar text pla.\nAquest contingut és simplement un espai reservat, pots esborrar-lo per fer lloc per les teves notes.\n' + csvExportOptions: 'Opcions d\'exportació CSV', + scratchPadDefaultValue: '# COM SUPORTAR ANTARES\n\n- [ ] Deixa una estrella a Antares [repositori GitHub](https://github.com/antares-sql/antares)\n- [ ] Envia comentaris i consells\n- [ ] Informa d\'errors\n- [ ] Si t\'agrada, comparteix Antares amb amics\n\n# SOBRE EL BLOC DE NOTES\n\nAquest és un bloc de notes on pots guardar les teves **notes personals**. Suporta format `markdown`, però pots usar text pla.\nAquest contingut és simplement un espai reservat, pots esborrar-lo per fer lloc per les teves notes.\n', + phpArray: 'Matriu PHP' }, faker: { address: 'Adreça', @@ -525,4 +520,4 @@ export const caES = { fuel: 'Combustible', vin: 'Vin' } -}; \ No newline at end of file +}; From 832aa75ebe46776b9c365dde2dd13db3746adcd5 Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Mon, 14 Aug 2023 10:44:36 +0200 Subject: [PATCH 15/27] fix(SQLite): improved view body parsing --- src/main/libs/clients/SQLiteClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/libs/clients/SQLiteClient.ts b/src/main/libs/clients/SQLiteClient.ts index b4562558..1e8554ab 100644 --- a/src/main/libs/clients/SQLiteClient.ts +++ b/src/main/libs/clients/SQLiteClient.ts @@ -425,7 +425,7 @@ export class SQLiteClient extends AntaresCore { return results.rows.map(row => { return { - sql: row.sql.match(/(?<=AS ).*?$/gs)[0], + sql: row.sql.match(/(?<=(AS|as)( |\n)).*?$/gs)[0], name: view }; })[0]; From 5b9b539bc7ebe1d3687c775c5dc8db3dbdc12ad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Vondr=C3=A1=C4=8Dek?= Date: Mon, 14 Aug 2023 11:47:41 +0200 Subject: [PATCH 16/27] chore(i18n): add czech translation --- src/renderer/i18n/cs-CZ.ts | 526 +++++++++++++++++++++++++ src/renderer/i18n/index.ts | 4 +- src/renderer/i18n/supported-locales.ts | 3 +- 3 files changed, 531 insertions(+), 2 deletions(-) create mode 100644 src/renderer/i18n/cs-CZ.ts diff --git a/src/renderer/i18n/cs-CZ.ts b/src/renderer/i18n/cs-CZ.ts new file mode 100644 index 00000000..1b028f76 --- /dev/null +++ b/src/renderer/i18n/cs-CZ.ts @@ -0,0 +1,526 @@ +export const csCZ = { + general: { // General purpose terms + edit: 'Upravit', + save: 'Uložit', + close: 'Zavřít', + delete: 'Smazat', + confirm: 'Potvrdit', + cancel: 'Zrušit', + send: 'Poslat', + refresh: 'Obnovit', + autoRefresh: 'Auto-obnova', + version: 'Verze', + donate: 'Příspěvek', + run: 'Spustit', + results: 'Výsledky', + size: 'Velikost', + mimeType: 'Mime-Type', + download: 'Stáhnout', + add: 'Přidat', + data: 'Data', + properties: 'Vlastnosti', // Lawondyss: Not used + name: 'Název', + clear: 'Vyčistit', + options: 'Možnosti', + insert: 'Vložit', + discard: 'Zahodit', + stay: 'Zůstat', + author: 'Autor', + upload: 'Nahrát', + browse: 'Procházet', + content: 'Obsah', + cut: 'Vyjmout', + copy: 'Kopírovat', + paste: 'Vložit', + duplicate: 'Duplikovat', + tools: 'Nástroje', + seconds: 'sekundy', + all: 'Vše', + new: 'Nové', + select: 'Vybrat', + change: 'Změnit', + includes: 'Zahrnout', + completed: 'Dokončeno', + aborted: 'Zrušeno', + disabled: 'Vypnuto', + enable: 'Zapnuto', + disable: 'Vypnout', + contributors: 'Přispěvatelé', + pin: 'Připnout', // Lawondyss: Not used + unpin: 'Odepnout', // Lawondyss: Not used + folder: 'Složka | Složky', // Lawondyss: Used only 1 + none: 'Nic', + singleQuote: 'Apostrofy', + doubleQuote: 'Uvozovky', + deleteConfirm: 'Skutečně chcete smazat', + uploadFile: 'Nahrát soubor', + format: 'Formátovat', // Format code + history: 'Historie', + filter: 'Filtrovat', + manualValue: 'Vlastní hodnota', + selectAll: 'Vybrat vše', + pageNumber: 'Číslo stránky', + directoryPath: 'Adresář', + actionSuccessful: '{action} úspěšný', + outputFormat: 'Formát výstupu', + singleFile: 'Jediný {ext} soubor', + zipCompressedFile: 'ZIP komprimovaný {ext} soubor' + }, + connection: { // Database connection + connectionName: 'Název', + hostName: 'Host', + client: 'Klient', + port: 'Port', + user: 'Uživatel', + password: 'Heslo', + credentials: 'Pověření', + connect: 'Připojit', + connected: 'Připojeno', // Lawondyss: Not used + disconnect: 'Odpojit', + disconnected: 'Odpojeno', // Lawondyss: Not used + ssl: 'SSL', + enableSsl: 'Použít SSL', + privateKey: 'Soukromý klíč', + certificate: 'Certifikát', + caCertificate: 'CA certifikát', + ciphers: 'Šifrování', + untrustedConnection: 'Nedůvěryhodné připojení', + passphrase: 'Heslová fráze', + sshTunnel: 'SSH tunel', + enableSsh: 'Použít SSH', + connectionString: 'String připojení', + addConnection: 'Add connection', + createConnection: 'Vytvořit připojení', // Lawondyss: Not used + createNewConnection: 'Vytvořit nové připojení', + askCredentials: 'Vyžadovat přihlášení', + testConnection: 'Vyzkoušet', + editConnection: 'Upravit připojení', // Lawondyss: Not used + deleteConnection: 'Smazat připojení', + connectionSuccessfullyMade: 'Spojení úspěšně navázáno!', + readOnlyMode: 'Pouze pro čtení', + allConnections: 'Všechna připojení', + searchForConnections: 'Hledat připojení' + }, + database: { // Database related terms + schema: 'Schéma', + type: 'Typ', + insert: 'Vložit', // Lawondyss: Not used + indexes: 'Indexy', + foreignKeys: 'Cizí klíče', + length: 'Délka', + unsigned: 'Unsigned', + default: 'Výchozí', + comment: 'Komentář', + key: 'Klíč | Klíče', // Lawondyss: Used only 2 + order: 'Pořadí', + expression: 'Výraz', + autoIncrement: 'Auto Increment', + engine: 'Engine', + field: 'Sloupec | Sloupce', + approximately: 'Přibližně', + total: 'Celkem', + table: 'Tabulka | Tabulky', // Lawondyss: Used only without argument + view: 'Pohled | Pohledy', // Lawondyss: Used only without argument + definer: 'Definér', + algorithm: 'Algoritmus', + trigger: 'Trigger | Triggery', + storedRoutine: 'Stored routina | Stored routiny', + scheduler: 'Scheduler | Schedulery', + event: 'Akce', + parameters: 'Parametry', + function: 'Funkce | Funkce', + deterministic: 'Deterministická', + context: 'Kontext', + export: 'Export', + import: 'Import', + returns: 'Vrací', + timing: 'Načasování', + state: 'Stav', + execution: 'Spustit', + starts: 'Od', + ends: 'Do', + variables: 'Proměnné', + processes: 'Procesy', + database: 'Databáze', + array: 'Pole', + structure: 'Struktura', + row: 'Řádek | Řádky', + cell: 'Buňka | Buňky', + triggerFunction: 'Trigger funkce | Trigger funkce', + routine: 'Routina | Routiny', // Lawondyss: Not used + drop: 'Drop', + commit: 'Commit', + rollback: 'Rollback', + ddl: 'DDL', + collation: 'Porovnání', + resultsTable: 'Tabulka výsledků', + unableEditFieldWithoutPrimary: 'Nelze upravit buňku bez primárního klíče ve výsledku', // Lawondyss: Not used + editCell: 'Upravit buňku', // Lawondyss: Not used + deleteRows: 'Smazat řádek | Smazat {count} řádků', + confirmToDeleteRows: 'Skutečně chcete smazat řádek? | Skutečně chcete smazat {count} řádků?', + addNewRow: 'Přidat nový řádek', // Lawondyss: Not used + numberOfInserts: 'Počet opakování', + affectedRows: 'Ovlivněno řádků', + createNewDatabase: 'Vytvořit novou databázi', // Lawondyss: Not used + databaseName: 'Název databáze', // Lawondyss: Not use + serverDefault: 'Porovnání serveru', + deleteDatabase: 'Smazat databázi', // Lawondyss: Not used + editDatabase: 'Upravit databázi', // Lawondyss: Not used + clearChanges: 'Zrušit změny', + addNewField: 'Přidat nový sloupec', + manageIndexes: 'Správa indexů', + manageForeignKeys: 'Správa cizích klíčů', + allowNull: 'Povolit NULL', + zeroFill: 'Doplnit nuly', + customValue: 'Vlastní hodnota', + onUpdate: 'Při změně', + deleteField: 'Smazat sloupec', + createNewIndex: 'Vytvořit nový index', + addToIndex: 'Přidat do indexu', + createNewTable: 'Vytvořit novou databázi', // Lawondyss: Not used + emptyTable: 'Smazat obsah tabulky', + duplicateTable: 'Duplikovat tabulku', + deleteTable: 'Smazat tabulku', + emptyConfirm: 'Skutečně smazat obsah tabulky', + thereAreNoIndexes: 'Nemá žádné indexy', + thereAreNoForeign: 'Nemá žádné cizí klíče', + createNewForeign: 'Vytvořit nový cizí klíč', + referenceTable: 'Ref. tabulka', + referenceField: 'Ref. sloupec', + foreignFields: 'Cizí sloupce', // Lawondyss: Not used + invalidDefault: 'Neplatná výchozí hodnota', + onDelete: 'Při smazání', + selectStatement: 'Definice pohledu', + triggerStatement: 'Definice triggeru', + sqlSecurity: 'SQL zabezpečení', + updateOption: 'Volba aktualizace', + deleteView: 'Smazat pohled', + createNewView: 'Vytvořit nový pohled', // Lawondyss: Not used + deleteTrigger: 'Smazat trigger', + createNewTrigger: 'Vytvořit nový trigger', + currentUser: 'Současný uživatel', + routineBody: 'Definice routiny', + dataAccess: 'Přístup k datům', + thereAreNoParameters: 'Nemá žádné parametry', + createNewParameter: 'Vytvořit nový parametr', + createNewRoutine: 'Vytvořit novou stored routinu', + deleteRoutine: 'Smazat stored routinu', + functionBody: 'Definice funkce', + createNewFunction: 'Vytvořit novou funkci', + deleteFunction: 'Smazat funkci', + schedulerBody: 'Definice Scheduleru', + createNewScheduler: 'Vytvořit nový scheduler', + deleteScheduler: 'Smazat scheduler', + preserveOnCompletion: 'Uchovat po dokončení', + tableFiller: 'Vyplňovač tabulky', // Lawondyss: Not used + fakeDataLanguage: 'Jazyk pro fake data', + queryDuration: 'Doba trvání dotazu', + setNull: 'Nastavit NULL', + processesList: 'Seznam procesů', + processInfo: 'Informace o procesu', + manageUsers: 'Správa uživatelů', + createNewSchema: 'Vytvořit nové schéma', + schemaName: 'Název schématu', + editSchema: 'Upravit schéma', + deleteSchema: 'Smazat schema', + noSchema: 'Bez schématu', + runQuery: 'Spustit dotaz', // Lawondyss: Not used + thereAreNoTableFields: 'Nemá žádné sloupce', + newTable: 'Nová tabulka', + newView: 'Nový pohled', + newTrigger: 'Nový trigger', + newRoutine: 'Nová routina', + newFunction: 'Nová funkce', + newScheduler: 'Nový scheduler', + newTriggerFunction: 'Nová trigger funkce', + thereIsNoQueriesYet: 'Nejsou tu žádné dotazy', + searchForQueries: 'Hledání dotazů', + killProcess: 'Zabít proces', + exportSchema: 'Exportovat schéma', + importSchema: 'Importovat schéma', + newInsertStmtEvery: 'Nový INSERT každých', + processingTableExport: 'Zpracovávám tabulku {table}', + fetchingTableExport: 'Získávám data tabulky {table}', + writingTableExport: 'Zapisuji data tabulky {table}', + checkAllTables: 'Vybrat všechny tabulky', + uncheckAllTables: 'Vybrat žádnou tabulku', + killQuery: 'Zabít dotaz', // Lawondyss: Not used + insertRow: 'Vložit řádek | Vložit řádky', // Lawondyss: Used only 2 + commitMode: 'Způsob commitování', + autoCommit: 'Auto commit', + manualCommit: 'Ruční commit', + importQueryErrors: 'Varování: došlo k chybě {n} | Varování: došlo k chybám {n}', // Lawondyss: Used without n argument + executedQueries: '{n} dotaz spuštěn | {n} dotazy spuštěny', // Lawondyss: Used withoum n argument + disableFKChecks: 'Vypnout kontrolu cizích klíčů', + formatQuery: 'Formátovat dotaz', // Lawondyss: Not used, probably duplicate to general.format + queryHistory: 'Historie dotazů', // Lawondyss: Not used, probably duplicate to general.history + clearQuery: 'Clear query', // Lawondyss: Not used, probably duplicate to general.clear + fillCell: 'Vyplnit buňku', + executeSelectedQuery: 'Spustit vybraný dotaz', + noResultsPresent: 'Nejsou k dispozici žádné výsledky', + sqlExportOptions: 'Možnosti exportu SQL', + targetTable: 'Cílová tabulka', + switchDatabase: 'Přepnout databázi', + searchForElements: 'Vyhledávání prvků', + searchForSchemas: 'Vyhledávání schémat' + }, + application: { // Application related terms + settings: 'Nastavení', + scratchpad: 'Zápisník', + disableScratchpad: 'Vypnout zápisník', + console: 'Konzole', + general: 'Obecné', + themes: 'Motivy', + update: 'Aktualizace', + about: 'Informace', + language: 'Jazyk', + shortcuts: 'Zkratky', + key: 'Klávesa | Klávesy', // Keyboard key // Lawondyss: Usedn only 2 + event: 'Akce', + light: 'Světlý', + dark: 'Tmavý', + autoCompletion: 'Dokončování', + application: 'Aplikace', + editor: 'Editor', + changelog: 'Changelog', + small: 'Malé', // Lawondyss: Not used, probably obsolete font size settings + medium: 'Střední', // Lawondyss: Not used, probably obsolete font size settings + large: 'Velké', // Lawondyss: Not used, probably obsolete font size settings + appearance: 'Vzhled', + color: 'Barva', + label: 'Název', + icon: 'Ikona', + madeWithJS: 'Vytvořeno s 💛 a JavaScriptem!', + checkForUpdates: 'Zkontrolovat aktualizace', + noUpdatesAvailable: 'Žádné dostupné aktualizace', + checkingForUpdate: 'Kontrola aktualizací', + checkFailure: 'Kontrola selhala, zkuste to prosím později', + updateAvailable: 'Dostupná aktualizace', + downloadingUpdate: 'Stahuji aktualizaci', + updateDownloaded: 'Aktualizace stažena', + restartToInstall: 'Pro instalaci restartujte Antares', + includeBetaUpdates: 'Včetně beta aktualizací', + notificationsTimeout: 'Časový limit pro oznámení', + openNewTab: 'Otevřít novou kartu', + unsavedChanges: 'Neuložené změny', + discardUnsavedChanges: 'Máte nějaké neuložené změny. Zavřením této karty budou tyto změny zrušeny.', + applicationTheme: 'Motiv aplikace', + editorTheme: 'Motiv editoru', + wrapLongLines: 'Zalamovat dlouhé řádky', + markdownSupported: 'Podporován Markdown', + plantATree: 'Zasaďte strom', // Lawondyss: Not used + dataTabPageSize: 'Počet řádků na stránku', + noOpenTabs: 'Žádné otevřené karty, vyberte z elementů vlevo nebo:', + restorePreviousSession: 'Pamatovat si otevřené karty', + closeTab: 'Zavřít kartu', + goToDownloadPage: 'Pro stažení přejít na stránku', + disableBlur: 'Vypnout rozostření', + missingOrIncompleteTranslation: 'Chybějící nebo neúplný překlad?', + findOutHowToContribute: 'Zjistěte, jak můžete přispět.', + reportABug: 'Nahlásit chybu', + nextTab: 'Další karta', + previousTab: 'Předešlá karta', + selectTabNumber: 'Vybrat kartu číslo {param}', + toggleConsole: 'Přepnout konzoli', + addShortcut: 'Přidat zkratku', + editShortcut: 'Upravit zkratku', + deleteShortcut: 'Smazat zkratku', + restoreDefaults: 'Obnovit výchozí', + restoreDefaultsQuestion: 'Opravdu chcete obnovit výchozí zkratky?', + registerAShortcut: 'Stiskněte požadované klávesy', + invalidShortcutMessage: 'Neplatná kombinace, pokračujte v zadávání', + shortcutAlreadyExists: 'Zkratka již existuje', + saveContent: 'Uložit obsah', + openAllConnections: 'Otevřít všechna připojení', + openSettings: 'Otevřít nastavení', + openScratchpad: 'Otevřít zápisník', + runOrReload: 'Spustit dotaz', + openFilter: 'Otevřít filtr', + nextResultsPage: 'Další stránka výsledků', + previousResultsPage: 'Předešlá stránka výsledků', + editFolder: 'Upravit složku', + folderName: 'Název složky', + deleteFolder: 'Smazat složku', // Lawondyss: Not used + editConnectionAppearance: 'Upravit vzhled připojení', // Lawondyss: Not used + defaultCopyType: 'Výchozí typ kopírování', + showTableSize: 'Velikost tabulky v panelu', + showTableSizeDescription: 'Pouze MySQL/MariaDB. Povolení této možnosti může ovlivnit výkon u schémat s mnoha tabulkami.', + switchSearchMethod: 'Přepnout způsob vyhledávání', + phpArray: 'PHP pole', + closeAllTabs: 'Zavřít všechny karty', + closeOtherTabs: 'Zavřít ostatní karty', + closeTabsToLeft: 'Zavřít karty vlevo', + closeTabsToRight: 'Zavřít karty vpravo', + csvFieldDelimiter: 'Oddělovař', + csvLinesTerminator: 'Konec řádku', + csvStringDelimiter: 'Obalit text', + csvIncludeHeader: 'Včetně hlavičky', + csvExportOptions: 'Možnosti CSV exportu', + scratchPadDefaultValue: '# JAK PODPOŘIT ANTARES\n\n- [ ] Dát Antares hvězdičku [GitHub repo](https://github.com/antares-sql/antares)\n- [ ] Poslat názor či radu\n- [ ] Nahlásit chybu\n- [ ] Pokud se líbí, sdílet Antares s přáteli\n\n# O ZÁPISNÍKU\n\nToto je zápisník, který uchovává vaše **osobní poznámky**. Podporuje `markdown` formát, ale můžete použít obyčejný text.\nTento obsah je pouze ukázky, neváhejte ho smazat, abyste si udělali místo na poznámky.\n' + }, + faker: { // Faker.js methods, used in random generated content + address: 'Address', + commerce: 'Commerce', + company: 'Company', + database: 'Database', + date: 'Date', + finance: 'Finance', + git: 'Git', + hacker: 'Hacker', + internet: 'Internet', + lorem: 'Lorem', + name: 'Name', + music: 'Music', + phone: 'Phone', + random: 'Random', + system: 'System', + time: 'Time', + vehicle: 'Vehicle', + zipCode: 'Zip code', + zipCodeByState: 'Zip code by state', + city: 'City', + cityPrefix: 'City prefix', + citySuffix: 'City suffix', + streetName: 'Street name', + streetAddress: 'Street address', + streetSuffix: 'Street suffix', + streetPrefix: 'Street prefix', + secondaryAddress: 'Secondary address', + county: 'County', + country: 'Country', + countryCode: 'Country code', + state: 'State', + stateAbbr: 'State abbreviation', + latitude: 'Latitude', + longitude: 'Longitude', + direction: 'Direction', + cardinalDirection: 'Cardinal direction', + ordinalDirection: 'Ordinal direction', + nearbyGPSCoordinate: 'Nearby GPS coordinate', + timeZone: 'Time zone', + color: 'Color', + department: 'Department', + productName: 'Product name', + price: 'Price', + productAdjective: 'Product adjective', + productMaterial: 'Product material', + product: 'Product', + productDescription: 'Product description', + suffixes: 'Suffixes', + companyName: 'Company name', + companySuffix: 'Company suffix', + catchPhrase: 'Catch phrase', + bs: 'BS', + catchPhraseAdjective: 'Catch phrase adjective', + catchPhraseDescriptor: 'Catch phrase descriptor', + catchPhraseNoun: 'Catch phrase noun', + bsAdjective: 'BS adjective', + bsBuzz: 'BS buzz', + bsNoun: 'BS noun', + column: 'Column', + type: 'Type', + collation: 'Collation', + engine: 'Engine', + past: 'Past', + now: 'Now', + future: 'Future', + between: 'Between', + recent: 'Recent', + soon: 'Soon', + month: 'Month', + weekday: 'Weekday', + account: 'Account', + accountName: 'Account name', + routingNumber: 'Routing number', + mask: 'Mask', + amount: 'Amount', + transactionType: 'Transaction type', + currencyCode: 'Currency code', + currencyName: 'Currency name', + currencySymbol: 'Currency symbol', + bitcoinAddress: 'Bitcoin address', + litecoinAddress: 'Litecoin address', + creditCardNumber: 'Credit card number', + creditCardCVV: 'Credit card CVV', + ethereumAddress: 'Ethereum address', + iban: 'Iban', + bic: 'Bic', + transactionDescription: 'Transaction description', + branch: 'Branch', + commitEntry: 'Commit entry', + commitMessage: 'Commit message', + commitSha: 'Commit SHA', + shortSha: 'Short SHA', + abbreviation: 'Abbreviation', + adjective: 'Adjective', + noun: 'Noun', + verb: 'Verb', + ingverb: 'Ingverb', + phrase: 'Phrase', + avatar: 'Avatar', + email: 'Email', + exampleEmail: 'Example email', + userName: 'Username', + protocol: 'Protocol', + url: 'Url', + domainName: 'Domin name', + domainSuffix: 'Domain suffix', + domainWord: 'Domain word', + ip: 'Ip', + ipv6: 'Ipv6', + userAgent: 'User agent', + mac: 'Mac', + password: 'Password', + word: 'Word', + words: 'Words', + sentence: 'Sentence', + slug: 'Slug', + sentences: 'Sentences', + paragraph: 'Paragraph', + paragraphs: 'Paragraphs', + text: 'Text', + lines: 'Lines', + genre: 'Genre', + firstName: 'First name', + lastName: 'Last name', + middleName: 'Middle name', + findName: 'Full name', + jobTitle: 'Job title', + gender: 'Gender', + prefix: 'Prefix', + suffix: 'Suffix', + title: 'Title', + jobDescriptor: 'Job descriptor', + jobArea: 'Job area', + jobType: 'Job type', + phoneNumber: 'Phone number', + phoneNumberFormat: 'Phone number format', + phoneFormats: 'Phone formats', + number: 'Number', + float: 'Float', + arrayElement: 'Array element', + arrayElements: 'Array elements', + objectElement: 'Object element', + uuid: 'Uuid', + boolean: 'Boolean', + image: 'Image', + locale: 'Locale', + alpha: 'Alpha', + alphaNumeric: 'Alphanumeric', + hexaDecimal: 'Hexadecimal', + fileName: 'File name', + commonFileName: 'Common file name', + mimeType: 'Mime type', + commonFileType: 'Common file type', + commonFileExt: 'Common file extension', + fileType: 'File type', + fileExt: 'File extension', + directoryPath: 'Directory path', + filePath: 'File path', + semver: 'Semver', + manufacturer: 'Manufacturer', + model: 'Model', + fuel: 'Fuel', + vin: 'Vin' + } +} diff --git a/src/renderer/i18n/index.ts b/src/renderer/i18n/index.ts index 35c294c5..cac0e854 100644 --- a/src/renderer/i18n/index.ts +++ b/src/renderer/i18n/index.ts @@ -14,6 +14,7 @@ import { idID } from './id-ID'; import { koKR } from './ko-KR'; import { nlNL } from './nl-NL'; import { caES } from './ca-ES'; +import { csCZ } from './cs-CZ'; const messages = { 'en-US': enUS, 'it-IT': itIT, @@ -29,7 +30,8 @@ const messages = { 'id-ID': idID, 'ko-KR': koKR, 'nl-NL': nlNL, - 'ca-ES': caES + 'ca-ES': caES, + 'cs-CZ': csCZ, }; type NestedPartial = { diff --git a/src/renderer/i18n/supported-locales.ts b/src/renderer/i18n/supported-locales.ts index b1b28ab0..2b3e5e75 100644 --- a/src/renderer/i18n/supported-locales.ts +++ b/src/renderer/i18n/supported-locales.ts @@ -13,5 +13,6 @@ export const localesNames: {[key: string]: string} = { 'id-ID': 'Bahasa Indonesia', 'ko-KR': '한국어', 'nl-NL': 'Nederlands', - 'ca-ES': 'Català' + 'ca-ES': 'Català', + 'cs-CZ': 'Čeština', }; From 52e42fa1b529512154c0680124c5e425964a5b1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ladislav=20Vondr=C3=A1=C4=8Dek?= Date: Mon, 14 Aug 2023 11:50:38 +0200 Subject: [PATCH 17/27] fix: add some missing titles of buttons --- src/renderer/components/WorkspaceTabNewTable.vue | 1 + src/renderer/components/WorkspaceTabPropsTable.vue | 1 + 2 files changed, 2 insertions(+) diff --git a/src/renderer/components/WorkspaceTabNewTable.vue b/src/renderer/components/WorkspaceTabNewTable.vue index a72efdbf..e9c5af93 100644 --- a/src/renderer/components/WorkspaceTabNewTable.vue +++ b/src/renderer/components/WorkspaceTabNewTable.vue @@ -45,6 +45,7 @@
    +
    + +
    @@ -411,6 +421,7 @@ import { localesNames } from '@/i18n/supported-locales'; import ModalSettingsUpdate from '@/components/ModalSettingsUpdate.vue'; import ModalSettingsChangelog from '@/components/ModalSettingsChangelog.vue'; import ModalSettingsShortcuts from '@/components/ModalSettingsShortcuts.vue'; +import ModalSettingsData from '@/components/ModalSettingsData.vue'; import BaseTextEditor from '@/components/BaseTextEditor.vue'; import BaseSelect from '@/components/BaseSelect.vue'; import { AvailableLocale } from '@/i18n'; @@ -648,10 +659,14 @@ onBeforeUnmount(() => { .modal-body { overflow: hidden; - .tab-link { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + .tab-item { + max-width: 20%; + + .tab-link { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } } .panel-body { diff --git a/src/renderer/components/ModalSettingsData.vue b/src/renderer/components/ModalSettingsData.vue new file mode 100644 index 00000000..f0a1cb7a --- /dev/null +++ b/src/renderer/components/ModalSettingsData.vue @@ -0,0 +1,84 @@ + + diff --git a/src/renderer/components/ModalSettingsDataExport.vue b/src/renderer/components/ModalSettingsDataExport.vue new file mode 100644 index 00000000..8e37ca30 --- /dev/null +++ b/src/renderer/components/ModalSettingsDataExport.vue @@ -0,0 +1,327 @@ + + + + + diff --git a/src/renderer/i18n/ca-ES.ts b/src/renderer/i18n/ca-ES.ts index f170722b..9168e23a 100644 --- a/src/renderer/i18n/ca-ES.ts +++ b/src/renderer/i18n/ca-ES.ts @@ -352,7 +352,6 @@ export const caES = { csvStringDelimiter: 'Delimitador de cadena', csvIncludeHeader: 'Inclou capçalera', csvExportOptions: 'Opcions d\'exportació CSV', - scratchPadDefaultValue: '# COM SUPORTAR ANTARES\n\n- [ ] Deixa una estrella a Antares [repositori GitHub](https://github.com/antares-sql/antares)\n- [ ] Envia comentaris i consells\n- [ ] Informa d\'errors\n- [ ] Si t\'agrada, comparteix Antares amb amics\n\n# SOBRE EL BLOC DE NOTES\n\nAquest és un bloc de notes on pots guardar les teves **notes personals**. Suporta format `markdown`, però pots usar text pla.\nAquest contingut és simplement un espai reservat, pots esborrar-lo per fer lloc per les teves notes.\n', phpArray: 'Matriu PHP' }, faker: { diff --git a/src/renderer/i18n/en-US.ts b/src/renderer/i18n/en-US.ts index f6fc1e3a..29a9199d 100644 --- a/src/renderer/i18n/en-US.ts +++ b/src/renderer/i18n/en-US.ts @@ -39,6 +39,7 @@ export const enUS = { new: 'New', select: 'Select', change: 'Change', + include: 'Include', includes: 'Includes', completed: 'Completed', aborted: 'Aborted', @@ -292,6 +293,9 @@ export const enUS = { label: 'Label', icon: 'Icon', fileName: 'File name', + choseFile: 'Chose file', + data: 'Data', + required: 'Required', madeWithJS: 'Made with 💛 and JavaScript!', checkForUpdates: 'Check for updates', noUpdatesAvailable: 'No updates available', @@ -358,7 +362,14 @@ export const enUS = { csvStringDelimiter: 'String delimiter', csvIncludeHeader: 'Include header', csvExportOptions: 'CSV export options', - scratchPadDefaultValue: '# HOW TO SUPPORT ANTARES\n\n- [ ] Leave a star to Antares [GitHub repo](https://github.com/antares-sql/antares)\n- [ ] Send feedbacks and advices\n- [ ] Report for bugs\n- [ ] If you enjoy, share Antares with friends\n\n# ABOUT SCRATCHPAD\n\nThis is a scratchpad where you can save your **personal notes**. It supports `markdown` format, but you are free to use plain text.\nThis content is just a placeholder, feel free to clear it to make space for your notes.\n' + exportData: 'Export data', + exportDataExplanation: 'Export saved connections to Antares. You will be asked for a password to encrypt the exported file.', + importData: 'Import data', + importDataExplanation: 'Imports an .antares file containing connections. You will need to enter the password defined during export.', + includeConnectionPasswords: 'Include connection passwords', + includeFolders: 'Include folders', + encryptionPassword: 'Encryption password', + encryptionPasswordError: 'The encryption password must be at least 8 characters long.' }, faker: { // Faker.js methods, used in random generated content address: 'Address', diff --git a/src/renderer/i18n/fr-FR.ts b/src/renderer/i18n/fr-FR.ts index 66a877c2..b24c962b 100644 --- a/src/renderer/i18n/fr-FR.ts +++ b/src/renderer/i18n/fr-FR.ts @@ -349,7 +349,6 @@ export const frFR = { csvStringDelimiter: 'Séparateur', csvIncludeHeader: 'Inclure l\'en-tête', csvExportOptions: 'Options d\'export CSV', - scratchPadDefaultValue: '# COMMENT SOUTENIR ANTARES\n\n- [ ] Laissez une etoile à Antares [GitHub repo](https://github.com/antares-sql/antares)\n- [ ] Envoyez vos avis et conseils\n- [ ] Signalez les bugs\n- [ ] Si vous l\'appréciez, partagez Antares avec des amis\n\n# A PROPOS DU BLOC-NOTES\n\nCeci est un bloc-notes où vous pouvez sauvegarder vos **notes personnelles**. Il supporte le format `markdown`, mais vous êtes libre d\'utiliser du texte standard.\nCe contenu est juste un modèle, vous pouvez a tout moment l\'effacer pour le remplacer par vos notes.\n', phpArray: 'Tableau PHP' }, faker: { diff --git a/src/renderer/i18n/pt-BR.ts b/src/renderer/i18n/pt-BR.ts index 9d16ad71..d2c67918 100644 --- a/src/renderer/i18n/pt-BR.ts +++ b/src/renderer/i18n/pt-BR.ts @@ -351,7 +351,6 @@ export const ptBR = { csvStringDelimiter: 'Delimitador da String', csvIncludeHeader: 'Incluir cabeçalho', csvExportOptions: 'Opções de exportação do CSV', - scratchPadDefaultValue: '# COMO AJUDAR O ANTARES\n\n- [ ] Deixe sua estrela para o Antares [GitHub repo](https://github.com/antares-sql/antares)\n- [ ] Envie sugestões e avisos\n- [ ] Relate bugs\n- [ ] Se você gostar, compartilhe o Antares com amigos\n\n# SOBRE O BLOCO DE NOTAS\n\nEsse é o bloco de notas para salvar suas **notas pessoais**. ele suporta o formato `markdown`, porém você é livre para usar qualquer texto.\nEsse conteúdo é apenas um texto, fique a vontade para limpar e obter mais espaço para suas notas.\n', phpArray: 'Array PHP' }, faker: { diff --git a/src/renderer/libs/unproxify.ts b/src/renderer/libs/unproxify.ts index 538cbcb4..3d7f24a4 100644 --- a/src/renderer/libs/unproxify.ts +++ b/src/renderer/libs/unproxify.ts @@ -5,7 +5,7 @@ import { toRaw } from 'vue'; * @param {*} val * @param {Boolean} json converts the value in JSON object (default true) */ -export function unproxify (val: any, json = true): any { +export function unproxify (val: T, json = true): T { if (json)// JSON conversion return JSON.parse(JSON.stringify(val)); else if (Array.isArray(val))// If array diff --git a/src/renderer/scss/themes/dark-theme.scss b/src/renderer/scss/themes/dark-theme.scss index bfbdcc81..750baa17 100644 --- a/src/renderer/scss/themes/dark-theme.scss +++ b/src/renderer/scss/themes/dark-theme.scss @@ -144,11 +144,17 @@ cursor: default; } - .input-group .input-group-addon { - border-color: #3f3f3f; + .has-error .form-input { background: $bg-color-dark; } + .input-group { + .input-group-addon { + border-color: #3f3f3f; + background: $bg-color-dark; + } + } + .empty { color: $body-font-color-dark; background: transparent; From 6df214558f8186dd5fbf101505465f4c07c8ad5f Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Fri, 18 Aug 2023 12:11:08 +0200 Subject: [PATCH 21/27] feat: ability to import connections --- src/renderer/components/BaseUploadInput.vue | 5 + src/renderer/components/ModalSettingsData.vue | 34 +-- .../components/ModalSettingsDataExport.vue | 12 +- .../components/ModalSettingsDataImport.vue | 263 ++++++++++++++++++ src/renderer/i18n/en-US.ts | 7 +- src/renderer/stores/connections.ts | 10 + 6 files changed, 297 insertions(+), 34 deletions(-) create mode 100644 src/renderer/components/ModalSettingsDataImport.vue diff --git a/src/renderer/components/BaseUploadInput.vue b/src/renderer/components/BaseUploadInput.vue index b2076b72..89d91790 100644 --- a/src/renderer/components/BaseUploadInput.vue +++ b/src/renderer/components/BaseUploadInput.vue @@ -16,6 +16,7 @@ :id="`id_${id}`" class="file-uploader-input" type="file" + :accept="accept" @change="$emit('change', $event)" > @@ -33,6 +34,10 @@ defineProps({ default: 'Browse', type: String }, + accept: { + default: '', + type: String + }, modelValue: { default: '', type: String diff --git a/src/renderer/components/ModalSettingsData.vue b/src/renderer/components/ModalSettingsData.vue index f0a1cb7a..46cb1c1b 100644 --- a/src/renderer/components/ModalSettingsData.vue +++ b/src/renderer/components/ModalSettingsData.vue @@ -38,41 +38,17 @@ - - - - - + @close="isImportModal = false" + />
    + + diff --git a/src/renderer/i18n/en-US.ts b/src/renderer/i18n/en-US.ts index 29a9199d..c46b1b3e 100644 --- a/src/renderer/i18n/en-US.ts +++ b/src/renderer/i18n/en-US.ts @@ -295,6 +295,7 @@ export const enUS = { fileName: 'File name', choseFile: 'Chose file', data: 'Data', + password: 'Password', required: 'Required', madeWithJS: 'Made with 💛 and JavaScript!', checkForUpdates: 'Check for updates', @@ -369,7 +370,11 @@ export const enUS = { includeConnectionPasswords: 'Include connection passwords', includeFolders: 'Include folders', encryptionPassword: 'Encryption password', - encryptionPasswordError: 'The encryption password must be at least 8 characters long.' + encryptionPasswordError: 'The encryption password must be at least 8 characters long.', + ignoreDuplicates: 'Ignore duplicates', + wrongImportPassword: 'Wrong import password', + wrongFileFormat: 'Wrong file format', + dataImportSuccess: 'Data successfully imported' }, faker: { // Faker.js methods, used in random generated content address: 'Address', diff --git a/src/renderer/stores/connections.ts b/src/renderer/stores/connections.ts index 2e888171..8f60927b 100644 --- a/src/renderer/stores/connections.ts +++ b/src/renderer/stores/connections.ts @@ -219,6 +219,16 @@ export const useConnectionsStore = defineStore('connections', { this.connectionsOrder = (this.connectionsOrder as SidebarElement[]).filter(el => !emptyFolders.includes(el.uid)); persistentStore.set('connectionsOrder', this.connectionsOrder); + }, + importConnections (importObj: { + connections: ConnectionParams[]; + connectionsOrder: SidebarElement[]; + }) { + this.connections = [...this.connections, ...importObj.connections]; + this.connectionsOrder = [...this.connectionsOrder, ...importObj.connectionsOrder]; + + persistentStore.set('connections', this.connections); + persistentStore.set('connectionsOrder', this.connectionsOrder); } } }); From 54df0e4aa847d54e512ecd78bf0800ba0286361f Mon Sep 17 00:00:00 2001 From: Fabio Di Stasio Date: Fri, 18 Aug 2023 15:57:31 +0200 Subject: [PATCH 22/27] style: implement eslint simple-import-sort --- .eslintrc | 7 ++- package-lock.json | 10 ++++ package.json | 1 + scripts/translationCheck.ts | 2 +- src/common/customizations/firebird.ts | 2 +- src/common/customizations/index.ts | 2 +- src/common/customizations/mysql.ts | 2 +- src/common/customizations/postgresql.ts | 2 +- src/common/customizations/sqlite.ts | 2 +- src/common/interfaces/antares.ts | 3 +- src/common/libs/encrypter.ts | 5 +- src/common/libs/sqlUtils.ts | 7 +-- src/common/shortcuts.ts | 2 +- src/main/ipc-handlers/application.ts | 3 +- src/main/ipc-handlers/connection.ts | 5 +- src/main/ipc-handlers/index.ts | 16 +++--- src/main/ipc-handlers/schema.ts | 4 +- src/main/ipc-handlers/tables.ts | 12 ++--- src/main/ipc-handlers/updates.ts | 2 +- src/main/libs/ClientsFactory.ts | 3 +- src/main/libs/ShortcutRegister.ts | 2 +- src/main/libs/clients/FirebirdSQLClient.ts | 9 ++-- src/main/libs/clients/MySQLClient.ts | 3 +- src/main/libs/clients/PostgreSQLClient.ts | 3 +- src/main/libs/clients/SQLiteClient.ts | 7 +-- src/main/libs/exporters/BaseExporter.ts | 6 +-- src/main/libs/exporters/sql/MysqlExporter.ts | 7 +-- .../libs/exporters/sql/PostgreSQLExporter.ts | 5 +- src/main/libs/exporters/sql/SqlExporter.ts | 1 + src/main/libs/importers/BaseImporter.ts | 2 +- src/main/libs/importers/sql/MySQLlImporter.ts | 3 +- .../libs/importers/sql/PostgreSQLImporter.ts | 3 +- src/main/main.ts | 6 +-- src/main/workers/exporter.ts | 1 + src/main/workers/importer.ts | 7 +-- src/renderer/App.vue | 11 ++-- src/renderer/components/BaseConfirmModal.vue | 3 +- src/renderer/components/BaseMap.vue | 8 +-- src/renderer/components/BaseSelect.vue | 2 +- src/renderer/components/BaseTextEditor.vue | 10 ++-- src/renderer/components/BaseUploadInput.vue | 1 + src/renderer/components/FakerSelect.vue | 9 ++-- src/renderer/components/ForeignKeySelect.vue | 11 ++-- src/renderer/components/KeyPressDetector.vue | 1 + .../components/ModalAllConnections.vue | 7 +-- .../components/ModalAskCredentials.vue | 3 +- .../components/ModalAskParameters.vue | 7 +-- .../components/ModalConnectionAppearance.vue | 5 +- .../components/ModalDiscardChanges.vue | 3 +- src/renderer/components/ModalEditSchema.vue | 11 ++-- src/renderer/components/ModalExportSchema.vue | 21 ++++---- src/renderer/components/ModalFakerRows.vue | 19 +++---- .../components/ModalFolderAppearance.vue | 5 +- src/renderer/components/ModalHistory.vue | 11 ++-- src/renderer/components/ModalImportSchema.vue | 9 ++-- src/renderer/components/ModalNewSchema.vue | 11 ++-- .../components/ModalProcessesList.vue | 18 ++++--- .../components/ModalProcessesListContext.vue | 3 +- .../components/ModalProcessesListRow.vue | 3 +- src/renderer/components/ModalSettings.vue | 21 ++++---- .../components/ModalSettingsChangelog.vue | 5 +- src/renderer/components/ModalSettingsData.vue | 5 +- .../components/ModalSettingsDataExport.vue | 19 +++---- .../components/ModalSettingsDataImport.vue | 9 ++-- .../components/ModalSettingsShortcuts.vue | 16 +++--- .../components/ModalSettingsUpdate.vue | 5 +- src/renderer/components/QueryEditor.vue | 12 +++-- .../components/SettingBarConnections.vue | 5 +- .../SettingBarConnectionsFolder.vue | 5 +- src/renderer/components/SettingBarContext.vue | 13 ++--- src/renderer/components/TheFooter.vue | 9 ++-- .../components/TheNotificationsBoard.vue | 5 +- src/renderer/components/TheScratchpad.vue | 9 ++-- src/renderer/components/TheSettingBar.vue | 17 +++--- src/renderer/components/TheTitleBar.vue | 9 ++-- src/renderer/components/Workspace.vue | 48 ++++++++--------- .../WorkspaceAddConnectionPanel.vue | 15 +++--- .../WorkspaceEditConnectionPanel.vue | 15 +++--- .../components/WorkspaceEmptyState.vue | 5 +- .../components/WorkspaceExploreBar.vue | 28 +++++----- .../WorkspaceExploreBarMiscContext.vue | 19 +++---- .../WorkspaceExploreBarMiscFolderContext.vue | 1 + .../components/WorkspaceExploreBarSchema.vue | 7 +-- .../WorkspaceExploreBarSchemaContext.vue | 15 +++--- .../WorkspaceExploreBarTableContext.vue | 15 +++--- .../components/WorkspaceQueryConsole.vue | 7 +-- .../components/WorkspaceTabNewFunction.vue | 19 +++---- .../components/WorkspaceTabNewRoutine.vue | 19 +++---- .../components/WorkspaceTabNewScheduler.vue | 15 +++--- .../components/WorkspaceTabNewTable.vue | 23 ++++---- .../components/WorkspaceTabNewTrigger.vue | 17 +++--- .../WorkspaceTabNewTriggerFunction.vue | 15 +++--- .../components/WorkspaceTabNewView.vue | 15 +++--- .../components/WorkspaceTabPropsFunction.vue | 23 ++++---- .../WorkspaceTabPropsFunctionParamsModal.vue | 3 +- .../components/WorkspaceTabPropsRoutine.vue | 23 ++++---- .../WorkspaceTabPropsRoutineParamsModal.vue | 3 +- .../components/WorkspaceTabPropsScheduler.vue | 19 +++---- .../WorkspaceTabPropsSchedulerTimingModal.vue | 5 +- .../components/WorkspaceTabPropsTable.vue | 21 ++++---- .../WorkspaceTabPropsTableContext.vue | 3 +- .../WorkspaceTabPropsTableDdlModal.vue | 5 +- .../WorkspaceTabPropsTableFields.vue | 17 +++--- .../WorkspaceTabPropsTableForeignModal.vue | 11 ++-- .../WorkspaceTabPropsTableIndexesModal.vue | 3 +- .../components/WorkspaceTabPropsTableRow.vue | 7 +-- .../components/WorkspaceTabPropsTrigger.vue | 15 +++--- .../WorkspaceTabPropsTriggerFunction.vue | 21 ++++---- .../components/WorkspaceTabPropsView.vue | 13 ++--- src/renderer/components/WorkspaceTabQuery.vue | 29 ++++++----- .../WorkspaceTabQueryEmptyState.vue | 9 ++-- .../components/WorkspaceTabQueryTable.vue | 38 +++++++------- .../WorkspaceTabQueryTableContext.vue | 5 +- .../components/WorkspaceTabQueryTableRow.vue | 52 +++++++++---------- src/renderer/components/WorkspaceTabTable.vue | 21 ++++---- .../components/WorkspaceTabTableFilters.vue | 9 ++-- .../components/WorkspaceTabsContext.vue | 3 +- src/renderer/composables/useResultTables.ts | 7 +-- src/renderer/i18n/cs-CZ.ts | 2 +- src/renderer/i18n/index.ts | 29 ++++++----- src/renderer/i18n/supported-locales.ts | 2 +- src/renderer/index.ts | 18 +++---- src/renderer/ipc-api/Application.ts | 1 + src/renderer/ipc-api/Connection.ts | 1 + src/renderer/ipc-api/Databases.ts | 5 +- src/renderer/ipc-api/Functions.ts | 1 + src/renderer/ipc-api/Routines.ts | 5 +- src/renderer/ipc-api/Schedulers.ts | 5 +- src/renderer/ipc-api/Schema.ts | 5 +- src/renderer/ipc-api/Tables.ts | 5 +- src/renderer/ipc-api/Triggers.ts | 5 +- src/renderer/ipc-api/Users.ts | 5 +- src/renderer/ipc-api/Views.ts | 5 +- src/renderer/stores/application.ts | 4 +- src/renderer/stores/connections.ts | 6 +-- src/renderer/stores/console.ts | 1 + src/renderer/stores/history.ts | 4 +- src/renderer/stores/notifications.ts | 2 +- src/renderer/stores/scratchpad.ts | 2 +- src/renderer/stores/settings.ts | 9 ++-- src/renderer/stores/workspaces.ts | 21 ++++---- tests/app.spec.ts | 4 +- 142 files changed, 723 insertions(+), 600 deletions(-) diff --git a/.eslintrc b/.eslintrc index 5e65d39e..6a3861e1 100644 --- a/.eslintrc +++ b/.eslintrc @@ -18,7 +18,8 @@ }, "plugins": [ "vue", - "@typescript-eslint" + "@typescript-eslint", + "simple-import-sort" ], "rules": { "space-infix-ops": "off", @@ -91,6 +92,8 @@ } } ], - "@typescript-eslint/no-var-requires": "off" + "@typescript-eslint/no-var-requires": "off", + "simple-import-sort/imports": "error", + "simple-import-sort/exports": "error" } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 99558853..d4e8e461 100644 --- a/package-lock.json +++ b/package-lock.json @@ -69,6 +69,7 @@ "eslint-plugin-import": "~2.24.2", "eslint-plugin-node": "~11.1.0", "eslint-plugin-promise": "~5.2.0", + "eslint-plugin-simple-import-sort": "~10.0.0", "eslint-plugin-vue": "~8.0.3", "file-loader": "~6.2.0", "html-webpack-plugin": "~5.5.0", @@ -6460,6 +6461,15 @@ "eslint": "^7.0.0" } }, + "node_modules/eslint-plugin-simple-import-sort": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", + "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, "node_modules/eslint-plugin-vue": { "version": "8.0.3", "dev": true, diff --git a/package.json b/package.json index a5bfc1c3..3513aa04 100644 --- a/package.json +++ b/package.json @@ -179,6 +179,7 @@ "eslint-plugin-import": "~2.24.2", "eslint-plugin-node": "~11.1.0", "eslint-plugin-promise": "~5.2.0", + "eslint-plugin-simple-import-sort": "~10.0.0", "eslint-plugin-vue": "~8.0.3", "file-loader": "~6.2.0", "html-webpack-plugin": "~5.5.0", diff --git a/scripts/translationCheck.ts b/scripts/translationCheck.ts index 09a74ed4..f58008ce 100644 --- a/scripts/translationCheck.ts +++ b/scripts/translationCheck.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ -import { localesNames } from '../src/renderer/i18n/supported-locales'; import { enUS } from '../src/renderer/i18n/en-US'; +import { localesNames } from '../src/renderer/i18n/supported-locales'; const locale = process.argv[2]; let fullCount = 0; let checkCount = 0; diff --git a/src/common/customizations/firebird.ts b/src/common/customizations/firebird.ts index 89bd6ba3..79312022 100644 --- a/src/common/customizations/firebird.ts +++ b/src/common/customizations/firebird.ts @@ -1,6 +1,6 @@ +import firebirdTypes from '../data-types/firebird'; import { Customizations } from '../interfaces/customizations'; import { defaults } from './defaults'; -import firebirdTypes from '../data-types/firebird'; export const customizations: Customizations = { ...defaults, diff --git a/src/common/customizations/index.ts b/src/common/customizations/index.ts index 6ccc8f1d..2dfa78de 100644 --- a/src/common/customizations/index.ts +++ b/src/common/customizations/index.ts @@ -1,7 +1,7 @@ +import * as firebird from 'common/customizations/firebird'; import * as mysql from 'common/customizations/mysql'; import * as postgresql from 'common/customizations/postgresql'; import * as sqlite from 'common/customizations/sqlite'; -import * as firebird from 'common/customizations/firebird'; import { Customizations } from 'common/interfaces/customizations'; export default { diff --git a/src/common/customizations/mysql.ts b/src/common/customizations/mysql.ts index e19fe352..7acca809 100644 --- a/src/common/customizations/mysql.ts +++ b/src/common/customizations/mysql.ts @@ -1,6 +1,6 @@ +import mysqlTypes from '../data-types/mysql'; import { Customizations } from '../interfaces/customizations'; import { defaults } from './defaults'; -import mysqlTypes from '../data-types/mysql'; export const customizations: Customizations = { ...defaults, diff --git a/src/common/customizations/postgresql.ts b/src/common/customizations/postgresql.ts index 2b7353de..61d040a6 100644 --- a/src/common/customizations/postgresql.ts +++ b/src/common/customizations/postgresql.ts @@ -1,6 +1,6 @@ +import postgresqlTypes from '../data-types/postgresql'; import { Customizations } from '../interfaces/customizations'; import { defaults } from './defaults'; -import postgresqlTypes from '../data-types/postgresql'; export const customizations: Customizations = { ...defaults, diff --git a/src/common/customizations/sqlite.ts b/src/common/customizations/sqlite.ts index 3bacd28f..d66a15ba 100644 --- a/src/common/customizations/sqlite.ts +++ b/src/common/customizations/sqlite.ts @@ -1,6 +1,6 @@ +import sqliteTypes from '../data-types/sqlite'; import { Customizations } from '../interfaces/customizations'; import { defaults } from './defaults'; -import sqliteTypes from '../data-types/sqlite'; export const customizations: Customizations = { ...defaults, diff --git a/src/common/interfaces/antares.ts b/src/common/interfaces/antares.ts index 9bb4ed8a..ba040b27 100644 --- a/src/common/interfaces/antares.ts +++ b/src/common/interfaces/antares.ts @@ -1,14 +1,15 @@ import * as mysql from 'mysql2/promise'; import * as pg from 'pg'; +import { FirebirdSQLClient } from 'src/main/libs/clients/FirebirdSQLClient'; import MysqlExporter from 'src/main/libs/exporters/sql/MysqlExporter'; import PostgreSQLExporter from 'src/main/libs/exporters/sql/PostgreSQLExporter'; import MySQLImporter from 'src/main/libs/importers/sql/MySQLlImporter'; import PostgreSQLImporter from 'src/main/libs/importers/sql/PostgreSQLImporter'; import SSHConfig from 'ssh2-promise/lib/sshConfig'; + import { MySQLClient } from '../../main/libs/clients/MySQLClient'; import { PostgreSQLClient } from '../../main/libs/clients/PostgreSQLClient'; import { SQLiteClient } from '../../main/libs/clients/SQLiteClient'; -import { FirebirdSQLClient } from 'src/main/libs/clients/FirebirdSQLClient'; export type Client = MySQLClient | PostgreSQLClient | SQLiteClient | FirebirdSQLClient export type ClientCode = 'mysql' | 'maria' | 'pg' | 'sqlite' | 'firebird' diff --git a/src/common/libs/encrypter.ts b/src/common/libs/encrypter.ts index 1d608d81..5ddafaa4 100644 --- a/src/common/libs/encrypter.ts +++ b/src/common/libs/encrypter.ts @@ -25,7 +25,4 @@ function decrypt (hash: { iv: string; content: string; authTag: string }, passwo return decrpyted; } -export { - encrypt, - decrypt -}; +export { decrypt, encrypt }; diff --git a/src/common/libs/sqlUtils.ts b/src/common/libs/sqlUtils.ts index a80a77ab..d1f764f0 100644 --- a/src/common/libs/sqlUtils.ts +++ b/src/common/libs/sqlUtils.ts @@ -1,12 +1,13 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable no-useless-escape */ -import * as moment from 'moment'; import { lineString, point, polygon } from '@turf/helpers'; +import { BIT, BLOB, DATE, DATETIME, FLOAT, IS_MULTI_SPATIAL, NUMBER, SPATIAL, TEXT_SEARCH } from 'common/fieldTypes'; +import * as moment from 'moment'; + import customizations from '../customizations'; import { ClientCode } from '../interfaces/antares'; -import { BLOB, BIT, DATE, DATETIME, FLOAT, SPATIAL, IS_MULTI_SPATIAL, NUMBER, TEXT_SEARCH } from 'common/fieldTypes'; -import hexToBinary, { HexChar } from './hexToBinary'; import { getArrayDepth } from './getArrayDepth'; +import hexToBinary, { HexChar } from './hexToBinary'; /** * Escapes a string fo SQL use diff --git a/src/common/shortcuts.ts b/src/common/shortcuts.ts index 0f63517c..b3436e62 100644 --- a/src/common/shortcuts.ts +++ b/src/common/shortcuts.ts @@ -135,4 +135,4 @@ for (let i = 1; i <= 9; i++) { }); } -export { shortcuts, ShortcutRecord }; +export { ShortcutRecord, shortcuts }; diff --git a/src/main/ipc-handlers/application.ts b/src/main/ipc-handlers/application.ts index 88d54d59..21b4facb 100644 --- a/src/main/ipc-handlers/application.ts +++ b/src/main/ipc-handlers/application.ts @@ -1,4 +1,5 @@ -import { app, ipcMain, dialog } from 'electron'; +import { app, dialog, ipcMain } from 'electron'; + import { ShortcutRegister } from '../libs/ShortcutRegister'; export default () => { diff --git a/src/main/ipc-handlers/connection.ts b/src/main/ipc-handlers/connection.ts index 318a0e6d..ccef6362 100644 --- a/src/main/ipc-handlers/connection.ts +++ b/src/main/ipc-handlers/connection.ts @@ -1,9 +1,10 @@ import * as antares from 'common/interfaces/antares'; -import * as fs from 'fs'; import { ipcMain } from 'electron'; -import { ClientsFactory } from '../libs/ClientsFactory'; +import * as fs from 'fs'; import { SslOptions } from 'mysql2'; +import { ClientsFactory } from '../libs/ClientsFactory'; + export default (connections: {[key: string]: antares.Client}) => { ipcMain.handle('test-connection', async (event, conn: antares.ConnectionParams) => { const params = { diff --git a/src/main/ipc-handlers/index.ts b/src/main/ipc-handlers/index.ts index b1130c00..36bb0bd1 100644 --- a/src/main/ipc-handlers/index.ts +++ b/src/main/ipc-handlers/index.ts @@ -1,17 +1,17 @@ import * as antares from 'common/interfaces/antares'; -import connection from './connection'; -import tables from './tables'; -import views from './views'; -import triggers from './triggers'; -import routines from './routines'; -import functions from './functions'; -import schedulers from './schedulers'; -import updates from './updates'; import application from './application'; +import connection from './connection'; import database from './database'; +import functions from './functions'; +import routines from './routines'; +import schedulers from './schedulers'; import schema from './schema'; +import tables from './tables'; +import triggers from './triggers'; +import updates from './updates'; import users from './users'; +import views from './views'; const connections: {[key: string]: antares.Client} = {}; diff --git a/src/main/ipc-handlers/schema.ts b/src/main/ipc-handlers/schema.ts index 9dc7cd8a..f3594357 100644 --- a/src/main/ipc-handlers/schema.ts +++ b/src/main/ipc-handlers/schema.ts @@ -1,9 +1,9 @@ +import { ChildProcess, fork } from 'child_process'; import * as antares from 'common/interfaces/antares'; import * as workers from 'common/interfaces/workers'; +import { dialog, ipcMain } from 'electron'; import * as fs from 'fs'; import * as path from 'path'; -import { ChildProcess, fork } from 'child_process'; -import { ipcMain, dialog } from 'electron'; const isDevelopment = process.env.NODE_ENV !== 'production'; diff --git a/src/main/ipc-handlers/tables.ts b/src/main/ipc-handlers/tables.ts index 5c55a68c..710ccc25 100644 --- a/src/main/ipc-handlers/tables.ts +++ b/src/main/ipc-handlers/tables.ts @@ -1,12 +1,12 @@ -import * as fs from 'fs'; +import { faker } from '@faker-js/faker'; +import customizations from 'common/customizations'; +import { ARRAY, BIT, BLOB, BOOLEAN, DATE, DATETIME, FLOAT, LONG_TEXT, NUMBER, TEXT, TEXT_SEARCH } from 'common/fieldTypes'; import * as antares from 'common/interfaces/antares'; import { InsertRowsParams } from 'common/interfaces/tableApis'; -import { ipcMain } from 'electron'; -import { faker } from '@faker-js/faker'; -import * as moment from 'moment'; import { sqlEscaper } from 'common/libs/sqlUtils'; -import { TEXT, LONG_TEXT, ARRAY, TEXT_SEARCH, NUMBER, FLOAT, BLOB, BIT, DATE, DATETIME, BOOLEAN } from 'common/fieldTypes'; -import customizations from 'common/customizations'; +import { ipcMain } from 'electron'; +import * as fs from 'fs'; +import * as moment from 'moment'; export default (connections: {[key: string]: antares.Client}) => { ipcMain.handle('get-table-columns', async (event, params) => { diff --git a/src/main/ipc-handlers/updates.ts b/src/main/ipc-handlers/updates.ts index 0d453ba0..c5ef0d5c 100644 --- a/src/main/ipc-handlers/updates.ts +++ b/src/main/ipc-handlers/updates.ts @@ -1,6 +1,6 @@ import { ipcMain } from 'electron'; -import { autoUpdater } from 'electron-updater'; import * as Store from 'electron-store'; +import { autoUpdater } from 'electron-updater'; const persistentStore = new Store({ name: 'settings', diff --git a/src/main/libs/ClientsFactory.ts b/src/main/libs/ClientsFactory.ts index b421640b..b6fc9c8d 100644 --- a/src/main/libs/ClientsFactory.ts +++ b/src/main/libs/ClientsFactory.ts @@ -1,8 +1,9 @@ import * as antares from 'common/interfaces/antares'; + +import { FirebirdSQLClient } from './clients/FirebirdSQLClient'; import { MySQLClient } from './clients/MySQLClient'; import { PostgreSQLClient } from './clients/PostgreSQLClient'; import { SQLiteClient } from './clients/SQLiteClient'; -import { FirebirdSQLClient } from './clients/FirebirdSQLClient'; export class ClientsFactory { static getClient (args: antares.ClientParams) { diff --git a/src/main/libs/ShortcutRegister.ts b/src/main/libs/ShortcutRegister.ts index f0a2238e..ee758bae 100644 --- a/src/main/libs/ShortcutRegister.ts +++ b/src/main/libs/ShortcutRegister.ts @@ -1,6 +1,6 @@ +import { ShortcutRecord, shortcuts } from 'common/shortcuts'; import { BrowserWindow, globalShortcut, Menu, MenuItem, MenuItemConstructorOptions } from 'electron'; import * as Store from 'electron-store'; -import { ShortcutRecord, shortcuts } from 'common/shortcuts'; const shortcutsStore = new Store({ name: 'shortcuts' }); const isDevelopment = process.env.NODE_ENV !== 'production'; diff --git a/src/main/libs/clients/FirebirdSQLClient.ts b/src/main/libs/clients/FirebirdSQLClient.ts index 5c07d0b2..7a98dc5a 100644 --- a/src/main/libs/clients/FirebirdSQLClient.ts +++ b/src/main/libs/clients/FirebirdSQLClient.ts @@ -1,9 +1,10 @@ -import * as path from 'path'; -import * as antares from 'common/interfaces/antares'; -import * as firebird from 'node-firebird'; -import { AntaresCore } from '../AntaresCore'; import dataTypes from 'common/data-types/firebird'; import { FLOAT, NUMBER } from 'common/fieldTypes'; +import * as antares from 'common/interfaces/antares'; +import * as firebird from 'node-firebird'; +import * as path from 'path'; + +import { AntaresCore } from '../AntaresCore'; export class FirebirdSQLClient extends AntaresCore { private _schema?: string; diff --git a/src/main/libs/clients/MySQLClient.ts b/src/main/libs/clients/MySQLClient.ts index 403505e7..98c3f207 100644 --- a/src/main/libs/clients/MySQLClient.ts +++ b/src/main/libs/clients/MySQLClient.ts @@ -1,7 +1,8 @@ +import dataTypes from 'common/data-types/mysql'; import * as antares from 'common/interfaces/antares'; import * as mysql from 'mysql2/promise'; + import { AntaresCore } from '../AntaresCore'; -import dataTypes from 'common/data-types/mysql'; import SSH2Promise = require('ssh2-promise'); import SSHConfig from 'ssh2-promise/lib/sshConfig'; diff --git a/src/main/libs/clients/PostgreSQLClient.ts b/src/main/libs/clients/PostgreSQLClient.ts index f679055b..3f375329 100644 --- a/src/main/libs/clients/PostgreSQLClient.ts +++ b/src/main/libs/clients/PostgreSQLClient.ts @@ -1,8 +1,9 @@ +import dataTypes from 'common/data-types/postgresql'; import * as antares from 'common/interfaces/antares'; import * as pg from 'pg'; import * as pgAst from 'pgsql-ast-parser'; + import { AntaresCore } from '../AntaresCore'; -import dataTypes from 'common/data-types/postgresql'; import SSH2Promise = require('ssh2-promise'); import SSHConfig from 'ssh2-promise/lib/sshConfig'; import { ConnectionOptions } from 'tls'; diff --git a/src/main/libs/clients/SQLiteClient.ts b/src/main/libs/clients/SQLiteClient.ts index 1e8554ab..7226891a 100644 --- a/src/main/libs/clients/SQLiteClient.ts +++ b/src/main/libs/clients/SQLiteClient.ts @@ -1,8 +1,9 @@ -import * as antares from 'common/interfaces/antares'; import * as sqlite from 'better-sqlite3'; -import { AntaresCore } from '../AntaresCore'; import dataTypes from 'common/data-types/sqlite'; -import { NUMBER, FLOAT, TIME, DATETIME } from 'common/fieldTypes'; +import { DATETIME, FLOAT, NUMBER, TIME } from 'common/fieldTypes'; +import * as antares from 'common/interfaces/antares'; + +import { AntaresCore } from '../AntaresCore'; export class SQLiteClient extends AntaresCore { private _schema?: string; diff --git a/src/main/libs/exporters/BaseExporter.ts b/src/main/libs/exporters/BaseExporter.ts index 98b19157..9d621ae2 100644 --- a/src/main/libs/exporters/BaseExporter.ts +++ b/src/main/libs/exporters/BaseExporter.ts @@ -1,8 +1,8 @@ import * as exporter from 'common/interfaces/exporter'; -import * as fs from 'fs'; -import { createGzip, Gzip } from 'zlib'; -import * as path from 'path'; import * as EventEmitter from 'events'; +import * as fs from 'fs'; +import * as path from 'path'; +import { createGzip, Gzip } from 'zlib'; export class BaseExporter extends EventEmitter { protected _tables; diff --git a/src/main/libs/exporters/sql/MysqlExporter.ts b/src/main/libs/exporters/sql/MysqlExporter.ts index 8c37c4b8..49c91a34 100644 --- a/src/main/libs/exporters/sql/MysqlExporter.ts +++ b/src/main/libs/exporters/sql/MysqlExporter.ts @@ -1,8 +1,9 @@ import * as exporter from 'common/interfaces/exporter'; -import * as mysql from 'mysql2/promise'; -import { SqlExporter } from './SqlExporter'; -import { MySQLClient } from '../../clients/MySQLClient'; import { valueToSqlString } from 'common/libs/sqlUtils'; +import * as mysql from 'mysql2/promise'; + +import { MySQLClient } from '../../clients/MySQLClient'; +import { SqlExporter } from './SqlExporter'; export default class MysqlExporter extends SqlExporter { protected _client: MySQLClient; diff --git a/src/main/libs/exporters/sql/PostgreSQLExporter.ts b/src/main/libs/exporters/sql/PostgreSQLExporter.ts index cabf90f9..82fed408 100644 --- a/src/main/libs/exporters/sql/PostgreSQLExporter.ts +++ b/src/main/libs/exporters/sql/PostgreSQLExporter.ts @@ -1,11 +1,12 @@ import * as antares from 'common/interfaces/antares'; import * as exporter from 'common/interfaces/exporter'; -import { SqlExporter } from './SqlExporter'; +import { valueToSqlString } from 'common/libs/sqlUtils'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore import * as QueryStream from 'pg-query-stream'; + import { PostgreSQLClient } from '../../clients/PostgreSQLClient'; -import { valueToSqlString } from 'common/libs/sqlUtils'; +import { SqlExporter } from './SqlExporter'; export default class PostgreSQLExporter extends SqlExporter { constructor (client: PostgreSQLClient, tables: exporter.TableParams[], options: exporter.ExportOptions) { diff --git a/src/main/libs/exporters/sql/SqlExporter.ts b/src/main/libs/exporters/sql/SqlExporter.ts index cd42f501..37b42415 100644 --- a/src/main/libs/exporters/sql/SqlExporter.ts +++ b/src/main/libs/exporters/sql/SqlExporter.ts @@ -1,4 +1,5 @@ import * as moment from 'moment'; + import { MySQLClient } from '../../clients/MySQLClient'; import { PostgreSQLClient } from '../../clients/PostgreSQLClient'; import { BaseExporter } from '../BaseExporter'; diff --git a/src/main/libs/importers/BaseImporter.ts b/src/main/libs/importers/BaseImporter.ts index 807aedea..effd1231 100644 --- a/src/main/libs/importers/BaseImporter.ts +++ b/src/main/libs/importers/BaseImporter.ts @@ -1,6 +1,6 @@ import * as importer from 'common/interfaces/importer'; -import * as fs from 'fs'; import * as EventEmitter from 'events'; +import * as fs from 'fs'; export class BaseImporter extends EventEmitter { protected _options; diff --git a/src/main/libs/importers/sql/MySQLlImporter.ts b/src/main/libs/importers/sql/MySQLlImporter.ts index 9888e0d0..58233672 100644 --- a/src/main/libs/importers/sql/MySQLlImporter.ts +++ b/src/main/libs/importers/sql/MySQLlImporter.ts @@ -1,6 +1,7 @@ -import * as mysql from 'mysql2'; import * as importer from 'common/interfaces/importer'; import * as fs from 'fs/promises'; +import * as mysql from 'mysql2'; + import MySQLParser from '../../parsers/MySQLParser'; import { BaseImporter } from '../BaseImporter'; diff --git a/src/main/libs/importers/sql/PostgreSQLImporter.ts b/src/main/libs/importers/sql/PostgreSQLImporter.ts index e7d3168c..463c149d 100644 --- a/src/main/libs/importers/sql/PostgreSQLImporter.ts +++ b/src/main/libs/importers/sql/PostgreSQLImporter.ts @@ -1,6 +1,7 @@ -import * as pg from 'pg'; import * as importer from 'common/interfaces/importer'; import * as fs from 'fs/promises'; +import * as pg from 'pg'; + import PostgreSQLParser from '../../parsers/PostgreSQLParser'; import { BaseImporter } from '../BaseImporter'; diff --git a/src/main/main.ts b/src/main/main.ts index a23ce9aa..2bf1458e 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -1,8 +1,8 @@ -import { app, BrowserWindow, nativeImage, ipcMain } from 'electron'; -import * as path from 'path'; +import * as remoteMain from '@electron/remote/main'; +import { app, BrowserWindow, ipcMain, nativeImage } from 'electron'; import * as Store from 'electron-store'; import * as windowStateKeeper from 'electron-window-state'; -import * as remoteMain from '@electron/remote/main'; +import * as path from 'path'; import ipcHandlers from './ipc-handlers'; import { OsMenu, ShortcutRegister } from './libs/ShortcutRegister'; diff --git a/src/main/workers/exporter.ts b/src/main/workers/exporter.ts index 7bb65220..93de4c92 100644 --- a/src/main/workers/exporter.ts +++ b/src/main/workers/exporter.ts @@ -1,5 +1,6 @@ import * as antares from 'common/interfaces/antares'; import * as fs from 'fs'; + import { MySQLClient } from '../libs/clients/MySQLClient'; import { PostgreSQLClient } from '../libs/clients/PostgreSQLClient'; import { ClientsFactory } from '../libs/ClientsFactory'; diff --git a/src/main/workers/importer.ts b/src/main/workers/importer.ts index 47500afe..84abed83 100644 --- a/src/main/workers/importer.ts +++ b/src/main/workers/importer.ts @@ -1,13 +1,14 @@ import * as antares from 'common/interfaces/antares'; -import * as pg from 'pg'; +import { ImportOptions } from 'common/interfaces/importer'; import * as mysql from 'mysql2'; +import * as pg from 'pg'; +import SSHConfig from 'ssh2-promise/lib/sshConfig'; + import { MySQLClient } from '../libs/clients/MySQLClient'; import { PostgreSQLClient } from '../libs/clients/PostgreSQLClient'; import { ClientsFactory } from '../libs/ClientsFactory'; import MySQLImporter from '../libs/importers/sql/MySQLlImporter'; import PostgreSQLImporter from '../libs/importers/sql/PostgreSQLImporter'; -import SSHConfig from 'ssh2-promise/lib/sshConfig'; -import { ImportOptions } from 'common/interfaces/importer'; let importer: antares.Importer; // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/src/renderer/App.vue b/src/renderer/App.vue index 5686c4dd..be23a9bd 100644 --- a/src/renderer/App.vue +++ b/src/renderer/App.vue @@ -34,18 +34,19 @@