{
    "npm.packageManager": "pnpm",
    // don't show errors, but fix when save and git pre commit
    "eslint.rules.customizations": [
        { "rule": "import/order", "severity": "off" },
        { "rule": "prettier/prettier", "severity": "off" },
        { "rule": "react/jsx-sort-props", "severity": "off" },
        { "rule": "sort-keys-fix/sort-keys-fix", "severity": "off" },
        { "rule": "typescript-sort-keys/interface", "severity": "off" }
    ],
    "stylelint.validate": [
        "css",
        "postcss",
        // make stylelint work with tsx antd-style css template string
        "typescriptreact"
    ],
    "search.exclude": {
        "**/node_modules": true,
        // useless to search this big folder
        "locales": true
    },
    "vitest.maximumConfigs": 6,
    "workbench.editor.customLabels.patterns": {
        "**/app/**/[[]*[]]/[[]*[]]/page.tsx": "${dirname(2)}/${dirname(1)}/${dirname} • page component",
        "**/app/**/[[]*[]]/page.tsx": "${dirname(1)}/${dirname} • page component",
        "**/app/**/page.tsx": "${dirname} • page component",

        "**/app/**/[[]*[]]/[[]*[]]/layout.tsx": "${dirname(2)}/${dirname(1)}/${dirname} • page layout",
        "**/app/**/[[]*[]]/layout.tsx": "${dirname(1)}/${dirname} • page layout",
        "**/app/**/layout.tsx": "${dirname} • page layout",

        "**/app/**/[[]*[]]/[[]*[]]/default.tsx": "${dirname(2)}/${dirname(1)}/${dirname} • slot default",
        "**/app/**/[[]*[]]/default.tsx": "${dirname(1)}/${dirname} • slot default",
        "**/app/**/default.tsx": "${dirname} • slot default",

        "**/app/**/[[]*[]]/[[]*[]]/error.tsx": "${dirname(2)}/${dirname(1)}/${dirname} • error component",
        "**/app/**/[[]*[]]/error.tsx": "${dirname(1)}/${dirname} • error component",
        "**/app/**/error.tsx": "${dirname} • error component",

        "**/app/**/[[]*[]]/[[]*[]]/loading.tsx": "${dirname(2)}/${dirname(1)}/${dirname} • loading component",
        "**/app/**/[[]*[]]/loading.tsx": "${dirname(1)}/${dirname} • loading component",
        "**/app/**/loading.tsx": "${dirname} • loading component",

        "**/src/**/route.ts": "${dirname(1)}/${dirname} • route",
        "**/src/**/index.tsx": "${dirname} • component",

        "**/src/database/repositories/*/index.ts": "${dirname} • db repository",
        "**/src/database/models/*.ts": "${filename} • db model",
        "**/src/database/schemas/*.ts": "${filename} • db schema",

        "**/src/services/*.ts": "${filename} • service",
        "**/src/services/*/client.ts": "${dirname} • client service",
        "**/src/services/*/server.ts": "${dirname} • server service",
        
        "**/src/store/*/action.ts": "${dirname} • action",
        "**/src/store/*/slices/*/action.ts": "${dirname(2)}/${dirname} • action",
        "**/src/store/*/slices/*/actions/*.ts": "${dirname(1)}/${dirname}/${filename} • action",
        
        "**/src/store/*/initialState.ts": "${dirname} • state",
        "**/src/store/*/slices/*/initialState.ts": "${dirname(2)}/${dirname} • state",
        
        "**/src/store/*/selectors.ts": "${dirname} • selectors",
        "**/src/store/*/slices/*/selectors.ts": "${dirname(2)}/${dirname} • selectors",
        
        "**/src/store/*/reducer.ts": "${dirname} • reducer",
        "**/src/store/*/slices/*/reducer.ts": "${dirname(2)}/${dirname} • reducer",
        
        "**/src/config/modelProviders/*.ts": "${filename} • provider",
        "**/src/config/aiModels/*.ts": "${filename} • model",
        "**/src/config/paramsSchemas/*/*.json": "${dirname(1)}/${filename} • params",
        "**/packages/model-runtime/src/*/index.ts": "${dirname} • runtime",
        
        "**/src/server/services/*/index.ts": "${dirname} • server/service",
        "**/src/server/routers/lambda/*.ts": "${filename} • lambda",
        "**/src/server/routers/async/*.ts": "${filename} • async",
        "**/src/server/routers/edge/*.ts": "${filename} • edge",

        "**/src/locales/default/*.ts": "${filename} • locale",
    },
    "eslint.validate": [
        "javascript",
        "javascriptreact",
        "typescript",
        "typescriptreact",
        "markdown",
        // support mdx
        "mdx"
    ]
}