diff --git a/.github/workflows/test_backend.yml b/.github/workflows/test_backend.yml index b517c5186..ed20f91bb 100644 --- a/.github/workflows/test_backend.yml +++ b/.github/workflows/test_backend.yml @@ -44,14 +44,14 @@ jobs: uses: actions/checkout@v3 - name: Backend | docker-compose mariadb - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb - name: Sleep for 30 seconds run: sleep 30s shell: bash - name: Backend | docker-compose database - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database - name: Backend | Unit tests run: cd database && yarn && yarn build && cd ../backend && yarn && yarn test diff --git a/.github/workflows/test_database.yml b/.github/workflows/test_database.yml index 0444a0538..1dba8999e 100644 --- a/.github/workflows/test_database.yml +++ b/.github/workflows/test_database.yml @@ -43,13 +43,13 @@ jobs: uses: actions/checkout@v3 - name: Database | docker-compose - run: docker-compose -f docker-compose.yml up --detach mariadb + run: docker compose -f docker-compose.yml up --detach mariadb - name: Database | up - run: docker-compose -f docker-compose.yml run -T database yarn up + run: docker compose -f docker-compose.yml run -T database yarn up - name: Database | reset - run: docker-compose -f docker-compose.yml run -T database yarn reset + run: docker compose -f docker-compose.yml run -T database yarn reset lint: if: needs.files-changed.outputs.database == 'true' diff --git a/.github/workflows/test_dht_node.yml b/.github/workflows/test_dht_node.yml index e81ed33af..6fd24784b 100644 --- a/.github/workflows/test_dht_node.yml +++ b/.github/workflows/test_dht_node.yml @@ -71,15 +71,15 @@ jobs: - name: Load Docker Image run: docker load < /tmp/dht-node.tar - - name: docker-compose mariadb - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb + - name: docker compose mariadb + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb - name: Sleep for 30 seconds run: sleep 30s shell: bash - - name: docker-compose database - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database + - name: docker compose database + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database - name: Sleep for 30 seconds run: sleep 30s diff --git a/.github/workflows/test_dlt_connector.yml b/.github/workflows/test_dlt_connector.yml index 1096f415d..d831913fc 100644 --- a/.github/workflows/test_dlt_connector.yml +++ b/.github/workflows/test_dlt_connector.yml @@ -61,8 +61,8 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - - name: DLT-Connector | docker-compose mariadb - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb + - name: DLT-Connector | docker compose mariadb + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb - name: Sleep for 30 seconds run: sleep 30s diff --git a/.github/workflows/test_e2e.yml b/.github/workflows/test_e2e.yml index 617097a53..590758248 100644 --- a/.github/workflows/test_e2e.yml +++ b/.github/workflows/test_e2e.yml @@ -11,17 +11,17 @@ jobs: uses: actions/checkout@v3 - name: Boot up test system | docker-compose mariadb - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach mariadb + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach mariadb - name: Boot up test system | docker-compose database - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database - name: Boot up test system | docker-compose backend run: | cd backend cp .env.test_e2e .env cd .. - docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps backend + docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps backend - name: Sleep for 10 seconds run: sleep 10s @@ -35,10 +35,10 @@ jobs: yarn && yarn seed - name: Boot up test system | docker-compose frontends - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps frontend admin nginx + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps frontend admin nginx - name: Boot up test system | docker-compose mailserver - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mailserver + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mailserver - name: End-to-end tests | prepare run: | diff --git a/.github/workflows/test_federation.yml b/.github/workflows/test_federation.yml index 92ccd95d2..66ea5736e 100644 --- a/.github/workflows/test_federation.yml +++ b/.github/workflows/test_federation.yml @@ -70,15 +70,15 @@ jobs: - name: Load Docker Image run: docker load < /tmp/federation.tar - - name: docker-compose mariadb - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb + - name: docker compose mariadb + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps mariadb - name: Sleep for 30 seconds run: sleep 30s shell: bash - - name: docker-compose database - run: docker-compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database + - name: docker compose database + run: docker compose -f docker-compose.yml -f docker-compose.test.yml up --detach --no-deps database - name: Sleep for 30 seconds run: sleep 30s diff --git a/docker-compose.test.yml b/docker-compose.test.yml index ff6ed61b8..a0562adf8 100644 --- a/docker-compose.test.yml +++ b/docker-compose.test.yml @@ -95,6 +95,9 @@ services: ######################################################### mariadb: image: gradido/mariadb:test + environment: + - MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 + - MARIADB_USER=root networks: - internal-net - external-net diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js index 80a0d2d22..8dc94b470 100644 --- a/frontend/.eslintrc.js +++ b/frontend/.eslintrc.js @@ -4,15 +4,17 @@ module.exports = { browser: true, node: true, jest: true, + 'vue/setup-compiler-macros': true, }, parserOptions: { - parser: 'babel-eslint', + ecmaVersion: 2020, }, extends: [ 'standard', - 'plugin:vue/essential', + 'plugin:vue/vue3-recommended', 'plugin:prettier/recommended', 'plugin:@intlify/vue-i18n/recommended', + 'prettier', ], // required to lint *.vue files plugins: ['vue', 'prettier', 'jest'], @@ -30,14 +32,26 @@ module.exports = { rules: { 'no-console': ['error'], 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-useless-escape': 0, + 'no-unused-vars': 0, // TODO remove at the end of migration and fix 'vue/component-name-in-template-casing': ['error', 'kebab-case'], - 'vue/no-static-inline-styles': [ - 'error', - { - allowBinding: false, - }, - ], + // 'vue/no-static-inline-styles': [ + // 'error', + // { + // allowBinding: false, + // }, + // ], + 'vue/multi-word-component-names': 0, + 'vue/no-v-html': 0, + 'vue/no-export-in-script-setup': 0, // TODO remove at the end of migration and fix + 'vue/prop-name-casing': 0, // TODO remove at the end of migration and fix + 'vue/require-explicit-emits': 0, // TODO remove at the end of migration and fix + 'vue/no-static-inline-styles': 0, // TODO remove at the end of migration and fix + 'vue/v-on-event-hyphenation': 0, // TODO remove at the end of migration and fix + 'vue/require-default-prop': 0, // TODO remove at the end of migration and fix + 'vue/no-computed-properties-in-data': 0, // TODO remove at the end of migration and fix '@intlify/vue-i18n/no-dynamic-keys': 'error', + '@intlify/vue-i18n/no-missing-keys': 0, // TODO remove at the end of migration and fix '@intlify/vue-i18n/no-unused-keys': [ 'error', { @@ -75,7 +89,7 @@ module.exports = { localeDir: './src/locales/{en,de}.json', // Specify the version of `vue-i18n` you are using. // If not specified, the message will be parsed twice. - messageSyntaxVersion: '^8.22.4', + messageSyntaxVersion: '^9.13.1', }, }, } diff --git a/frontend/.gitignore b/frontend/.gitignore index 843f840a1..2005f4172 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -24,3 +24,5 @@ package-lock.json coverage/ *~ + +components.d.ts diff --git a/frontend/.postcssrc.js b/frontend/.postcssrc.js deleted file mode 100644 index 373f665cb..000000000 --- a/frontend/.postcssrc.js +++ /dev/null @@ -1,8 +0,0 @@ -// https://github.com/michael-ciniawsky/postcss-load-config - -module.exports = { - plugins: { - // to edit target browsers: use "browserslist" field in package.json - autoprefixer: {} - } -}; diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 4b21fd2ea..6f6cc0e9e 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,7 +1,7 @@ ################################################################################## # BASE ########################################################################### ################################################################################## -FROM node:16-alpine3.14 as base +FROM node:18.20-alpine3.20 as base # ENVs (available in production aswell, can be overwritten by commandline or env file) ## DOCKER_WORKDIR would be a classical ARG, but that is not multi layer persistent - shame @@ -98,13 +98,13 @@ COPY --from=build ${DOCKER_WORKDIR}/run ./run CMD /bin/sh -c "yarn run start" - + ## add `/usr/src/app/node_modules/.bin` to $PATH #ENV PATH /usr/src/app/node_modules/.bin:$PATH -# +# ## install and cache app dependencies #COPY package.json /usr/src/app/package.json #RUN npm install #RUN npm install -g @vue/cli ## start app -#CMD ["npm", "run", "serve"] \ No newline at end of file +#CMD ["npm", "run", "serve"] diff --git a/frontend/babel.config.js b/frontend/babel.config.js index fab7b82b8..28cb0d959 100644 --- a/frontend/babel.config.js +++ b/frontend/babel.config.js @@ -11,7 +11,7 @@ module.exports = function (api) { ], ] - if (process.env.NODE_ENV === 'test') { + if (import.meta.env.NODE_ENV === 'test') { plugins.push('transform-require-context') } diff --git a/frontend/components.d.ts b/frontend/components.d.ts new file mode 100644 index 000000000..366842044 --- /dev/null +++ b/frontend/components.d.ts @@ -0,0 +1,164 @@ +/* eslint-disable */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + AmountAndNameRow: typeof import('./src/components/TransactionRows/AmountAndNameRow.vue')['default'] + AuthCarousel: typeof import('./src/components/Auth/AuthCarousel.vue')['default'] + AuthFooter: typeof import('./src/components/Auth/AuthFooter.vue')['default'] + AuthNavbar: typeof import('./src/components/Auth/AuthNavbar.vue')['default'] + AuthNavbarSmall: typeof import('./src/components/Auth/AuthNavbarSmall.vue')['default'] + BAvatar: typeof import('bootstrap-vue-next')['BAvatar'] + BBadge: typeof import('bootstrap-vue-next')['BBadge'] + BButton: typeof import('bootstrap-vue-next')['BButton'] + BCard: typeof import('bootstrap-vue-next')['BCard'] + BCardBody: typeof import('bootstrap-vue-next')['BCardBody'] + BCardText: typeof import('bootstrap-vue-next')['BCardText'] + BCardTitle: typeof import('bootstrap-vue-next')['BCardTitle'] + BCarousel: typeof import('bootstrap-vue-next')['BCarousel'] + BCarouselSlide: typeof import('bootstrap-vue-next')['BCarouselSlide'] + BCol: typeof import('bootstrap-vue-next')['BCol'] + BCollapse: typeof import('bootstrap-vue-next')['BCollapse'] + BContainer: typeof import('bootstrap-vue-next')['BContainer'] + BDropdown: typeof import('bootstrap-vue-next')['BDropdown'] + BDropdownItem: typeof import('bootstrap-vue-next')['BDropdownItem'] + BForm: typeof import('bootstrap-vue-next')['BForm'] + BFormCheckbox: typeof import('bootstrap-vue-next')['BFormCheckbox'] + BFormGroup: typeof import('bootstrap-vue-next')['BFormGroup'] + BFormInput: typeof import('bootstrap-vue-next')['BFormInput'] + BFormInvalidFeedback: typeof import('bootstrap-vue-next')['BFormInvalidFeedback'] + BFormSelect: typeof import('bootstrap-vue-next')['BFormSelect'] + BFormTextarea: typeof import('bootstrap-vue-next')['BFormTextarea'] + BImg: typeof import('bootstrap-vue-next')['BImg'] + BInputGroup: typeof import('bootstrap-vue-next')['BInputGroup'] + BLink: typeof import('bootstrap-vue-next')['BLink'] + BModal: typeof import('bootstrap-vue-next')['BModal'] + BNav: typeof import('bootstrap-vue-next')['BNav'] + BNavbar: typeof import('bootstrap-vue-next')['BNavbar'] + BNavbarBrand: typeof import('bootstrap-vue-next')['BNavbarBrand'] + BNavbarNav: typeof import('bootstrap-vue-next')['BNavbarNav'] + BNavItem: typeof import('bootstrap-vue-next')['BNavItem'] + BPagination: typeof import('bootstrap-vue-next')['BPagination'] + BPopover: typeof import('bootstrap-vue-next')['BPopover'] + Breadcrumb: typeof import('./src/components/Breadcrumb/breadcrumb.vue')['default'] + BRow: typeof import('bootstrap-vue-next')['BRow'] + BTab: typeof import('bootstrap-vue-next')['BTab'] + BTabs: typeof import('bootstrap-vue-next')['BTabs'] + BToastOrchestrator: typeof import('bootstrap-vue-next')['BToastOrchestrator'] + ClipboardCopy: typeof import('./src/components/ClipboardCopy.vue')['default'] + CollapseIcon: typeof import('./src/components/TransactionRows/CollapseIcon.vue')['default'] + CollapseLinksList: typeof import('./src/components/DecayInformations/CollapseLinksList.vue')['default'] + CommunityMember: typeof import('./src/components/Template/ContentHeader/CommunityMember.vue')['default'] + CommunityNews: typeof import('./src/components/Overview/CommunityNews.vue')['default'] + CommunitySwitch: typeof import('./src/components/CommunitySwitch.vue')['default'] + ContentFooter: typeof import('./src/components/ContentFooter.vue')['default'] + ContributionForm: typeof import('./src/components/Contributions/ContributionForm.vue')['default'] + ContributionInfo: typeof import('./src/components/Template/RightSide/ContributionInfo.vue')['default'] + ContributionList: typeof import('./src/components/Contributions/ContributionList.vue')['default'] + ContributionListItem: typeof import('./src/components/Contributions/ContributionListItem.vue')['default'] + ContributionMessagesFormular: typeof import('./src/components/ContributionMessages/ContributionMessagesFormular.vue')['default'] + ContributionMessagesList: typeof import('./src/components/ContributionMessages/ContributionMessagesList.vue')['default'] + ContributionMessagesListItem: typeof import('./src/components/ContributionMessages/ContributionMessagesListItem.vue')['default'] + DateRow: typeof import('./src/components/TransactionRows/DateRow.vue')['default'] + DecayInformation: typeof import('./src/components/DecayInformations/DecayInformation.vue')['default'] + DecayInformationBeforeStartblock: typeof import('./src/components/DecayInformations/DecayInformation-BeforeStartblock.vue')['default'] + DecayInformationDecay: typeof import('./src/components/DecayInformations/DecayInformation-Decay.vue')['default'] + DecayInformationDecayStartblock: typeof import('./src/components/DecayInformations/DecayInformation-DecayStartblock.vue')['default'] + DecayInformationLong: typeof import('./src/components/DecayInformations/DecayInformation-Long.vue')['default'] + DecayInformationShort: typeof import('./src/components/DecayInformations/DecayInformation-Short.vue')['default'] + DecayRow: typeof import('./src/components/TransactionRows/DecayRow.vue')['default'] + DurationRow: typeof import('./src/components/TransactionRows/DurationRow.vue')['default'] + FigureQrCode: typeof import('./src/components/QrCode/FigureQrCode.vue')['default'] + FirstName: typeof import('./src/components/Inputs/FirstName.vue')['default'] + GddAmount: typeof import('./src/components/Template/ContentHeader/GddAmount.vue')['default'] + GddSend: typeof import('./src/components/GddSend.vue')['default'] + GddTransactionList: typeof import('./src/components/GddTransactionList.vue')['default'] + GddTransactionListFooter: typeof import('./src/components/GddTransactionListFooter.vue')['default'] + GdtAmount: typeof import('./src/components/Template/ContentHeader/GdtAmount.vue')['default'] + GdtTransactionList: typeof import('./src/components/GdtTransactionList.vue')['default'] + IBiArrowDownCircle: typeof import('~icons/bi/arrow-down-circle')['default'] + IBiArrowUpCircle: typeof import('~icons/bi/arrow-up-circle')['default'] + IBiBellFill: typeof import('~icons/bi/bell-fill')['default'] + IBiCaretDownFill: typeof import('~icons/bi/caret-down-fill')['default'] + IBiCash: typeof import('~icons/bi/cash')['default'] + IBiChatDots: typeof import('~icons/bi/chat-dots')['default'] + IBiCheck: typeof import('~icons/bi/check')['default'] + IBiEye: typeof import('~icons/bi/eye')['default'] + IBiEyeSlash: typeof import('~icons/bi/eye-slash')['default'] + IBiLayers: typeof import('~icons/bi/layers')['default'] + IBiPencil: typeof import('~icons/bi/pencil')['default'] + IBiPeople: typeof import('~icons/bi/people')['default'] + IBiQuestion: typeof import('~icons/bi/question')['default'] + IBiShieldCheck: typeof import('~icons/bi/shield-check')['default'] + IBiTrash: typeof import('~icons/bi/trash')['default'] + IBiXCircle: typeof import('~icons/bi/x-circle')['default'] + InputAmount: typeof import('./src/components/Inputs/InputAmount.vue')['default'] + InputEmail: typeof import('./src/components/Inputs/InputEmail.vue')['default'] + InputHour: typeof import('./src/components/Inputs/InputHour.vue')['default'] + InputIdentifier: typeof import('./src/components/Inputs/InputIdentifier.vue')['default'] + InputPassword: typeof import('./src/components/Inputs/InputPassword.vue')['default'] + InputPasswordConfirmation: typeof import('./src/components/Inputs/InputPasswordConfirmation.vue')['default'] + InputTextarea: typeof import('./src/components/Inputs/InputTextarea.vue')['default'] + InputUsername: typeof import('./src/components/Inputs/InputUsername.vue')['default'] + LanguageSwitch: typeof import('./src/components/LanguageSwitch.vue')['default'] + LanguageSwitch2: typeof import('./src/components/LanguageSwitch2.vue')['default'] + LanguageSwitchSelect: typeof import('./src/components/LanguageSwitchSelect.vue')['default'] + LastContributions: typeof import('./src/components/Template/RightSide/LastContributions.vue')['default'] + LastName: typeof import('./src/components/Inputs/LastName.vue')['default'] + LastTransactions: typeof import('./src/components/Template/RightSide/LastTransactions.vue')['default'] + LinkCountRow: typeof import('./src/components/TransactionRows/LinkCountRow.vue')['default'] + MemoRow: typeof import('./src/components/TransactionRows/MemoRow.vue')['default'] + Message: typeof import('./src/components/Message/Message.vue')['default'] + MobileSidebar: typeof import('./src/components/MobileSidebar/MobileSidebar.vue')['default'] + Name: typeof import('./src/components/TransactionRows/Name.vue')['default'] + Navbar: typeof import('./src/components/Menu/Navbar.vue')['default'] + NavCommunity: typeof import('./src/components/Template/ContentHeader/NavCommunity.vue')['default'] + OpenCreationsAmount: typeof import('./src/components/Contributions/OpenCreationsAmount.vue')['default'] + Overview: typeof import('./src/components/skeleton/Overview.vue')['default'] + ParseMessage: typeof import('./src/components/ContributionMessages/ParseMessage.vue')['default'] + RedeemedTextBox: typeof import('./src/components/LinkInformations/RedeemedTextBox.vue')['default'] + RedeemInformation: typeof import('./src/components/LinkInformations/RedeemInformation.vue')['default'] + RedeemLoggedOut: typeof import('./src/components/LinkInformations/RedeemLoggedOut.vue')['default'] + RedeemSelfCreator: typeof import('./src/components/LinkInformations/RedeemSelfCreator.vue')['default'] + RedeemValid: typeof import('./src/components/LinkInformations/RedeemValid.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + SessionLogoutTimeout: typeof import('./src/components/SessionLogoutTimeout.vue')['default'] + Sidebar: typeof import('./src/components/Menu/Sidebar.vue')['default'] + Status: typeof import('./src/components/Status.vue')['default'] + Transaction: typeof import('./src/components/Transaction.vue')['default'] + TransactionCollapse: typeof import('./src/components/TransactionCollapse.vue')['default'] + TransactionConfirmationLink: typeof import('./src/components/GddSend/TransactionConfirmationLink.vue')['default'] + TransactionConfirmationSend: typeof import('./src/components/GddSend/TransactionConfirmationSend.vue')['default'] + TransactionCreation: typeof import('./src/components/Transactions/TransactionCreation.vue')['default'] + TransactionDecay: typeof import('./src/components/Transactions/TransactionDecay.vue')['default'] + TransactionForm: typeof import('./src/components/GddSend/TransactionForm.vue')['default'] + TransactionLink: typeof import('./src/components/TransactionLinks/TransactionLink.vue')['default'] + TransactionLinkItem: typeof import('./src/components/TransactionLinkItem.vue')['default'] + TransactionLinkSummary: typeof import('./src/components/Transactions/TransactionLinkSummary.vue')['default'] + TransactionListItem: typeof import('./src/components/TransactionListItem.vue')['default'] + TransactionReceive: typeof import('./src/components/Transactions/TransactionReceive.vue')['default'] + TransactionResultLink: typeof import('./src/components/GddSend/TransactionResultLink.vue')['default'] + TransactionResultSendError: typeof import('./src/components/GddSend/TransactionResultSendError.vue')['default'] + TransactionResultSendSuccess: typeof import('./src/components/GddSend/TransactionResultSendSuccess.vue')['default'] + TransactionSend: typeof import('./src/components/Transactions/TransactionSend.vue')['default'] + TypeIcon: typeof import('./src/components/TransactionRows/TypeIcon.vue')['default'] + UserCard: typeof import('./src/components/UserSettings/UserCard.vue')['default'] + UserData: typeof import('./src/components/UserSettings/UserData.vue')['default'] + UserGMSLocation: typeof import('./src/components/UserSettings/UserGMSLocation.vue')['default'] + UserGMSLocationFormat: typeof import('./src/components/UserSettings/UserGMSLocationFormat.vue')['default'] + UserLanguage: typeof import('./src/components/UserSettings/UserLanguage.vue')['default'] + UserName: typeof import('./src/components/UserSettings/UserName.vue')['default'] + UserNamingFormat: typeof import('./src/components/UserSettings/UserNamingFormat.vue')['default'] + UserNewsletter: typeof import('./src/components/UserSettings/UserNewsletter.vue')['default'] + UserPassword: typeof import('./src/components/UserSettings/UserPassword.vue')['default'] + UserSettingsSwitch: typeof import('./src/components/UserSettings/UserSettingsSwitch.vue')['default'] + } + export interface ComponentCustomProperties { + vBToggle: typeof import('bootstrap-vue-next')['vBToggle'] + } +} diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 000000000..d69392f83 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + diff --git a/frontend/package.json b/frontend/package.json index 879171697..c8f849756 100755 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,95 +4,101 @@ "private": true, "scripts": { "start": "node run/server.js", - "serve": "vue-cli-service serve --open", - "build": "vue-cli-service build", + "dev": "vite", + "build": "vite build", + "serve": "vite preview", "postbuild": "find build -type f -regex '.*\\.\\(html\\|js\\|css\\|svg\\|json\\)' -exec gzip -9 -k {} +", - "dev": "yarn run serve", "analyse-bundle": "yarn build && webpack-bundle-analyzer build/webpack.stats.json", "lint": "eslint --max-warnings=0 --ext .js,.vue,.json .", "stylelint": "stylelint --max-warnings=0 '**/*.{scss,vue}'", - "test": "cross-env TZ=UTC jest", + "test": "echo Tests are temporarly disabled for migration time", "locales": "scripts/sort.sh" }, "dependencies": { "@babel/core": "^7.13.13", "@babel/node": "^7.13.13", "@babel/preset-env": "^7.13.12", - "@vue/cli-plugin-unit-jest": "^4.5.12", + "@vee-validate/i18n": "^4.13.2", + "@vee-validate/rules": "^4.13.2", + "@vee-validate/yup": "^4.13.2", + "@vitejs/plugin-vue": "3.2.0", + "@vue/apollo-composable": "^4.0.2", + "@vue/apollo-option": "^4.0.0", + "@vue/compat": "^3.4.31", "@vue/test-utils": "^1.1.3", "apollo-boost": "^0.4.9", + "autoprefixer": "^10.4.19", "babel-core": "^7.0.0-bridge.0", "babel-jest": "^27.3.1", "babel-preset-vue": "^2.0.2", - "bootstrap": "^4.5.3", - "bootstrap-vue": "^2.21.2", + "bootstrap": "^5.3.3", + "bootstrap-vue-next": "^0.23.3", "clipboard-polyfill": "^4.0.0-rc1", "date-fns": "^2.29.3", "es6-promise": "^4.1.1", - "eslint": "^7.25.0", - "eslint-config-prettier": "^8.1.0", - "eslint-config-standard": "^16.0.2", - "eslint-loader": "^4.0.2", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-jest": "^24.3.2", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^3.3.1", - "eslint-plugin-promise": "^4.3.1", - "eslint-plugin-vue": "^7.8.0", "express": "^4.17.1", "flatpickr": "^4.5.7", "flush-promises": "^1.0.2", - "graphql": "^15.5.1", + "graphql": "^16.9.0", + "graphql-tag": "^2.12.6", "identity-obj-proxy": "^3.0.0", "jest": "^26.6.3", "jest-canvas-mock": "^2.5.0", "jwt-decode": "^3.1.2", - "portal-vue": "^2.1.7", - "prettier": "^2.2.1", + "portal-vue": "^3.0.0", "qrcanvas-vue": "2.1.1", "regenerator-runtime": "^0.13.7", "uuid": "^9.0.0", - "vee-validate": "^3.4.5", - "vue": "2.6.12", - "vue-apollo": "^3.0.7", + "vee-validate": "^4.13.2", + "vite": "3.2.10", + "vite-plugin-commonjs": "^0.10.1", + "vue": "3.4.31", + "vue-apollo": "^3.1.2", "vue-avatar": "^2.3.3", "vue-flatpickr-component": "^8.1.2", - "vue-focus": "^2.1.0", - "vue-i18n": "^8.22.4", + "vue-i18n": "^9.13.1", "vue-jest": "^3.0.7", "vue-loading-overlay": "^3.4.2", - "vue-router": "^3.0.6", + "vue-router": "^4.4.0", + "vue-timer-hook": "^1.0.84", "vue-timers": "^2.0.4", "vue2-transitions": "^0.2.3", - "vuex": "^3.6.0", - "vuex-persistedstate": "^4.0.0-beta.3" + "vuex": "^4.1.0", + "vuex-persistedstate": "^4.1.0", + "yup": "^1.4.0" }, "devDependencies": { - "@apollo/client": "^3.7.4", + "@apollo/client": "^3.10.8", + "@iconify-json/bi": "^1.1.23", "@intlify/eslint-plugin-vue-i18n": "^1.4.0", - "@vue/cli-plugin-babel": "^3.7.0", - "@vue/cli-plugin-eslint": "^3.7.0", - "@vue/cli-service": "^3.7.0", + "@vue/compiler-sfc": "^3.4.35", "@vue/eslint-config-prettier": "^4.0.1", - "babel-eslint": "^10.1.0", "babel-plugin-component": "^1.1.0", "babel-plugin-transform-require-context": "^0.1.1", "cross-env": "^7.0.3", "dotenv-webpack": "^7.0.3", + "eslint": "8.57.0", + "eslint-config-prettier": "8.10.0", + "eslint-config-standard": "^16.0.3", + "eslint-loader": "^4.0.2", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-jest": "^25.2.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "5.2.1", + "eslint-plugin-promise": "^5.1.1", + "eslint-plugin-vue": "8.7.1", "mock-apollo-client": "^1.2.1", "postcss": "^8.4.8", "postcss-html": "^1.3.0", "postcss-scss": "^4.0.3", "sass": "1.32.13", - "sass-loader": "^10", - "stats-webpack-plugin": "^0.7.0", - "stylelint": "^14.5.3", - "stylelint-config-recommended-vue": "^1.3.0", - "stylelint-config-standard-scss": "^3.0.0", - "vue-cli-plugin-i18n": "^1.0.1", - "vue-html-webpack-plugin": "^3.2.2", - "vue-template-compiler": "^2.6.11", - "webpack-bundle-analyzer": "^4.5.0" + "prettier": "^3.3.3", + "stylelint": "16.7.0", + "stylelint-config-recommended-vue": "1.5.0", + "stylelint-config-standard-scss": "13.1.0", + "unplugin-icons": "^0.19.1", + "unplugin-vue-components": "^0.27.3", + "vue-html-webpack-plugin": "^3.2.2" }, "postcss": { "plugins": { @@ -111,5 +117,10 @@ "ignore": [ "**/*.spec.js" ] + }, + "resolutions": { + "strip-ansi": "6.0.1", + "string-width": "4.2.2", + "wrap-ansi": "7.0.0" } } diff --git a/frontend/run/server.js b/frontend/run/server.js index 4a49dcd75..98d11ee7e 100644 --- a/frontend/run/server.js +++ b/frontend/run/server.js @@ -4,7 +4,7 @@ const path = require('path') // Host & Port const hostname = '127.0.0.1' -const port = process.env.PORT || 3000 +const port = import.meta.env.PORT || 3000 // Express Server const app = express() diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 663c9e7d4..79a71aebb 100755 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -1,6 +1,7 @@ @@ -56,7 +56,7 @@ export default { }, transactionGdtCount: { type: Number, required: true }, pageSize: { type: Number, required: true }, - value: { type: Number, required: true }, + modelValue: { type: Number, required: true }, }, data() { return { @@ -66,15 +66,15 @@ export default { }, watch: { currentPage() { - if (this.value !== this.currentPage) this.$emit('input', this.currentPage) + if (this.modelValue !== this.currentPage) this.$emit('input', this.currentPage) }, }, } diff --git a/frontend/src/components/QrCode/FigureQrCode.vue b/frontend/src/components/QrCode/FigureQrCode.vue index 40b1098dc..f3794264a 100644 --- a/frontend/src/components/QrCode/FigureQrCode.vue +++ b/frontend/src/components/QrCode/FigureQrCode.vue @@ -2,7 +2,7 @@
- +
- - - + +
{{ $t('session.warningText') }}
{{ $t('session.lightText') }} @@ -19,85 +19,154 @@ {{ tokenExpiresInSeconds }} {{ $t('time.seconds') }}
-
- - - + + + + {{ $t('session.extend') }} - - - -
+ + + + -
+
---> + diff --git a/frontend/src/components/Template/ContentHeader/CommunityMember.vue b/frontend/src/components/Template/ContentHeader/CommunityMember.vue index 691e37afd..cabc8ada1 100644 --- a/frontend/src/components/Template/ContentHeader/CommunityMember.vue +++ b/frontend/src/components/Template/ContentHeader/CommunityMember.vue @@ -1,23 +1,23 @@ diff --git a/frontend/src/components/Template/ContentHeader/GddAmount.vue b/frontend/src/components/Template/ContentHeader/GddAmount.vue index 1c774f3d7..6308da5a9 100644 --- a/frontend/src/components/Template/ContentHeader/GddAmount.vue +++ b/frontend/src/components/Template/ContentHeader/GddAmount.vue @@ -1,88 +1,134 @@ ---> + + diff --git a/frontend/src/components/Template/ContentHeader/GdtAmount.vue b/frontend/src/components/Template/ContentHeader/GdtAmount.vue index 9216ff232..e46111635 100644 --- a/frontend/src/components/Template/ContentHeader/GdtAmount.vue +++ b/frontend/src/components/Template/ContentHeader/GdtAmount.vue @@ -1,82 +1,127 @@ ---> + + diff --git a/frontend/src/components/Template/ContentHeader/NavCommunity.vue b/frontend/src/components/Template/ContentHeader/NavCommunity.vue index 9748eb187..fe16f73d6 100644 --- a/frontend/src/components/Template/ContentHeader/NavCommunity.vue +++ b/frontend/src/components/Template/ContentHeader/NavCommunity.vue @@ -1,18 +1,38 @@ @@ -21,26 +41,33 @@ export default { name: 'NavCommunity', } - diff --git a/frontend/src/components/Template/RightSide/LastContributions.vue b/frontend/src/components/Template/RightSide/LastContributions.vue index 1d50a0bc3..80e9cb7de 100644 --- a/frontend/src/components/Template/RightSide/LastContributions.vue +++ b/frontend/src/components/Template/RightSide/LastContributions.vue @@ -1,11 +1,11 @@ --> + + diff --git a/frontend/src/components/TransactionCollapse.vue b/frontend/src/components/TransactionCollapse.vue index 2bba3d164..7fb221ab6 100644 --- a/frontend/src/components/TransactionCollapse.vue +++ b/frontend/src/components/TransactionCollapse.vue @@ -1,26 +1,26 @@ --> + diff --git a/frontend/src/components/UserSettings/UserSettingsSwitch.vue b/frontend/src/components/UserSettings/UserSettingsSwitch.vue index 20878db86..e25496b08 100644 --- a/frontend/src/components/UserSettings/UserSettingsSwitch.vue +++ b/frontend/src/components/UserSettings/UserSettingsSwitch.vue @@ -1,58 +1,63 @@ - diff --git a/frontend/src/components/skeleton/Overview.vue b/frontend/src/components/skeleton/Overview.vue index 06ae8075f..76b90b224 100644 --- a/frontend/src/components/skeleton/Overview.vue +++ b/frontend/src/components/skeleton/Overview.vue @@ -1,44 +1,44 @@ --> + + diff --git a/frontend/src/pages/InfoStatistic.vue b/frontend/src/pages/InfoStatistic.vue index 0b6a85dd2..d5cebf2b1 100644 --- a/frontend/src/pages/InfoStatistic.vue +++ b/frontend/src/pages/InfoStatistic.vue @@ -1,41 +1,16 @@ - diff --git a/frontend/src/pages/Login.vue b/frontend/src/pages/Login.vue index 79551095c..0d43b2303 100644 --- a/frontend/src/pages/Login.vue +++ b/frontend/src/pages/Login.vue @@ -1,148 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ---> + diff --git a/frontend/src/pages/NotFoundPage.vue b/frontend/src/pages/NotFoundPage.vue index 1dce50e16..b217b3c85 100755 --- a/frontend/src/pages/NotFoundPage.vue +++ b/frontend/src/pages/NotFoundPage.vue @@ -2,9 +2,9 @@
- +
- +
- + {{ $t('back') }} - +
diff --git a/frontend/src/pages/RegisterCommunity.vue b/frontend/src/pages/RegisterCommunity.vue index 1acc0827e..5c781aeac 100644 --- a/frontend/src/pages/RegisterCommunity.vue +++ b/frontend/src/pages/RegisterCommunity.vue @@ -4,8 +4,8 @@
- - + +

