@kasoa/vite-plus-config 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -32,6 +32,8 @@ import { createConfig } from "@kasoa/vite-plus-config/react";
32
32
  export default createConfig();
33
33
  ```
34
34
 
35
+ The React preset enables Oxlint's native `react/react-compiler` diagnostics as errors. This experimental aggregate lint rule does not enable React Compiler transforms; override it to `off` if a project needs to opt out.
36
+
35
37
  ### Node Projects
36
38
 
37
39
  ```ts
@@ -3,10 +3,24 @@ import { defineConfig, mergeConfig } from "vite-plus";
3
3
  function toUserConfig(config) {
4
4
  return config;
5
5
  }
6
+ function mergeConfigFragment(current, fragment) {
7
+ const merged = toUserConfig(mergeConfig(current, toUserConfig(fragment)));
8
+ const rules = fragment.lint?.rules;
9
+ if (rules === void 0) return merged;
10
+ return {
11
+ ...merged,
12
+ lint: {
13
+ ...merged.lint,
14
+ rules: {
15
+ ...current.lint?.rules,
16
+ ...rules
17
+ }
18
+ }
19
+ };
20
+ }
6
21
  function mergeConfigFragments(base, ...overrides) {
7
- let result = {};
8
- result = mergeConfig(result, toUserConfig(base));
9
- for (const override of overrides) result = mergeConfig(result, toUserConfig(override));
22
+ let result = mergeConfigFragment({}, base);
23
+ for (const override of overrides) result = mergeConfigFragment(result, override);
10
24
  return result;
11
25
  }
