diff --git a/.eslintrc.js b/.eslintrc.js index cfdfc58bf..93373f66e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -7,11 +7,7 @@ module.exports = { ENV_MOBILE_DEVICE: true, }, ignorePatterns: ['dist', 'platforms', 'plugins', 'www'], - extends: [ - 'plugin:vue/recommended', - 'plugin:@intlify/vue-i18n/recommended', - '@vue/airbnb', - ], + extends: ['plugin:vue/recommended', 'plugin:@intlify/vue-i18n/recommended'], rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', @@ -20,13 +16,16 @@ module.exports = { 'vue/block-spacing': 'error', 'vue/brace-style': 'error', 'vue/camelcase': ['error', { properties: 'never' }], - 'vue/comma-dangle': ['error', { - arrays: 'always-multiline', - objects: 'always-multiline', - imports: 'always-multiline', - exports: 'always-multiline', - functions: 'always-multiline', - }], + 'vue/comma-dangle': [ + 'error', + { + arrays: 'always-multiline', + objects: 'always-multiline', + imports: 'always-multiline', + exports: 'always-multiline', + functions: 'always-multiline', + }, + ], 'vue/component-name-in-template-casing': 'error', 'vue/eqeqeq': 'error', 'vue/key-spacing': 'error', @@ -44,24 +43,24 @@ module.exports = { 'vuejs-accessibility/label-has-for': 'off', 'vuejs-accessibility/form-control-has-label': 'off', 'vue/multi-word-component-names': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/html-self-closing': 'off', + 'vue/html-indent': 'off', + 'vue/singleline-html-element-content-newline': 'off', 'vuejs-accessibility/no-autofocus': 'off', 'vuejs-accessibility/alt-text': 'off', }, parserOptions: { parser: '@babel/eslint-parser', }, - overrides: [{ - files: '**/__tests__/*', - env: { - jest: true, - }, - }, { - files: 'backend/**', - rules: { - 'import/no-extraneous-dependencies': ['error', { packageDir: 'backend' }], - 'import/extensions': ['error', 'ignorePackages'], + overrides: [ + { + files: '**/__tests__/*', + env: { + jest: true, + }, }, - }], + ], settings: { 'vue-i18n': { localeDir: './src/locales/*.json', diff --git a/.github/workflows/_validate-npm.yml b/.github/workflows/_validate-npm.yml index 3e99ec785..590666d88 100644 --- a/.github/workflows/_validate-npm.yml +++ b/.github/workflows/_validate-npm.yml @@ -5,25 +5,25 @@ jobs: build_test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - with: - ref: ${{ github.head_ref }} - - uses: actions/setup-node@v4 - with: - node-version: 20.x - cache: npm - - run: npm ci - working-directory: 'backend' - - run: npm test - working-directory: 'backend' - - run: npm ci --legacy-peer-deps # TODO: remove --legacy-peer-deps after updating dependencies - - run: docker compose up middleware -d --wait --quiet-pull - - run: ./docker-compose/init-state.mjs - - run: npm test - - uses: stefanzweifel/git-auto-commit-action@v5 - if: failure() - with: - commit_message: "fixme: update e2e screenshots" - file_pattern: 'tests/e2e/*.png' - - run: docker compose logs - if: always() + - uses: actions/checkout@v4 + with: + ref: ${{ github.head_ref }} + - uses: actions/setup-node@v4 + with: + node-version: 20.x + cache: npm + - run: npm ci + working-directory: backend + - run: npm test + working-directory: backend + - run: npm ci --legacy-peer-deps # TODO: remove --legacy-peer-deps after updating dependencies + - run: docker compose up middleware -d --wait --quiet-pull + - run: ./docker-compose/init-state.mjs + - run: npm test + - uses: stefanzweifel/git-auto-commit-action@v5 + if: failure() + with: + commit_message: 'fixme: update e2e screenshots' + file_pattern: tests/e2e/*.png + - run: docker compose logs + if: always() diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 1cd74af1a..105476fcc 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -2,14 +2,14 @@ name: integration on: push: - branches: [ develop ] + branches: [develop] jobs: validate: uses: ./.github/workflows/_validate-npm.yml publish: uses: aeternity/github-actions/.github/workflows/_publish-ecr.yml@v2.3.1 - needs: [ validate ] + needs: [validate] secrets: inherit with: BUILD_ARGS: REVISION=${{ github.sha }} @@ -19,6 +19,6 @@ jobs: secrets: inherit with: DEPLOY_ENV: stg - DEPLOY_APP: "${{ github.event.repository.name }}" + DEPLOY_APP: '${{ github.event.repository.name }}' DEPLOY_VERSION: develop - DEPLOY_SUBDOMAIN: "base" + DEPLOY_SUBDOMAIN: 'base' diff --git a/.github/workflows/pull-request-cleanup.yml b/.github/workflows/pull-request-cleanup.yml index aee94cd6b..8f4ee6648 100644 --- a/.github/workflows/pull-request-cleanup.yml +++ b/.github/workflows/pull-request-cleanup.yml @@ -2,8 +2,8 @@ name: pull-request-cleanup on: pull_request: - branches: [ master, develop ] - types: [ closed ] + branches: [master, develop] + types: [closed] jobs: rollback: @@ -12,14 +12,14 @@ jobs: with: DEPLOY_ENV: stg DEPLOY_APP: ${{ github.event.repository.name }} - DEPLOY_VERSION: "pr-${{ github.event.number }}" - DEPLOY_SUBDOMAIN: "pr-${{ github.event.number }}-base" + DEPLOY_VERSION: pr-${{ github.event.number }} + DEPLOY_SUBDOMAIN: pr-${{ github.event.number }}-base delete-tag: uses: aeternity/github-actions/.github/workflows/_delete-tag-ecr.yml@v2.3.1 secrets: inherit with: - TAG: "pr-${{ github.event.number }}" + TAG: pr-${{ github.event.number }} cleanup: uses: aeternity/github-actions/.github/workflows/_cleanup-ecr.yml@v2.3.1 - needs: [ delete-tag ] + needs: [delete-tag] secrets: inherit diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index a6cdd7f4e..8e65e8f95 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -2,14 +2,14 @@ name: pull-request on: pull_request: - branches: [ master, develop ] + branches: [master, develop] jobs: validate: uses: ./.github/workflows/_validate-npm.yml publish: uses: aeternity/github-actions/.github/workflows/_publish-ecr.yml@v2.3.1 - needs: [ validate ] + needs: [validate] secrets: inherit with: BUILD_ARGS: REVISION=${{ github.sha }} @@ -20,5 +20,5 @@ jobs: with: DEPLOY_ENV: stg DEPLOY_APP: ${{ github.event.repository.name }} - DEPLOY_VERSION: "pr-${{ github.event.number }}" - DEPLOY_SUBDOMAIN: "pr-${{ github.event.number }}-base" + DEPLOY_VERSION: pr-${{ github.event.number }} + DEPLOY_SUBDOMAIN: pr-${{ github.event.number }}-base diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index ba85fcf53..8f5b8891b 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -2,7 +2,7 @@ name: release-please on: push: - branches: [ master ] + branches: [master] jobs: release-please: @@ -13,5 +13,5 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} release-type: node - package-name: "" + package-name: '' changelog-types: '[{"type":"feat","section":"Features","hidden":false},{"type":"fix","section":"Bug Fixes","hidden":false},{"type":"ci","section":"CI / CD","hidden":false},{"type":"test","section":"Testing","hidden":false},{"type":"refactor","section":"Refactorings","hidden":false},{"type":"chore","section":"Miscellaneous","hidden":false}]' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d6937d554..dcc2163f2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -2,7 +2,7 @@ name: release on: push: - tags: [ v* ] + tags: [v*] jobs: publish: diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..49468a7ea --- /dev/null +++ b/.prettierignore @@ -0,0 +1,3 @@ +www +platforms +plugins diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..5ac85e271 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "printWidth": 100, + "singleQuote": true +} diff --git a/README.md b/README.md index 451b56db2..f49179bf8 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@ ## How to get the Base æpp -* [Google Play](https://play.google.com/store/apps/details?id=com.aeternity.base) -* [App Store](https://apps.apple.com/app/base-æpp-wallet/id1458655724) -* [Web version](https://base.aepps.com/) +- [Google Play](https://play.google.com/store/apps/details?id=com.aeternity.base) +- [App Store](https://apps.apple.com/app/base-æpp-wallet/id1458655724) +- [Web version](https://base.aepps.com/) Also join our [Telegram channel](https://t.me/aeppbase) and our [Forum](https://forum.aeternity.com/t/base-aepp-wallet-we-would-like-your-feedback/3387). @@ -54,33 +54,40 @@ npm test ## Contributing We use the [gitflow](https://danielkummer.github.io/git-flow-cheatsheet/) workflow [this is also helpful](https://gist.github.com/JamesMGreene/cdd0ac49f90c987e45ac). -* Development of features happens in branches made from **develop** called feature/ like feature/show-token-balance. -* When development is finished a pull request to **develop** is created. At least one person has to review the PR and when everything is fine the PR gets merged. -* The develop branch gets deployed to the [stage environment](https://base.stg.aepps.com) by travis. -* To make a new release create a release branch called release/vX.X.X, also bump the version number in package.json in this branch. -* Create a PR to master which then also has to be accepted. -* Create a tag for this version and push the tag. -* Also merge back the changes (like the version bump) into develop. -* The master branch has to be deployed to the [production environment](https://base.aepps.com/) manually. + +- Development of features happens in branches made from **develop** called feature/ like feature/show-token-balance. +- When development is finished a pull request to **develop** is created. At least one person has to review the PR and when everything is fine the PR gets merged. +- The develop branch gets deployed to the [stage environment](https://base.stg.aepps.com) by travis. +- To make a new release create a release branch called release/vX.X.X, also bump the version number in package.json in this branch. +- Create a PR to master which then also has to be accepted. +- Create a tag for this version and push the tag. +- Also merge back the changes (like the version bump) into develop. +- The master branch has to be deployed to the [production environment](https://base.aepps.com/) manually. ## Deployment We have a stage (develop) and a production (master) branch and environments where these branches will be deployed to. -* [stage environment](https://base.stg.aepps.com) -* [production environment](https://base.aepps.com) + +- [stage environment](https://base.stg.aepps.com) +- [production environment](https://base.aepps.com) ### stage -* Is used to see changes to the code in effect in a "real" environment without the fear of breaking the production environment. + +- Is used to see changes to the code in effect in a "real" environment without the fear of breaking the production environment. ### production -* Is the production environment, code lives in the "master" branch. + +- Is the production environment, code lives in the "master" branch. ### other branches -* Every branch is auto-deployed on `https://pr--base.stg.aepps.com/`, where `` is a number of PR. + +- Every branch is auto-deployed on `https://pr--base.stg.aepps.com/`, where `` is a number of PR. ### unsigned .apk and .app file -* Find `aetenity.app.tar.gz` file in the [latest release](https://github.com/aeternity/aepp-base/releases/latest) -* Find `aeternity.apk` file in the [latest release](https://github.com/aeternity/aepp-base/releases/latest) + +- Find `aetenity.app.tar.gz` file in the [latest release](https://github.com/aeternity/aepp-base/releases/latest) +- Find `aeternity.apk` file in the [latest release](https://github.com/aeternity/aepp-base/releases/latest) ### bundle analyzer report -* Get bundle analyzer report on each domain by adding /report.html. Example [https://base.stg.aepps.com/report.html](https://base.stg.aepps.com/report.html). + +- Get bundle analyzer report on each domain by adding /report.html. Example [https://base.stg.aepps.com/report.html](https://base.stg.aepps.com/report.html). diff --git a/babel.config.js b/babel.config.js index ef06c2e6a..59c5a6e23 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,9 +1,4 @@ module.exports = { - presets: [ - '@vue/cli-plugin-babel/preset', - ], - plugins: [ - '@babel/plugin-syntax-import-attributes', - '@babel/plugin-transform-private-methods', - ], + presets: ['@vue/cli-plugin-babel/preset'], + plugins: ['@babel/plugin-syntax-import-attributes', '@babel/plugin-transform-private-methods'], }; diff --git a/backend/src/send-push-notification.js b/backend/src/send-push-notification.js index 620892256..b056d15e6 100644 --- a/backend/src/send-push-notification.js +++ b/backend/src/send-push-notification.js @@ -6,7 +6,8 @@ export default async (pushApiSubscription) => { } webPush.setVapidDetails( 'https://github.com/aeternity/aepp-base/issues', - process.env.VAPID_PUBLIC_KEY ?? 'BHkQhNWW2TKfKfxo7vAgXkZGcVOXGrjhIZJlN1hKp6abIjWJgO8FYPswXJ35XEuKw46O9yZ-8KmsZ4-TXNBePcw', + process.env.VAPID_PUBLIC_KEY ?? + 'BHkQhNWW2TKfKfxo7vAgXkZGcVOXGrjhIZJlN1hKp6abIjWJgO8FYPswXJ35XEuKw46O9yZ-8KmsZ4-TXNBePcw', process.env.VAPID_PRIVATE_KEY ?? 'mwSZbWF_yU_h1gXlqlBy9cOfkOF-Pa0jhHxbTFXdhFE', ); const subscription = JSON.parse(pushApiSubscription); diff --git a/backend/src/server.js b/backend/src/server.js index 58c67fb27..5428fbdcb 100644 --- a/backend/src/server.js +++ b/backend/src/server.js @@ -9,11 +9,15 @@ export default (port, log = () => {}) => { const server = http.createServer((request, response) => { if (request.url === '/version' && request.method === 'GET') { response.setHeader('Content-Type', 'application/json'); - const json = JSON.stringify({ - version: pkg.version, - revision: process.env.REVISION || 'local', - ...getStats(), - }, null, 2); + const json = JSON.stringify( + { + version: pkg.version, + revision: process.env.REVISION || 'local', + ...getStats(), + }, + null, + 2, + ); response.write(json); response.end(); return; @@ -53,19 +57,22 @@ export default (port, log = () => {}) => { io.on('connection', (socket) => { const { key, pushApiSubscription } = socket.handshake.auth; - socket.on('message-to-all', (message) => socket - .to(getGroupName(pushApiSubscription ? key : leaderKeys[key])) - .emit('message', message)); + socket.on('message-to-all', (message) => + socket.to(getGroupName(pushApiSubscription ? key : leaderKeys[key])).emit('message', message), + ); if (pushApiSubscription) { leaderMessages[key] ??= []; - leaderMessages[key].forEach((messageToLeader) => socket - .emit('message-from-follower', messageToLeader.key, messageToLeader.message)); - log([ - `Connected leader with key ${key}`, - `push api ${pushApiSubscription.slice(0, 30)}`, - `sent ${leaderMessages[key].length} offline messages`, - ].join(', ')); + leaderMessages[key].forEach((messageToLeader) => + socket.emit('message-from-follower', messageToLeader.key, messageToLeader.message), + ); + log( + [ + `Connected leader with key ${key}`, + `push api ${pushApiSubscription.slice(0, 30)}`, + `sent ${leaderMessages[key].length} offline messages`, + ].join(', '), + ); delete leaderMessages[key]; const groupName = getGroupName(key); @@ -104,8 +111,9 @@ export default (port, log = () => {}) => { fn(Object.fromEntries(entries)); }); - socket.on('message-to-follower', (fKey, message) => socket - .to(fKey).emit('message-from-leader', message)); + socket.on('message-to-follower', (fKey, message) => + socket.to(fKey).emit('message-from-leader', message), + ); socket.on('disconnect', () => { socket.to(getGroupName(key)).emit('leader-disconnected'); diff --git a/backend/src/server.tests.js b/backend/src/server.tests.js index de15d1224..b3b9dd0c2 100644 --- a/backend/src/server.tests.js +++ b/backend/src/server.tests.js @@ -1,6 +1,4 @@ -import { - describe, it, beforeEach, afterEach, -} from 'mocha'; +import { describe, it, beforeEach, afterEach } from 'mocha'; import { expect } from 'chai'; import socketIoClient from 'socket.io-client'; import createServer from './server.js'; @@ -35,17 +33,18 @@ afterEach(async () => { }); }); -const getEvent = (socket, eventName) => new Promise((resolve) => { - socket.once(eventName, (...args) => resolve(args)); -}); +const getEvent = (socket, eventName) => + new Promise((resolve) => { + socket.once(eventName, (...args) => resolve(args)); + }); -it('can\'t connect without key', async () => { +it("can't connect without key", async () => { const socket = io(); const [error] = await getEvent(socket, 'connect_error'); expect(error.message).to.be.equal('Key is missed'); }); -it('can\'t connect with the same key', async () => { +it("can't connect with the same key", async () => { io({ key: TEST_KEY }); const socket = io({ key: TEST_KEY }); const [error] = await getEvent(socket, 'connect_error'); diff --git a/cypress.config.js b/cypress.config.js index 15e4b938a..998161bab 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -1,8 +1,6 @@ const path = require('path'); const fs = require('fs'); const { defineConfig } = require('cypress'); -// TODO: remove after fixing https://github.com/import-js/eslint-plugin-import/issues/1810 -// eslint-disable-next-line import/no-unresolved const { initPlugin } = require('@frsource/cypress-plugin-visual-regression-diff/plugins'); module.exports = defineConfig({ @@ -11,9 +9,12 @@ module.exports = defineConfig({ fixturesFolder: 'tests/e2e/fixtures', screenshotsFolder: 'tests/e2e/screenshots', videosFolder: 'tests/e2e/videos', - env: process.env.CI === 'true' ? {} : { - pluginVisualRegressionImagesPath: '{spec_path}/__image_snapshots_local__', - }, + env: + process.env.CI === 'true' + ? {} + : { + pluginVisualRegressionImagesPath: '{spec_path}/__image_snapshots_local__', + }, e2e: { specPattern: 'tests/e2e/specs/**/*.cy.{js,jsx,ts,tsx}', supportFile: 'tests/e2e/support/index.js', diff --git a/docker-compose.yml b/docker-compose.yml index d066ed4c9..4226b6236 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: middleware: - # TODO: use upstream after merging https://github.com/aeternity/ae_mdw/issues/1758 + # TODO: use upstream after merging https://github.com/aeternity/ae_mdw/issues/1758 image: davidyuk/temp:mdw-dev-mode-1.97.1-oas-fix ports: [4000:4000, 4001:4001, 3013:3013, 3313:3313] volumes: diff --git a/docker-compose/aeternity.yaml b/docker-compose/aeternity.yaml index c22942c3d..dc0c871b6 100644 --- a/docker-compose/aeternity.yaml +++ b/docker-compose/aeternity.yaml @@ -11,8 +11,8 @@ dev_mode: chain: persist: false hard_forks: - "1": 0 - "6": 1 + '1': 0 + '6': 1 genesis_accounts: ak_21A27UVVt3hDkBE5J7rhhqnH5YNb4Y1dqo4PnSybrH85pnWo7E: 1000000000000000000000000 diff --git a/docker-compose/init-state.mjs b/docker-compose/init-state.mjs index fbe36ea6e..eae9cfacd 100755 --- a/docker-compose/init-state.mjs +++ b/docker-compose/init-state.mjs @@ -2,8 +2,13 @@ import { execSync } from 'child_process'; import { - Node, AeSdk, MemoryAccount, generateSaveHDWalletFromSeed, getSaveHDWalletAccounts, - encode, Encoding, + Node, + AeSdk, + MemoryAccount, + generateSaveHDWalletFromSeed, + getSaveHDWalletAccounts, + encode, + Encoding, } from '@aeternity/aepp-sdk-next'; import { mnemonicToSeed } from '@aeternity/bip39'; @@ -11,7 +16,7 @@ import { mnemonicToSeed } from '@aeternity/bip39'; try { execSync( 'docker compose exec middleware ./bin/ae_mdw rpc ":aeplugin_dev_mode_app.start_unlink()"', - { stdio : 'pipe' }, + { stdio: 'pipe' }, ); } catch (error) { if (!error.message.includes('{:error, {:already_started')) throw error; @@ -25,11 +30,15 @@ await (async function rollbackToFirstBlock() { const aeSdk = new AeSdk({ nodes: [{ name: 'testnet', instance: new Node('http://localhost:3013') }], accounts: [ - new MemoryAccount('9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200'), + new MemoryAccount( + '9ebd7beda0c79af72a42ece3821a56eff16359b6df376cf049aee995565f022f840c974b97164776454ba119d84edc4d6058a8dec92b6edc578ab2d30b4c4200', + ), ], }); -const seed = mnemonicToSeed('cross cat upper state flame wire inner betray almost party agree endorse'); +const seed = mnemonicToSeed( + 'cross cat upper state flame wire inner betray almost party agree endorse', +); const wallet = generateSaveHDWalletFromSeed(seed, ''); const [{ secretKey }, { secretKey: secretKey2 }] = getSaveHDWalletAccounts(wallet, '', 2); const account1 = new MemoryAccount(secretKey); @@ -56,12 +65,16 @@ await (async function prepareNames() { await aeSdk.aensClaim('мир.chain', 0); await aeSdk.aensClaim('understanding.chain', 0, { onAccount: account1 }); await aeSdk.aensClaim('entertainment.chain', 0, { onAccount: account2 }); - await aeSdk.aensUpdate('entertainment.chain', { - 'account_pubkey': account2.address, - 'contract_pubkey': account1.address.replace('ak_', 'ct_'), - 'second account': account1.address, - 'raw': encode(Buffer.from('test'), Encoding.Bytearray), - }, { onAccount: account2 }); + await aeSdk.aensUpdate( + 'entertainment.chain', + { + account_pubkey: account2.address, + contract_pubkey: account1.address.replace('ak_', 'ct_'), + 'second account': account1.address, + raw: encode(Buffer.from('test'), Encoding.Bytearray), + }, + { onAccount: account2 }, + ); console.log('Names ready'); })(); diff --git a/jest.config.js b/jest.config.js index f7d08d284..696f07ac3 100644 --- a/jest.config.js +++ b/jest.config.js @@ -9,35 +9,25 @@ const packagesToTranspile = [ module.exports = { testEnvironment: 'jsdom', setupFiles: ['jest-canvas-mock', '/config/jest/globals.js'], - moduleFileExtensions: [ - 'js', - 'mjs', - 'jsx', - 'json', - 'vue', - ], + moduleFileExtensions: ['js', 'mjs', 'jsx', 'json', 'vue'], transform: { '^.+\\.vue$': '@vue/vue2-jest', '.+\\.(css|styl|less|sass|scss|png|jpg|svg|ttf|woff|woff2)$': 'jest-transform-stub', '^.+\\.m?jsx?$': 'babel-jest', }, - transformIgnorePatterns: [ - `node_modules/(?!(${packagesToTranspile.join('|')})/)`, - ], + transformIgnorePatterns: [`node_modules/(?!(${packagesToTranspile.join('|')})/)`], moduleNameMapper: { '^.*\\.svg\\?icon-component$': '/config/jest/EmptySvg.vue', // https://github.com/jestjs/jest/issues/10422 - '^@swagger-api/apidom-reference/parse/parsers/binary$': '@swagger-api/apidom-reference/cjs/parse/parsers/binary/index-browser.cjs', - '^@swagger-api/apidom-reference/(.*)/strategies/openapi-3-1$': '@swagger-api/apidom-reference/cjs/$1/strategies/openapi-3-1/index.cjs', - '^@swagger-api/apidom-reference/dereference/strategies/openapi-3-1/selectors/(.*)$': '@swagger-api/apidom-reference/cjs/dereference/strategies/openapi-3-1/selectors/$1/index.cjs', + '^@swagger-api/apidom-reference/parse/parsers/binary$': + '@swagger-api/apidom-reference/cjs/parse/parsers/binary/index-browser.cjs', + '^@swagger-api/apidom-reference/(.*)/strategies/openapi-3-1$': + '@swagger-api/apidom-reference/cjs/$1/strategies/openapi-3-1/index.cjs', + '^@swagger-api/apidom-reference/dereference/strategies/openapi-3-1/selectors/(.*)$': + '@swagger-api/apidom-reference/cjs/dereference/strategies/openapi-3-1/selectors/$1/index.cjs', '^@swagger-api/apidom-reference/(.*)$': '@swagger-api/apidom-reference/cjs/$1.cjs', }, - snapshotSerializers: [ - 'jest-serializer-vue', - ], - testMatch: [ - '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)', - '**/__tests__/*.(js|jsx|ts|tsx)', - ], + snapshotSerializers: ['jest-serializer-vue'], + testMatch: ['**/tests/unit/**/*.spec.(js|jsx|ts|tsx)', '**/__tests__/*.(js|jsx|ts|tsx)'], testURL: 'http://localhost/', }; diff --git a/package-lock.json b/package-lock.json index 93c29251e..aae5cdaab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,7 +55,6 @@ "@vue/cli-plugin-pwa": "^5.0.8", "@vue/cli-plugin-unit-jest": "^5.0.8", "@vue/cli-service": "^5.0.8", - "@vue/eslint-config-airbnb": "^7.0.1", "@vue/preload-webpack-plugin": "^2.0.0", "@vue/test-utils": "^1.3.5", "@vue/vue2-jest": "^29.2.6", @@ -69,6 +68,7 @@ "eslint-plugin-vuejs-accessibility": "^2.3.0", "jest": "^29.7.0", "jest-canvas-mock": "^2.5.2", + "prettier": "^3.4.2", "sass": "^1.77.2", "sass-loader": "^14.2.1", "serve": "^14.2.3", @@ -5755,11 +5755,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/json5": { - "version": "0.0.29", - "dev": true, - "license": "MIT" - }, "node_modules/@types/mime": { "version": "3.0.1", "dev": true, @@ -7554,6 +7549,22 @@ "prettier": "^1.18.2 || ^2.0.0" } }, + "node_modules/@vue/compiler-sfc/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "license": "MIT", + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/@vue/compiler-sfc/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7615,6 +7626,23 @@ "url": "https://opencollective.com/postcss/" } }, + "node_modules/@vue/component-compiler-utils/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/@vue/component-compiler-utils/node_modules/source-map": { "version": "0.6.1", "dev": true, @@ -7628,39 +7656,6 @@ "dev": true, "license": "ISC" }, - "node_modules/@vue/eslint-config-airbnb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-airbnb/-/eslint-config-airbnb-7.0.1.tgz", - "integrity": "sha512-8d5QJeaL3PxKXfCVNGSA7RSKk+GNQLkOAMgN33ST+wJaXSdUI/4dJ0+LfqoLOu92NqwmKiIEZWMyPiGywhS1BA==", - "dev": true, - "dependencies": { - "eslint-config-airbnb-base": "^15.0.0", - "eslint-import-resolver-custom-alias": "^1.3.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.6.1", - "eslint-plugin-react": "^7.30.1", - "eslint-plugin-vuejs-accessibility": "^1.2.0", - "vue-eslint-parser": "^9.0.3" - }, - "peerDependencies": { - "eslint": "^8.2.0", - "eslint-plugin-vue": "^9.2.0" - } - }, - "node_modules/@vue/eslint-config-airbnb/node_modules/eslint-plugin-vuejs-accessibility": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "aria-query": "^5.0.0", - "emoji-regex": "^10.0.0", - "vue-eslint-parser": "^9.0.1" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, "node_modules/@vue/preload-webpack-plugin": { "version": "2.0.0", "dev": true, @@ -8365,24 +8360,6 @@ "dev": true, "license": "MIT" }, - "node_modules/array-includes": { - "version": "3.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/array-union": { "version": "2.1.0", "dev": true, @@ -8391,52 +8368,6 @@ "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - } - }, "node_modules/asn1": { "version": "0.2.6", "dev": true, @@ -8453,11 +8384,6 @@ "node": ">=0.8" } }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "dev": true, - "license": "ISC" - }, "node_modules/astral-regex": { "version": "2.0.0", "dev": true, @@ -8546,14 +8472,6 @@ "dev": true, "license": "MIT" }, - "node_modules/axe-core": { - "version": "4.7.0", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=4" - } - }, "node_modules/axios": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.6.tgz", @@ -8582,14 +8500,6 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "node_modules/axobject-query": { - "version": "3.1.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "deep-equal": "^2.0.5" - } - }, "node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -10201,11 +10111,6 @@ "node": ">=8" } }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", - "dev": true, - "license": "MIT" - }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", "dev": true, @@ -12205,11 +12110,6 @@ "type": "^1.0.1" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/dashdash": { "version": "1.14.1", "dev": true, @@ -12299,39 +12199,6 @@ "dev": true, "license": "MIT" }, - "node_modules/deep-equal": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.0", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-equal/node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/deep-extend": { "version": "0.6.0", "dev": true, @@ -13087,30 +12954,6 @@ "node": ">= 0.4" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-get-iterator/node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, "node_modules/es-module-lexer": { "version": "1.2.1", "dev": true, @@ -13129,14 +12972,6 @@ "node": ">= 0.4" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - } - }, "node_modules/es-to-primitive": { "version": "1.2.1", "dev": true, @@ -13221,355 +13056,95 @@ "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-import-resolver-custom-alias": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-parent": "^5.1.0", - "resolve": "^1.3.0" - }, - "peerDependencies": { - "eslint-plugin-import": ">=2.2.0" - } - }, - "node_modules/eslint-import-resolver-custom-alias/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-cypress": { - "version": "2.12.1", - "dev": true, - "license": "MIT", - "dependencies": { - "globals": "^11.12.0" - }, - "peerDependencies": { - "eslint": ">= 3.2.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/eslint-plugin-react/node_modules/estraverse": { + "node_modules/escodegen/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "optional": true, "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, - "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { - "resolve": "bin/resolve" + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-cypress": { + "version": "2.12.1", + "dev": true, + "license": "MIT", + "dependencies": { + "globals": "^11.12.0" + }, + "peerDependencies": { + "eslint": ">= 3.2.1" } }, "node_modules/eslint-plugin-vue": { @@ -16604,14 +16179,6 @@ "@babel/runtime": "^7.14.0" } }, - "node_modules/is-map": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-module": { "version": "1.0.0", "dev": true, @@ -16725,14 +16292,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-set": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "dev": true, @@ -16820,14 +16379,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "dev": true, @@ -16839,18 +16390,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakset": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-whitespace": { "version": "0.3.0", "dev": true, @@ -20959,18 +20498,6 @@ ], "license": "MIT" }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - }, - "engines": { - "node": ">=4.0" - } - }, "node_modules/just-diff": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/just-diff/-/just-diff-6.0.2.tgz", @@ -21011,19 +20538,6 @@ "node": ">= 8" } }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/language-tags": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, "node_modules/launch-editor": { "version": "2.6.0", "dev": true, @@ -22915,21 +22429,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-is": { - "version": "1.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object-keys": { "version": "1.1.1", "dev": true, @@ -22955,63 +22454,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.entries": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/objectorarray": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", @@ -24384,14 +23826,16 @@ } }, "node_modules/prettier": { - "version": "2.8.8", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, "license": "MIT", - "optional": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" }, "funding": { "url": "https://github.com/prettier/prettier?sponsor=1" @@ -24686,21 +24130,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "dev": true, - "license": "MIT" - }, "node_modules/properties-parser": { "version": "0.3.1", "dev": true, @@ -26903,17 +26332,6 @@ "node": ">= 0.6" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "internal-slot": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/stream-browserify": { "version": "3.0.0", "license": "MIT", @@ -27956,36 +27374,6 @@ "strip-json-comments": "^2.0.0" } }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tsconfig-paths/node_modules/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/tsconfig/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -29550,20 +28938,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/which-collection": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/which-typed-array": { "version": "1.1.9", "license": "MIT", diff --git a/package.json b/package.json index 04dedcde5..34b0433e5 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "build:cordova": "VUE_APP_CORDOVA=true npm run build", "build:ios": "npm run build:cordova && cordova build ios", "build:android": "npm run build:cordova && cordova build android", - "lint": "NODE_ENV=production vue-cli-service lint . --no-fix", + "format": "prettier . --write", + "lint": "prettier . --check && NODE_ENV=production vue-cli-service lint . --no-fix", "test": "npm run lint && npm run test:unit && npm run test:e2e -- --headless", "test:e2e": "vue-cli-service test:e2e --mode docker", "test:unit": "vue-cli-service test:unit", @@ -65,7 +66,6 @@ "@vue/cli-plugin-pwa": "^5.0.8", "@vue/cli-plugin-unit-jest": "^5.0.8", "@vue/cli-service": "^5.0.8", - "@vue/eslint-config-airbnb": "^7.0.1", "@vue/preload-webpack-plugin": "^2.0.0", "@vue/test-utils": "^1.3.5", "@vue/vue2-jest": "^29.2.6", @@ -79,6 +79,7 @@ "eslint-plugin-vuejs-accessibility": "^2.3.0", "jest": "^29.7.0", "jest-canvas-mock": "^2.5.2", + "prettier": "^3.4.2", "sass": "^1.77.2", "sass-loader": "^14.2.1", "serve": "^14.2.3", diff --git a/public/.well-known/assetlinks.json b/public/.well-known/assetlinks.json index ed1f9f077..db62fb6cb 100644 --- a/public/.well-known/assetlinks.json +++ b/public/.well-known/assetlinks.json @@ -1,8 +1,6 @@ [ { - "relation": [ - "delegate_permission/common.handle_all_urls" - ], + "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.aeternity.base", diff --git a/public/index.html b/public/index.html index d0bbcceae..5bb9ba692 100644 --- a/public/index.html +++ b/public/index.html @@ -1,17 +1,23 @@ - + - - + + Base æpp - - - - + + + + - - + + - - - <% googleFontsUrl = 'https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500;600;700&family=Inter:wght@400;500;600;700&display=swap' %> - - + + + <% googleFontsUrl = + 'https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500;600;700&family=Inter:wght@400;500;600;700&display=swap' + %> + + @@ -44,8 +59,7 @@ @@ -59,10 +73,11 @@ return; } - document.body.innerHTML = '

' - + 'Base app has failed to run in this browser.' - + '

'; - } + document.body.innerHTML = + '

' + + 'Base app has failed to run in this browser.' + + '

'; + }; <% if (process.env.VUE_APP_CORDOVA) { %> diff --git a/src/App.vue b/src/App.vue index 235f80455..0d92102cf 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,9 +1,6 @@ - + {{ $globals.ENV_MOBILE_DEVICE ? $t('transfer.send.to.paste') : '' }} - + {{ $globals.ENV_MOBILE_DEVICE ? $t('transfer.send.to.scan') : '' }} @@ -80,9 +73,7 @@ const ADDRESS_PREFIX = 'ak_'; const FORMATTED_ADDRESS_REGEXP = /^ak_[1-9A-HJ-NP-Za-km-z ]+$/; const NOT_BASE58_CHARS = /[^1-9A-HJ-NP-Za-km-z]/g; const formatAddress = (address) => { - let res = address - .slice(ADDRESS_PREFIX.length) - .replace(NOT_BASE58_CHARS, ''); + let res = address.slice(ADDRESS_PREFIX.length).replace(NOT_BASE58_CHARS, ''); if (!res) return ADDRESS_PREFIX; @@ -143,9 +134,11 @@ export default { }, }), subscriptions() { - return !ENV_MOBILE_DEVICE && { - accounts: this.$store.state.observables.inactiveAccounts, - }; + return ( + !ENV_MOBILE_DEVICE && { + accounts: this.$store.state.observables.inactiveAccounts, + } + ); }, methods: { setValue(newValue) { @@ -157,17 +150,21 @@ export default { this.showAccountsDropdown = false; }, async readValueFromQrCode() { - this.setValue(await this.$store.dispatch('modals/open', { - name: 'readQrCode', - title: this.$t('transfer.send.to.scan-address'), - })); + this.setValue( + await this.$store.dispatch('modals/open', { + name: 'readQrCode', + title: this.$t('transfer.send.to.scan-address'), + }), + ); }, async readValueFromClipboard() { - this.setValue(await (process.env.VUE_APP_CORDOVA - ? new Promise((...args) => { - window.cordova.plugins.clipboard.paste(...args); - }) - : navigator.clipboard.readText())); + this.setValue( + await (process.env.VUE_APP_CORDOVA + ? new Promise((...args) => { + window.cordova.plugins.clipboard.paste(...args); + }) + : navigator.clipboard.readText()), + ); }, }, }; @@ -178,6 +175,6 @@ export default { .ae-input-address .ae-identicon { height: functions.rem(20px); - vertical-align: -.4em; + vertical-align: -0.4em; } diff --git a/src/components/AeInputAmount.vue b/src/components/AeInputAmount.vue index 3c95f8709..fced61a99 100644 --- a/src/components/AeInputAmount.vue +++ b/src/components/AeInputAmount.vue @@ -1,18 +1,7 @@ diff --git a/src/components/Page.vue b/src/components/Page.vue index 3c0f4d0d2..6df834bbe 100644 --- a/src/components/Page.vue +++ b/src/components/Page.vue @@ -14,10 +14,7 @@ -
+
@@ -49,25 +46,13 @@ export default { props: { headerFill: { type: String, - validator: (value) => [ - 'primary', - 'alternative', - 'neutral', - 'dark', - 'light', - '', - ].includes(value), + validator: (value) => + ['primary', 'alternative', 'neutral', 'dark', 'light', ''].includes(value), default: '', }, fill: { type: String, - validator: (value) => [ - 'primary', - 'alternative', - 'neutral', - 'dark', - 'light', - ].includes(value), + validator: (value) => ['primary', 'alternative', 'neutral', 'dark', 'light'].includes(value), default: 'light', }, hideTabBar: Boolean, @@ -78,11 +63,16 @@ export default { await new Promise((resolve) => { document.addEventListener('deviceready', resolve); }); - this.$watch(({ headerFill, fill }) => headerFill || fill, (fill) => { - const style = ['primary', 'alternative', 'dark'] - .includes(fill) ? 'LightContent' : 'Default'; - window.StatusBar[`style${style}`](); - }, { immediate: true }); + this.$watch( + ({ headerFill, fill }) => headerFill || fill, + (fill) => { + const style = ['primary', 'alternative', 'dark'].includes(fill) + ? 'LightContent' + : 'Default'; + window.StatusBar[`style${style}`](); + }, + { immediate: true }, + ); this.$once('hook:destroyed', () => window.StatusBar.styleDefault()); } }, @@ -171,7 +161,8 @@ export default { } > { - h2, p { + h2, + p { @extend %face-sans-s; } diff --git a/src/components/PageHeader.vue b/src/components/PageHeader.vue index a288ad6d7..572eee919 100644 --- a/src/components/PageHeader.vue +++ b/src/components/PageHeader.vue @@ -1,8 +1,5 @@