{{ CONFIG.COMMUNITY_NAME }}

{{ CONFIG.COMMUNITY_DESCRIPTION }} @@ -13,36 +13,36 @@

{{ CONFIG.COMMUNITY_URL }}

-
-
- - + + + + {{ $t('community.continue-to-registration') }} - - + +
- - + + {{ $t('community.choose-another-community') }} - - + +
- - + + {{ $t('back') }} - - + +
diff --git a/frontend/src/pages/ResetPassword.vue b/frontend/src/pages/ResetPassword.vue index 6fa76d994..1eb648ee1 100644 --- a/frontend/src/pages/ResetPassword.vue +++ b/frontend/src/pages/ResetPassword.vue @@ -4,8 +4,8 @@ - - + + {{ $t(displaySetup.button) }} - - + +
@@ -26,8 +26,8 @@
@@ -73,6 +73,11 @@ export default { messageButtonLinktTo: null, } }, + computed: { + enterData() { + return !this.showPageMessage + }, + }, created() { this.$emit('set-mobile-start', false) this.setDisplaySetup() @@ -146,20 +151,16 @@ export default { } }, }, - computed: { - enterData() { - return !this.showPageMessage - }, - }, } diff --git a/frontend/src/pages/Send.vue b/frontend/src/pages/Send.vue index 550c30bf3..f10011478 100644 --- a/frontend/src/pages/Send.vue +++ b/frontend/src/pages/Send.vue @@ -1,6 +1,6 @@
---> + + diff --git a/frontend/src/pages/Settings.vue b/frontend/src/pages/Settings.vue index 2116bcdf9..01c716ae7 100644 --- a/frontend/src/pages/Settings.vue +++ b/frontend/src/pages/Settings.vue @@ -1,70 +1,72 @@ -