12
26
  function createDefinedConfig(base, ...overrides) {
@@ -231,6 +245,7 @@ const reactLint = {
231
245
  "react/jsx-props-no-spreading": "off",
232
246
  "react/react-in-jsx-scope": "off",
233
247
  "react/exhaustive-deps": "error",
248
+ "react/react-compiler": "error",
234
249
  "react/jsx-key": "error",
235
250
  "react/jsx-max-depth": ["error", { max: 4 }],
236
251
  "react/jsx-no-constructed-context-values": "error",
@@ -270,4 +285,4 @@ function createBaseConfig(overrides = {}) {
270
285
  //#endregion
271
286
  export { DEFAULT_WRANGLER_CONFIG_PATH as a, reactFmt as i, reactLint as n, createDefinedConfig as o, serverLint as r, mergeConfigFragments as s, createBaseConfig as t };
272
287
 
273
- //# sourceMappingURL=base-ICoOIzvp.mjs.map
288
+ //# sourceMappingURL=base-5dFXSLDA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-5dFXSLDA.mjs","names":[],"sources":["../src/shared/config.ts","../src/shared/constants.ts","../src/shared/fmt.ts","../src/shared/lint.ts","../src/base/index.ts"],"sourcesContent":["import type { UserConfig } from \"vite-plus\";\nimport { defineConfig, mergeConfig } from \"vite-plus\";\n\nexport type PluginInput = object | readonly object[] | false | null | undefined;\n\nexport type ConfigInput = Omit<UserConfig, \"plugins\"> & {\n /**\n * Vite plugins to merge into the config.\n *\n * This is intentionally typed structurally instead of as Vite's recursive\n * PluginOption type. Vite 8 plugin types from different Vite entrypoints can\n * trigger excessive stack-depth comparisons before the config reaches Vite.\n */\n readonly plugins?: readonly PluginInput[];\n};\n\nfunction toUserConfig(config: ConfigInput): UserConfig {\n // eslint-disable-next-line typescript/no-unsafe-type-assertion -- ConfigInput preserves UserConfig autocomplete but keeps plugin assignability shallow at our public boundary.\n return config as UserConfig;\n}\n\nfunction mergeConfigFragment(current: UserConfig, fragment: ConfigInput): UserConfig {\n const merged = toUserConfig(mergeConfig<UserConfig, UserConfig>(current, toUserConfig(fragment)));\n // Vite concatenates nested arrays, but an Oxlint rule tuple is one atomic value.\n const rules = fragment.lint?.rules;\n\n if (rules === undefined) {\n return merged;\n }\n\n return {\n ...merged,\n lint: {\n ...merged.lint,\n rules: {\n ...current.lint?.rules,\n ...rules,\n },\n },\n };\n}\n\nexport function mergeConfigFragments(base: ConfigInput, ...overrides: ConfigInput[]): UserConfig {\n let result = mergeConfigFragment({}, base);\n\n for (const override of overrides) {\n result = mergeConfigFragment(result, override);\n }\n\n return result;\n}\n\nexport function createDefinedConfig(base: ConfigInput, ...overrides: ConfigInput[]): UserConfig {\n return defineConfig(mergeConfigFragments(base, ...overrides));\n}\n","export const DEFAULT_TEST_INCLUDE = [\"**/*.{test,spec}.{ts,tsx,mts,cts}\"] as const;\nexport const DEFAULT_IGNORE_PATTERNS = [\n \"node_modules/**\",\n \"dist/**\",\n \"dist-ssr/**\",\n \"**/worker-configuration.d.ts\",\n \"**/migrations/**\",\n \"**/drizzle/migrations.js\",\n \"**/drizzle/meta/*.json\",\n] as const;\n\nexport const DEFAULT_STAGED_CHECK_GLOB = \"*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\";\nexport const DEFAULT_STAGED_CHECK_COMMAND = \"vp check --fix\";\nexport const DEFAULT_WRANGLER_CONFIG_PATH = \"./wrangler.jsonc\";\n","import type { UserConfig } from \"vite-plus\";\nimport { DEFAULT_IGNORE_PATTERNS } from \"./constants.ts\";\n\ntype FmtConfig = NonNullable<UserConfig[\"fmt\"]>;\n\nexport const baseFmt: FmtConfig = {\n ignorePatterns: [...DEFAULT_IGNORE_PATTERNS],\n sortImports: {\n internalPattern: [\"#\", \"@/\"],\n newlinesBetween: false,\n groups: [\n \"type-import\",\n [\"value-builtin\", \"value-external\"],\n \"type-internal\",\n \"value-internal\",\n [\"type-parent\", \"type-sibling\", \"type-index\"],\n [\"value-parent\", \"value-sibling\", \"value-index\"],\n \"unknown\",\n ],\n },\n};\n\nexport const reactFmt: FmtConfig = {\n sortTailwindcss: {\n attributes: [\"/.*ClassName/\"],\n functions: [\"tv\"],\n },\n};\n","import type { UserConfig } from \"vite-plus\";\nimport { DEFAULT_IGNORE_PATTERNS } from \"./constants.ts\";\n\nexport const BASE_LINT_PLUGINS = [\"typescript\", \"unicorn\", \"oxc\", \"import\", \"promise\"] as const;\n\ntype LintConfig = NonNullable<UserConfig[\"lint\"]>;\n\nconst baseLintConfig: LintConfig = {\n plugins: [...BASE_LINT_PLUGINS],\n ignorePatterns: [...DEFAULT_IGNORE_PATTERNS],\n env: {\n serviceworker: true,\n worker: true,\n },\n options: {\n reportUnusedDisableDirectives: \"error\",\n typeAware: true,\n typeCheck: true,\n },\n categories: {\n correctness: \"error\",\n suspicious: \"error\",\n pedantic: \"error\",\n perf: \"error\",\n style: \"error\",\n },\n rules: {\n \"capitalized-comments\": \"off\",\n \"func-style\": \"off\",\n \"id-length\": \"off\",\n \"init-declarations\": \"off\",\n \"max-classes-per-file\": \"off\",\n \"max-lines\": \"off\",\n \"max-lines-per-function\": \"off\",\n \"max-statements\": \"off\",\n \"no-continue\": \"off\",\n \"no-magic-numbers\": \"off\",\n \"no-ternary\": \"off\",\n \"require-await\": \"off\",\n \"sort-imports\": \"off\",\n \"sort-keys\": \"off\",\n \"vars-on-top\": \"off\",\n\n complexity: [\"error\", { max: 20 }],\n curly: [\"error\", \"multi-line\", \"consistent\"],\n \"default-case-last\": \"error\",\n eqeqeq: \"error\",\n \"getter-return\": \"error\",\n \"grouped-accessor-pairs\": [\"error\", \"getBeforeSet\"],\n \"max-depth\": [\"error\", { max: 3 }],\n \"max-nested-callbacks\": [\"error\", { max: 3 }],\n \"max-params\": [\"error\", { max: 3 }],\n \"new-cap\": \"off\",\n \"no-alert\": \"error\",\n \"no-bitwise\": \"error\",\n \"no-console\": [\"error\", { allow: [\"info\", \"warn\", \"error\"] }],\n \"no-duplicate-imports\": [\"error\", { allowSeparateTypeImports: true }],\n \"no-param-reassign\": [\"error\", { props: true }],\n \"no-plusplus\": \"error\",\n \"no-undef\": \"error\",\n \"no-unneeded-ternary\": \"error\",\n \"no-unreachable\": \"error\",\n \"no-useless-return\": \"error\",\n \"prefer-template\": \"error\",\n\n \"import/exports-last\": \"off\",\n \"import/group-exports\": \"off\",\n \"import/no-anonymous-default-export\": \"off\",\n \"import/no-named-export\": \"off\",\n \"import/no-namespace\": \"off\",\n \"import/no-nodejs-modules\": \"off\",\n \"import/no-unassigned-import\": \"off\",\n \"import/prefer-default-export\": \"off\",\n \"import/max-dependencies\": \"off\",\n \"import/no-cycle\": \"error\",\n\n \"promise/prefer-await-to-callbacks\": \"off\",\n\n \"typescript/ban-ts-comment\": [\"error\", { minimumDescriptionLength: 10 }],\n \"typescript/consistent-type-definitions\": \"off\",\n \"typescript/consistent-return\": \"error\",\n \"typescript/consistent-type-exports\": \"error\",\n \"typescript/consistent-type-imports\": [\n \"error\",\n { prefer: \"type-imports\", fixStyle: \"separate-type-imports\" },\n ],\n \"typescript/dot-notation\": \"error\",\n \"typescript/explicit-module-boundary-types\": \"error\",\n \"typescript/no-confusing-void-expression\": \"error\",\n \"typescript/no-dynamic-delete\": \"error\",\n \"typescript/no-explicit-any\": \"error\",\n \"typescript/no-floating-promises\": \"error\",\n \"typescript/no-misused-promises\": \"error\",\n \"typescript/no-misused-spread\": \"error\",\n \"typescript/no-non-null-assertion\": \"error\",\n \"typescript/no-require-imports\": \"error\",\n \"typescript/no-unnecessary-condition\": \"error\",\n \"typescript/no-unnecessary-qualifier\": \"error\",\n \"typescript/no-unnecessary-type-arguments\": \"error\",\n \"typescript/no-unnecessary-type-assertion\": \"error\",\n \"typescript/no-unnecessary-type-parameters\": \"error\",\n \"typescript/no-unsafe-argument\": \"error\",\n \"typescript/no-unsafe-assignment\": \"error\",\n \"typescript/no-unsafe-call\": \"error\",\n \"typescript/no-unsafe-member-access\": \"error\",\n \"typescript/no-unsafe-return\": \"error\",\n \"typescript/no-useless-default-assignment\": \"error\",\n \"typescript/non-nullable-type-assertion-style\": \"error\",\n \"typescript/only-throw-error\": \"error\",\n \"typescript/prefer-find\": \"error\",\n \"typescript/prefer-nullish-coalescing\": \"error\",\n \"typescript/prefer-optional-chain\": \"error\",\n \"typescript/prefer-readonly\": \"error\",\n \"typescript/prefer-readonly-parameter-types\": \"off\",\n \"typescript/prefer-regexp-exec\": \"error\",\n \"typescript/require-await\": \"off\",\n \"typescript/require-array-sort-compare\": \"error\",\n \"typescript/restrict-plus-operands\": \"error\",\n \"typescript/restrict-template-expressions\": \"error\",\n \"typescript/return-await\": \"error\",\n \"typescript/strict-boolean-expressions\": \"error\",\n \"typescript/strict-void-return\": \"error\",\n \"typescript/switch-exhaustiveness-check\": \"error\",\n \"typescript/unbound-method\": \"error\",\n \"typescript/use-unknown-in-catch-callback-variable\": \"error\",\n\n \"unicorn/no-null\": \"off\",\n \"unicorn/no-abusive-eslint-disable\": \"error\",\n \"unicorn/filename-case\": [\"error\", { case: \"kebabCase\" }],\n },\n overrides: [\n {\n files: [\"**/*.{cjs,cts}\"],\n env: {\n node: true,\n },\n rules: {\n \"typescript/no-require-imports\": \"off\",\n },\n },\n {\n files: [\"**/*.config.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\"],\n env: {\n node: true,\n },\n rules: {\n \"func-names\": \"off\",\n },\n },\n {\n files: [\"**/*.d.ts\"],\n rules: {\n \"typescript/no-empty-interface\": \"off\",\n },\n },\n {\n files: [\n \"**/test/**\",\n \"**/tests/**\",\n \"**/__tests__/**\",\n \"**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\",\n ],\n plugins: [...BASE_LINT_PLUGINS, \"vitest\"],\n env: {\n vitest: true,\n },\n rules: {\n \"vitest/no-importing-vitest-globals\": \"off\",\n \"vitest/max-nested-describe\": [\"error\", { max: 3 }],\n },\n },\n ],\n};\n\nexport const baseLint: LintConfig = baseLintConfig;\n\nconst reactLintConfig: LintConfig = {\n plugins: [\"react\", \"jsx-a11y\"],\n env: {\n browser: true,\n },\n rules: {\n \"jsx-a11y/alt-text\": \"error\",\n\n \"react/jsx-props-no-spreading\": \"off\",\n \"react/react-in-jsx-scope\": \"off\",\n \"react/exhaustive-deps\": \"error\",\n \"react/react-compiler\": \"error\",\n \"react/jsx-key\": \"error\",\n \"react/jsx-max-depth\": [\"error\", { max: 4 }],\n \"react/jsx-no-constructed-context-values\": \"error\",\n \"react/jsx-no-duplicate-props\": \"error\",\n \"react/jsx-no-undef\": \"error\",\n \"react/no-array-index-key\": \"error\",\n \"react/no-children-prop\": \"error\",\n \"react/no-clone-element\": \"error\",\n \"react/no-danger\": \"error\",\n \"react/no-danger-with-children\": \"error\",\n \"react/no-direct-mutation-state\": \"error\",\n \"react/no-find-dom-node\": \"error\",\n \"react/no-react-children\": \"error\",\n \"react/no-string-refs\": \"error\",\n \"react/style-prop-object\": \"off\",\n \"react/no-unsafe\": \"error\",\n \"react/no-unknown-property\": \"error\",\n \"react/void-dom-elements-no-children\": \"error\",\n },\n};\n\nexport const reactLint: LintConfig = reactLintConfig;\n\nconst serverLintConfig: LintConfig = {\n plugins: [\"node\"],\n globals: {\n WebSocketPair: \"readonly\",\n },\n rules: {\n \"node/no-exports-assign\": \"error\",\n },\n};\n\nexport const serverLint: LintConfig = serverLintConfig;\n","import type { UserConfig } from \"vite-plus\";\nimport type { ConfigInput } from \"../shared/config.ts\";\nimport { createDefinedConfig } from \"../shared/config.ts\";\nimport {\n DEFAULT_STAGED_CHECK_COMMAND,\n DEFAULT_STAGED_CHECK_GLOB,\n DEFAULT_TEST_INCLUDE,\n} from \"../shared/constants.ts\";\nimport { baseFmt } from \"../shared/fmt.ts\";\nimport { baseLint } from \"../shared/lint.ts\";\n\nconst baseConfig: UserConfig = {\n fmt: baseFmt,\n lint: baseLint,\n test: {\n include: [...DEFAULT_TEST_INCLUDE],\n },\n staged: {\n [DEFAULT_STAGED_CHECK_GLOB]: DEFAULT_STAGED_CHECK_COMMAND,\n },\n};\n\nexport function createBaseConfig(overrides: ConfigInput = {}): UserConfig {\n return createDefinedConfig(baseConfig, overrides);\n}\n\nexport { createBaseConfig as createConfig };\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { t as createBaseConfig } from "../../base-ICoOIzvp.mjs";
1
+ import { t as createBaseConfig } from "../../base-5dFXSLDA.mjs";
2
2
  export { createBaseConfig, createBaseConfig as createConfig };
@@ -1,4 +1,4 @@
1
- import { a as DEFAULT_WRANGLER_CONFIG_PATH, o as createDefinedConfig, s as mergeConfigFragments } from "../../base-ICoOIzvp.mjs";
1
+ import { a as DEFAULT_WRANGLER_CONFIG_PATH, o as createDefinedConfig, s as mergeConfigFragments } from "../../base-5dFXSLDA.mjs";
2
2
  import { createConfig as createNodeConfig } from "../node/index.mjs";
3
3
  import { lazyPlugins } from "vite-plus";
4
4
  import { cloudflareTest } from "@cloudflare/vitest-pool-workers";
@@ -1,4 +1,4 @@
1
- import { o as createDefinedConfig, t as createBaseConfig } from "../../base-ICoOIzvp.mjs";
1
+ import { o as createDefinedConfig, t as createBaseConfig } from "../../base-5dFXSLDA.mjs";
2
2
  //#region src/library/index.ts
3
3
  const libraryConfig = { pack: {
4
4
  clean: true,
@@ -1,4 +1,4 @@
1
- import { o as createDefinedConfig, t as createBaseConfig } from "../../base-ICoOIzvp.mjs";
1
+ import { o as createDefinedConfig, t as createBaseConfig } from "../../base-5dFXSLDA.mjs";
2
2
  //#region src/monorepo/index.ts
3
3
  const monorepoConfig = { run: {
4
4
  cache: {
@@ -1,4 +1,4 @@
1
- import { o as createDefinedConfig, r as serverLint, t as createBaseConfig } from "../../base-ICoOIzvp.mjs";
1
+ import { o as createDefinedConfig, r as serverLint, t as createBaseConfig } from "../../base-5dFXSLDA.mjs";
2
2
  //#region src/node/index.ts
3
3
  const nodeConfig = { lint: serverLint };
4
4
  function createNodeConfig(overrides = {}) {
@@ -1,4 +1,4 @@
1
- import { i as reactFmt, n as reactLint, o as createDefinedConfig, t as createBaseConfig } from "../../base-ICoOIzvp.mjs";
1
+ import { i as reactFmt, n as reactLint, o as createDefinedConfig, t as createBaseConfig } from "../../base-5dFXSLDA.mjs";
2
2
  //#region src/react/index.ts
3
3
  const reactConfig = {
4
4
  fmt: reactFmt,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kasoa/vite-plus-config",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Kasoa's Vite+ configurations",
5
5
  "keywords": [
6
6
  "config",
@@ -57,6 +57,14 @@
57
57
  "publishConfig": {
58
58
  "access": "public"
59
59
  },
60
+ "scripts": {
61
+ "dev": "vp pack --watch",
62
+ "build": "vp pack",
63
+ "check": "vp check",
64
+ "check:fix": "vp check --fix",
65
+ "test": "vp test --passWithNoTests",
66
+ "prepublishOnly": "pnpm build"
67
+ },
60
68
  "devDependencies": {
61
69
  "@cloudflare/vitest-pool-workers": "^0.16.8",
62
70
  "@types/node": "^25.9.1",
@@ -79,12 +87,5 @@
79
87
  },
80
88
  "engines": {
81
89
  "node": ">=24"
82
- },
83
- "scripts": {
84
- "dev": "vp pack --watch",
85
- "build": "vp pack",
86
- "check": "vp check",
87
- "check:fix": "vp check --fix",
88
- "test": "vp test --passWithNoTests"
89
90
  }
90
- }
91
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-ICoOIzvp.mjs","names":[],"sources":["../src/shared/config.ts","../src/shared/constants.ts","../src/shared/fmt.ts","../src/shared/lint.ts","../src/base/index.ts"],"sourcesContent":["import type { UserConfig } from \"vite-plus\";\nimport { defineConfig, mergeConfig } from \"vite-plus\";\n\nexport type PluginInput = object | readonly object[] | false | null | undefined;\n\nexport type ConfigInput = Omit<UserConfig, \"plugins\"> & {\n /**\n * Vite plugins to merge into the config.\n *\n * This is intentionally typed structurally instead of as Vite's recursive\n * PluginOption type. Vite 8 plugin types from different Vite entrypoints can\n * trigger excessive stack-depth comparisons before the config reaches Vite.\n */\n readonly plugins?: readonly PluginInput[];\n};\n\nfunction toUserConfig(config: ConfigInput): UserConfig {\n // eslint-disable-next-line typescript/no-unsafe-type-assertion -- ConfigInput preserves UserConfig autocomplete but keeps plugin assignability shallow at our public boundary.\n return config as UserConfig;\n}\n\nexport function mergeConfigFragments(base: ConfigInput, ...overrides: ConfigInput[]): UserConfig {\n let result: UserConfig = {};\n result = mergeConfig<UserConfig, UserConfig>(result, toUserConfig(base));\n\n for (const override of overrides) {\n result = mergeConfig<UserConfig, UserConfig>(result, toUserConfig(override));\n }\n\n return result;\n}\n\nexport function createDefinedConfig(base: ConfigInput, ...overrides: ConfigInput[]): UserConfig {\n return defineConfig(mergeConfigFragments(base, ...overrides));\n}\n","export const DEFAULT_TEST_INCLUDE = [\"**/*.{test,spec}.{ts,tsx,mts,cts}\"] as const;\nexport const DEFAULT_IGNORE_PATTERNS = [\n \"node_modules/**\",\n \"dist/**\",\n \"dist-ssr/**\",\n \"**/worker-configuration.d.ts\",\n \"**/migrations/**\",\n \"**/drizzle/migrations.js\",\n \"**/drizzle/meta/*.json\",\n] as const;\n\nexport const DEFAULT_STAGED_CHECK_GLOB = \"*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\";\nexport const DEFAULT_STAGED_CHECK_COMMAND = \"vp check --fix\";\nexport const DEFAULT_WRANGLER_CONFIG_PATH = \"./wrangler.jsonc\";\n","import type { UserConfig } from \"vite-plus\";\nimport { DEFAULT_IGNORE_PATTERNS } from \"./constants.ts\";\n\ntype FmtConfig = NonNullable<UserConfig[\"fmt\"]>;\n\nexport const baseFmt: FmtConfig = {\n ignorePatterns: [...DEFAULT_IGNORE_PATTERNS],\n sortImports: {\n internalPattern: [\"#\", \"@/\"],\n newlinesBetween: false,\n groups: [\n \"type-import\",\n [\"value-builtin\", \"value-external\"],\n \"type-internal\",\n \"value-internal\",\n [\"type-parent\", \"type-sibling\", \"type-index\"],\n [\"value-parent\", \"value-sibling\", \"value-index\"],\n \"unknown\",\n ],\n },\n};\n\nexport const reactFmt: FmtConfig = {\n sortTailwindcss: {\n attributes: [\"/.*ClassName/\"],\n functions: [\"tv\"],\n },\n};\n","import type { UserConfig } from \"vite-plus\";\nimport { DEFAULT_IGNORE_PATTERNS } from \"./constants.ts\";\n\nexport const BASE_LINT_PLUGINS = [\"typescript\", \"unicorn\", \"oxc\", \"import\", \"promise\"] as const;\n\ntype LintConfig = NonNullable<UserConfig[\"lint\"]>;\n\nconst baseLintConfig: LintConfig = {\n plugins: [...BASE_LINT_PLUGINS],\n ignorePatterns: [...DEFAULT_IGNORE_PATTERNS],\n env: {\n serviceworker: true,\n worker: true,\n },\n options: {\n reportUnusedDisableDirectives: \"error\",\n typeAware: true,\n typeCheck: true,\n },\n categories: {\n correctness: \"error\",\n suspicious: \"error\",\n pedantic: \"error\",\n perf: \"error\",\n style: \"error\",\n },\n rules: {\n \"capitalized-comments\": \"off\",\n \"func-style\": \"off\",\n \"id-length\": \"off\",\n \"init-declarations\": \"off\",\n \"max-classes-per-file\": \"off\",\n \"max-lines\": \"off\",\n \"max-lines-per-function\": \"off\",\n \"max-statements\": \"off\",\n \"no-continue\": \"off\",\n \"no-magic-numbers\": \"off\",\n \"no-ternary\": \"off\",\n \"require-await\": \"off\",\n \"sort-imports\": \"off\",\n \"sort-keys\": \"off\",\n \"vars-on-top\": \"off\",\n\n complexity: [\"error\", { max: 20 }],\n curly: [\"error\", \"multi-line\", \"consistent\"],\n \"default-case-last\": \"error\",\n eqeqeq: \"error\",\n \"getter-return\": \"error\",\n \"grouped-accessor-pairs\": [\"error\", \"getBeforeSet\"],\n \"max-depth\": [\"error\", { max: 3 }],\n \"max-nested-callbacks\": [\"error\", { max: 3 }],\n \"max-params\": [\"error\", { max: 3 }],\n \"new-cap\": \"off\",\n \"no-alert\": \"error\",\n \"no-bitwise\": \"error\",\n \"no-console\": [\"error\", { allow: [\"info\", \"warn\", \"error\"] }],\n \"no-duplicate-imports\": [\"error\", { allowSeparateTypeImports: true }],\n \"no-param-reassign\": [\"error\", { props: true }],\n \"no-plusplus\": \"error\",\n \"no-undef\": \"error\",\n \"no-unneeded-ternary\": \"error\",\n \"no-unreachable\": \"error\",\n \"no-useless-return\": \"error\",\n \"prefer-template\": \"error\",\n\n \"import/exports-last\": \"off\",\n \"import/group-exports\": \"off\",\n \"import/no-anonymous-default-export\": \"off\",\n \"import/no-named-export\": \"off\",\n \"import/no-namespace\": \"off\",\n \"import/no-nodejs-modules\": \"off\",\n \"import/no-unassigned-import\": \"off\",\n \"import/prefer-default-export\": \"off\",\n \"import/max-dependencies\": \"off\",\n \"import/no-cycle\": \"error\",\n\n \"promise/prefer-await-to-callbacks\": \"off\",\n\n \"typescript/ban-ts-comment\": [\"error\", { minimumDescriptionLength: 10 }],\n \"typescript/consistent-type-definitions\": \"off\",\n \"typescript/consistent-return\": \"error\",\n \"typescript/consistent-type-exports\": \"error\",\n \"typescript/consistent-type-imports\": [\n \"error\",\n { prefer: \"type-imports\", fixStyle: \"separate-type-imports\" },\n ],\n \"typescript/dot-notation\": \"error\",\n \"typescript/explicit-module-boundary-types\": \"error\",\n \"typescript/no-confusing-void-expression\": \"error\",\n \"typescript/no-dynamic-delete\": \"error\",\n \"typescript/no-explicit-any\": \"error\",\n \"typescript/no-floating-promises\": \"error\",\n \"typescript/no-misused-promises\": \"error\",\n \"typescript/no-misused-spread\": \"error\",\n \"typescript/no-non-null-assertion\": \"error\",\n \"typescript/no-require-imports\": \"error\",\n \"typescript/no-unnecessary-condition\": \"error\",\n \"typescript/no-unnecessary-qualifier\": \"error\",\n \"typescript/no-unnecessary-type-arguments\": \"error\",\n \"typescript/no-unnecessary-type-assertion\": \"error\",\n \"typescript/no-unnecessary-type-parameters\": \"error\",\n \"typescript/no-unsafe-argument\": \"error\",\n \"typescript/no-unsafe-assignment\": \"error\",\n \"typescript/no-unsafe-call\": \"error\",\n \"typescript/no-unsafe-member-access\": \"error\",\n \"typescript/no-unsafe-return\": \"error\",\n \"typescript/no-useless-default-assignment\": \"error\",\n \"typescript/non-nullable-type-assertion-style\": \"error\",\n \"typescript/only-throw-error\": \"error\",\n \"typescript/prefer-find\": \"error\",\n \"typescript/prefer-nullish-coalescing\": \"error\",\n \"typescript/prefer-optional-chain\": \"error\",\n \"typescript/prefer-readonly\": \"error\",\n \"typescript/prefer-readonly-parameter-types\": \"off\",\n \"typescript/prefer-regexp-exec\": \"error\",\n \"typescript/require-await\": \"off\",\n \"typescript/require-array-sort-compare\": \"error\",\n \"typescript/restrict-plus-operands\": \"error\",\n \"typescript/restrict-template-expressions\": \"error\",\n \"typescript/return-await\": \"error\",\n \"typescript/strict-boolean-expressions\": \"error\",\n \"typescript/strict-void-return\": \"error\",\n \"typescript/switch-exhaustiveness-check\": \"error\",\n \"typescript/unbound-method\": \"error\",\n \"typescript/use-unknown-in-catch-callback-variable\": \"error\",\n\n \"unicorn/no-null\": \"off\",\n \"unicorn/no-abusive-eslint-disable\": \"error\",\n \"unicorn/filename-case\": [\"error\", { case: \"kebabCase\" }],\n },\n overrides: [\n {\n files: [\"**/*.{cjs,cts}\"],\n env: {\n node: true,\n },\n rules: {\n \"typescript/no-require-imports\": \"off\",\n },\n },\n {\n files: [\"**/*.config.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\"],\n env: {\n node: true,\n },\n rules: {\n \"func-names\": \"off\",\n },\n },\n {\n files: [\"**/*.d.ts\"],\n rules: {\n \"typescript/no-empty-interface\": \"off\",\n },\n },\n {\n files: [\n \"**/test/**\",\n \"**/tests/**\",\n \"**/__tests__/**\",\n \"**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\",\n ],\n plugins: [...BASE_LINT_PLUGINS, \"vitest\"],\n env: {\n vitest: true,\n },\n rules: {\n \"vitest/no-importing-vitest-globals\": \"off\",\n \"vitest/max-nested-describe\": [\"error\", { max: 3 }],\n },\n },\n ],\n};\n\nexport const baseLint: LintConfig = baseLintConfig;\n\nconst reactLintConfig: LintConfig = {\n plugins: [\"react\", \"jsx-a11y\"],\n env: {\n browser: true,\n },\n rules: {\n \"jsx-a11y/alt-text\": \"error\",\n\n \"react/jsx-props-no-spreading\": \"off\",\n \"react/react-in-jsx-scope\": \"off\",\n \"react/exhaustive-deps\": \"error\",\n \"react/jsx-key\": \"error\",\n \"react/jsx-max-depth\": [\"error\", { max: 4 }],\n \"react/jsx-no-constructed-context-values\": \"error\",\n \"react/jsx-no-duplicate-props\": \"error\",\n \"react/jsx-no-undef\": \"error\",\n \"react/no-array-index-key\": \"error\",\n \"react/no-children-prop\": \"error\",\n \"react/no-clone-element\": \"error\",\n \"react/no-danger\": \"error\",\n \"react/no-danger-with-children\": \"error\",\n \"react/no-direct-mutation-state\": \"error\",\n \"react/no-find-dom-node\": \"error\",\n \"react/no-react-children\": \"error\",\n \"react/no-string-refs\": \"error\",\n \"react/style-prop-object\": \"off\",\n \"react/no-unsafe\": \"error\",\n \"react/no-unknown-property\": \"error\",\n \"react/void-dom-elements-no-children\": \"error\",\n },\n};\n\nexport const reactLint: LintConfig = reactLintConfig;\n\nconst serverLintConfig: LintConfig = {\n plugins: [\"node\"],\n globals: {\n WebSocketPair: \"readonly\",\n },\n rules: {\n \"node/no-exports-assign\": \"error\",\n },\n};\n\nexport const serverLint: LintConfig = serverLintConfig;\n","import type { UserConfig } from \"vite-plus\";\nimport type { ConfigInput } from \"../shared/config.ts\";\nimport { createDefinedConfig } from \"../shared/config.ts\";\nimport {\n DEFAULT_STAGED_CHECK_COMMAND,\n DEFAULT_STAGED_CHECK_GLOB,\n DEFAULT_TEST_INCLUDE,\n} from \"../shared/constants.ts\";\nimport { baseFmt } from \"../shared/fmt.ts\";\nimport { baseLint } from \"../shared/lint.ts\";\n\nconst baseConfig: UserConfig = {\n fmt: baseFmt,\n lint: baseLint,\n test: {\n include: [...DEFAULT_TEST_INCLUDE],\n },\n staged: {\n [DEFAULT_STAGED_CHECK_GLOB]: DEFAULT_STAGED_CHECK_COMMAND,\n },\n};\n\nexport function createBaseConfig(overrides: ConfigInput = {}): UserConfig {\n return createDefinedConfig(baseConfig, overrides);\n}\n\nexport { createBaseConfig as createConfig };\n"],"mappings":"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"}