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() {
-