diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 94f0ccf..0000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,25 +0,0 @@ -/* eslint-env node */ -require('@rushstack/eslint-patch/modern-module-resolution') - -module.exports = { - root: true, - extends: [ - 'eslint:recommended', - 'plugin:@ecocode/recommended', - 'plugin:vue/vue3-essential', - '@vue/eslint-config-prettier/skip-formatting', - 'plugin:storybook/recommended' - ], - overrides: [ - { - files: ['e2e/**/*.{test,spec}.{js,ts,jsx,tsx}'], - extends: ['plugin:playwright/recommended'] - } - ], - parserOptions: { - ecmaVersion: 'latest' - }, - globals: { - process: true - } -} diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..41480b0 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,63 @@ +import globals from "globals"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import js from "@eslint/js"; +import { includeIgnoreFile } from "@eslint/compat"; + +import markdown from 'eslint-plugin-markdown' +import vue from 'eslint-plugin-vue' +import prettier from "eslint-config-prettier"; +import ecocode from '@ecocode/eslint-plugin' + +import playwright from 'eslint-plugin-playwright' +import storybook from 'eslint-plugin-storybook' + +// Safely retrieve the .gitignore path +// see https://eslint.org/docs/latest/use/configure/ignore#including-gitignore-files +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const gitignorePath = path.resolve(__dirname, ".gitignore"); + + +// patch ecocode plugin for flat config support +// see https://eslint.org/docs/latest/extend/plugin-migration-flat-config +if (!ecocode.configs['flat/recommended']) { + ecocode.meta = { + name: "@ecocode/eslint-plugin", + version: "1.5.0" + } + ecocode.configs['flat/recommended'] = { + plugins: { + '@ecocode': ecocode + }, + rules: ecocode.configs.recommended.rules, + }; +} + +export default [ + includeIgnoreFile(gitignorePath), + prettier, + { + files: ["**/*.vue", "**/*.js"], + languageOptions: { + ecmaVersion: 'latest', + sourceType: "module", + globals: { + ...globals.node, // probably to be removed - allow node for node.process in main.js sonar-i18n.js + } + }, + }, + js.configs.recommended, + ...markdown.configs.recommended, + ...vue.configs['flat/recommended'], + ecocode.configs['flat/recommended'], + { + ...storybook.configs['plugin:storybook/recommended'], + files: ['**/*.stories.js'], + }, + { + ...playwright.configs['flat/recommended'], + files: ['e2e/**/*.spec.js'], + }, +] \ No newline at end of file diff --git a/package.json b/package.json index df14cd8..c1004c5 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "serve:sonar": "node src/api/sonar/mock/server.js", "sonar": "pnpm coverage && pnpm exec sonar-scanner -Dsonar.login=$SONAR", "test:e2e": "playwright test", - "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore", + "lint": "eslint . --fix", "format": "prettier --write src/", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build" @@ -32,8 +32,9 @@ "@commitlint/cli": "^19.3.0", "@commitlint/config-conventional": "^19.2.2", "@ecocode/eslint-plugin": "^1.5.0", + "@eslint/compat": "^1.1.1", + "@eslint/js": "^9.8.0", "@playwright/test": "^1.44.1", - "@rushstack/eslint-patch": "^1.10.3", "@storybook/addon-a11y": "^8.1.10", "@storybook/addon-coverage": "^1.0.4", "@storybook/addon-essentials": "^8.1.10", @@ -45,13 +46,15 @@ "@storybook/vue3-vite": "^8.1.10", "@vitejs/plugin-vue": "^5.0.5", "@vitest/coverage-v8": "^1.6.0", - "@vue/eslint-config-prettier": "^9.0.0", "@vue/test-utils": "^2.4.6", "axe-playwright": "^2.0.1", "eslint": "^8.57.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-markdown": "^5.1.0", "eslint-plugin-playwright": "^1.6.2", "eslint-plugin-storybook": "^0.8.0", "eslint-plugin-vue": "^9.27.0", + "globals": "^15.9.0", "jsdom": "^24.1.0", "msw": "^2.3.1", "prettier": "3.2.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4460066..940e2d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,12 +30,15 @@ importers: '@ecocode/eslint-plugin': specifier: ^1.5.0 version: 1.5.0(eslint@8.57.0) + '@eslint/compat': + specifier: ^1.1.1 + version: 1.1.1 + '@eslint/js': + specifier: ^9.8.0 + version: 9.8.0 '@playwright/test': specifier: ^1.44.1 version: 1.44.1 - '@rushstack/eslint-patch': - specifier: ^1.10.3 - version: 1.10.3 '@storybook/addon-a11y': specifier: ^8.1.10 version: 8.1.10 @@ -69,9 +72,6 @@ importers: '@vitest/coverage-v8': specifier: ^1.6.0 version: 1.6.0(vitest@1.6.0(@types/node@20.14.5)(jsdom@24.1.0)) - '@vue/eslint-config-prettier': - specifier: ^9.0.0 - version: 9.0.0(eslint@8.57.0)(prettier@3.2.5) '@vue/test-utils': specifier: ^2.4.6 version: 2.4.6 @@ -81,6 +81,12 @@ importers: eslint: specifier: ^8.57.0 version: 8.57.0 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-plugin-markdown: + specifier: ^5.1.0 + version: 5.1.0(eslint@8.57.0) eslint-plugin-playwright: specifier: ^1.6.2 version: 1.6.2(eslint@8.57.0) @@ -90,6 +96,9 @@ importers: eslint-plugin-vue: specifier: ^9.27.0 version: 9.27.0(eslint@8.57.0) + globals: + specifier: ^15.9.0 + version: 15.9.0 jsdom: specifier: ^24.1.0 version: 24.1.0 @@ -1243,6 +1252,10 @@ packages: resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + '@eslint/compat@1.1.1': + resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1251,6 +1264,10 @@ packages: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.8.0': + resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@fal-works/esbuild-plugin-global-externals@2.1.2': resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} @@ -1434,10 +1451,6 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@pkgr/core@0.1.1': - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@playwright/test@1.44.1': resolution: {integrity: sha512-1hZ4TNvD5z9VuhNJ/walIjvMVvYkZKf71axoF/uiAqpntQJXpG64dlXhoDXE3OczPuTuvjf/M5KWFg5VAVUS3Q==} engines: {node: '>=16'} @@ -1697,9 +1710,6 @@ packages: cpu: [x64] os: [win32] - '@rushstack/eslint-patch@1.10.3': - resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} - '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -1839,10 +1849,10 @@ packages: prettier: optional: true - '@storybook/core-common@8.3.0-alpha.2': - resolution: {integrity: sha512-0dDcpQeclzVCfT9FFHMP8A58qIDiNjoErSe/Vy9YmpubwbDfWfqn+VX7n7OlMKm1IjnSrJJDz0QqF/ZMimfN+Q==} + '@storybook/core-common@8.3.0-alpha.8': + resolution: {integrity: sha512-/5YRbCn2ulczUB2sUPrUclRMYEiAhibRuL4JFZWJlWiGpcHjBmYW7KNzTM/iVGjRd5JUgeBNhlnTjZQ4Hwb0hw==} peerDependencies: - storybook: ^8.3.0-alpha.2 + storybook: ^8.3.0-alpha.8 '@storybook/core-events@6.5.16': resolution: {integrity: sha512-qMZQwmvzpH5F2uwNUllTPg6eZXr2OaYZQRRN8VZJiuorZzDNdAFmiVWMWdkThwmyLEJuQKXxqCL8lMj/7PPM+g==} @@ -1862,10 +1872,10 @@ packages: '@storybook/csf-tools@8.1.10': resolution: {integrity: sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==} - '@storybook/csf-tools@8.3.0-alpha.2': - resolution: {integrity: sha512-Ii3RsoLneSxSQUsPSShuYykJO6FUipdppqwq9fu4JAcOYdZgCJRntQ4wJ1gKAbJSNYmvG8gLrgq0l72OWpiVOA==} + '@storybook/csf-tools@8.3.0-alpha.8': + resolution: {integrity: sha512-TpfrdRgX2WksznzAGoSjZqKPri9YSNq9L3Xc6ojGrkV7H3Vks5BGcRU0U05aqXIvwguk9m32LWtHIsadhXJNOg==} peerDependencies: - storybook: ^8.3.0-alpha.2 + storybook: ^8.3.0-alpha.8 '@storybook/csf@0.0.1': resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} @@ -1915,10 +1925,10 @@ packages: '@storybook/preview-api@8.1.10': resolution: {integrity: sha512-0Gl8WHDtp/srrA5uBYXl7YbC8kFQA7IxVmwWN7dIS7HAXu63JZ6JfxaFcfy+kCBfZSBD7spFG4J0f5JXRDYbpg==} - '@storybook/preview-api@8.3.0-alpha.2': - resolution: {integrity: sha512-W7Xr8+Ow8+7kT0s0SL8Ls2O+iJRlT7FQXY0C/H1zl1zOB87e5EaPnn7ypYEdV5b1EASp8YSwQ0RuAocjtmzYIw==} + '@storybook/preview-api@8.3.0-alpha.8': + resolution: {integrity: sha512-KxWqKRAkphIjNfMIb54AlLn0F+xnb+x0nBuHuZiYR+uBwQUg2zhH5uNf1Nw6EyaUL3Pa7Hlz2xL/w8IIyXBqpA==} peerDependencies: - storybook: ^8.3.0-alpha.2 + storybook: ^8.3.0-alpha.8 '@storybook/preview@8.1.10': resolution: {integrity: sha512-Ch7SJQ8/vm4o7ZPwPeL3nGOCKx1Aul7VcvOVkDs+K2lZusJjUROHVTBYlbs71DTTmCo2gS7WhSq+HOpD59BPDg==} @@ -2210,6 +2220,9 @@ packages: '@types/lodash@4.17.5': resolution: {integrity: sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==} + '@types/mdast@3.0.15': + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} @@ -2264,6 +2277,9 @@ packages: '@types/statuses@2.0.5': resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + '@types/unist@2.0.10': + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} @@ -2399,12 +2415,6 @@ packages: '@vue/devtools-shared@7.3.1': resolution: {integrity: sha512-TYbJLZwBy5+SliE095T+V0IMwRu+oP7I2KAsDuNtSsjHKITZvrhz2fNEvik9NsTLcEQBBoX81NvdgpoB29JAog==} - '@vue/eslint-config-prettier@9.0.0': - resolution: {integrity: sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==} - peerDependencies: - eslint: '>= 8.0.0' - prettier: '>= 3.0.0' - '@vue/language-core@2.0.21': resolution: {integrity: sha512-vjs6KwnCK++kIXT+eI63BGpJHfHNVJcUCr3RnvJsccT3vbJnZV5IhHR2puEkoOkIbDdp0Gqi1wEnv3hEd3WsxQ==} peerDependencies: @@ -2826,9 +2836,18 @@ packages: resolution: {integrity: sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==} engines: {node: '>=12.20'} + character-entities-legacy@1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + + character-entities@1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + character-parser@2.2.0: resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==} + character-reference-invalid@1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} @@ -3401,6 +3420,12 @@ packages: peerDependencies: eslint: '>=7.0.0' + eslint-plugin-markdown@5.1.0: + resolution: {integrity: sha512-SJeyKko1K6GwI0AN6xeCDToXDkfKZfXcexA6B+O2Wr2btUS9GrC+YgwSyVli5DJnctUHjFXcQ2cqTaAmVoLi2A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8' + eslint-plugin-playwright@1.6.2: resolution: {integrity: sha512-mraN4Em3b5jLt01q7qWPyLg0Q5v3KAWfJSlEWwldyUXoa7DSPrBR4k6B6LROLqipsG8ndkwWMdjl1Ffdh15tag==} engines: {node: '>=16.6.0'} @@ -3411,20 +3436,6 @@ packages: eslint-plugin-jest: optional: true - eslint-plugin-prettier@5.1.3: - resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - eslint-plugin-storybook@0.8.0: resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} engines: {node: '>= 18'} @@ -3526,9 +3537,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -3790,6 +3798,10 @@ packages: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} + globals@15.9.0: + resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} + engines: {node: '>=18'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -3989,6 +4001,12 @@ packages: resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-alphabetical@1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + + is-alphanumerical@1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + is-arguments@1.1.1: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} @@ -4022,6 +4040,9 @@ packages: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} + is-decimal@1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -4058,6 +4079,9 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-hexadecimal@1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -4645,6 +4669,12 @@ packages: peerDependencies: react: '>= 0.14.0' + mdast-util-from-markdown@0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + + mdast-util-to-string@2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -4677,6 +4707,9 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} + micromark@2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + micromatch@4.0.7: resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} engines: {node: '>=8.6'} @@ -4981,6 +5014,9 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-entities@2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -5120,10 +5156,6 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - prettier@3.2.5: resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} @@ -5722,10 +5754,6 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} - tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -5949,6 +5977,9 @@ packages: unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + unist-util-stringify-position@2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} @@ -6147,8 +6178,8 @@ packages: vue-component-type-helpers@2.0.21: resolution: {integrity: sha512-3NaicyZ7N4B6cft4bfb7dOnPbE9CjLcx+6wZWAg5zwszfO4qXRh+U52dN5r5ZZfc6iMaxKCEcoH9CmxxoFZHLg==} - vue-component-type-helpers@2.0.28: - resolution: {integrity: sha512-hoK0UsKXrXDY9zdpdk+drqOqYHpPhbmfQUJ2mFYK57+l73mQxcYyCteQsolllwGaxhWihT077+OA/FR5ZPTceg==} + vue-component-type-helpers@2.0.29: + resolution: {integrity: sha512-58i+ZhUAUpwQ+9h5Hck0D+jr1qbYl4voRt5KffBx8qzELViQ4XdT/Tuo+mzq8u63teAG8K0lLaOiL5ofqW38rg==} vue-docgen-api@4.78.0: resolution: {integrity: sha512-RsZf+qzTttCCAN9v7AKmBykc2QWmO8csVk1c2aXeOktomSOu0NA7sgK4ObuRB5lpmtOvTnwuxssyYmxXxABr+A==} @@ -6537,7 +6568,7 @@ snapshots: '@babel/helper-function-name': 7.24.7 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.8) + '@babel/helper-replace-supers': 7.24.7(@babel/core@7.24.7) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 semver: 6.3.1 @@ -6659,15 +6690,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.24.7(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.7 - '@babel/helper-optimise-call-expression': 7.24.7 - transitivePeerDependencies: - - supports-color - '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.24.7 @@ -6849,11 +6871,6 @@ snapshots: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -6874,11 +6891,6 @@ snapshots: '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.8)': - dependencies: - '@babel/core': 7.24.8 - '@babel/helper-plugin-utils': 7.24.7 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.7)': dependencies: '@babel/core': 7.24.7 @@ -6950,7 +6962,7 @@ snapshots: '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.8)': dependencies: '@babel/core': 7.24.8 - '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.8) + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color @@ -7083,7 +7095,7 @@ snapshots: '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.8)': dependencies: '@babel/core': 7.24.8 - '@babel/helper-module-transforms': 7.24.8(@babel/core@7.24.8) + '@babel/helper-module-transforms': 7.24.8(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: @@ -7128,7 +7140,7 @@ snapshots: dependencies: '@babel/core': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.8) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.7)': dependencies: @@ -7172,7 +7184,7 @@ snapshots: '@babel/core': 7.24.8 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.8) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) transitivePeerDependencies: - supports-color @@ -7192,7 +7204,7 @@ snapshots: '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.8)': dependencies: '@babel/core': 7.24.8 - '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.8) + '@babel/helper-create-class-features-plugin': 7.24.8(@babel/core@7.24.7) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color @@ -7764,6 +7776,8 @@ snapshots: '@eslint-community/regexpp@4.10.1': {} + '@eslint/compat@1.1.1': {} + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 @@ -7780,6 +7794,8 @@ snapshots: '@eslint/js@8.57.0': {} + '@eslint/js@9.8.0': {} + '@fal-works/esbuild-plugin-global-externals@2.1.2': {} '@hapi/hoek@9.3.0': {} @@ -8080,8 +8096,6 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@pkgr/core@0.1.1': {} - '@playwright/test@1.44.1': dependencies: playwright: 1.44.1 @@ -8289,8 +8303,6 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true - '@rushstack/eslint-patch@1.10.3': {} - '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -8675,7 +8687,7 @@ snapshots: - encoding - supports-color - '@storybook/core-common@8.3.0-alpha.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/core-common@8.3.0-alpha.8(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': dependencies: storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) @@ -8783,7 +8795,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/csf-tools@8.3.0-alpha.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/csf-tools@8.3.0-alpha.8(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': dependencies: storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) @@ -8886,7 +8898,7 @@ snapshots: ts-dedent: 2.2.0 util-deprecate: 1.0.2 - '@storybook/preview-api@8.3.0-alpha.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': + '@storybook/preview-api@8.3.0-alpha.8(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)))': dependencies: storybook: 8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8)) @@ -9030,7 +9042,7 @@ snapshots: ts-dedent: 2.2.0 type-fest: 2.19.0 vue: 3.4.29(typescript@5.5.2) - vue-component-type-helpers: 2.0.28 + vue-component-type-helpers: 2.0.29 transitivePeerDependencies: - encoding - prettier @@ -9253,6 +9265,10 @@ snapshots: '@types/lodash@4.17.5': {} + '@types/mdast@3.0.15': + dependencies: + '@types/unist': 2.0.10 + '@types/mdx@2.0.13': {} '@types/mime@1.3.5': {} @@ -9309,6 +9325,8 @@ snapshots: '@types/statuses@2.0.5': {} + '@types/unist@2.0.10': {} + '@types/unist@3.0.2': {} '@types/uuid@9.0.8': {} @@ -9540,15 +9558,6 @@ snapshots: dependencies: rfdc: 1.4.1 - '@vue/eslint-config-prettier@9.0.0(eslint@8.57.0)(prettier@3.2.5)': - dependencies: - eslint: 8.57.0 - eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5) - prettier: 3.2.5 - transitivePeerDependencies: - - '@types/eslint' - '@vue/language-core@2.0.21(typescript@5.5.2)': dependencies: '@volar/language-core': 2.3.0 @@ -10025,10 +10034,16 @@ snapshots: char-regex@2.0.1: {} + character-entities-legacy@1.1.4: {} + + character-entities@1.2.4: {} + character-parser@2.2.0: dependencies: is-regex: 1.1.4 + character-reference-invalid@1.1.4: {} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 @@ -10614,19 +10629,17 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-plugin-playwright@1.6.2(eslint@8.57.0): + eslint-plugin-markdown@5.1.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - globals: 13.24.0 + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color - eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.2.5): + eslint-plugin-playwright@1.6.2(eslint@8.57.0): dependencies: eslint: 8.57.0 - prettier: 3.2.5 - prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 - optionalDependencies: - eslint-config-prettier: 9.1.0(eslint@8.57.0) + globals: 13.24.0 eslint-plugin-storybook@0.8.0(eslint@8.57.0)(typescript@5.5.2): dependencies: @@ -10818,8 +10831,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-diff@1.3.0: {} - fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -11101,6 +11112,8 @@ snapshots: dependencies: type-fest: 0.20.2 + globals@15.9.0: {} + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -11300,6 +11313,13 @@ snapshots: is-absolute-url@4.0.1: {} + is-alphabetical@1.0.4: {} + + is-alphanumerical@1.0.4: + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + is-arguments@1.1.1: dependencies: call-bind: 1.0.7 @@ -11335,6 +11355,8 @@ snapshots: dependencies: has-tostringtag: 1.0.2 + is-decimal@1.0.4: {} + is-docker@2.2.1: {} is-docker@3.0.0: {} @@ -11360,6 +11382,8 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-hexadecimal@1.0.4: {} + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -12173,6 +12197,18 @@ snapshots: dependencies: react: 18.3.1 + mdast-util-from-markdown@0.8.5: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + + mdast-util-to-string@2.0.0: {} + media-typer@0.3.0: {} memoize@10.0.0: @@ -12197,6 +12233,13 @@ snapshots: methods@1.1.2: {} + micromark@2.11.4: + dependencies: + debug: 4.3.5 + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + micromatch@4.0.7: dependencies: braces: 3.0.3 @@ -12519,6 +12562,15 @@ snapshots: dependencies: callsites: 3.1.0 + parse-entities@2.0.0: + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.7 @@ -12630,10 +12682,6 @@ snapshots: prelude-ls@1.2.1: {} - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - prettier@3.2.5: {} pretty-format@27.5.1: @@ -13319,11 +13367,6 @@ snapshots: symbol-tree@3.2.4: {} - synckit@0.8.8: - dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.6.3 - tapable@2.2.1: {} tar@6.2.1: @@ -13378,10 +13421,10 @@ snapshots: '@babel/template': 7.24.7 '@babel/types': 7.24.7 '@jest/types': 29.6.3 - '@storybook/core-common': 8.3.0-alpha.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + '@storybook/core-common': 8.3.0-alpha.8(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) '@storybook/csf': 0.1.8 - '@storybook/csf-tools': 8.3.0-alpha.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) - '@storybook/preview-api': 8.3.0-alpha.2(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + '@storybook/csf-tools': 8.3.0-alpha.8(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) + '@storybook/preview-api': 8.3.0-alpha.8(storybook@8.2.2(@babel/preset-env@7.24.8(@babel/core@7.24.8))) '@swc/core': 1.6.1 '@swc/jest': 0.2.36(@swc/core@1.6.1) dependency-cruiser: 16.3.3 @@ -13544,6 +13587,10 @@ snapshots: dependencies: '@types/unist': 3.0.2 + unist-util-stringify-position@2.0.3: + dependencies: + '@types/unist': 2.0.10 + unist-util-visit-parents@6.0.1: dependencies: '@types/unist': 3.0.2 @@ -13770,7 +13817,7 @@ snapshots: vue-component-type-helpers@2.0.21: {} - vue-component-type-helpers@2.0.28: {} + vue-component-type-helpers@2.0.29: {} vue-docgen-api@4.78.0(vue@3.4.29(typescript@5.5.2)): dependencies: diff --git a/src/App.spec.js b/src/App.spec.js new file mode 100644 index 0000000..186f93a --- /dev/null +++ b/src/App.spec.js @@ -0,0 +1,16 @@ +import { describe, it, expect } from 'vitest' + +import { mount } from '@vue/test-utils' + +import App from './App.vue' + +describe('App', () => { + + it('App renders properly by default', () => { + const wrapper = mount(App) + expect(wrapper.exists()).toBeTruthy() + expect(wrapper.html()).toContain('You did it!') + }) + +}) + \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index 43c280e..ad68eda 100644 --- a/src/App.vue +++ b/src/App.vue @@ -12,17 +12,19 @@ async function fetchIssues() {