style(app): apply eslint --fix to Tier 3 config files
WS-3 session 1b-ii Task 2 (audit Bucket X — 134 items).
Hand-reviewed quote-style/semi/arrow-parens autofixes on the three
config files explicitly excluded from session 1b-i:
- vite.config.ts (91 items, @typescript-eslint/quotes / semi /
arrow-parens / curly). Plugin order verified unchanged by diff
inspection (VueRouter → vue → vueJsx → vuetify → MetaLayouts →
Components → AutoImport → svgLoader). One curly-add at the
apexcharts resolver: \`if (componentName === 'VueApexCharts') { return {...} }\`
— behaviorally identical to the prior braces-omitted form.
Build smoke: pnpm build succeeded in 12.13s, zero warnings.
- themeConfig.ts (42 items, quotes / semi). Theme token values
byte-identical, only surrounding quotes flipped from double to
single. App title 'Crewli', logo span style, language labels and
i18n codes all preserved.
- vitest.config.ts (1 item, lines-around-comment). Trivial: blank
line added before the dts:false comment block.
No semantic changes. apps/app vitest 49 passed, vue-tsc clean,
pnpm build succeeded.
Lint baseline: 231 → 97 (Bucket X resolved).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,53 +1,53 @@
|
|||||||
import { breakpointsVuetifyV3 } from "@vueuse/core";
|
import { breakpointsVuetifyV3 } from '@vueuse/core'
|
||||||
import { h } from "vue";
|
import { h } from 'vue'
|
||||||
import { VIcon } from "vuetify/components/VIcon";
|
import { VIcon } from 'vuetify/components/VIcon'
|
||||||
import { defineThemeConfig } from "@core";
|
import { defineThemeConfig } from '@core'
|
||||||
import { Skins } from "@core/enums";
|
import { Skins } from '@core/enums'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
AppContentLayoutNav,
|
AppContentLayoutNav,
|
||||||
ContentWidth,
|
ContentWidth,
|
||||||
FooterType,
|
FooterType,
|
||||||
NavbarType,
|
NavbarType,
|
||||||
} from "@layouts/enums";
|
} from '@layouts/enums'
|
||||||
|
|
||||||
export const { themeConfig, layoutConfig } = defineThemeConfig({
|
export const { themeConfig, layoutConfig } = defineThemeConfig({
|
||||||
app: {
|
app: {
|
||||||
title: "Crewli",
|
title: 'Crewli',
|
||||||
logo: h(
|
logo: h(
|
||||||
"span",
|
'span',
|
||||||
{
|
{
|
||||||
class: "crewli-mark text-h5 font-weight-bold",
|
class: 'crewli-mark text-h5 font-weight-bold',
|
||||||
style:
|
style:
|
||||||
"line-height: 1.2; letter-spacing: -0.02em; color: rgb(var(--v-theme-primary));",
|
'line-height: 1.2; letter-spacing: -0.02em; color: rgb(var(--v-theme-primary));',
|
||||||
},
|
},
|
||||||
"C",
|
'C',
|
||||||
),
|
),
|
||||||
contentWidth: ContentWidth.Boxed,
|
contentWidth: ContentWidth.Boxed,
|
||||||
contentLayoutNav: AppContentLayoutNav.Vertical,
|
contentLayoutNav: AppContentLayoutNav.Vertical,
|
||||||
overlayNavFromBreakpoint: breakpointsVuetifyV3.lg - 1, // 1 for matching with vuetify breakpoint. Docs: https://next.vuetifyjs.com/en/features/display-and-platform/
|
overlayNavFromBreakpoint: breakpointsVuetifyV3.lg - 1, // 1 for matching with vuetify breakpoint. Docs: https://next.vuetifyjs.com/en/features/display-and-platform/
|
||||||
i18n: {
|
i18n: {
|
||||||
enable: false,
|
enable: false,
|
||||||
defaultLocale: "en",
|
defaultLocale: 'en',
|
||||||
langConfig: [
|
langConfig: [
|
||||||
{
|
{
|
||||||
label: "English",
|
label: 'English',
|
||||||
i18nLang: "en",
|
i18nLang: 'en',
|
||||||
isRTL: false,
|
isRTL: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "French",
|
label: 'French',
|
||||||
i18nLang: "fr",
|
i18nLang: 'fr',
|
||||||
isRTL: false,
|
isRTL: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Arabic",
|
label: 'Arabic',
|
||||||
i18nLang: "ar",
|
i18nLang: 'ar',
|
||||||
isRTL: true,
|
isRTL: true,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
theme: "system",
|
theme: 'system',
|
||||||
skin: Skins.Default,
|
skin: Skins.Default,
|
||||||
iconRenderer: VIcon,
|
iconRenderer: VIcon,
|
||||||
},
|
},
|
||||||
@@ -58,12 +58,12 @@ export const { themeConfig, layoutConfig } = defineThemeConfig({
|
|||||||
footer: { type: FooterType.Static },
|
footer: { type: FooterType.Static },
|
||||||
verticalNav: {
|
verticalNav: {
|
||||||
isVerticalNavCollapsed: false,
|
isVerticalNavCollapsed: false,
|
||||||
defaultNavItemIconProps: { icon: "tabler-circle" },
|
defaultNavItemIconProps: { icon: 'tabler-circle' },
|
||||||
isVerticalNavSemiDark: true,
|
isVerticalNavSemiDark: true,
|
||||||
},
|
},
|
||||||
horizontalNav: {
|
horizontalNav: {
|
||||||
type: "sticky",
|
type: 'sticky',
|
||||||
transition: "slide-y-reverse-transition",
|
transition: 'slide-y-reverse-transition',
|
||||||
popoverOffset: 6,
|
popoverOffset: 6,
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -72,11 +72,11 @@ export const { themeConfig, layoutConfig } = defineThemeConfig({
|
|||||||
// Such as: chevronDown: { icon: 'tabler-chevron-down', color:'primary', size: '24' },
|
// Such as: chevronDown: { icon: 'tabler-chevron-down', color:'primary', size: '24' },
|
||||||
*/
|
*/
|
||||||
icons: {
|
icons: {
|
||||||
chevronDown: { icon: "tabler-chevron-down" },
|
chevronDown: { icon: 'tabler-chevron-down' },
|
||||||
chevronRight: { icon: "tabler-chevron-right", size: 20 },
|
chevronRight: { icon: 'tabler-chevron-right', size: 20 },
|
||||||
close: { icon: "tabler-x", size: 20 },
|
close: { icon: 'tabler-x', size: 20 },
|
||||||
verticalNavPinned: { icon: "tabler-circle-dot", size: 20 },
|
verticalNavPinned: { icon: 'tabler-circle-dot', size: 20 },
|
||||||
verticalNavUnPinned: { icon: "tabler-circle", size: 20 },
|
verticalNavUnPinned: { icon: 'tabler-circle', size: 20 },
|
||||||
sectionTitlePlaceholder: { icon: "tabler-minus" },
|
sectionTitlePlaceholder: { icon: 'tabler-minus' },
|
||||||
},
|
},
|
||||||
});
|
})
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
import { fileURLToPath } from "node:url";
|
import { fileURLToPath } from 'node:url'
|
||||||
import vue from "@vitejs/plugin-vue";
|
import vue from '@vitejs/plugin-vue'
|
||||||
import vueJsx from "@vitejs/plugin-vue-jsx";
|
import vueJsx from '@vitejs/plugin-vue-jsx'
|
||||||
import AutoImport from "unplugin-auto-import/vite";
|
import AutoImport from 'unplugin-auto-import/vite'
|
||||||
import Components from "unplugin-vue-components/vite";
|
import Components from 'unplugin-vue-components/vite'
|
||||||
import {
|
import {
|
||||||
VueRouterAutoImports,
|
VueRouterAutoImports,
|
||||||
getPascalCaseRouteName,
|
getPascalCaseRouteName,
|
||||||
} from "unplugin-vue-router";
|
} from 'unplugin-vue-router'
|
||||||
import VueRouter from "unplugin-vue-router/vite";
|
import VueRouter from 'unplugin-vue-router/vite'
|
||||||
import { defineConfig } from "vite";
|
import { defineConfig } from 'vite'
|
||||||
import VueDevTools from "vite-plugin-vue-devtools";
|
import VueDevTools from 'vite-plugin-vue-devtools'
|
||||||
import MetaLayouts from "vite-plugin-vue-meta-layouts";
|
import MetaLayouts from 'vite-plugin-vue-meta-layouts'
|
||||||
import vuetify from "vite-plugin-vuetify";
|
import vuetify from 'vite-plugin-vuetify'
|
||||||
import svgLoader from "vite-svg-loader";
|
import svgLoader from 'vite-svg-loader'
|
||||||
|
|
||||||
// https://vitejs.dev/config/
|
// https://vitejs.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
@@ -20,11 +20,11 @@ export default defineConfig({
|
|||||||
// Docs: https://github.com/posva/unplugin-vue-router
|
// Docs: https://github.com/posva/unplugin-vue-router
|
||||||
// ℹ️ This plugin should be placed before vue plugin
|
// ℹ️ This plugin should be placed before vue plugin
|
||||||
VueRouter({
|
VueRouter({
|
||||||
getRouteName: (routeNode) => {
|
getRouteName: routeNode => {
|
||||||
// Convert pascal case to kebab case
|
// Convert pascal case to kebab case
|
||||||
return getPascalCaseRouteName(routeNode)
|
return getPascalCaseRouteName(routeNode)
|
||||||
.replace(/([a-z\d])([A-Z])/g, "$1-$2")
|
.replace(/([a-z\d])([A-Z])/g, '$1-$2')
|
||||||
.toLowerCase();
|
.toLowerCase()
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
vue(),
|
vue(),
|
||||||
@@ -36,30 +36,31 @@ export default defineConfig({
|
|||||||
styles: {
|
styles: {
|
||||||
// Absolute URL so resolution does not depend on process cwd (fixes common SASS 404s).
|
// Absolute URL so resolution does not depend on process cwd (fixes common SASS 404s).
|
||||||
configFile: fileURLToPath(
|
configFile: fileURLToPath(
|
||||||
new URL("./src/styles/settings.scss", import.meta.url),
|
new URL('./src/styles/settings.scss', import.meta.url),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// Docs: https://github.com/dishait/vite-plugin-vue-meta-layouts?tab=readme-ov-file
|
// Docs: https://github.com/dishait/vite-plugin-vue-meta-layouts?tab=readme-ov-file
|
||||||
MetaLayouts({
|
MetaLayouts({
|
||||||
target: "./src/layouts",
|
target: './src/layouts',
|
||||||
defaultLayout: "default",
|
defaultLayout: 'default',
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// Docs: https://github.com/antfu/unplugin-vue-components#unplugin-vue-components
|
// Docs: https://github.com/antfu/unplugin-vue-components#unplugin-vue-components
|
||||||
Components({
|
Components({
|
||||||
dirs: ["src/@core/components", "src/views/demos", "src/components"],
|
dirs: ['src/@core/components', 'src/views/demos', 'src/components'],
|
||||||
dts: true,
|
dts: true,
|
||||||
resolvers: [
|
resolvers: [
|
||||||
(componentName) => {
|
componentName => {
|
||||||
// Auto import `VueApexCharts`
|
// Auto import `VueApexCharts`
|
||||||
if (componentName === "VueApexCharts")
|
if (componentName === 'VueApexCharts') {
|
||||||
return {
|
return {
|
||||||
name: "default",
|
name: 'default',
|
||||||
from: "vue3-apexcharts",
|
from: 'vue3-apexcharts',
|
||||||
as: "VueApexCharts",
|
as: 'VueApexCharts',
|
||||||
};
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
@@ -67,72 +68,72 @@ export default defineConfig({
|
|||||||
// Docs: https://github.com/antfu/unplugin-auto-import#unplugin-auto-import
|
// Docs: https://github.com/antfu/unplugin-auto-import#unplugin-auto-import
|
||||||
AutoImport({
|
AutoImport({
|
||||||
imports: [
|
imports: [
|
||||||
"vue",
|
'vue',
|
||||||
VueRouterAutoImports,
|
VueRouterAutoImports,
|
||||||
"@vueuse/core",
|
'@vueuse/core',
|
||||||
"@vueuse/math",
|
'@vueuse/math',
|
||||||
"vue-i18n",
|
'vue-i18n',
|
||||||
"pinia",
|
'pinia',
|
||||||
],
|
],
|
||||||
dirs: [
|
dirs: [
|
||||||
"./src/@core/utils",
|
'./src/@core/utils',
|
||||||
"./src/@core/composable/",
|
'./src/@core/composable/',
|
||||||
"./src/composables/",
|
'./src/composables/',
|
||||||
"./src/utils/",
|
'./src/utils/',
|
||||||
"./src/plugins/*/composables/*",
|
'./src/plugins/*/composables/*',
|
||||||
],
|
],
|
||||||
vueTemplate: true,
|
vueTemplate: true,
|
||||||
|
|
||||||
// ℹ️ Disabled to avoid confusion & accidental usage
|
// ℹ️ Disabled to avoid confusion & accidental usage
|
||||||
ignore: ["useCookies", "useStorage"],
|
ignore: ['useCookies', 'useStorage'],
|
||||||
}),
|
}),
|
||||||
|
|
||||||
svgLoader(),
|
svgLoader(),
|
||||||
],
|
],
|
||||||
define: { "process.env": {} },
|
define: { 'process.env': {} },
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
"@": fileURLToPath(new URL("./src", import.meta.url)),
|
'@': fileURLToPath(new URL('./src', import.meta.url)),
|
||||||
"@themeConfig": fileURLToPath(
|
'@themeConfig': fileURLToPath(
|
||||||
new URL("./themeConfig.ts", import.meta.url),
|
new URL('./themeConfig.ts', import.meta.url),
|
||||||
),
|
),
|
||||||
"@core": fileURLToPath(new URL("./src/@core", import.meta.url)),
|
'@core': fileURLToPath(new URL('./src/@core', import.meta.url)),
|
||||||
"@layouts": fileURLToPath(new URL("./src/@layouts", import.meta.url)),
|
'@layouts': fileURLToPath(new URL('./src/@layouts', import.meta.url)),
|
||||||
"@images": fileURLToPath(
|
'@images': fileURLToPath(
|
||||||
new URL("./src/assets/images/", import.meta.url),
|
new URL('./src/assets/images/', import.meta.url),
|
||||||
),
|
),
|
||||||
"@styles": fileURLToPath(
|
'@styles': fileURLToPath(
|
||||||
new URL("./src/assets/styles/", import.meta.url),
|
new URL('./src/assets/styles/', import.meta.url),
|
||||||
),
|
),
|
||||||
"@configured-variables": fileURLToPath(
|
'@configured-variables': fileURLToPath(
|
||||||
new URL(
|
new URL(
|
||||||
"./src/assets/styles/variables/_template.scss",
|
'./src/assets/styles/variables/_template.scss',
|
||||||
import.meta.url,
|
import.meta.url,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
"@form-schema": fileURLToPath(
|
'@form-schema': fileURLToPath(
|
||||||
new URL("../../packages/form-schema/src", import.meta.url),
|
new URL('../../packages/form-schema/src', import.meta.url),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
server: {
|
server: {
|
||||||
port: 5174,
|
port: 5174,
|
||||||
proxy: {
|
proxy: {
|
||||||
"/api": {
|
'/api': {
|
||||||
target: "http://localhost:8000",
|
target: 'http://localhost:8000',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
warmup: {
|
warmup: {
|
||||||
clientFiles: ["./src/pages/**/*.vue", "./src/components/**/*.vue"],
|
clientFiles: ['./src/pages/**/*.vue', './src/components/**/*.vue'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
build: {
|
build: {
|
||||||
chunkSizeWarningLimit: 5000,
|
chunkSizeWarningLimit: 5000,
|
||||||
},
|
},
|
||||||
optimizeDeps: {
|
optimizeDeps: {
|
||||||
exclude: ["vuetify"],
|
exclude: ['vuetify'],
|
||||||
entries: ["./src/**/*.vue"],
|
entries: ['./src/**/*.vue'],
|
||||||
force: true,
|
force: true,
|
||||||
},
|
},
|
||||||
});
|
})
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ export default defineConfig({
|
|||||||
imports: ['vue', '@vueuse/core'],
|
imports: ['vue', '@vueuse/core'],
|
||||||
dirs: ['./src/@core/utils', './src/@core/composable/', './src/composables/', './src/utils/'],
|
dirs: ['./src/@core/utils', './src/@core/composable/', './src/composables/', './src/utils/'],
|
||||||
vueTemplate: true,
|
vueTemplate: true,
|
||||||
|
|
||||||
// Don't write to auto-imports.d.ts — vite.config.ts owns that file
|
// Don't write to auto-imports.d.ts — vite.config.ts owns that file
|
||||||
// with the full app's auto-import set. Trimmed test-only set must
|
// with the full app's auto-import set. Trimmed test-only set must
|
||||||
// not clobber the IDE typings for the running dev server.
|
// not clobber the IDE typings for the running dev server.
|
||||||
|
|||||||
Reference in New Issue
Block a user