From 738381ee16cbe0d998acb9614c18afe87e48d392 Mon Sep 17 00:00:00 2001 From: Clement Date: Mon, 20 May 2024 12:13:11 +0200 Subject: [PATCH] update config --- front/.editorconfig | 12 + front/.gitignore | 10 +- front/.prettierignore | 4 + front/.prettierrc.cjs | 13 + front/.stackblitzrc | 6 + front/.vscode/astrowind/config-schema.json | 275 +++++++++++++++++++++ front/.vscode/extensions.json | 8 +- front/.vscode/settings.json | 15 ++ front/eslint.config.js | 59 +++++ front/tsconfig.json | 2 +- front/vscode.tailwind.json | 17 ++ 11 files changed, 414 insertions(+), 7 deletions(-) create mode 100644 front/.editorconfig create mode 100644 front/.prettierignore create mode 100644 front/.prettierrc.cjs create mode 100644 front/.stackblitzrc create mode 100644 front/.vscode/astrowind/config-schema.json create mode 100644 front/.vscode/settings.json create mode 100644 front/eslint.config.js create mode 100644 front/vscode.tailwind.json diff --git a/front/.editorconfig b/front/.editorconfig new file mode 100644 index 0000000..8927e2c --- /dev/null +++ b/front/.editorconfig @@ -0,0 +1,12 @@ +# https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = false \ No newline at end of file diff --git a/front/.gitignore b/front/.gitignore index 016b59e..33741a8 100644 --- a/front/.gitignore +++ b/front/.gitignore @@ -1,8 +1,6 @@ # build output dist/ - -# generated types -.astro/ +.output/ # dependencies node_modules/ @@ -13,6 +11,7 @@ yarn-debug.log* yarn-error.log* pnpm-debug.log* + # environment variables .env .env.production @@ -20,5 +19,6 @@ pnpm-debug.log* # macOS-specific files .DS_Store -# jetbrains setting folder -.idea/ +pnpm-lock.yaml + +.astro \ No newline at end of file diff --git a/front/.prettierignore b/front/.prettierignore new file mode 100644 index 0000000..76b517c --- /dev/null +++ b/front/.prettierignore @@ -0,0 +1,4 @@ +dist +node_modules +.github +.changeset \ No newline at end of file diff --git a/front/.prettierrc.cjs b/front/.prettierrc.cjs new file mode 100644 index 0000000..752ef12 --- /dev/null +++ b/front/.prettierrc.cjs @@ -0,0 +1,13 @@ +/** @type {import('prettier').Config} */ +module.exports = { + printWidth: 120, + semi: true, + singleQuote: true, + tabWidth: 2, + trailingComma: 'es5', + useTabs: false, + + plugins: [require.resolve('prettier-plugin-astro')], + + overrides: [{ files: '*.astro', options: { parser: 'astro' } }], +}; diff --git a/front/.stackblitzrc b/front/.stackblitzrc new file mode 100644 index 0000000..43798ec --- /dev/null +++ b/front/.stackblitzrc @@ -0,0 +1,6 @@ +{ + "startCommand": "npm start", + "env": { + "ENABLE_CJS_IMPORTS": true + } +} \ No newline at end of file diff --git a/front/.vscode/astrowind/config-schema.json b/front/.vscode/astrowind/config-schema.json new file mode 100644 index 0000000..3297fa3 --- /dev/null +++ b/front/.vscode/astrowind/config-schema.json @@ -0,0 +1,275 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "site": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "site": { + "type": "string" + }, + "base": { + "type": "string" + }, + "trailingSlash": { + "type": "boolean" + }, + "googleSiteVerificationId": { + "type": "string" + } + }, + "required": ["name", "site", "base", "trailingSlash"], + "additionalProperties": false + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "object", + "properties": { + "default": { + "type": "string" + }, + "template": { + "type": "string" + } + }, + "required": ["default", "template"] + }, + "description": { + "type": "string" + }, + "robots": { + "type": "object", + "properties": { + "index": { + "type": "boolean" + }, + "follow": { + "type": "boolean" + } + }, + "required": ["index", "follow"] + }, + "openGraph": { + "type": "object", + "properties": { + "site_name": { + "type": "string" + }, + "images": { + "type": "array", + "items": [ + { + "type": "object", + "properties": { + "url": { + "type": "string" + }, + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + } + }, + "required": ["url", "width", "height"] + } + ] + }, + "type": { + "type": "string" + } + }, + "required": ["site_name", "images", "type"] + }, + "twitter": { + "type": "object", + "properties": { + "handle": { + "type": "string" + }, + "site": { + "type": "string" + }, + "cardType": { + "type": "string" + } + }, + "required": ["handle", "site", "cardType"] + } + }, + "required": ["title", "description", "robots", "openGraph", "twitter"] + }, + "i18n": { + "type": "object", + "properties": { + "language": { + "type": "string" + }, + "textDirection": { + "type": "string" + } + }, + "required": ["language", "textDirection"] + }, + "apps": { + "type": "object", + "properties": { + "blog": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean" + }, + "postsPerPage": { + "type": "integer" + }, + "isRelatedPostsEnabled": { + "type": "boolean" + }, + "relatedPostsCount": { + "type": "integer" + }, + "post": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean" + }, + "permalink": { + "type": "string" + }, + "robots": { + "type": "object", + "properties": { + "index": { + "type": "boolean" + }, + "follow": { + "type": "boolean" + } + }, + "required": ["index"] + } + }, + "required": ["isEnabled", "permalink", "robots"] + }, + "list": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean" + }, + "pathname": { + "type": "string" + }, + "robots": { + "type": "object", + "properties": { + "index": { + "type": "boolean" + }, + "follow": { + "type": "boolean" + } + }, + "required": ["index"] + } + }, + "required": ["isEnabled", "pathname", "robots"] + }, + "category": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean" + }, + "pathname": { + "type": "string" + }, + "robots": { + "type": "object", + "properties": { + "index": { + "type": "boolean" + }, + "follow": { + "type": "boolean" + } + }, + "required": ["index"] + } + }, + "required": ["isEnabled", "pathname", "robots"] + }, + "tag": { + "type": "object", + "properties": { + "isEnabled": { + "type": "boolean" + }, + "pathname": { + "type": "string" + }, + "robots": { + "type": "object", + "properties": { + "index": { + "type": "boolean" + }, + "follow": { + "type": "boolean" + } + }, + "required": ["index"] + } + }, + "required": ["isEnabled", "pathname", "robots"] + } + }, + "required": ["isEnabled", "postsPerPage", "post", "list", "category", "tag"] + } + }, + "required": ["blog"] + }, + "analytics": { + "type": "object", + "properties": { + "vendors": { + "type": "object", + "properties": { + "googleAnalytics": { + "type": "object", + "properties": { + "id": { + "type": ["string", "null"] + }, + "partytown": { + "type": "boolean", + "default": true + } + }, + "required": ["id"] + } + }, + "required": ["googleAnalytics"] + } + }, + "required": ["vendors"] + }, + "ui": { + "type": "object", + "properties": { + "theme": { + "type": "string" + } + }, + "required": ["theme"] + } + }, + "required": ["site", "metadata", "i18n", "apps", "analytics", "ui"] +} diff --git a/front/.vscode/extensions.json b/front/.vscode/extensions.json index 22a1505..ec1bfc0 100644 --- a/front/.vscode/extensions.json +++ b/front/.vscode/extensions.json @@ -1,4 +1,10 @@ { - "recommendations": ["astro-build.astro-vscode"], + "recommendations": [ + "astro-build.astro-vscode", + "bradlc.vscode-tailwindcss", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "unifiedjs.vscode-mdx" + ], "unwantedRecommendations": [] } diff --git a/front/.vscode/settings.json b/front/.vscode/settings.json new file mode 100644 index 0000000..10cdced --- /dev/null +++ b/front/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "css.customData": ["./vscode.tailwind.json"], + "eslint.validate": ["javascript", "javascriptreact", "astro", "typescript", "typescriptreact"], + "files.associations": { + "*.mdx": "markdown" + }, + "prettier.documentSelectors": ["**/*.astro"], + "[astro]": { + "editor.defaultFormatter": "astro-build.astro-vscode" + }, + "yaml.schemas": { + "./.vscode/astrowind/config-schema.json": "/src/config.yaml" + }, + "eslint.experimental.useFlatConfig": true +} diff --git a/front/eslint.config.js b/front/eslint.config.js new file mode 100644 index 0000000..3961a84 --- /dev/null +++ b/front/eslint.config.js @@ -0,0 +1,59 @@ +import astroEslintParser from 'astro-eslint-parser'; +import eslintPluginAstro from 'eslint-plugin-astro'; +import globals from 'globals'; +import js from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import typescriptParser from '@typescript-eslint/parser'; + +export default [ + js.configs.recommended, + ...eslintPluginAstro.configs['flat/recommended'], + ...tseslint.configs.recommended, + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node, + }, + }, + }, + { + files: ['**/*.astro'], + languageOptions: { + parser: astroEslintParser, + parserOptions: { + parser: '@typescript-eslint/parser', + extraFileExtensions: ['.astro'], + }, + }, + }, + { + files: ['**/*.{js,jsx,astro}'], + rules: { + 'no-mixed-spaces-and-tabs': ['error', 'smart-tabs'], + }, + }, + { + // Define the configuration for `