@kasoa/vite-plus-config 0.3.2 → 0.4.1

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
@@ -1,6 +1,6 @@
1
1
  # @kasoa/vite-plus-config
2
2
 
3
- Strict, composable Vite+ configuration fragments. Requires Node.js 24.11 or newer, Vite+ 0.2.9 or newer, and TypeScript 7.
3
+ Strict, composable Vite+ configuration fragments. Requires Node.js 24.11 or newer, Vite+ 0.3.0 or newer, and TypeScript 7.
4
4
 
5
5
  The preset is intentionally strict. Fix violations by default. When a runtime, protocol, generated file, framework, or external signature requires an exception, keep it narrow and explain why it is necessary.
6
6
 
@@ -54,10 +54,10 @@ The source runtime and test runtime are independent. The example uses Vitest's d
54
54
  import {
55
55
  baseToolingConfig,
56
56
  composeConfig,
57
- nodeTestLintConfig,
58
57
  reactCoreConfig,
59
58
  reactNativeGeneratedConfig,
60
59
  reactNativeRuntimeConfig,
60
+ reactNativeTestLintConfig,
61
61
  } from "@kasoa/vite-plus-config";
62
62
 
63
63
  export default composeConfig(
@@ -65,11 +65,11 @@ export default composeConfig(
65
65
  reactCoreConfig,
66
66
  reactNativeRuntimeConfig,
67
67
  reactNativeGeneratedConfig,
68
- nodeTestLintConfig,
68
+ reactNativeTestLintConfig,
69
69
  );
70
70
  ```
71
71
 
72
- The native fragment permits React Native's `__DEV__` and Expo's statically replaced `process.env`, rejects DOM and Worker globals, excludes DOM accessibility rules, and ignores `.expo` output.
72
+ The native fragment permits React Native's `__DEV__` and Expo's statically replaced `process.env`, rejects DOM and Worker globals, excludes DOM accessibility rules, and ignores `.expo` output. It also follows the bundled Hermes runtime: `toReversed()` remains preferred, while `toSorted()` and `Intl.RelativeTimeFormat` are rejected and copied arrays may use `sort()`. `reactNativeTestLintConfig` assigns portable test files to Vitest and `*.native.test.*` or `*.native.spec.*` files to Jest.
73
73
 
74
74
  ## Libraries and workspaces
75
75
 
@@ -8,6 +8,9 @@ const TEST_FILES = [
8
8
  "**/__tests__/**",
9
9
  "**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"
10
10
  ];
11
+ const VITEST_SETUP_FILES = ["**/{vitest.setup,setup.vitest}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"];
12
+ const REACT_NATIVE_JEST_TEST_FILES = ["**/*.native.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"];
13
+ const REACT_NATIVE_JEST_SETUP_FILES = ["**/{jest.setup,setup.jest}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"];
11
14
  const RUNTIME_OVERRIDE_EXCLUDE_FILES = [
12
15
  ...COMMONJS_FILES,
13
16
  ...CONFIG_FILES,
@@ -30,6 +33,6 @@ const DEFAULT_STAGED_FORMAT_GLOB = "*.{css,html,json,jsonc,less,md,mdx,scss,yaml
30
33
  const DEFAULT_STAGED_FORMAT_COMMAND = "vp fmt --write --no-error-on-unmatched-pattern";
31
34
  const DEFAULT_WRANGLER_CONFIG_PATH = "./wrangler.jsonc";
32
35
  //#endregion
33
- export { DEFAULT_IGNORE_PATTERNS as a, DEFAULT_STAGED_FORMAT_COMMAND as c, REACT_NATIVE_IGNORE_PATTERNS as d, RUNTIME_OVERRIDE_EXCLUDE_FILES as f, CONFIG_FILES as i, DEFAULT_STAGED_FORMAT_GLOB as l, CODE_FILES as n, DEFAULT_STAGED_CHECK_COMMAND as o, TEST_FILES as p, COMMONJS_FILES as r, DEFAULT_STAGED_CHECK_GLOB as s, CLOUDFLARE_WORKER_IGNORE_PATTERNS as t, DEFAULT_WRANGLER_CONFIG_PATH as u };
36
+ export { DEFAULT_IGNORE_PATTERNS as a, DEFAULT_STAGED_FORMAT_COMMAND as c, REACT_NATIVE_IGNORE_PATTERNS as d, REACT_NATIVE_JEST_SETUP_FILES as f, VITEST_SETUP_FILES as g, TEST_FILES as h, CONFIG_FILES as i, DEFAULT_STAGED_FORMAT_GLOB as l, RUNTIME_OVERRIDE_EXCLUDE_FILES as m, CODE_FILES as n, DEFAULT_STAGED_CHECK_COMMAND as o, REACT_NATIVE_JEST_TEST_FILES as p, COMMONJS_FILES as r, DEFAULT_STAGED_CHECK_GLOB as s, CLOUDFLARE_WORKER_IGNORE_PATTERNS as t, DEFAULT_WRANGLER_CONFIG_PATH as u };
34
37
 
35
- //# sourceMappingURL=constants-rgwdXdWu.mjs.map
38
+ //# sourceMappingURL=constants-DInx77MZ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants-DInx77MZ.mjs","names":[],"sources":["../src/constants.ts"],"sourcesContent":["export const CODE_FILES = [\"**/*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\"] as const;\nexport const COMMONJS_FILES = [\"**/*.{cjs,cts}\"] as const;\nexport const CONFIG_FILES = [\"**/*.config.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\"] as const;\nexport const TEST_FILES = [\n \"**/test/**\",\n \"**/tests/**\",\n \"**/__tests__/**\",\n \"**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\",\n] as const;\nexport const VITEST_SETUP_FILES = [\n \"**/{vitest.setup,setup.vitest}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\",\n] as const;\nexport const REACT_NATIVE_JEST_TEST_FILES = [\n \"**/*.native.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\",\n] as const;\nexport const REACT_NATIVE_JEST_SETUP_FILES = [\n \"**/{jest.setup,setup.jest}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\",\n] as const;\nexport const RUNTIME_OVERRIDE_EXCLUDE_FILES: readonly string[] = [\n ...COMMONJS_FILES,\n ...CONFIG_FILES,\n ...TEST_FILES,\n] as const;\n\nexport const DEFAULT_IGNORE_PATTERNS = [\n \"node_modules/**\",\n \"dist/**\",\n \"dist-ssr/**\",\n \"**/.wrangler/**\",\n \"**/migrations/**\",\n \"**/drizzle/migrations.js\",\n \"**/drizzle/meta/*.json\",\n] as const;\nexport const CLOUDFLARE_WORKER_IGNORE_PATTERNS = [\"**/worker-configuration.d.ts\"] as const;\nexport const REACT_NATIVE_IGNORE_PATTERNS = [\"**/.expo/**\"] as const;\n\nexport const DEFAULT_STAGED_CHECK_GLOB = \"*.{js,jsx,ts,tsx,mjs,cjs,mts,cts,svelte,vue}\";\nexport const DEFAULT_STAGED_CHECK_COMMAND = \"vp check --fix\";\nexport const DEFAULT_STAGED_FORMAT_GLOB = \"*.{css,html,json,jsonc,less,md,mdx,scss,yaml,yml}\";\nexport const DEFAULT_STAGED_FORMAT_COMMAND = \"vp fmt --write --no-error-on-unmatched-pattern\";\nexport const DEFAULT_WRANGLER_CONFIG_PATH = \"./wrangler.jsonc\";\n"],"mappings":";AAAA,MAAa,aAAa,CAAC,sCAAsC;AACjE,MAAa,iBAAiB,CAAC,gBAAgB;AAC/C,MAAa,eAAe,CAAC,6CAA6C;AAC1E,MAAa,aAAa;CACxB;CACA;CACA;CACA;AACF;AACA,MAAa,qBAAqB,CAChC,gEACF;AACA,MAAa,+BAA+B,CAC1C,yDACF;AACA,MAAa,gCAAgC,CAC3C,4DACF;AACA,MAAa,iCAAoD;CAC/D,GAAG;CACH,GAAG;CACH,GAAG;AACL;AAEA,MAAa,0BAA0B;CACrC;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AACA,MAAa,oCAAoC,CAAC,8BAA8B;AAChF,MAAa,+BAA+B,CAAC,aAAa;AAE1D,MAAa,4BAA4B;AACzC,MAAa,+BAA+B;AAC5C,MAAa,6BAA6B;AAC1C,MAAa,gCAAgC;AAC7C,MAAa,+BAA+B"}
@@ -1,4 +1,4 @@
1
- import { u as DEFAULT_WRANGLER_CONFIG_PATH } from "../../constants-rgwdXdWu.mjs";
1
+ import { u as DEFAULT_WRANGLER_CONFIG_PATH } from "../../constants-DInx77MZ.mjs";
2
2
  import { lazyPlugins } from "vite-plus";
3
3
  import { cloudflareTest } from "@cloudflare/vitest-plugin";
4
4
  //#region src/cloudflare-workers/index.ts
@@ -5,6 +5,9 @@ declare const CODE_FILES: readonly ["**/*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"];
5
5
  declare const COMMONJS_FILES: readonly ["**/*.{cjs,cts}"];
6
6
  declare const CONFIG_FILES: readonly ["**/*.config.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"];
7
7
  declare const TEST_FILES: readonly ["**/test/**", "**/tests/**", "**/__tests__/**", "**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"];
8
+ declare const VITEST_SETUP_FILES: readonly ["**/{vitest.setup,setup.vitest}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"];
9
+ declare const REACT_NATIVE_JEST_TEST_FILES: readonly ["**/*.native.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"];
10
+ declare const REACT_NATIVE_JEST_SETUP_FILES: readonly ["**/{jest.setup,setup.jest}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"];
8
11
  declare const RUNTIME_OVERRIDE_EXCLUDE_FILES: readonly string[];
9
12
  //#endregion
10
13
  //#region src/fragments.d.ts
@@ -21,6 +24,7 @@ declare const cloudflareWorkerGeneratedConfig: ConfigFragment;
21
24
  declare const nodeTestLintConfig: ConfigFragment;
22
25
  declare const browserTestLintConfig: ConfigFragment;
23
26
  declare const cloudflareWorkerTestLintConfig: ConfigFragment;
27
+ declare const reactNativeTestLintConfig: ConfigFragment;
24
28
  declare const libraryPackDefaults: PackConfig;
25
29
  declare const libraryPackConfig: ConfigFragment;
26
30
  declare const workspaceRunConfig: ConfigFragment;
@@ -38,10 +42,11 @@ declare const reactDomLint: LintProfile;
38
42
  declare const reactNativeRuntimeLint: LintProfile;
39
43
  declare const reactWebLint: LintProfile;
40
44
  declare const reactNativeLint: LintProfile;
45
+ declare const reactNativeJestTestLint: LintProfile;
41
46
  declare const cloudflareWorkerLint: LintProfile;
42
47
  declare const nodeTestLint: LintProfile;
43
48
  declare const browserTestLint: LintProfile;
44
49
  declare const cloudflareWorkerTestLint: LintProfile;
45
50
  //#endregion
46
- export { CODE_FILES, COMMONJS_FILES, CONFIG_FILES, type ConfigFragment, type PluginInput, RUNTIME_OVERRIDE_EXCLUDE_FILES, TEST_FILES, baseToolingConfig, browserLint, browserRuntimeConfig, browserTestLint, browserTestLintConfig, cloudflareWorkerGeneratedConfig, cloudflareWorkerLint, cloudflareWorkerRuntimeConfig, cloudflareWorkerTestLint, cloudflareWorkerTestLintConfig, composeConfig, libraryPackConfig, libraryPackDefaults, nodeLint, nodeRuntimeConfig, nodeTestLint, nodeTestLintConfig, reactCoreConfig, reactCoreLint, reactDomConfig, reactDomLint, reactNativeGeneratedConfig, reactNativeLint, reactNativeRuntimeConfig, reactNativeRuntimeLint, reactWebLint, workspaceRunConfig };
51
+ export { CODE_FILES, COMMONJS_FILES, CONFIG_FILES, type ConfigFragment, type PluginInput, REACT_NATIVE_JEST_SETUP_FILES, REACT_NATIVE_JEST_TEST_FILES, RUNTIME_OVERRIDE_EXCLUDE_FILES, TEST_FILES, VITEST_SETUP_FILES, baseToolingConfig, browserLint, browserRuntimeConfig, browserTestLint, browserTestLintConfig, cloudflareWorkerGeneratedConfig, cloudflareWorkerLint, cloudflareWorkerRuntimeConfig, cloudflareWorkerTestLint, cloudflareWorkerTestLintConfig, composeConfig, libraryPackConfig, libraryPackDefaults, nodeLint, nodeRuntimeConfig, nodeTestLint, nodeTestLintConfig, reactCoreConfig, reactCoreLint, reactDomConfig, reactDomLint, reactNativeGeneratedConfig, reactNativeJestTestLint, reactNativeLint, reactNativeRuntimeConfig, reactNativeRuntimeLint, reactNativeTestLintConfig, reactWebLint, workspaceRunConfig };
47
52
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/constants.ts","../../src/fragments.ts","../../src/lint/types.ts","../../src/lint/profiles.ts"],"mappings":";;;cAAa;cACA;cACA;cACA;cAMA;;;KCoBR,aAAa,QAAQ;cAEb,mBAAmB;cASnB,mBAAmB;cAInB,sBAAsB;cAItB,iBAAiB;cAKjB,gBAAgB;cAIhB,0BAA0B;cAI1B,4BAA4B;cAK5B,+BAA+B;cAI/B,iCAAiC;cAKjC,oBAAoB;cAIpB,uBAAuB;cAIvB,gCAAgC;cAIhC,qBAAqB;cAcrB,mBAAmB;cAInB,oBAAoB;;;KCvGrB,aAAa,YAAY;KACzB,eAAe,YAAY;KAC3B,cAAc,KAAK;;;cCoElB,UAAU;cAOV,aAAa;cAOb,eAAe;cAKf,cAAc;cAiDd,wBAAwB;cAOxB,cAAc;cAWd,iBAAiB;cAUjB,sBAAsB;cAMtB,cAAc;cASd,iBAAiB;cASjB,0BAA0B"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/constants.ts","../../src/fragments.ts","../../src/lint/types.ts","../../src/lint/profiles.ts"],"mappings":";;;cAAa;cACA;cACA;cACA;cAMA;cAGA;cAGA;cAGA;;;KCYR,aAAa,QAAQ;cAEb,mBAAmB;cASnB,mBAAmB;cAInB,sBAAsB;cAItB,iBAAiB;cAKjB,gBAAgB;cAIhB,0BAA0B;cAI1B,4BAA4B;cAK5B,+BAA+B;cAI/B,iCAAiC;cAKjC,oBAAoB;cAIpB,uBAAuB;cAIvB,gCAAgC;cAIhC,2BAA2B;cAI3B,qBAAqB;cAcrB,mBAAmB;cAInB,oBAAoB;;;KC5GrB,aAAa,YAAY;KACzB,eAAe,YAAY;KAC3B,cAAc,KAAK;;;cC0ElB,UAAU;cAOV,aAAa;cAOb,eAAe;cAKf,cAAc;cAiDd,wBAAwB;cAOxB,cAAc;cAWd,iBAAiB;cAUjB,yBAAyB;cAWzB,sBAAsB;cAMtB,cAAc;cASd,iBAAiB;cASjB,0BAA0B"}
@@ -1,4 +1,4 @@
1
- import { a as DEFAULT_IGNORE_PATTERNS, c as DEFAULT_STAGED_FORMAT_COMMAND, d as REACT_NATIVE_IGNORE_PATTERNS, f as RUNTIME_OVERRIDE_EXCLUDE_FILES, i as CONFIG_FILES, l as DEFAULT_STAGED_FORMAT_GLOB, n as CODE_FILES, o as DEFAULT_STAGED_CHECK_COMMAND, p as TEST_FILES, r as COMMONJS_FILES, s as DEFAULT_STAGED_CHECK_GLOB, t as CLOUDFLARE_WORKER_IGNORE_PATTERNS } from "../constants-rgwdXdWu.mjs";
1
+ import { a as DEFAULT_IGNORE_PATTERNS, c as DEFAULT_STAGED_FORMAT_COMMAND, d as REACT_NATIVE_IGNORE_PATTERNS, f as REACT_NATIVE_JEST_SETUP_FILES, g as VITEST_SETUP_FILES, h as TEST_FILES, i as CONFIG_FILES, l as DEFAULT_STAGED_FORMAT_GLOB, m as RUNTIME_OVERRIDE_EXCLUDE_FILES, n as CODE_FILES, o as DEFAULT_STAGED_CHECK_COMMAND, p as REACT_NATIVE_JEST_TEST_FILES, r as COMMONJS_FILES, s as DEFAULT_STAGED_CHECK_GLOB, t as CLOUDFLARE_WORKER_IGNORE_PATTERNS } from "../constants-DInx77MZ.mjs";
2
2
  import { defineConfig, mergeConfig } from "vite-plus";
3
3
  //#region src/compose.ts
4
4
  function toUserConfig(config) {
@@ -51,6 +51,47 @@ const browserRules = {
51
51
  "unicorn/prefer-modern-dom-apis": "error"
52
52
  };
53
53
  //#endregion
54
+ //#region src/lint/rules/jest.ts
55
+ const jestRules = {
56
+ "max-nested-callbacks": ["error", { max: 4 }],
57
+ "jest/consistent-test-it": ["error", {
58
+ fn: "test",
59
+ withinDescribe: "it"
60
+ }],
61
+ "jest/max-nested-describe": ["error", { max: 3 }],
62
+ "jest/no-alias-methods": "error",
63
+ "jest/no-duplicate-hooks": "error",
64
+ "jest/no-identical-title": "error",
65
+ "jest/no-interpolation-in-snapshots": "error",
66
+ "jest/no-large-snapshots": "error",
67
+ "jest/no-mocks-import": "error",
68
+ "jest/no-restricted-jest-methods": ["error", {
69
+ doMock: "Use a maintained implementation, spy, or injected owned dependency.",
70
+ mock: "Use a maintained implementation, spy, or injected owned dependency.",
71
+ unstable_mockModule: "Use a maintained implementation, spy, or injected owned dependency."
72
+ }],
73
+ "jest/no-test-prefixes": "error",
74
+ "jest/no-test-return-statement": "error",
75
+ "jest/no-unneeded-async-expect-function": "error",
76
+ "jest/padding-around-after-all-blocks": "error",
77
+ "jest/padding-around-test-blocks": "error",
78
+ "jest/prefer-called-with": "error",
79
+ "jest/prefer-comparison-matcher": "error",
80
+ "jest/prefer-each": "error",
81
+ "jest/prefer-equality-matcher": "error",
82
+ "jest/prefer-hooks-in-order": "error",
83
+ "jest/prefer-hooks-on-top": "error",
84
+ "jest/prefer-importing-jest-globals": "error",
85
+ "jest/prefer-mock-promise-shorthand": "error",
86
+ "jest/prefer-mock-return-shorthand": "error",
87
+ "jest/prefer-spy-on": "error",
88
+ "jest/prefer-to-be": "error",
89
+ "jest/prefer-to-contain": "error",
90
+ "jest/prefer-to-have-been-called-times": "error",
91
+ "jest/prefer-to-have-length": "error",
92
+ "jest/prefer-todo": "error"
93
+ };
94
+ //#endregion
54
95
  //#region src/lint/rules/node.ts
55
96
  const nodeRules = {
56
97
  "node/exports-style": "error",
@@ -84,7 +125,19 @@ const reactCoreRules = {
84
125
  "react/self-closing-comp": "error",
85
126
  "react/state-in-constructor": "error",
86
127
  "react/exhaustive-deps": "error",
87
- "react/react-compiler": "error",
128
+ "react/error-boundaries": "error",
129
+ "react/globals": "error",
130
+ "react/immutability": "error",
131
+ "react/incompatible-library": "error",
132
+ "react/preserve-manual-memoization": "error",
133
+ "react/purity": "error",
134
+ "react/refs": "error",
135
+ "react/set-state-in-effect": "error",
136
+ "react/set-state-in-render": "error",
137
+ "react/static-components": "error",
138
+ "react/unsupported-syntax": "error",
139
+ "react/use-memo": "error",
140
+ "react/void-use-memo": "error",
88
141
  "react/react-in-jsx-scope": "off",
89
142
  "react/jsx-key": "error",
90
143
  "react/jsx-no-duplicate-props": "error",
@@ -110,250 +163,14 @@ const reactDomRules = {
110
163
  "react/void-dom-elements-no-children": "error"
111
164
  };
112
165
  //#endregion
113
- //#region src/lint/rules/react-native.ts
114
- const reactNativeRules = {
115
- "react/iframe-missing-sandbox": "off",
116
- "react/jsx-no-script-url": "off",
117
- "react/no-unknown-property": "off",
118
- "react/no-unescaped-entities": "off",
119
- "react/no-unstable-nested-components": ["error", { allowAsProps: true }],
120
- "react/void-dom-elements-no-children": "off"
121
- };
122
- //#endregion
123
- //#region src/lint/rules/vitest.ts
124
- const vitestRules = {
125
- "max-nested-callbacks": ["error", { max: 4 }],
126
- "vitest/consistent-each-for": "error",
127
- "vitest/consistent-test-it": ["error", {
128
- fn: "test",
129
- withinDescribe: "it"
130
- }],
131
- "vitest/consistent-vitest-vi": "error",
132
- "vitest/max-nested-describe": ["error", { max: 3 }],
133
- "vitest/no-alias-methods": "error",
134
- "vitest/no-duplicate-hooks": "error",
135
- "vitest/no-identical-title": "error",
136
- "vitest/no-import-node-test": "error",
137
- "vitest/no-interpolation-in-snapshots": "error",
138
- "vitest/no-large-snapshots": "error",
139
- "vitest/no-mocks-import": "error",
140
- "vitest/no-test-prefixes": "error",
141
- "vitest/no-test-return-statement": "error",
142
- "vitest/no-unneeded-async-expect-function": "error",
143
- "vitest/padding-around-after-all-blocks": "error",
144
- "vitest/padding-around-test-blocks": "error",
145
- "vitest/prefer-called-exactly-once-with": "error",
146
- "vitest/prefer-called-once": "error",
147
- "vitest/prefer-called-with": "error",
148
- "vitest/prefer-comparison-matcher": "error",
149
- "vitest/prefer-each": "error",
150
- "vitest/prefer-equality-matcher": "error",
151
- "vitest/prefer-expect-resolves": "error",
152
- "vitest/prefer-expect-type-of": "error",
153
- "vitest/prefer-hooks-in-order": "error",
154
- "vitest/prefer-hooks-on-top": "error",
155
- "vitest/prefer-import-in-mock": "error",
156
- "vitest/prefer-importing-vitest-globals": "error",
157
- "vitest/prefer-mock-promise-shorthand": "error",
158
- "vitest/prefer-mock-return-shorthand": "error",
159
- "vitest/prefer-spy-on": "error",
160
- "vitest/prefer-strict-boolean-matchers": "error",
161
- "vitest/prefer-strict-equal": "error",
162
- "vitest/prefer-to-be": "error",
163
- "vitest/prefer-to-be-object": "error",
164
- "vitest/prefer-to-contain": "error",
165
- "vitest/prefer-to-have-been-called-times": "error",
166
- "vitest/prefer-to-have-length": "error",
167
- "vitest/prefer-todo": "error"
168
- };
169
- //#endregion
170
- //#region src/lint/profiles.ts
171
- const BASE_LINT_PLUGINS = [
172
- "typescript",
173
- "unicorn",
174
- "oxc",
175
- "import",
176
- "promise"
177
- ];
178
- const neutralEnvironment = {
179
- browser: false,
180
- node: false,
181
- serviceworker: false,
182
- worker: false
183
- };
184
- const nodeEnvironment = {
185
- ...neutralEnvironment,
186
- node: true
187
- };
188
- const browserEnvironment = {
189
- ...neutralEnvironment,
190
- browser: true
191
- };
192
- const reactNativeEnvironment = { ...neutralEnvironment };
193
- const cloudflareWorkerEnvironment = {
194
- ...neutralEnvironment,
195
- serviceworker: true,
196
- worker: true
197
- };
198
- const platformGlobalsOff = {
199
- __DEV__: "off",
200
- Cloudflare: "off",
201
- DigestStream: "off",
202
- FixedLengthStream: "off",
203
- HTMLRewriter: "off",
204
- IdentityTransformStream: "off",
205
- process: "off",
206
- WebSocketPair: "off",
207
- WebSocketRequestResponsePair: "off"
208
- };
209
- const nodeGlobals = {
210
- ...platformGlobalsOff,
211
- console: "readonly",
212
- process: "readonly"
213
- };
214
- const cloudflareWorkerGlobals = {
215
- ...platformGlobalsOff,
216
- Cloudflare: "readonly",
217
- DigestStream: "readonly",
218
- FixedLengthStream: "readonly",
219
- HTMLRewriter: "readonly",
220
- IdentityTransformStream: "readonly",
221
- WebSocketPair: "readonly",
222
- WebSocketRequestResponsePair: "readonly"
223
- };
224
- const neutralLint = {
225
- env: neutralEnvironment,
226
- globals: platformGlobalsOff,
227
- plugins: [...BASE_LINT_PLUGINS]
228
- };
229
- const nodeLint = {
230
- env: nodeEnvironment,
231
- globals: nodeGlobals,
232
- plugins: [...BASE_LINT_PLUGINS, "node"],
233
- rules: nodeRules
234
- };
235
- const browserLint = {
236
- env: browserEnvironment,
237
- globals: platformGlobalsOff,
238
- plugins: [...BASE_LINT_PLUGINS],
239
- rules: browserRules
240
- };
241
- const reactCoreLint = {
242
- plugins: [...BASE_LINT_PLUGINS, "react"],
243
- rules: reactCoreRules
244
- };
245
- const reactDomLint = {
246
- plugins: [
247
- ...BASE_LINT_PLUGINS,
248
- "react",
249
- "jsx-a11y"
250
- ],
251
- rules: reactDomRules
252
- };
253
- const reactNativeGlobals = {
254
- ...platformGlobalsOff,
255
- __BUNDLE_START_TIME__: "readonly",
256
- __DEV__: "readonly",
257
- AbortController: "readonly",
258
- AbortSignal: "readonly",
259
- alert: "readonly",
260
- Blob: "readonly",
261
- cancelAnimationFrame: "readonly",
262
- clearImmediate: "readonly",
263
- clearInterval: "readonly",
264
- clearTimeout: "readonly",
265
- console: "readonly",
266
- crypto: "readonly",
267
- DOMRect: "readonly",
268
- ErrorUtils: "readonly",
269
- Event: "readonly",
270
- EventTarget: "readonly",
271
- fetch: "readonly",
272
- fetchBundle: "readonly",
273
- File: "readonly",
274
- FileReader: "readonly",
275
- FormData: "readonly",
276
- Headers: "readonly",
277
- HermesInternal: "readonly",
278
- navigator: "readonly",
279
- originalXMLHttpRequest: "readonly",
280
- performance: "readonly",
281
- process: "readonly",
282
- queueMicrotask: "readonly",
283
- requestAnimationFrame: "readonly",
284
- Request: "readonly",
285
- require: "readonly",
286
- Response: "readonly",
287
- setImmediate: "readonly",
288
- setInterval: "readonly",
289
- setTimeout: "readonly",
290
- URL: "readonly",
291
- URLSearchParams: "readonly",
292
- WebSocket: "readonly",
293
- XMLHttpRequest: "readonly",
294
- XMLHttpRequestUpload: "readonly"
295
- };
296
- const reactNativeRuntimeLint = {
297
- env: reactNativeEnvironment,
298
- globals: reactNativeGlobals,
299
- plugins: [...BASE_LINT_PLUGINS, "react"],
300
- rules: reactNativeRules
301
- };
302
- const reactWebLint = {
303
- env: browserEnvironment,
304
- globals: platformGlobalsOff,
305
- plugins: [
306
- ...BASE_LINT_PLUGINS,
307
- "react",
308
- "jsx-a11y"
309
- ],
310
- rules: {
311
- ...browserRules,
312
- ...reactCoreRules,
313
- ...reactDomRules
314
- }
315
- };
316
- const reactNativeLint = {
317
- env: reactNativeEnvironment,
318
- globals: reactNativeGlobals,
319
- plugins: [...BASE_LINT_PLUGINS, "react"],
320
- rules: {
321
- ...reactCoreRules,
322
- ...reactNativeRules
323
- }
324
- };
325
- const cloudflareWorkerLint = {
326
- env: cloudflareWorkerEnvironment,
327
- globals: cloudflareWorkerGlobals,
328
- plugins: [...BASE_LINT_PLUGINS]
329
- };
330
- const nodeTestLint = {
331
- ...nodeLint,
332
- plugins: [
333
- ...BASE_LINT_PLUGINS,
334
- "node",
335
- "vitest"
336
- ],
337
- rules: {
338
- ...nodeRules,
339
- ...vitestRules
340
- }
341
- };
342
- const browserTestLint = {
343
- ...browserLint,
344
- plugins: [...BASE_LINT_PLUGINS, "vitest"],
345
- rules: {
346
- ...browserRules,
347
- ...vitestRules
348
- }
349
- };
350
- const cloudflareWorkerTestLint = {
351
- ...cloudflareWorkerLint,
352
- plugins: [...BASE_LINT_PLUGINS, "vitest"],
353
- rules: vitestRules
354
- };
355
- //#endregion
356
166
  //#region src/lint/rules/universal.ts
167
+ const universalRestrictedProperties = [{
168
+ object: "Reflect",
169
+ property: "get"
170
+ }, {
171
+ object: "Reflect",
172
+ property: "apply"
173
+ }];
357
174
  const universalRules = {
358
175
  "accessor-pairs": "error",
359
176
  "array-callback-return": "error",
@@ -405,6 +222,7 @@ const universalRules = {
405
222
  "no-promise-executor-return": "error",
406
223
  "no-prototype-builtins": "error",
407
224
  "no-redeclare": "error",
225
+ "no-restricted-properties": ["error", ...universalRestrictedProperties],
408
226
  "no-return-assign": "error",
409
227
  "no-script-url": "error",
410
228
  "no-self-compare": "error",
@@ -465,6 +283,7 @@ const universalRules = {
465
283
  "typescript/no-unsafe-function-type": "error",
466
284
  "typescript/no-unsafe-member-access": "error",
467
285
  "typescript/no-unsafe-return": "error",
286
+ "typescript/no-unsafe-type-assertion": "error",
468
287
  "typescript/no-wrapper-object-types": "error",
469
288
  "typescript/only-throw-error": "error",
470
289
  "typescript/parameter-properties": "error",
@@ -550,7 +369,6 @@ const universalRules = {
550
369
  "unicorn/prefer-object-from-entries": "error",
551
370
  "unicorn/prefer-optional-catch-binding": "error",
552
371
  "unicorn/prefer-prototype-methods": "error",
553
- "unicorn/prefer-reflect-apply": "error",
554
372
  "unicorn/prefer-regexp-test": "error",
555
373
  "unicorn/prefer-response-static-json": "error",
556
374
  "unicorn/prefer-set-has": "error",
@@ -610,13 +428,293 @@ const universalRules = {
610
428
  "unicorn/no-abusive-eslint-disable": "error"
611
429
  };
612
430
  //#endregion
613
- //#region src/lint/configs.ts
614
- const baseLintConfig = {
615
- plugins: [...BASE_LINT_PLUGINS],
616
- ignorePatterns: [...DEFAULT_IGNORE_PATTERNS],
617
- env: neutralEnvironment,
618
- globals: neutralLint.globals,
619
- options: {
431
+ //#region src/lint/rules/react-native.ts
432
+ const reactNativeRules = {
433
+ "no-restricted-properties": [
434
+ "error",
435
+ ...universalRestrictedProperties,
436
+ {
437
+ property: "toSorted",
438
+ message: "Hermes lacks toSorted; copy the array before sorting."
439
+ },
440
+ {
441
+ object: "Intl",
442
+ property: "RelativeTimeFormat",
443
+ message: "Hermes lacks Intl.RelativeTimeFormat; use a supported formatter."
444
+ }
445
+ ],
446
+ "react/iframe-missing-sandbox": "off",
447
+ "react/jsx-no-script-url": "off",
448
+ "react/no-unknown-property": "off",
449
+ "react/no-unescaped-entities": "off",
450
+ "react/no-unstable-nested-components": ["error", { allowAsProps: true }],
451
+ "react/void-dom-elements-no-children": "off",
452
+ "unicorn/no-array-reverse": "error",
453
+ "unicorn/no-array-sort": ["error", { allowAfterSpread: true }]
454
+ };
455
+ //#endregion
456
+ //#region src/lint/rules/vitest.ts
457
+ const vitestRules = {
458
+ "max-nested-callbacks": ["error", { max: 4 }],
459
+ "vitest/consistent-each-for": "error",
460
+ "vitest/consistent-test-it": ["error", {
461
+ fn: "test",
462
+ withinDescribe: "it"
463
+ }],
464
+ "vitest/consistent-vitest-vi": "error",
465
+ "vitest/max-nested-describe": ["error", { max: 3 }],
466
+ "vitest/no-alias-methods": "error",
467
+ "vitest/no-duplicate-hooks": "error",
468
+ "vitest/no-identical-title": "error",
469
+ "vitest/no-import-node-test": "error",
470
+ "vitest/no-interpolation-in-snapshots": "error",
471
+ "vitest/no-large-snapshots": "error",
472
+ "vitest/no-mocks-import": "error",
473
+ "vitest/no-restricted-vi-methods": ["error", {
474
+ doMock: "Use a maintained implementation, spy, or injected owned dependency.",
475
+ mock: "Use a maintained implementation, spy, or injected owned dependency."
476
+ }],
477
+ "vitest/no-test-prefixes": "error",
478
+ "vitest/no-test-return-statement": "error",
479
+ "vitest/no-unneeded-async-expect-function": "error",
480
+ "vitest/padding-around-after-all-blocks": "error",
481
+ "vitest/padding-around-test-blocks": "error",
482
+ "vitest/prefer-called-exactly-once-with": "error",
483
+ "vitest/prefer-called-once": "error",
484
+ "vitest/prefer-called-with": "error",
485
+ "vitest/prefer-comparison-matcher": "error",
486
+ "vitest/prefer-each": "error",
487
+ "vitest/prefer-equality-matcher": "error",
488
+ "vitest/prefer-expect-resolves": "error",
489
+ "vitest/prefer-expect-type-of": "error",
490
+ "vitest/prefer-hooks-in-order": "error",
491
+ "vitest/prefer-hooks-on-top": "error",
492
+ "vitest/prefer-import-in-mock": "error",
493
+ "vitest/prefer-importing-vitest-globals": "error",
494
+ "vitest/prefer-mock-promise-shorthand": "error",
495
+ "vitest/prefer-mock-return-shorthand": "error",
496
+ "vitest/prefer-spy-on": "error",
497
+ "vitest/prefer-strict-boolean-matchers": "error",
498
+ "vitest/prefer-strict-equal": "error",
499
+ "vitest/prefer-to-be": "error",
500
+ "vitest/prefer-to-be-object": "error",
501
+ "vitest/prefer-to-contain": "error",
502
+ "vitest/prefer-to-have-been-called-times": "error",
503
+ "vitest/prefer-to-have-length": "error",
504
+ "vitest/prefer-todo": "error"
505
+ };
506
+ //#endregion
507
+ //#region src/lint/profiles.ts
508
+ const BASE_LINT_PLUGINS = [
509
+ "typescript",
510
+ "unicorn",
511
+ "oxc",
512
+ "import",
513
+ "promise"
514
+ ];
515
+ const neutralEnvironment = {
516
+ browser: false,
517
+ node: false,
518
+ serviceworker: false,
519
+ worker: false
520
+ };
521
+ const nodeEnvironment = {
522
+ ...neutralEnvironment,
523
+ node: true
524
+ };
525
+ const browserEnvironment = {
526
+ ...neutralEnvironment,
527
+ browser: true
528
+ };
529
+ const reactNativeEnvironment = { ...neutralEnvironment };
530
+ const reactNativeJestEnvironment = {
531
+ ...reactNativeEnvironment,
532
+ jest: true
533
+ };
534
+ const cloudflareWorkerEnvironment = {
535
+ ...neutralEnvironment,
536
+ serviceworker: true,
537
+ worker: true
538
+ };
539
+ const platformGlobalsOff = {
540
+ __DEV__: "off",
541
+ Cloudflare: "off",
542
+ DigestStream: "off",
543
+ FixedLengthStream: "off",
544
+ HTMLRewriter: "off",
545
+ IdentityTransformStream: "off",
546
+ process: "off",
547
+ WebSocketPair: "off",
548
+ WebSocketRequestResponsePair: "off"
549
+ };
550
+ const nodeGlobals = {
551
+ ...platformGlobalsOff,
552
+ console: "readonly",
553
+ process: "readonly"
554
+ };
555
+ const cloudflareWorkerGlobals = {
556
+ ...platformGlobalsOff,
557
+ Cloudflare: "readonly",
558
+ DigestStream: "readonly",
559
+ FixedLengthStream: "readonly",
560
+ HTMLRewriter: "readonly",
561
+ IdentityTransformStream: "readonly",
562
+ WebSocketPair: "readonly",
563
+ WebSocketRequestResponsePair: "readonly"
564
+ };
565
+ const neutralLint = {
566
+ env: neutralEnvironment,
567
+ globals: platformGlobalsOff,
568
+ plugins: [...BASE_LINT_PLUGINS]
569
+ };
570
+ const nodeLint = {
571
+ env: nodeEnvironment,
572
+ globals: nodeGlobals,
573
+ plugins: [...BASE_LINT_PLUGINS, "node"],
574
+ rules: nodeRules
575
+ };
576
+ const browserLint = {
577
+ env: browserEnvironment,
578
+ globals: platformGlobalsOff,
579
+ plugins: [...BASE_LINT_PLUGINS],
580
+ rules: browserRules
581
+ };
582
+ const reactCoreLint = {
583
+ plugins: [...BASE_LINT_PLUGINS, "react"],
584
+ rules: reactCoreRules
585
+ };
586
+ const reactDomLint = {
587
+ plugins: [
588
+ ...BASE_LINT_PLUGINS,
589
+ "react",
590
+ "jsx-a11y"
591
+ ],
592
+ rules: reactDomRules
593
+ };
594
+ const reactNativeGlobals = {
595
+ ...platformGlobalsOff,
596
+ __BUNDLE_START_TIME__: "readonly",
597
+ __DEV__: "readonly",
598
+ AbortController: "readonly",
599
+ AbortSignal: "readonly",
600
+ alert: "readonly",
601
+ Blob: "readonly",
602
+ cancelAnimationFrame: "readonly",
603
+ clearImmediate: "readonly",
604
+ clearInterval: "readonly",
605
+ clearTimeout: "readonly",
606
+ console: "readonly",
607
+ crypto: "readonly",
608
+ DOMRect: "readonly",
609
+ ErrorUtils: "readonly",
610
+ Event: "readonly",
611
+ EventTarget: "readonly",
612
+ fetch: "readonly",
613
+ fetchBundle: "readonly",
614
+ File: "readonly",
615
+ FileReader: "readonly",
616
+ FormData: "readonly",
617
+ Headers: "readonly",
618
+ HermesInternal: "readonly",
619
+ navigator: "readonly",
620
+ originalXMLHttpRequest: "readonly",
621
+ performance: "readonly",
622
+ process: "readonly",
623
+ queueMicrotask: "readonly",
624
+ requestAnimationFrame: "readonly",
625
+ Request: "readonly",
626
+ require: "readonly",
627
+ Response: "readonly",
628
+ setImmediate: "readonly",
629
+ setInterval: "readonly",
630
+ setTimeout: "readonly",
631
+ URL: "readonly",
632
+ URLSearchParams: "readonly",
633
+ WebSocket: "readonly",
634
+ XMLHttpRequest: "readonly",
635
+ XMLHttpRequestUpload: "readonly"
636
+ };
637
+ const reactNativeRuntimeLint = {
638
+ env: reactNativeEnvironment,
639
+ globals: reactNativeGlobals,
640
+ plugins: [...BASE_LINT_PLUGINS, "react"],
641
+ rules: reactNativeRules
642
+ };
643
+ const reactWebLint = {
644
+ env: browserEnvironment,
645
+ globals: platformGlobalsOff,
646
+ plugins: [
647
+ ...BASE_LINT_PLUGINS,
648
+ "react",
649
+ "jsx-a11y"
650
+ ],
651
+ rules: {
652
+ ...browserRules,
653
+ ...reactCoreRules,
654
+ ...reactDomRules
655
+ }
656
+ };
657
+ const reactNativeLint = {
658
+ env: reactNativeEnvironment,
659
+ globals: reactNativeGlobals,
660
+ plugins: [...BASE_LINT_PLUGINS, "react"],
661
+ rules: {
662
+ ...reactCoreRules,
663
+ ...reactNativeRules
664
+ }
665
+ };
666
+ const reactNativeJestTestLint = {
667
+ env: reactNativeJestEnvironment,
668
+ globals: reactNativeGlobals,
669
+ plugins: [
670
+ ...BASE_LINT_PLUGINS,
671
+ "react",
672
+ "jest"
673
+ ],
674
+ rules: {
675
+ ...reactCoreRules,
676
+ ...reactNativeRules,
677
+ ...jestRules
678
+ }
679
+ };
680
+ const cloudflareWorkerLint = {
681
+ env: cloudflareWorkerEnvironment,
682
+ globals: cloudflareWorkerGlobals,
683
+ plugins: [...BASE_LINT_PLUGINS]
684
+ };
685
+ const nodeTestLint = {
686
+ ...nodeLint,
687
+ plugins: [
688
+ ...BASE_LINT_PLUGINS,
689
+ "node",
690
+ "vitest"
691
+ ],
692
+ rules: {
693
+ ...nodeRules,
694
+ ...vitestRules
695
+ }
696
+ };
697
+ const browserTestLint = {
698
+ ...browserLint,
699
+ plugins: [...BASE_LINT_PLUGINS, "vitest"],
700
+ rules: {
701
+ ...browserRules,
702
+ ...vitestRules
703
+ }
704
+ };
705
+ const cloudflareWorkerTestLint = {
706
+ ...cloudflareWorkerLint,
707
+ plugins: [...BASE_LINT_PLUGINS, "vitest"],
708
+ rules: vitestRules
709
+ };
710
+ //#endregion
711
+ //#region src/lint/configs.ts
712
+ const baseLintConfig = {
713
+ plugins: [...BASE_LINT_PLUGINS],
714
+ ignorePatterns: [...DEFAULT_IGNORE_PATTERNS],
715
+ env: neutralEnvironment,
716
+ globals: neutralLint.globals,
717
+ options: {
620
718
  reportUnusedDisableDirectives: "error",
621
719
  typeAware: true,
622
720
  typeCheck: true
@@ -695,6 +793,40 @@ const cloudflareWorkerTestLintConfig$1 = { overrides: [{
695
793
  files: [...TEST_FILES],
696
794
  ...cloudflareWorkerTestLint
697
795
  }] };
796
+ const reactNativeTestLintConfig$1 = { overrides: [
797
+ {
798
+ files: [...TEST_FILES],
799
+ excludeFiles: [
800
+ ...VITEST_SETUP_FILES,
801
+ ...REACT_NATIVE_JEST_TEST_FILES,
802
+ ...REACT_NATIVE_JEST_SETUP_FILES
803
+ ],
804
+ ...nodeTestLint
805
+ },
806
+ {
807
+ files: [...VITEST_SETUP_FILES],
808
+ excludeFiles: [...REACT_NATIVE_JEST_TEST_FILES, ...REACT_NATIVE_JEST_SETUP_FILES],
809
+ ...nodeTestLint,
810
+ rules: {
811
+ ...nodeTestLint.rules,
812
+ "vitest/no-restricted-vi-methods": "off"
813
+ }
814
+ },
815
+ {
816
+ files: [...REACT_NATIVE_JEST_TEST_FILES],
817
+ excludeFiles: [...VITEST_SETUP_FILES, ...REACT_NATIVE_JEST_SETUP_FILES],
818
+ ...reactNativeJestTestLint
819
+ },
820
+ {
821
+ files: [...REACT_NATIVE_JEST_SETUP_FILES],
822
+ excludeFiles: [...VITEST_SETUP_FILES, ...REACT_NATIVE_JEST_TEST_FILES],
823
+ ...reactNativeJestTestLint,
824
+ rules: {
825
+ ...reactNativeJestTestLint.rules,
826
+ "jest/no-restricted-jest-methods": "off"
827
+ }
828
+ }
829
+ ] };
698
830
  //#endregion
699
831
  //#region src/fragments.ts
700
832
  const baseToolingConfig = {
@@ -725,6 +857,7 @@ const cloudflareWorkerGeneratedConfig = {
725
857
  const nodeTestLintConfig = { lint: nodeTestLintConfig$1 };
726
858
  const browserTestLintConfig = { lint: browserTestLintConfig$1 };
727
859
  const cloudflareWorkerTestLintConfig = { lint: cloudflareWorkerTestLintConfig$1 };
860
+ const reactNativeTestLintConfig = { lint: reactNativeTestLintConfig$1 };
728
861
  const libraryPackDefaults = {
729
862
  attw: {
730
863
  level: "error",
@@ -745,6 +878,6 @@ const workspaceRunConfig = { run: {
745
878
  enablePrePostScripts: true
746
879
  } };
747
880
  //#endregion
748
- export { CODE_FILES, COMMONJS_FILES, CONFIG_FILES, RUNTIME_OVERRIDE_EXCLUDE_FILES, TEST_FILES, baseToolingConfig, browserLint, browserRuntimeConfig, browserTestLint, browserTestLintConfig, cloudflareWorkerGeneratedConfig, cloudflareWorkerLint, cloudflareWorkerRuntimeConfig, cloudflareWorkerTestLint, cloudflareWorkerTestLintConfig, composeConfig, libraryPackConfig, libraryPackDefaults, nodeLint, nodeRuntimeConfig, nodeTestLint, nodeTestLintConfig, reactCoreConfig, reactCoreLint, reactDomConfig, reactDomLint, reactNativeGeneratedConfig, reactNativeLint, reactNativeRuntimeConfig, reactNativeRuntimeLint, reactWebLint, workspaceRunConfig };
881
+ export { CODE_FILES, COMMONJS_FILES, CONFIG_FILES, REACT_NATIVE_JEST_SETUP_FILES, REACT_NATIVE_JEST_TEST_FILES, RUNTIME_OVERRIDE_EXCLUDE_FILES, TEST_FILES, VITEST_SETUP_FILES, baseToolingConfig, browserLint, browserRuntimeConfig, browserTestLint, browserTestLintConfig, cloudflareWorkerGeneratedConfig, cloudflareWorkerLint, cloudflareWorkerRuntimeConfig, cloudflareWorkerTestLint, cloudflareWorkerTestLintConfig, composeConfig, libraryPackConfig, libraryPackDefaults, nodeLint, nodeRuntimeConfig, nodeTestLint, nodeTestLintConfig, reactCoreConfig, reactCoreLint, reactDomConfig, reactDomLint, reactNativeGeneratedConfig, reactNativeJestTestLint, reactNativeLint, reactNativeRuntimeConfig, reactNativeRuntimeLint, reactNativeTestLintConfig, reactWebLint, workspaceRunConfig };
749
882
 
750
883
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["nodeTestLintConfig","browserTestLintConfig","cloudflareWorkerTestLintConfig","nodeTestLintSettings","browserTestLintSettings","cloudflareWorkerTestLintSettings"],"sources":["../../src/compose.ts","../../src/format.ts","../../src/lint/rules/browser.ts","../../src/lint/rules/node.ts","../../src/lint/rules/react-core.ts","../../src/lint/rules/react-dom.ts","../../src/lint/rules/react-native.ts","../../src/lint/rules/vitest.ts","../../src/lint/profiles.ts","../../src/lint/rules/universal.ts","../../src/lint/configs.ts","../../src/fragments.ts"],"sourcesContent":["import type { UserConfig } from \"vite-plus\";\nimport { defineConfig, mergeConfig } from \"vite-plus\";\n\ninterface NamedPlugin {\n readonly name: string;\n}\n\ntype PluginValue = NamedPlugin | false | null | undefined;\n\nexport type PluginInput = PluginValue | Promise<PluginInput> | readonly PluginInput[];\n\nexport type ConfigFragment = Omit<UserConfig, \"plugins\"> & {\n readonly plugins?: readonly PluginInput[];\n};\n\nfunction toUserConfig(config: ConfigFragment): UserConfig {\n // eslint-disable-next-line typescript/no-unsafe-type-assertion -- Vite's recursive PluginOption overflows TypeScript 7 when consumers pass an ordinary Plugin; ConfigFragment preserves the named-plugin boundary without recursive comparison.\n return config as UserConfig;\n}\n\nexport function composeConfig(...fragments: readonly ConfigFragment[]): UserConfig {\n let config: UserConfig = {};\n\n for (const fragment of fragments) {\n config = mergeConfig(config, toUserConfig(fragment));\n }\n\n return defineConfig(config);\n}\n","import type { UserConfig } from \"vite-plus\";\nimport {\n CLOUDFLARE_WORKER_IGNORE_PATTERNS,\n DEFAULT_IGNORE_PATTERNS,\n REACT_NATIVE_IGNORE_PATTERNS,\n} from \"./constants.ts\";\n\ntype FormatConfig = NonNullable<UserConfig[\"fmt\"]>;\n\nexport const baseFormatConfig: FormatConfig = {\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 reactFormatConfig: FormatConfig = {\n sortTailwindcss: {\n functions: [\"tv\"],\n },\n};\n\nexport const reactNativeFormatConfig: FormatConfig = {\n ignorePatterns: [...REACT_NATIVE_IGNORE_PATTERNS],\n};\n\nexport const cloudflareWorkerFormatConfig: FormatConfig = {\n ignorePatterns: [...CLOUDFLARE_WORKER_IGNORE_PATTERNS],\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const browserRules: LintRules = {\n \"no-alert\": \"error\",\n \"unicorn/prefer-classlist-toggle\": \"error\",\n \"unicorn/prefer-dom-node-append\": \"error\",\n \"unicorn/prefer-dom-node-dataset\": \"error\",\n \"unicorn/prefer-dom-node-remove\": \"error\",\n \"unicorn/prefer-dom-node-text-content\": \"error\",\n \"unicorn/prefer-keyboard-event-key\": \"error\",\n \"unicorn/prefer-modern-dom-apis\": \"error\",\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const nodeRules: LintRules = {\n \"node/exports-style\": \"error\",\n \"node/global-require\": \"error\",\n \"node/no-exports-assign\": \"error\",\n \"node/no-mixed-requires\": \"error\",\n \"unicorn/prefer-node-protocol\": \"error\",\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const reactCoreRules: LintRules = {\n \"react/display-name\": \"error\",\n \"react/function-component-definition\": [\n \"error\",\n {\n namedComponents: \"function-declaration\",\n unnamedComponents: [\"arrow-function\", \"function-expression\"],\n },\n ],\n \"react/hook-use-state\": \"error\",\n \"react/jsx-boolean-value\": \"error\",\n \"react/jsx-curly-brace-presence\": \"error\",\n \"react/jsx-fragments\": \"error\",\n \"react/jsx-max-depth\": [\n \"error\",\n {\n max: 6,\n },\n ],\n \"react/jsx-no-constructed-context-values\": \"error\",\n \"react/jsx-no-useless-fragment\": \"error\",\n \"react/jsx-pascal-case\": \"error\",\n \"react/no-array-index-key\": \"error\",\n \"react/no-object-type-as-default-prop\": \"error\",\n \"react/no-redundant-should-component-update\": \"error\",\n \"react/no-set-state\": \"error\",\n \"react/prefer-es6-class\": \"error\",\n \"react/rules-of-hooks\": \"error\",\n \"react/self-closing-comp\": \"error\",\n \"react/state-in-constructor\": \"error\",\n \"react/exhaustive-deps\": \"error\",\n \"react/react-compiler\": \"error\",\n \"react/react-in-jsx-scope\": \"off\",\n \"react/jsx-key\": \"error\",\n \"react/jsx-no-duplicate-props\": \"error\",\n \"react/jsx-no-undef\": \"error\",\n \"react/no-children-prop\": \"error\",\n \"react/no-clone-element\": \"error\",\n \"react/no-direct-mutation-state\": \"error\",\n \"react/no-react-children\": \"error\",\n \"react/no-string-refs\": \"error\",\n \"react/no-unsafe\": \"error\",\n \"react/style-prop-object\": \"off\",\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const reactDomRules: LintRules = {\n \"react/checked-requires-onchange-or-readonly\": \"error\",\n \"react/jsx-no-target-blank\": \"error\",\n \"react/no-unescaped-entities\": \"error\",\n \"react/no-danger\": \"error\",\n \"react/no-danger-with-children\": \"error\",\n \"react/no-find-dom-node\": \"error\",\n \"react/no-unknown-property\": \"error\",\n \"react/void-dom-elements-no-children\": \"error\",\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const reactNativeRules: LintRules = {\n \"react/iframe-missing-sandbox\": \"off\",\n \"react/jsx-no-script-url\": \"off\",\n \"react/no-unknown-property\": \"off\",\n \"react/no-unescaped-entities\": \"off\",\n \"react/no-unstable-nested-components\": [\n \"error\",\n {\n allowAsProps: true,\n },\n ],\n \"react/void-dom-elements-no-children\": \"off\",\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const vitestRules: LintRules = {\n \"max-nested-callbacks\": [\n \"error\",\n {\n max: 4,\n },\n ],\n \"vitest/consistent-each-for\": \"error\",\n \"vitest/consistent-test-it\": [\n \"error\",\n {\n fn: \"test\",\n withinDescribe: \"it\",\n },\n ],\n \"vitest/consistent-vitest-vi\": \"error\",\n \"vitest/max-nested-describe\": [\n \"error\",\n {\n max: 3,\n },\n ],\n \"vitest/no-alias-methods\": \"error\",\n \"vitest/no-duplicate-hooks\": \"error\",\n \"vitest/no-identical-title\": \"error\",\n \"vitest/no-import-node-test\": \"error\",\n \"vitest/no-interpolation-in-snapshots\": \"error\",\n \"vitest/no-large-snapshots\": \"error\",\n \"vitest/no-mocks-import\": \"error\",\n \"vitest/no-test-prefixes\": \"error\",\n \"vitest/no-test-return-statement\": \"error\",\n \"vitest/no-unneeded-async-expect-function\": \"error\",\n \"vitest/padding-around-after-all-blocks\": \"error\",\n \"vitest/padding-around-test-blocks\": \"error\",\n \"vitest/prefer-called-exactly-once-with\": \"error\",\n \"vitest/prefer-called-once\": \"error\",\n \"vitest/prefer-called-with\": \"error\",\n \"vitest/prefer-comparison-matcher\": \"error\",\n \"vitest/prefer-each\": \"error\",\n \"vitest/prefer-equality-matcher\": \"error\",\n \"vitest/prefer-expect-resolves\": \"error\",\n \"vitest/prefer-expect-type-of\": \"error\",\n \"vitest/prefer-hooks-in-order\": \"error\",\n \"vitest/prefer-hooks-on-top\": \"error\",\n \"vitest/prefer-import-in-mock\": \"error\",\n \"vitest/prefer-importing-vitest-globals\": \"error\",\n \"vitest/prefer-mock-promise-shorthand\": \"error\",\n \"vitest/prefer-mock-return-shorthand\": \"error\",\n \"vitest/prefer-spy-on\": \"error\",\n \"vitest/prefer-strict-boolean-matchers\": \"error\",\n \"vitest/prefer-strict-equal\": \"error\",\n \"vitest/prefer-to-be\": \"error\",\n \"vitest/prefer-to-be-object\": \"error\",\n \"vitest/prefer-to-contain\": \"error\",\n \"vitest/prefer-to-have-been-called-times\": \"error\",\n \"vitest/prefer-to-have-length\": \"error\",\n \"vitest/prefer-todo\": \"error\",\n};\n","import type { LintConfig, LintProfile } from \"./types.ts\";\nimport { browserRules } from \"./rules/browser.ts\";\nimport { nodeRules } from \"./rules/node.ts\";\nimport { reactCoreRules } from \"./rules/react-core.ts\";\nimport { reactDomRules } from \"./rules/react-dom.ts\";\nimport { reactNativeRules } from \"./rules/react-native.ts\";\nimport { vitestRules } from \"./rules/vitest.ts\";\n\nexport const BASE_LINT_PLUGINS = [\"typescript\", \"unicorn\", \"oxc\", \"import\", \"promise\"] as const;\n\nexport const neutralEnvironment: NonNullable<LintConfig[\"env\"]> = {\n browser: false,\n node: false,\n serviceworker: false,\n worker: false,\n} as const;\n\nexport const nodeEnvironment: NonNullable<LintConfig[\"env\"]> = {\n ...neutralEnvironment,\n node: true,\n} as const;\n\nexport const browserEnvironment: NonNullable<LintConfig[\"env\"]> = {\n ...neutralEnvironment,\n browser: true,\n} as const;\n\nexport const reactNativeEnvironment: NonNullable<LintConfig[\"env\"]> = {\n ...neutralEnvironment,\n} as const;\n\nexport const cloudflareWorkerEnvironment: NonNullable<LintConfig[\"env\"]> = {\n ...neutralEnvironment,\n serviceworker: true,\n worker: true,\n} as const;\n\nconst platformGlobalsOff = {\n __DEV__: \"off\",\n Cloudflare: \"off\",\n DigestStream: \"off\",\n FixedLengthStream: \"off\",\n HTMLRewriter: \"off\",\n IdentityTransformStream: \"off\",\n process: \"off\",\n WebSocketPair: \"off\",\n WebSocketRequestResponsePair: \"off\",\n} as const;\n\nconst nodeGlobals = {\n ...platformGlobalsOff,\n console: \"readonly\",\n process: \"readonly\",\n} as const;\n\nconst cloudflareWorkerGlobals = {\n ...platformGlobalsOff,\n Cloudflare: \"readonly\",\n DigestStream: \"readonly\",\n FixedLengthStream: \"readonly\",\n HTMLRewriter: \"readonly\",\n IdentityTransformStream: \"readonly\",\n WebSocketPair: \"readonly\",\n WebSocketRequestResponsePair: \"readonly\",\n} as const;\n\nexport const neutralLint: LintProfile = {\n env: neutralEnvironment,\n globals: platformGlobalsOff,\n plugins: [...BASE_LINT_PLUGINS],\n};\n\nexport const nodeLint: LintProfile = {\n env: nodeEnvironment,\n globals: nodeGlobals,\n plugins: [...BASE_LINT_PLUGINS, \"node\"],\n rules: nodeRules,\n};\n\nexport const browserLint: LintProfile = {\n env: browserEnvironment,\n globals: platformGlobalsOff,\n plugins: [...BASE_LINT_PLUGINS],\n rules: browserRules,\n};\n\nexport const reactCoreLint: LintProfile = {\n plugins: [...BASE_LINT_PLUGINS, \"react\"],\n rules: reactCoreRules,\n};\n\nexport const reactDomLint: LintProfile = {\n plugins: [...BASE_LINT_PLUGINS, \"react\", \"jsx-a11y\"],\n rules: reactDomRules,\n};\n\nconst reactNativeGlobals = {\n ...platformGlobalsOff,\n __BUNDLE_START_TIME__: \"readonly\",\n __DEV__: \"readonly\",\n AbortController: \"readonly\",\n AbortSignal: \"readonly\",\n alert: \"readonly\",\n Blob: \"readonly\",\n cancelAnimationFrame: \"readonly\",\n clearImmediate: \"readonly\",\n clearInterval: \"readonly\",\n clearTimeout: \"readonly\",\n console: \"readonly\",\n crypto: \"readonly\",\n DOMRect: \"readonly\",\n ErrorUtils: \"readonly\",\n Event: \"readonly\",\n EventTarget: \"readonly\",\n fetch: \"readonly\",\n fetchBundle: \"readonly\",\n File: \"readonly\",\n FileReader: \"readonly\",\n FormData: \"readonly\",\n Headers: \"readonly\",\n HermesInternal: \"readonly\",\n navigator: \"readonly\",\n originalXMLHttpRequest: \"readonly\",\n performance: \"readonly\",\n process: \"readonly\",\n queueMicrotask: \"readonly\",\n requestAnimationFrame: \"readonly\",\n Request: \"readonly\",\n require: \"readonly\",\n Response: \"readonly\",\n setImmediate: \"readonly\",\n setInterval: \"readonly\",\n setTimeout: \"readonly\",\n URL: \"readonly\",\n URLSearchParams: \"readonly\",\n WebSocket: \"readonly\",\n XMLHttpRequest: \"readonly\",\n XMLHttpRequestUpload: \"readonly\",\n} as const;\n\nexport const reactNativeRuntimeLint: LintProfile = {\n env: reactNativeEnvironment,\n globals: reactNativeGlobals,\n plugins: [...BASE_LINT_PLUGINS, \"react\"],\n rules: reactNativeRules,\n};\n\nexport const reactWebLint: LintProfile = {\n env: browserEnvironment,\n globals: platformGlobalsOff,\n plugins: [...BASE_LINT_PLUGINS, \"react\", \"jsx-a11y\"],\n rules: {\n ...browserRules,\n ...reactCoreRules,\n ...reactDomRules,\n },\n};\n\nexport const reactNativeLint: LintProfile = {\n env: reactNativeEnvironment,\n globals: reactNativeGlobals,\n plugins: [...BASE_LINT_PLUGINS, \"react\"],\n rules: {\n ...reactCoreRules,\n ...reactNativeRules,\n },\n};\n\nexport const cloudflareWorkerLint: LintProfile = {\n env: cloudflareWorkerEnvironment,\n globals: cloudflareWorkerGlobals,\n plugins: [...BASE_LINT_PLUGINS],\n};\n\nexport const nodeTestLint: LintProfile = {\n ...nodeLint,\n plugins: [...BASE_LINT_PLUGINS, \"node\", \"vitest\"],\n rules: {\n ...nodeRules,\n ...vitestRules,\n },\n};\n\nexport const browserTestLint: LintProfile = {\n ...browserLint,\n plugins: [...BASE_LINT_PLUGINS, \"vitest\"],\n rules: {\n ...browserRules,\n ...vitestRules,\n },\n};\n\nexport const cloudflareWorkerTestLint: LintProfile = {\n ...cloudflareWorkerLint,\n plugins: [...BASE_LINT_PLUGINS, \"vitest\"],\n rules: vitestRules,\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const universalRules: LintRules = {\n \"accessor-pairs\": \"error\",\n \"array-callback-return\": \"error\",\n \"arrow-body-style\": \"error\",\n curly: [\"error\", \"multi-line\", \"consistent\"],\n \"default-case-last\": \"error\",\n \"default-param-last\": \"error\",\n eqeqeq: \"error\",\n \"func-name-matching\": \"error\",\n \"func-names\": \"error\",\n \"grouped-accessor-pairs\": [\"error\", \"getBeforeSet\"],\n \"guard-for-in\": \"error\",\n \"import/consistent-type-specifier-style\": \"error\",\n \"import/first\": \"error\",\n \"import/newline-after-import\": \"error\",\n \"import/no-duplicates\": \"error\",\n \"import/no-mutable-exports\": \"error\",\n \"import/no-named-default\": \"error\",\n \"logical-assignment-operators\": \"error\",\n \"max-depth\": [\n \"error\",\n {\n max: 3,\n },\n ],\n \"max-nested-callbacks\": [\n \"error\",\n {\n max: 3,\n },\n ],\n \"max-params\": [\n \"error\",\n {\n max: 3,\n },\n ],\n \"no-array-constructor\": \"error\",\n \"no-await-in-loop\": \"error\",\n \"no-case-declarations\": \"error\",\n \"no-constructor-return\": \"error\",\n \"no-else-return\": \"error\",\n \"no-empty\": \"error\",\n \"no-extra-label\": \"error\",\n \"no-fallthrough\": \"error\",\n \"no-implicit-coercion\": \"error\",\n \"no-inline-comments\": \"error\",\n \"no-inner-declarations\": \"error\",\n \"no-label-var\": \"error\",\n \"no-labels\": \"error\",\n \"no-lone-blocks\": \"error\",\n \"no-lonely-if\": \"error\",\n \"no-loop-func\": \"error\",\n \"no-multi-assign\": \"error\",\n \"no-multi-str\": \"error\",\n \"no-nested-ternary\": \"error\",\n \"no-new-func\": \"error\",\n \"no-new-wrappers\": \"error\",\n \"no-object-constructor\": \"error\",\n \"no-promise-executor-return\": \"error\",\n \"no-prototype-builtins\": \"error\",\n \"no-redeclare\": \"error\",\n \"no-return-assign\": \"error\",\n \"no-script-url\": \"error\",\n \"no-self-compare\": \"error\",\n \"no-template-curly-in-string\": \"error\",\n \"no-useless-call\": \"error\",\n \"no-useless-computed-key\": \"error\",\n \"no-useless-return\": \"error\",\n \"no-warning-comments\": \"error\",\n \"object-shorthand\": \"error\",\n \"operator-assignment\": \"error\",\n \"oxc/branches-sharing-code\": \"error\",\n \"oxc/no-accumulating-spread\": \"error\",\n \"oxc/no-map-spread\": \"error\",\n \"prefer-arrow-callback\": \"error\",\n \"prefer-const\": \"error\",\n \"prefer-destructuring\": \"error\",\n \"prefer-exponentiation-operator\": \"error\",\n \"prefer-named-capture-group\": \"error\",\n \"prefer-numeric-literals\": \"error\",\n \"prefer-object-has-own\": \"error\",\n \"prefer-object-spread\": \"error\",\n \"prefer-regex-literals\": \"error\",\n \"prefer-rest-params\": \"error\",\n \"prefer-spread\": \"error\",\n \"prefer-template\": \"error\",\n \"promise/no-nesting\": \"error\",\n \"promise/no-return-wrap\": \"error\",\n \"promise/param-names\": \"error\",\n \"promise/prefer-await-to-then\": \"error\",\n \"promise/prefer-catch\": \"error\",\n radix: \"error\",\n \"symbol-description\": \"error\",\n \"typescript/adjacent-overload-signatures\": \"error\",\n \"typescript/array-type\": \"error\",\n \"typescript/ban-ts-comment\": [\n \"error\",\n {\n minimumDescriptionLength: 10,\n },\n ],\n \"typescript/ban-tslint-comment\": \"error\",\n \"typescript/class-literal-property-style\": \"error\",\n \"typescript/consistent-generic-constructors\": \"error\",\n \"typescript/consistent-indexed-object-style\": \"error\",\n \"typescript/consistent-type-assertions\": \"error\",\n \"typescript/consistent-type-exports\": \"error\",\n \"typescript/consistent-type-imports\": [\n \"error\",\n {\n prefer: \"type-imports\",\n fixStyle: \"separate-type-imports\",\n },\n ],\n \"typescript/dot-notation\": \"error\",\n \"typescript/method-signature-style\": \"error\",\n \"typescript/no-confusing-void-expression\": \"error\",\n \"typescript/no-deprecated\": \"error\",\n \"typescript/no-empty-object-type\": \"error\",\n \"typescript/no-inferrable-types\": \"error\",\n \"typescript/no-misused-promises\": \"error\",\n \"typescript/no-mixed-enums\": \"error\",\n \"typescript/no-unnecessary-qualifier\": \"error\",\n \"typescript/no-unsafe-argument\": \"error\",\n \"typescript/no-unsafe-assignment\": \"error\",\n \"typescript/no-unsafe-call\": \"error\",\n \"typescript/no-unsafe-function-type\": \"error\",\n \"typescript/no-unsafe-member-access\": \"error\",\n \"typescript/no-unsafe-return\": \"error\",\n \"typescript/no-wrapper-object-types\": \"error\",\n \"typescript/only-throw-error\": \"error\",\n \"typescript/parameter-properties\": \"error\",\n \"typescript/prefer-enum-initializers\": \"error\",\n \"typescript/prefer-find\": \"error\",\n \"typescript/prefer-for-of\": \"error\",\n \"typescript/prefer-function-type\": \"error\",\n \"typescript/prefer-includes\": \"error\",\n \"typescript/prefer-nullish-coalescing\": \"error\",\n \"typescript/prefer-promise-reject-errors\": \"error\",\n \"typescript/prefer-readonly\": \"error\",\n \"typescript/prefer-reduce-type-parameter\": \"error\",\n \"typescript/prefer-regexp-exec\": \"error\",\n \"typescript/prefer-return-this-type\": \"error\",\n \"typescript/prefer-string-starts-ends-with\": \"error\",\n \"typescript/related-getter-setter-pairs\": \"error\",\n \"typescript/restrict-plus-operands\": \"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/unified-signatures\": \"error\",\n \"unicorn/catch-error-name\": \"error\",\n \"unicorn/consistent-assert\": \"error\",\n \"unicorn/consistent-date-clone\": \"error\",\n \"unicorn/consistent-empty-array-spread\": \"error\",\n \"unicorn/consistent-existence-index-check\": \"error\",\n \"unicorn/consistent-template-literal-escape\": \"error\",\n \"unicorn/custom-error-definition\": \"error\",\n \"unicorn/error-message\": \"error\",\n \"unicorn/escape-case\": \"error\",\n \"unicorn/explicit-length-check\": \"error\",\n \"unicorn/explicit-timer-delay\": \"error\",\n \"unicorn/filename-case\": [\n \"error\",\n {\n case: \"kebabCase\",\n },\n ],\n \"unicorn/max-nested-calls\": [\n \"error\",\n {\n max: 5,\n },\n ],\n \"unicorn/new-for-builtins\": \"error\",\n \"unicorn/no-array-callback-reference\": \"error\",\n \"unicorn/no-array-method-this-argument\": \"error\",\n \"unicorn/no-await-expression-member\": \"error\",\n \"unicorn/no-console-spaces\": \"error\",\n \"unicorn/no-hex-escape\": \"error\",\n \"unicorn/no-immediate-mutation\": \"error\",\n \"unicorn/no-instanceof-array\": \"error\",\n \"unicorn/no-negation-in-equality-check\": \"error\",\n \"unicorn/no-new-buffer\": \"error\",\n \"unicorn/no-static-only-class\": \"error\",\n \"unicorn/no-this-assignment\": \"error\",\n \"unicorn/no-typeof-undefined\": \"error\",\n \"unicorn/no-unnecessary-array-flat-depth\": \"error\",\n \"unicorn/no-unnecessary-array-splice-count\": \"error\",\n \"unicorn/no-unnecessary-slice-end\": \"error\",\n \"unicorn/no-unreadable-array-destructuring\": \"error\",\n \"unicorn/no-unreadable-iife\": \"error\",\n \"unicorn/no-useless-collection-argument\": \"error\",\n \"unicorn/no-useless-promise-resolve-reject\": \"error\",\n \"unicorn/no-useless-switch-case\": \"error\",\n \"unicorn/no-useless-undefined\": \"error\",\n \"unicorn/no-zero-fractions\": \"error\",\n \"unicorn/number-literal-case\": \"error\",\n \"unicorn/numeric-separators-style\": \"error\",\n \"unicorn/prefer-array-find\": \"error\",\n \"unicorn/prefer-array-flat\": \"error\",\n \"unicorn/prefer-array-flat-map\": \"error\",\n \"unicorn/prefer-array-index-of\": \"error\",\n \"unicorn/prefer-array-some\": \"error\",\n \"unicorn/prefer-at\": \"error\",\n \"unicorn/prefer-bigint-literals\": \"error\",\n \"unicorn/prefer-blob-reading-methods\": \"error\",\n \"unicorn/prefer-class-fields\": \"error\",\n \"unicorn/prefer-code-point\": \"error\",\n \"unicorn/prefer-date-now\": \"error\",\n \"unicorn/prefer-default-parameters\": \"error\",\n \"unicorn/prefer-export-from\": \"error\",\n \"unicorn/prefer-global-this\": \"error\",\n \"unicorn/prefer-import-meta-properties\": \"error\",\n \"unicorn/prefer-includes\": \"error\",\n \"unicorn/prefer-logical-operator-over-ternary\": \"error\",\n \"unicorn/prefer-math-min-max\": \"error\",\n \"unicorn/prefer-math-trunc\": \"error\",\n \"unicorn/prefer-native-coercion-functions\": \"error\",\n \"unicorn/prefer-negative-index\": \"error\",\n \"unicorn/prefer-number-coercion\": \"error\",\n \"unicorn/prefer-object-from-entries\": \"error\",\n \"unicorn/prefer-optional-catch-binding\": \"error\",\n \"unicorn/prefer-prototype-methods\": \"error\",\n \"unicorn/prefer-reflect-apply\": \"error\",\n \"unicorn/prefer-regexp-test\": \"error\",\n \"unicorn/prefer-response-static-json\": \"error\",\n \"unicorn/prefer-set-has\": \"error\",\n \"unicorn/prefer-single-call\": \"error\",\n \"unicorn/prefer-spread\": \"error\",\n \"unicorn/prefer-string-raw\": \"error\",\n \"unicorn/prefer-string-replace-all\": \"error\",\n \"unicorn/prefer-string-slice\": \"error\",\n \"unicorn/prefer-string-trim-start-end\": \"error\",\n \"unicorn/prefer-structured-clone\": \"error\",\n \"unicorn/prefer-ternary\": [\"error\", \"only-single-line\"],\n \"unicorn/prefer-type-error\": \"error\",\n \"unicorn/relative-url-style\": \"error\",\n \"unicorn/require-array-join-separator\": \"error\",\n \"unicorn/require-module-attributes\": \"error\",\n \"unicorn/require-number-to-fixed-digits-argument\": \"error\",\n \"unicorn/switch-case-braces\": \"error\",\n \"unicorn/switch-case-break-position\": \"error\",\n \"unicorn/text-encoding-identifier-case\": \"error\",\n \"unicorn/throw-new-error\": \"error\",\n yoda: \"error\",\n complexity: [\n \"error\",\n {\n max: 20,\n },\n ],\n \"getter-return\": \"error\",\n \"no-bitwise\": \"error\",\n \"no-console\": [\n \"error\",\n {\n allow: [\"info\", \"warn\", \"error\"],\n },\n ],\n \"no-param-reassign\": [\n \"error\",\n {\n props: true,\n },\n ],\n \"no-plusplus\": \"error\",\n \"no-undef\": \"error\",\n \"no-unneeded-ternary\": \"error\",\n \"no-unreachable\": \"error\",\n \"import/no-cycle\": \"error\",\n \"import/no-unassigned-import\": \"off\",\n \"oxc/bad-match-all-arg\": \"error\",\n \"typescript/consistent-return\": \"error\",\n \"typescript/explicit-module-boundary-types\": \"error\",\n \"typescript/no-dynamic-delete\": \"error\",\n \"typescript/no-explicit-any\": \"error\",\n \"typescript/no-floating-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-type-arguments\": \"error\",\n \"typescript/no-unnecessary-type-assertion\": \"error\",\n \"typescript/no-unnecessary-type-parameters\": \"error\",\n \"typescript/no-useless-default-assignment\": \"error\",\n \"typescript/non-nullable-type-assertion-style\": \"error\",\n \"typescript/prefer-optional-chain\": \"error\",\n \"typescript/require-array-sort-compare\": \"error\",\n \"typescript/restrict-template-expressions\": \"error\",\n \"typescript/unbound-method\": \"error\",\n \"typescript/use-unknown-in-catch-callback-variable\": \"error\",\n \"unicorn/no-abusive-eslint-disable\": \"error\",\n};\n","import type { LintConfig } from \"./types.ts\";\nimport {\n CLOUDFLARE_WORKER_IGNORE_PATTERNS,\n CODE_FILES,\n COMMONJS_FILES,\n CONFIG_FILES,\n DEFAULT_IGNORE_PATTERNS,\n REACT_NATIVE_IGNORE_PATTERNS,\n RUNTIME_OVERRIDE_EXCLUDE_FILES,\n TEST_FILES,\n} from \"../constants.ts\";\nimport {\n BASE_LINT_PLUGINS,\n browserEnvironment,\n browserTestLint,\n cloudflareWorkerEnvironment,\n cloudflareWorkerLint,\n cloudflareWorkerTestLint,\n neutralEnvironment,\n neutralLint,\n nodeEnvironment,\n nodeLint,\n nodeTestLint,\n reactNativeRuntimeLint,\n} from \"./profiles.ts\";\nimport { browserRules } from \"./rules/browser.ts\";\nimport { nodeRules } from \"./rules/node.ts\";\nimport { reactCoreRules } from \"./rules/react-core.ts\";\nimport { reactDomRules } from \"./rules/react-dom.ts\";\nimport { reactNativeRules } from \"./rules/react-native.ts\";\nimport { universalRules } from \"./rules/universal.ts\";\n\nexport const baseLintConfig: LintConfig = {\n plugins: [...BASE_LINT_PLUGINS],\n ignorePatterns: [...DEFAULT_IGNORE_PATTERNS],\n env: neutralEnvironment,\n globals: neutralLint.globals,\n options: {\n reportUnusedDisableDirectives: \"error\",\n typeAware: true,\n typeCheck: true,\n },\n categories: {\n correctness: \"error\",\n suspicious: \"error\",\n },\n extends: [{ rules: universalRules }],\n overrides: [\n {\n files: [...COMMONJS_FILES],\n ...nodeLint,\n rules: {\n ...nodeRules,\n \"typescript/no-require-imports\": \"off\",\n },\n },\n {\n files: [...CONFIG_FILES],\n ...nodeLint,\n rules: {\n ...nodeRules,\n \"func-names\": \"off\",\n },\n },\n {\n files: [\"**/*.d.ts\"],\n rules: {\n \"typescript/no-empty-object-type\": \"off\",\n },\n },\n ],\n};\n\nexport const nodeRuntimeLintConfig: LintConfig = {\n env: nodeEnvironment,\n globals: nodeLint.globals,\n plugins: [\"node\"],\n extends: [{ rules: nodeRules }],\n};\n\nexport const browserRuntimeLintConfig: LintConfig = {\n env: browserEnvironment,\n globals: neutralLint.globals,\n overrides: [\n {\n files: [...CODE_FILES],\n excludeFiles: [...RUNTIME_OVERRIDE_EXCLUDE_FILES],\n rules: browserRules,\n },\n ],\n};\n\nexport const reactCoreLintConfig: LintConfig = {\n plugins: [\"react\"],\n extends: [{ rules: reactCoreRules }],\n};\n\nexport const reactDomLintConfig: LintConfig = {\n plugins: [\"jsx-a11y\"],\n extends: [{ rules: reactDomRules }],\n};\n\nexport const reactNativeRuntimeLintConfig: LintConfig = {\n env: reactNativeRuntimeLint.env,\n globals: reactNativeRuntimeLint.globals,\n extends: [{ rules: reactNativeRules }],\n};\n\nexport const cloudflareWorkerRuntimeLintConfig: LintConfig = {\n env: cloudflareWorkerEnvironment,\n globals: cloudflareWorkerLint.globals,\n};\n\nexport const reactNativeGeneratedLintConfig: LintConfig = {\n ignorePatterns: [...REACT_NATIVE_IGNORE_PATTERNS],\n};\n\nexport const cloudflareWorkerGeneratedLintConfig: LintConfig = {\n ignorePatterns: [...CLOUDFLARE_WORKER_IGNORE_PATTERNS],\n};\n\nexport const nodeTestLintConfig: LintConfig = {\n overrides: [\n {\n files: [...TEST_FILES],\n ...nodeTestLint,\n },\n ],\n};\n\nexport const browserTestLintConfig: LintConfig = {\n overrides: [\n {\n files: [...TEST_FILES],\n ...browserTestLint,\n },\n ],\n};\n\nexport const cloudflareWorkerTestLintConfig: LintConfig = {\n overrides: [\n {\n files: [...TEST_FILES],\n ...cloudflareWorkerTestLint,\n },\n ],\n};\n","import type { UserConfig } from \"vite-plus\";\nimport type { ConfigFragment } from \"./compose.ts\";\nimport {\n DEFAULT_STAGED_CHECK_COMMAND,\n DEFAULT_STAGED_CHECK_GLOB,\n DEFAULT_STAGED_FORMAT_COMMAND,\n DEFAULT_STAGED_FORMAT_GLOB,\n} from \"./constants.ts\";\nimport {\n baseFormatConfig,\n cloudflareWorkerFormatConfig,\n reactFormatConfig,\n reactNativeFormatConfig,\n} from \"./format.ts\";\nimport {\n baseLintConfig,\n browserRuntimeLintConfig,\n browserTestLintConfig as browserTestLintSettings,\n cloudflareWorkerGeneratedLintConfig,\n cloudflareWorkerRuntimeLintConfig,\n cloudflareWorkerTestLintConfig as cloudflareWorkerTestLintSettings,\n nodeRuntimeLintConfig,\n nodeTestLintConfig as nodeTestLintSettings,\n reactCoreLintConfig,\n reactDomLintConfig,\n reactNativeGeneratedLintConfig,\n reactNativeRuntimeLintConfig,\n} from \"./lint/configs.ts\";\n\ntype PackConfig = Exclude<UserConfig[\"pack\"], readonly unknown[] | undefined>;\n\nexport const baseToolingConfig: ConfigFragment = {\n fmt: baseFormatConfig,\n lint: baseLintConfig,\n staged: {\n [DEFAULT_STAGED_CHECK_GLOB]: DEFAULT_STAGED_CHECK_COMMAND,\n [DEFAULT_STAGED_FORMAT_GLOB]: DEFAULT_STAGED_FORMAT_COMMAND,\n },\n};\n\nexport const nodeRuntimeConfig: ConfigFragment = {\n lint: nodeRuntimeLintConfig,\n};\n\nexport const browserRuntimeConfig: ConfigFragment = {\n lint: browserRuntimeLintConfig,\n};\n\nexport const reactCoreConfig: ConfigFragment = {\n fmt: reactFormatConfig,\n lint: reactCoreLintConfig,\n};\n\nexport const reactDomConfig: ConfigFragment = {\n lint: reactDomLintConfig,\n};\n\nexport const reactNativeRuntimeConfig: ConfigFragment = {\n lint: reactNativeRuntimeLintConfig,\n};\n\nexport const reactNativeGeneratedConfig: ConfigFragment = {\n fmt: reactNativeFormatConfig,\n lint: reactNativeGeneratedLintConfig,\n};\n\nexport const cloudflareWorkerRuntimeConfig: ConfigFragment = {\n lint: cloudflareWorkerRuntimeLintConfig,\n};\n\nexport const cloudflareWorkerGeneratedConfig: ConfigFragment = {\n fmt: cloudflareWorkerFormatConfig,\n lint: cloudflareWorkerGeneratedLintConfig,\n};\n\nexport const nodeTestLintConfig: ConfigFragment = {\n lint: nodeTestLintSettings,\n};\n\nexport const browserTestLintConfig: ConfigFragment = {\n lint: browserTestLintSettings,\n};\n\nexport const cloudflareWorkerTestLintConfig: ConfigFragment = {\n lint: cloudflareWorkerTestLintSettings,\n};\n\nexport const libraryPackDefaults: PackConfig = {\n attw: {\n level: \"error\",\n profile: \"esm-only\",\n },\n clean: true,\n dts: true,\n format: [\"esm\"],\n publint: {\n strict: true,\n },\n sourcemap: true,\n};\n\nexport const libraryPackConfig: ConfigFragment = {\n pack: libraryPackDefaults,\n};\n\nexport const workspaceRunConfig: ConfigFragment = {\n run: {\n cache: {\n scripts: true,\n tasks: true,\n },\n enablePrePostScripts: true,\n },\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["nodeTestLintConfig","browserTestLintConfig","cloudflareWorkerTestLintConfig","reactNativeTestLintConfig","nodeTestLintSettings","browserTestLintSettings","cloudflareWorkerTestLintSettings","reactNativeTestLintSettings"],"sources":["../../src/compose.ts","../../src/format.ts","../../src/lint/rules/browser.ts","../../src/lint/rules/jest.ts","../../src/lint/rules/node.ts","../../src/lint/rules/react-core.ts","../../src/lint/rules/react-dom.ts","../../src/lint/rules/universal.ts","../../src/lint/rules/react-native.ts","../../src/lint/rules/vitest.ts","../../src/lint/profiles.ts","../../src/lint/configs.ts","../../src/fragments.ts"],"sourcesContent":["import type { UserConfig } from \"vite-plus\";\nimport { defineConfig, mergeConfig } from \"vite-plus\";\n\ninterface NamedPlugin {\n readonly name: string;\n}\n\ntype PluginValue = NamedPlugin | false | null | undefined;\n\nexport type PluginInput = PluginValue | Promise<PluginInput> | readonly PluginInput[];\n\nexport type ConfigFragment = Omit<UserConfig, \"plugins\"> & {\n readonly plugins?: readonly PluginInput[];\n};\n\nfunction toUserConfig(config: ConfigFragment): UserConfig {\n // eslint-disable-next-line typescript/no-unsafe-type-assertion -- Vite's recursive PluginOption overflows TypeScript 7 when consumers pass an ordinary Plugin; ConfigFragment preserves the named-plugin boundary without recursive comparison.\n return config as UserConfig;\n}\n\nexport function composeConfig(...fragments: readonly ConfigFragment[]): UserConfig {\n let config: UserConfig = {};\n\n for (const fragment of fragments) {\n config = mergeConfig(config, toUserConfig(fragment));\n }\n\n return defineConfig(config);\n}\n","import type { UserConfig } from \"vite-plus\";\nimport {\n CLOUDFLARE_WORKER_IGNORE_PATTERNS,\n DEFAULT_IGNORE_PATTERNS,\n REACT_NATIVE_IGNORE_PATTERNS,\n} from \"./constants.ts\";\n\ntype FormatConfig = NonNullable<UserConfig[\"fmt\"]>;\n\nexport const baseFormatConfig: FormatConfig = {\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 reactFormatConfig: FormatConfig = {\n sortTailwindcss: {\n functions: [\"tv\"],\n },\n};\n\nexport const reactNativeFormatConfig: FormatConfig = {\n ignorePatterns: [...REACT_NATIVE_IGNORE_PATTERNS],\n};\n\nexport const cloudflareWorkerFormatConfig: FormatConfig = {\n ignorePatterns: [...CLOUDFLARE_WORKER_IGNORE_PATTERNS],\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const browserRules: LintRules = {\n \"no-alert\": \"error\",\n \"unicorn/prefer-classlist-toggle\": \"error\",\n \"unicorn/prefer-dom-node-append\": \"error\",\n \"unicorn/prefer-dom-node-dataset\": \"error\",\n \"unicorn/prefer-dom-node-remove\": \"error\",\n \"unicorn/prefer-dom-node-text-content\": \"error\",\n \"unicorn/prefer-keyboard-event-key\": \"error\",\n \"unicorn/prefer-modern-dom-apis\": \"error\",\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const jestRules: LintRules = {\n \"max-nested-callbacks\": [\n \"error\",\n {\n max: 4,\n },\n ],\n \"jest/consistent-test-it\": [\n \"error\",\n {\n fn: \"test\",\n withinDescribe: \"it\",\n },\n ],\n \"jest/max-nested-describe\": [\n \"error\",\n {\n max: 3,\n },\n ],\n \"jest/no-alias-methods\": \"error\",\n \"jest/no-duplicate-hooks\": \"error\",\n \"jest/no-identical-title\": \"error\",\n \"jest/no-interpolation-in-snapshots\": \"error\",\n \"jest/no-large-snapshots\": \"error\",\n \"jest/no-mocks-import\": \"error\",\n \"jest/no-restricted-jest-methods\": [\n \"error\",\n {\n doMock: \"Use a maintained implementation, spy, or injected owned dependency.\",\n mock: \"Use a maintained implementation, spy, or injected owned dependency.\",\n unstable_mockModule: \"Use a maintained implementation, spy, or injected owned dependency.\",\n },\n ],\n \"jest/no-test-prefixes\": \"error\",\n \"jest/no-test-return-statement\": \"error\",\n \"jest/no-unneeded-async-expect-function\": \"error\",\n \"jest/padding-around-after-all-blocks\": \"error\",\n \"jest/padding-around-test-blocks\": \"error\",\n \"jest/prefer-called-with\": \"error\",\n \"jest/prefer-comparison-matcher\": \"error\",\n \"jest/prefer-each\": \"error\",\n \"jest/prefer-equality-matcher\": \"error\",\n \"jest/prefer-hooks-in-order\": \"error\",\n \"jest/prefer-hooks-on-top\": \"error\",\n \"jest/prefer-importing-jest-globals\": \"error\",\n \"jest/prefer-mock-promise-shorthand\": \"error\",\n \"jest/prefer-mock-return-shorthand\": \"error\",\n \"jest/prefer-spy-on\": \"error\",\n \"jest/prefer-to-be\": \"error\",\n \"jest/prefer-to-contain\": \"error\",\n \"jest/prefer-to-have-been-called-times\": \"error\",\n \"jest/prefer-to-have-length\": \"error\",\n \"jest/prefer-todo\": \"error\",\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const nodeRules: LintRules = {\n \"node/exports-style\": \"error\",\n \"node/global-require\": \"error\",\n \"node/no-exports-assign\": \"error\",\n \"node/no-mixed-requires\": \"error\",\n \"unicorn/prefer-node-protocol\": \"error\",\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const reactCoreRules: LintRules = {\n \"react/display-name\": \"error\",\n \"react/function-component-definition\": [\n \"error\",\n {\n namedComponents: \"function-declaration\",\n unnamedComponents: [\"arrow-function\", \"function-expression\"],\n },\n ],\n \"react/hook-use-state\": \"error\",\n \"react/jsx-boolean-value\": \"error\",\n \"react/jsx-curly-brace-presence\": \"error\",\n \"react/jsx-fragments\": \"error\",\n \"react/jsx-max-depth\": [\n \"error\",\n {\n max: 6,\n },\n ],\n \"react/jsx-no-constructed-context-values\": \"error\",\n \"react/jsx-no-useless-fragment\": \"error\",\n \"react/jsx-pascal-case\": \"error\",\n \"react/no-array-index-key\": \"error\",\n \"react/no-object-type-as-default-prop\": \"error\",\n \"react/no-redundant-should-component-update\": \"error\",\n \"react/no-set-state\": \"error\",\n \"react/prefer-es6-class\": \"error\",\n \"react/rules-of-hooks\": \"error\",\n \"react/self-closing-comp\": \"error\",\n \"react/state-in-constructor\": \"error\",\n \"react/exhaustive-deps\": \"error\",\n \"react/error-boundaries\": \"error\",\n \"react/globals\": \"error\",\n \"react/immutability\": \"error\",\n \"react/incompatible-library\": \"error\",\n \"react/preserve-manual-memoization\": \"error\",\n \"react/purity\": \"error\",\n \"react/refs\": \"error\",\n \"react/set-state-in-effect\": \"error\",\n \"react/set-state-in-render\": \"error\",\n \"react/static-components\": \"error\",\n \"react/unsupported-syntax\": \"error\",\n \"react/use-memo\": \"error\",\n \"react/void-use-memo\": \"error\",\n \"react/react-in-jsx-scope\": \"off\",\n \"react/jsx-key\": \"error\",\n \"react/jsx-no-duplicate-props\": \"error\",\n \"react/jsx-no-undef\": \"error\",\n \"react/no-children-prop\": \"error\",\n \"react/no-clone-element\": \"error\",\n \"react/no-direct-mutation-state\": \"error\",\n \"react/no-react-children\": \"error\",\n \"react/no-string-refs\": \"error\",\n \"react/no-unsafe\": \"error\",\n \"react/style-prop-object\": \"off\",\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const reactDomRules: LintRules = {\n \"react/checked-requires-onchange-or-readonly\": \"error\",\n \"react/jsx-no-target-blank\": \"error\",\n \"react/no-unescaped-entities\": \"error\",\n \"react/no-danger\": \"error\",\n \"react/no-danger-with-children\": \"error\",\n \"react/no-find-dom-node\": \"error\",\n \"react/no-unknown-property\": \"error\",\n \"react/void-dom-elements-no-children\": \"error\",\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const universalRestrictedProperties = [\n {\n object: \"Reflect\",\n property: \"get\",\n },\n {\n object: \"Reflect\",\n property: \"apply\",\n },\n] as const;\n\nexport const universalRules: LintRules = {\n \"accessor-pairs\": \"error\",\n \"array-callback-return\": \"error\",\n \"arrow-body-style\": \"error\",\n curly: [\"error\", \"multi-line\", \"consistent\"],\n \"default-case-last\": \"error\",\n \"default-param-last\": \"error\",\n eqeqeq: \"error\",\n \"func-name-matching\": \"error\",\n \"func-names\": \"error\",\n \"grouped-accessor-pairs\": [\"error\", \"getBeforeSet\"],\n \"guard-for-in\": \"error\",\n \"import/consistent-type-specifier-style\": \"error\",\n \"import/first\": \"error\",\n \"import/newline-after-import\": \"error\",\n \"import/no-duplicates\": \"error\",\n \"import/no-mutable-exports\": \"error\",\n \"import/no-named-default\": \"error\",\n \"logical-assignment-operators\": \"error\",\n \"max-depth\": [\n \"error\",\n {\n max: 3,\n },\n ],\n \"max-nested-callbacks\": [\n \"error\",\n {\n max: 3,\n },\n ],\n \"max-params\": [\n \"error\",\n {\n max: 3,\n },\n ],\n \"no-array-constructor\": \"error\",\n \"no-await-in-loop\": \"error\",\n \"no-case-declarations\": \"error\",\n \"no-constructor-return\": \"error\",\n \"no-else-return\": \"error\",\n \"no-empty\": \"error\",\n \"no-extra-label\": \"error\",\n \"no-fallthrough\": \"error\",\n \"no-implicit-coercion\": \"error\",\n \"no-inline-comments\": \"error\",\n \"no-inner-declarations\": \"error\",\n \"no-label-var\": \"error\",\n \"no-labels\": \"error\",\n \"no-lone-blocks\": \"error\",\n \"no-lonely-if\": \"error\",\n \"no-loop-func\": \"error\",\n \"no-multi-assign\": \"error\",\n \"no-multi-str\": \"error\",\n \"no-nested-ternary\": \"error\",\n \"no-new-func\": \"error\",\n \"no-new-wrappers\": \"error\",\n \"no-object-constructor\": \"error\",\n \"no-promise-executor-return\": \"error\",\n \"no-prototype-builtins\": \"error\",\n \"no-redeclare\": \"error\",\n \"no-restricted-properties\": [\"error\", ...universalRestrictedProperties],\n \"no-return-assign\": \"error\",\n \"no-script-url\": \"error\",\n \"no-self-compare\": \"error\",\n \"no-template-curly-in-string\": \"error\",\n \"no-useless-call\": \"error\",\n \"no-useless-computed-key\": \"error\",\n \"no-useless-return\": \"error\",\n \"no-warning-comments\": \"error\",\n \"object-shorthand\": \"error\",\n \"operator-assignment\": \"error\",\n \"oxc/branches-sharing-code\": \"error\",\n \"oxc/no-accumulating-spread\": \"error\",\n \"oxc/no-map-spread\": \"error\",\n \"prefer-arrow-callback\": \"error\",\n \"prefer-const\": \"error\",\n \"prefer-destructuring\": \"error\",\n \"prefer-exponentiation-operator\": \"error\",\n \"prefer-named-capture-group\": \"error\",\n \"prefer-numeric-literals\": \"error\",\n \"prefer-object-has-own\": \"error\",\n \"prefer-object-spread\": \"error\",\n \"prefer-regex-literals\": \"error\",\n \"prefer-rest-params\": \"error\",\n \"prefer-spread\": \"error\",\n \"prefer-template\": \"error\",\n \"promise/no-nesting\": \"error\",\n \"promise/no-return-wrap\": \"error\",\n \"promise/param-names\": \"error\",\n \"promise/prefer-await-to-then\": \"error\",\n \"promise/prefer-catch\": \"error\",\n radix: \"error\",\n \"symbol-description\": \"error\",\n \"typescript/adjacent-overload-signatures\": \"error\",\n \"typescript/array-type\": \"error\",\n \"typescript/ban-ts-comment\": [\n \"error\",\n {\n minimumDescriptionLength: 10,\n },\n ],\n \"typescript/ban-tslint-comment\": \"error\",\n \"typescript/class-literal-property-style\": \"error\",\n \"typescript/consistent-generic-constructors\": \"error\",\n \"typescript/consistent-indexed-object-style\": \"error\",\n \"typescript/consistent-type-assertions\": \"error\",\n \"typescript/consistent-type-exports\": \"error\",\n \"typescript/consistent-type-imports\": [\n \"error\",\n {\n prefer: \"type-imports\",\n fixStyle: \"separate-type-imports\",\n },\n ],\n \"typescript/dot-notation\": \"error\",\n \"typescript/method-signature-style\": \"error\",\n \"typescript/no-confusing-void-expression\": \"error\",\n \"typescript/no-deprecated\": \"error\",\n \"typescript/no-empty-object-type\": \"error\",\n \"typescript/no-inferrable-types\": \"error\",\n \"typescript/no-misused-promises\": \"error\",\n \"typescript/no-mixed-enums\": \"error\",\n \"typescript/no-unnecessary-qualifier\": \"error\",\n \"typescript/no-unsafe-argument\": \"error\",\n \"typescript/no-unsafe-assignment\": \"error\",\n \"typescript/no-unsafe-call\": \"error\",\n \"typescript/no-unsafe-function-type\": \"error\",\n \"typescript/no-unsafe-member-access\": \"error\",\n \"typescript/no-unsafe-return\": \"error\",\n \"typescript/no-unsafe-type-assertion\": \"error\",\n \"typescript/no-wrapper-object-types\": \"error\",\n \"typescript/only-throw-error\": \"error\",\n \"typescript/parameter-properties\": \"error\",\n \"typescript/prefer-enum-initializers\": \"error\",\n \"typescript/prefer-find\": \"error\",\n \"typescript/prefer-for-of\": \"error\",\n \"typescript/prefer-function-type\": \"error\",\n \"typescript/prefer-includes\": \"error\",\n \"typescript/prefer-nullish-coalescing\": \"error\",\n \"typescript/prefer-promise-reject-errors\": \"error\",\n \"typescript/prefer-readonly\": \"error\",\n \"typescript/prefer-reduce-type-parameter\": \"error\",\n \"typescript/prefer-regexp-exec\": \"error\",\n \"typescript/prefer-return-this-type\": \"error\",\n \"typescript/prefer-string-starts-ends-with\": \"error\",\n \"typescript/related-getter-setter-pairs\": \"error\",\n \"typescript/restrict-plus-operands\": \"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/unified-signatures\": \"error\",\n \"unicorn/catch-error-name\": \"error\",\n \"unicorn/consistent-assert\": \"error\",\n \"unicorn/consistent-date-clone\": \"error\",\n \"unicorn/consistent-empty-array-spread\": \"error\",\n \"unicorn/consistent-existence-index-check\": \"error\",\n \"unicorn/consistent-template-literal-escape\": \"error\",\n \"unicorn/custom-error-definition\": \"error\",\n \"unicorn/error-message\": \"error\",\n \"unicorn/escape-case\": \"error\",\n \"unicorn/explicit-length-check\": \"error\",\n \"unicorn/explicit-timer-delay\": \"error\",\n \"unicorn/filename-case\": [\n \"error\",\n {\n case: \"kebabCase\",\n },\n ],\n \"unicorn/max-nested-calls\": [\n \"error\",\n {\n max: 5,\n },\n ],\n \"unicorn/new-for-builtins\": \"error\",\n \"unicorn/no-array-callback-reference\": \"error\",\n \"unicorn/no-array-method-this-argument\": \"error\",\n \"unicorn/no-await-expression-member\": \"error\",\n \"unicorn/no-console-spaces\": \"error\",\n \"unicorn/no-hex-escape\": \"error\",\n \"unicorn/no-immediate-mutation\": \"error\",\n \"unicorn/no-instanceof-array\": \"error\",\n \"unicorn/no-negation-in-equality-check\": \"error\",\n \"unicorn/no-new-buffer\": \"error\",\n \"unicorn/no-static-only-class\": \"error\",\n \"unicorn/no-this-assignment\": \"error\",\n \"unicorn/no-typeof-undefined\": \"error\",\n \"unicorn/no-unnecessary-array-flat-depth\": \"error\",\n \"unicorn/no-unnecessary-array-splice-count\": \"error\",\n \"unicorn/no-unnecessary-slice-end\": \"error\",\n \"unicorn/no-unreadable-array-destructuring\": \"error\",\n \"unicorn/no-unreadable-iife\": \"error\",\n \"unicorn/no-useless-collection-argument\": \"error\",\n \"unicorn/no-useless-promise-resolve-reject\": \"error\",\n \"unicorn/no-useless-switch-case\": \"error\",\n \"unicorn/no-useless-undefined\": \"error\",\n \"unicorn/no-zero-fractions\": \"error\",\n \"unicorn/number-literal-case\": \"error\",\n \"unicorn/numeric-separators-style\": \"error\",\n \"unicorn/prefer-array-find\": \"error\",\n \"unicorn/prefer-array-flat\": \"error\",\n \"unicorn/prefer-array-flat-map\": \"error\",\n \"unicorn/prefer-array-index-of\": \"error\",\n \"unicorn/prefer-array-some\": \"error\",\n \"unicorn/prefer-at\": \"error\",\n \"unicorn/prefer-bigint-literals\": \"error\",\n \"unicorn/prefer-blob-reading-methods\": \"error\",\n \"unicorn/prefer-class-fields\": \"error\",\n \"unicorn/prefer-code-point\": \"error\",\n \"unicorn/prefer-date-now\": \"error\",\n \"unicorn/prefer-default-parameters\": \"error\",\n \"unicorn/prefer-export-from\": \"error\",\n \"unicorn/prefer-global-this\": \"error\",\n \"unicorn/prefer-import-meta-properties\": \"error\",\n \"unicorn/prefer-includes\": \"error\",\n \"unicorn/prefer-logical-operator-over-ternary\": \"error\",\n \"unicorn/prefer-math-min-max\": \"error\",\n \"unicorn/prefer-math-trunc\": \"error\",\n \"unicorn/prefer-native-coercion-functions\": \"error\",\n \"unicorn/prefer-negative-index\": \"error\",\n \"unicorn/prefer-number-coercion\": \"error\",\n \"unicorn/prefer-object-from-entries\": \"error\",\n \"unicorn/prefer-optional-catch-binding\": \"error\",\n \"unicorn/prefer-prototype-methods\": \"error\",\n \"unicorn/prefer-regexp-test\": \"error\",\n \"unicorn/prefer-response-static-json\": \"error\",\n \"unicorn/prefer-set-has\": \"error\",\n \"unicorn/prefer-single-call\": \"error\",\n \"unicorn/prefer-spread\": \"error\",\n \"unicorn/prefer-string-raw\": \"error\",\n \"unicorn/prefer-string-replace-all\": \"error\",\n \"unicorn/prefer-string-slice\": \"error\",\n \"unicorn/prefer-string-trim-start-end\": \"error\",\n \"unicorn/prefer-structured-clone\": \"error\",\n \"unicorn/prefer-ternary\": [\"error\", \"only-single-line\"],\n \"unicorn/prefer-type-error\": \"error\",\n \"unicorn/relative-url-style\": \"error\",\n \"unicorn/require-array-join-separator\": \"error\",\n \"unicorn/require-module-attributes\": \"error\",\n \"unicorn/require-number-to-fixed-digits-argument\": \"error\",\n \"unicorn/switch-case-braces\": \"error\",\n \"unicorn/switch-case-break-position\": \"error\",\n \"unicorn/text-encoding-identifier-case\": \"error\",\n \"unicorn/throw-new-error\": \"error\",\n yoda: \"error\",\n complexity: [\n \"error\",\n {\n max: 20,\n },\n ],\n \"getter-return\": \"error\",\n \"no-bitwise\": \"error\",\n \"no-console\": [\n \"error\",\n {\n allow: [\"info\", \"warn\", \"error\"],\n },\n ],\n \"no-param-reassign\": [\n \"error\",\n {\n props: true,\n },\n ],\n \"no-plusplus\": \"error\",\n \"no-undef\": \"error\",\n \"no-unneeded-ternary\": \"error\",\n \"no-unreachable\": \"error\",\n \"import/no-cycle\": \"error\",\n \"import/no-unassigned-import\": \"off\",\n \"oxc/bad-match-all-arg\": \"error\",\n \"typescript/consistent-return\": \"error\",\n \"typescript/explicit-module-boundary-types\": \"error\",\n \"typescript/no-dynamic-delete\": \"error\",\n \"typescript/no-explicit-any\": \"error\",\n \"typescript/no-floating-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-type-arguments\": \"error\",\n \"typescript/no-unnecessary-type-assertion\": \"error\",\n \"typescript/no-unnecessary-type-parameters\": \"error\",\n \"typescript/no-useless-default-assignment\": \"error\",\n \"typescript/non-nullable-type-assertion-style\": \"error\",\n \"typescript/prefer-optional-chain\": \"error\",\n \"typescript/require-array-sort-compare\": \"error\",\n \"typescript/restrict-template-expressions\": \"error\",\n \"typescript/unbound-method\": \"error\",\n \"typescript/use-unknown-in-catch-callback-variable\": \"error\",\n \"unicorn/no-abusive-eslint-disable\": \"error\",\n};\n","import type { LintRules } from \"../types.ts\";\nimport { universalRestrictedProperties } from \"./universal.ts\";\n\nexport const reactNativeRules: LintRules = {\n \"no-restricted-properties\": [\n \"error\",\n ...universalRestrictedProperties,\n {\n property: \"toSorted\",\n message: \"Hermes lacks toSorted; copy the array before sorting.\",\n },\n {\n object: \"Intl\",\n property: \"RelativeTimeFormat\",\n message: \"Hermes lacks Intl.RelativeTimeFormat; use a supported formatter.\",\n },\n ],\n \"react/iframe-missing-sandbox\": \"off\",\n \"react/jsx-no-script-url\": \"off\",\n \"react/no-unknown-property\": \"off\",\n \"react/no-unescaped-entities\": \"off\",\n \"react/no-unstable-nested-components\": [\n \"error\",\n {\n allowAsProps: true,\n },\n ],\n \"react/void-dom-elements-no-children\": \"off\",\n \"unicorn/no-array-reverse\": \"error\",\n \"unicorn/no-array-sort\": [\n \"error\",\n {\n allowAfterSpread: true,\n },\n ],\n};\n","import type { LintRules } from \"../types.ts\";\n\nexport const vitestRules: LintRules = {\n \"max-nested-callbacks\": [\n \"error\",\n {\n max: 4,\n },\n ],\n \"vitest/consistent-each-for\": \"error\",\n \"vitest/consistent-test-it\": [\n \"error\",\n {\n fn: \"test\",\n withinDescribe: \"it\",\n },\n ],\n \"vitest/consistent-vitest-vi\": \"error\",\n \"vitest/max-nested-describe\": [\n \"error\",\n {\n max: 3,\n },\n ],\n \"vitest/no-alias-methods\": \"error\",\n \"vitest/no-duplicate-hooks\": \"error\",\n \"vitest/no-identical-title\": \"error\",\n \"vitest/no-import-node-test\": \"error\",\n \"vitest/no-interpolation-in-snapshots\": \"error\",\n \"vitest/no-large-snapshots\": \"error\",\n \"vitest/no-mocks-import\": \"error\",\n \"vitest/no-restricted-vi-methods\": [\n \"error\",\n {\n doMock: \"Use a maintained implementation, spy, or injected owned dependency.\",\n mock: \"Use a maintained implementation, spy, or injected owned dependency.\",\n },\n ],\n \"vitest/no-test-prefixes\": \"error\",\n \"vitest/no-test-return-statement\": \"error\",\n \"vitest/no-unneeded-async-expect-function\": \"error\",\n \"vitest/padding-around-after-all-blocks\": \"error\",\n \"vitest/padding-around-test-blocks\": \"error\",\n \"vitest/prefer-called-exactly-once-with\": \"error\",\n \"vitest/prefer-called-once\": \"error\",\n \"vitest/prefer-called-with\": \"error\",\n \"vitest/prefer-comparison-matcher\": \"error\",\n \"vitest/prefer-each\": \"error\",\n \"vitest/prefer-equality-matcher\": \"error\",\n \"vitest/prefer-expect-resolves\": \"error\",\n \"vitest/prefer-expect-type-of\": \"error\",\n \"vitest/prefer-hooks-in-order\": \"error\",\n \"vitest/prefer-hooks-on-top\": \"error\",\n \"vitest/prefer-import-in-mock\": \"error\",\n \"vitest/prefer-importing-vitest-globals\": \"error\",\n \"vitest/prefer-mock-promise-shorthand\": \"error\",\n \"vitest/prefer-mock-return-shorthand\": \"error\",\n \"vitest/prefer-spy-on\": \"error\",\n \"vitest/prefer-strict-boolean-matchers\": \"error\",\n \"vitest/prefer-strict-equal\": \"error\",\n \"vitest/prefer-to-be\": \"error\",\n \"vitest/prefer-to-be-object\": \"error\",\n \"vitest/prefer-to-contain\": \"error\",\n \"vitest/prefer-to-have-been-called-times\": \"error\",\n \"vitest/prefer-to-have-length\": \"error\",\n \"vitest/prefer-todo\": \"error\",\n};\n","import type { LintConfig, LintProfile } from \"./types.ts\";\nimport { browserRules } from \"./rules/browser.ts\";\nimport { jestRules } from \"./rules/jest.ts\";\nimport { nodeRules } from \"./rules/node.ts\";\nimport { reactCoreRules } from \"./rules/react-core.ts\";\nimport { reactDomRules } from \"./rules/react-dom.ts\";\nimport { reactNativeRules } from \"./rules/react-native.ts\";\nimport { vitestRules } from \"./rules/vitest.ts\";\n\nexport const BASE_LINT_PLUGINS = [\"typescript\", \"unicorn\", \"oxc\", \"import\", \"promise\"] as const;\n\nexport const neutralEnvironment: NonNullable<LintConfig[\"env\"]> = {\n browser: false,\n node: false,\n serviceworker: false,\n worker: false,\n} as const;\n\nexport const nodeEnvironment: NonNullable<LintConfig[\"env\"]> = {\n ...neutralEnvironment,\n node: true,\n} as const;\n\nexport const browserEnvironment: NonNullable<LintConfig[\"env\"]> = {\n ...neutralEnvironment,\n browser: true,\n} as const;\n\nexport const reactNativeEnvironment: NonNullable<LintConfig[\"env\"]> = {\n ...neutralEnvironment,\n} as const;\n\nconst reactNativeJestEnvironment: NonNullable<LintConfig[\"env\"]> = {\n ...reactNativeEnvironment,\n jest: true,\n} as const;\n\nexport const cloudflareWorkerEnvironment: NonNullable<LintConfig[\"env\"]> = {\n ...neutralEnvironment,\n serviceworker: true,\n worker: true,\n} as const;\n\nconst platformGlobalsOff = {\n __DEV__: \"off\",\n Cloudflare: \"off\",\n DigestStream: \"off\",\n FixedLengthStream: \"off\",\n HTMLRewriter: \"off\",\n IdentityTransformStream: \"off\",\n process: \"off\",\n WebSocketPair: \"off\",\n WebSocketRequestResponsePair: \"off\",\n} as const;\n\nconst nodeGlobals = {\n ...platformGlobalsOff,\n console: \"readonly\",\n process: \"readonly\",\n} as const;\n\nconst cloudflareWorkerGlobals = {\n ...platformGlobalsOff,\n Cloudflare: \"readonly\",\n DigestStream: \"readonly\",\n FixedLengthStream: \"readonly\",\n HTMLRewriter: \"readonly\",\n IdentityTransformStream: \"readonly\",\n WebSocketPair: \"readonly\",\n WebSocketRequestResponsePair: \"readonly\",\n} as const;\n\nexport const neutralLint: LintProfile = {\n env: neutralEnvironment,\n globals: platformGlobalsOff,\n plugins: [...BASE_LINT_PLUGINS],\n};\n\nexport const nodeLint: LintProfile = {\n env: nodeEnvironment,\n globals: nodeGlobals,\n plugins: [...BASE_LINT_PLUGINS, \"node\"],\n rules: nodeRules,\n};\n\nexport const browserLint: LintProfile = {\n env: browserEnvironment,\n globals: platformGlobalsOff,\n plugins: [...BASE_LINT_PLUGINS],\n rules: browserRules,\n};\n\nexport const reactCoreLint: LintProfile = {\n plugins: [...BASE_LINT_PLUGINS, \"react\"],\n rules: reactCoreRules,\n};\n\nexport const reactDomLint: LintProfile = {\n plugins: [...BASE_LINT_PLUGINS, \"react\", \"jsx-a11y\"],\n rules: reactDomRules,\n};\n\nconst reactNativeGlobals = {\n ...platformGlobalsOff,\n __BUNDLE_START_TIME__: \"readonly\",\n __DEV__: \"readonly\",\n AbortController: \"readonly\",\n AbortSignal: \"readonly\",\n alert: \"readonly\",\n Blob: \"readonly\",\n cancelAnimationFrame: \"readonly\",\n clearImmediate: \"readonly\",\n clearInterval: \"readonly\",\n clearTimeout: \"readonly\",\n console: \"readonly\",\n crypto: \"readonly\",\n DOMRect: \"readonly\",\n ErrorUtils: \"readonly\",\n Event: \"readonly\",\n EventTarget: \"readonly\",\n fetch: \"readonly\",\n fetchBundle: \"readonly\",\n File: \"readonly\",\n FileReader: \"readonly\",\n FormData: \"readonly\",\n Headers: \"readonly\",\n HermesInternal: \"readonly\",\n navigator: \"readonly\",\n originalXMLHttpRequest: \"readonly\",\n performance: \"readonly\",\n process: \"readonly\",\n queueMicrotask: \"readonly\",\n requestAnimationFrame: \"readonly\",\n Request: \"readonly\",\n require: \"readonly\",\n Response: \"readonly\",\n setImmediate: \"readonly\",\n setInterval: \"readonly\",\n setTimeout: \"readonly\",\n URL: \"readonly\",\n URLSearchParams: \"readonly\",\n WebSocket: \"readonly\",\n XMLHttpRequest: \"readonly\",\n XMLHttpRequestUpload: \"readonly\",\n} as const;\n\nexport const reactNativeRuntimeLint: LintProfile = {\n env: reactNativeEnvironment,\n globals: reactNativeGlobals,\n plugins: [...BASE_LINT_PLUGINS, \"react\"],\n rules: reactNativeRules,\n};\n\nexport const reactWebLint: LintProfile = {\n env: browserEnvironment,\n globals: platformGlobalsOff,\n plugins: [...BASE_LINT_PLUGINS, \"react\", \"jsx-a11y\"],\n rules: {\n ...browserRules,\n ...reactCoreRules,\n ...reactDomRules,\n },\n};\n\nexport const reactNativeLint: LintProfile = {\n env: reactNativeEnvironment,\n globals: reactNativeGlobals,\n plugins: [...BASE_LINT_PLUGINS, \"react\"],\n rules: {\n ...reactCoreRules,\n ...reactNativeRules,\n },\n};\n\nexport const reactNativeJestTestLint: LintProfile = {\n env: reactNativeJestEnvironment,\n globals: reactNativeGlobals,\n plugins: [...BASE_LINT_PLUGINS, \"react\", \"jest\"],\n rules: {\n ...reactCoreRules,\n ...reactNativeRules,\n ...jestRules,\n },\n};\n\nexport const cloudflareWorkerLint: LintProfile = {\n env: cloudflareWorkerEnvironment,\n globals: cloudflareWorkerGlobals,\n plugins: [...BASE_LINT_PLUGINS],\n};\n\nexport const nodeTestLint: LintProfile = {\n ...nodeLint,\n plugins: [...BASE_LINT_PLUGINS, \"node\", \"vitest\"],\n rules: {\n ...nodeRules,\n ...vitestRules,\n },\n};\n\nexport const browserTestLint: LintProfile = {\n ...browserLint,\n plugins: [...BASE_LINT_PLUGINS, \"vitest\"],\n rules: {\n ...browserRules,\n ...vitestRules,\n },\n};\n\nexport const cloudflareWorkerTestLint: LintProfile = {\n ...cloudflareWorkerLint,\n plugins: [...BASE_LINT_PLUGINS, \"vitest\"],\n rules: vitestRules,\n};\n","import type { LintConfig } from \"./types.ts\";\nimport {\n CLOUDFLARE_WORKER_IGNORE_PATTERNS,\n CODE_FILES,\n COMMONJS_FILES,\n CONFIG_FILES,\n DEFAULT_IGNORE_PATTERNS,\n REACT_NATIVE_IGNORE_PATTERNS,\n REACT_NATIVE_JEST_SETUP_FILES,\n REACT_NATIVE_JEST_TEST_FILES,\n RUNTIME_OVERRIDE_EXCLUDE_FILES,\n TEST_FILES,\n VITEST_SETUP_FILES,\n} from \"../constants.ts\";\nimport {\n BASE_LINT_PLUGINS,\n browserEnvironment,\n browserTestLint,\n cloudflareWorkerEnvironment,\n cloudflareWorkerLint,\n cloudflareWorkerTestLint,\n neutralEnvironment,\n neutralLint,\n nodeEnvironment,\n nodeLint,\n nodeTestLint,\n reactNativeJestTestLint,\n reactNativeRuntimeLint,\n} from \"./profiles.ts\";\nimport { browserRules } from \"./rules/browser.ts\";\nimport { nodeRules } from \"./rules/node.ts\";\nimport { reactCoreRules } from \"./rules/react-core.ts\";\nimport { reactDomRules } from \"./rules/react-dom.ts\";\nimport { reactNativeRules } from \"./rules/react-native.ts\";\nimport { universalRules } from \"./rules/universal.ts\";\n\nexport const baseLintConfig: LintConfig = {\n plugins: [...BASE_LINT_PLUGINS],\n ignorePatterns: [...DEFAULT_IGNORE_PATTERNS],\n env: neutralEnvironment,\n globals: neutralLint.globals,\n options: {\n reportUnusedDisableDirectives: \"error\",\n typeAware: true,\n typeCheck: true,\n },\n categories: {\n correctness: \"error\",\n suspicious: \"error\",\n },\n extends: [{ rules: universalRules }],\n overrides: [\n {\n files: [...COMMONJS_FILES],\n ...nodeLint,\n rules: {\n ...nodeRules,\n \"typescript/no-require-imports\": \"off\",\n },\n },\n {\n files: [...CONFIG_FILES],\n ...nodeLint,\n rules: {\n ...nodeRules,\n \"func-names\": \"off\",\n },\n },\n {\n files: [\"**/*.d.ts\"],\n rules: {\n \"typescript/no-empty-object-type\": \"off\",\n },\n },\n ],\n};\n\nexport const nodeRuntimeLintConfig: LintConfig = {\n env: nodeEnvironment,\n globals: nodeLint.globals,\n plugins: [\"node\"],\n extends: [{ rules: nodeRules }],\n};\n\nexport const browserRuntimeLintConfig: LintConfig = {\n env: browserEnvironment,\n globals: neutralLint.globals,\n overrides: [\n {\n files: [...CODE_FILES],\n excludeFiles: [...RUNTIME_OVERRIDE_EXCLUDE_FILES],\n rules: browserRules,\n },\n ],\n};\n\nexport const reactCoreLintConfig: LintConfig = {\n plugins: [\"react\"],\n extends: [{ rules: reactCoreRules }],\n};\n\nexport const reactDomLintConfig: LintConfig = {\n plugins: [\"jsx-a11y\"],\n extends: [{ rules: reactDomRules }],\n};\n\nexport const reactNativeRuntimeLintConfig: LintConfig = {\n env: reactNativeRuntimeLint.env,\n globals: reactNativeRuntimeLint.globals,\n extends: [{ rules: reactNativeRules }],\n};\n\nexport const cloudflareWorkerRuntimeLintConfig: LintConfig = {\n env: cloudflareWorkerEnvironment,\n globals: cloudflareWorkerLint.globals,\n};\n\nexport const reactNativeGeneratedLintConfig: LintConfig = {\n ignorePatterns: [...REACT_NATIVE_IGNORE_PATTERNS],\n};\n\nexport const cloudflareWorkerGeneratedLintConfig: LintConfig = {\n ignorePatterns: [...CLOUDFLARE_WORKER_IGNORE_PATTERNS],\n};\n\nexport const nodeTestLintConfig: LintConfig = {\n overrides: [\n {\n files: [...TEST_FILES],\n ...nodeTestLint,\n },\n ],\n};\n\nexport const browserTestLintConfig: LintConfig = {\n overrides: [\n {\n files: [...TEST_FILES],\n ...browserTestLint,\n },\n ],\n};\n\nexport const cloudflareWorkerTestLintConfig: LintConfig = {\n overrides: [\n {\n files: [...TEST_FILES],\n ...cloudflareWorkerTestLint,\n },\n ],\n};\n\nexport const reactNativeTestLintConfig: LintConfig = {\n overrides: [\n {\n files: [...TEST_FILES],\n excludeFiles: [\n ...VITEST_SETUP_FILES,\n ...REACT_NATIVE_JEST_TEST_FILES,\n ...REACT_NATIVE_JEST_SETUP_FILES,\n ],\n ...nodeTestLint,\n },\n {\n files: [...VITEST_SETUP_FILES],\n excludeFiles: [...REACT_NATIVE_JEST_TEST_FILES, ...REACT_NATIVE_JEST_SETUP_FILES],\n ...nodeTestLint,\n rules: {\n ...nodeTestLint.rules,\n \"vitest/no-restricted-vi-methods\": \"off\",\n },\n },\n {\n files: [...REACT_NATIVE_JEST_TEST_FILES],\n excludeFiles: [...VITEST_SETUP_FILES, ...REACT_NATIVE_JEST_SETUP_FILES],\n ...reactNativeJestTestLint,\n },\n {\n files: [...REACT_NATIVE_JEST_SETUP_FILES],\n excludeFiles: [...VITEST_SETUP_FILES, ...REACT_NATIVE_JEST_TEST_FILES],\n ...reactNativeJestTestLint,\n rules: {\n ...reactNativeJestTestLint.rules,\n \"jest/no-restricted-jest-methods\": \"off\",\n },\n },\n ],\n};\n","import type { UserConfig } from \"vite-plus\";\nimport type { ConfigFragment } from \"./compose.ts\";\nimport {\n DEFAULT_STAGED_CHECK_COMMAND,\n DEFAULT_STAGED_CHECK_GLOB,\n DEFAULT_STAGED_FORMAT_COMMAND,\n DEFAULT_STAGED_FORMAT_GLOB,\n} from \"./constants.ts\";\nimport {\n baseFormatConfig,\n cloudflareWorkerFormatConfig,\n reactFormatConfig,\n reactNativeFormatConfig,\n} from \"./format.ts\";\nimport {\n baseLintConfig,\n browserRuntimeLintConfig,\n browserTestLintConfig as browserTestLintSettings,\n cloudflareWorkerGeneratedLintConfig,\n cloudflareWorkerRuntimeLintConfig,\n cloudflareWorkerTestLintConfig as cloudflareWorkerTestLintSettings,\n nodeRuntimeLintConfig,\n nodeTestLintConfig as nodeTestLintSettings,\n reactCoreLintConfig,\n reactDomLintConfig,\n reactNativeGeneratedLintConfig,\n reactNativeRuntimeLintConfig,\n reactNativeTestLintConfig as reactNativeTestLintSettings,\n} from \"./lint/configs.ts\";\n\ntype PackConfig = Exclude<UserConfig[\"pack\"], readonly unknown[] | undefined>;\n\nexport const baseToolingConfig: ConfigFragment = {\n fmt: baseFormatConfig,\n lint: baseLintConfig,\n staged: {\n [DEFAULT_STAGED_CHECK_GLOB]: DEFAULT_STAGED_CHECK_COMMAND,\n [DEFAULT_STAGED_FORMAT_GLOB]: DEFAULT_STAGED_FORMAT_COMMAND,\n },\n};\n\nexport const nodeRuntimeConfig: ConfigFragment = {\n lint: nodeRuntimeLintConfig,\n};\n\nexport const browserRuntimeConfig: ConfigFragment = {\n lint: browserRuntimeLintConfig,\n};\n\nexport const reactCoreConfig: ConfigFragment = {\n fmt: reactFormatConfig,\n lint: reactCoreLintConfig,\n};\n\nexport const reactDomConfig: ConfigFragment = {\n lint: reactDomLintConfig,\n};\n\nexport const reactNativeRuntimeConfig: ConfigFragment = {\n lint: reactNativeRuntimeLintConfig,\n};\n\nexport const reactNativeGeneratedConfig: ConfigFragment = {\n fmt: reactNativeFormatConfig,\n lint: reactNativeGeneratedLintConfig,\n};\n\nexport const cloudflareWorkerRuntimeConfig: ConfigFragment = {\n lint: cloudflareWorkerRuntimeLintConfig,\n};\n\nexport const cloudflareWorkerGeneratedConfig: ConfigFragment = {\n fmt: cloudflareWorkerFormatConfig,\n lint: cloudflareWorkerGeneratedLintConfig,\n};\n\nexport const nodeTestLintConfig: ConfigFragment = {\n lint: nodeTestLintSettings,\n};\n\nexport const browserTestLintConfig: ConfigFragment = {\n lint: browserTestLintSettings,\n};\n\nexport const cloudflareWorkerTestLintConfig: ConfigFragment = {\n lint: cloudflareWorkerTestLintSettings,\n};\n\nexport const reactNativeTestLintConfig: ConfigFragment = {\n lint: reactNativeTestLintSettings,\n};\n\nexport const libraryPackDefaults: PackConfig = {\n attw: {\n level: \"error\",\n profile: \"esm-only\",\n },\n clean: true,\n dts: true,\n format: [\"esm\"],\n publint: {\n strict: true,\n },\n sourcemap: true,\n};\n\nexport const libraryPackConfig: ConfigFragment = {\n pack: libraryPackDefaults,\n};\n\nexport const workspaceRunConfig: ConfigFragment = {\n run: {\n cache: {\n scripts: true,\n tasks: true,\n },\n enablePrePostScripts: true,\n },\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kasoa/vite-plus-config",
3
- "version": "0.3.2",
3
+ "version": "0.4.1",
4
4
  "description": "Kasoa's Vite+ configurations",
5
5
  "keywords": [
6
6
  "config",
@@ -42,16 +42,16 @@
42
42
  "access": "public"
43
43
  },
44
44
  "devDependencies": {
45
- "@cloudflare/vitest-plugin": "1.0.0",
45
+ "@cloudflare/vitest-plugin": "1.1.9",
46
46
  "@types/node": "24.13.3",
47
47
  "typescript": "^7.0.2",
48
- "vite-plus": "^0.2.9",
49
- "wrangler": "^4.125.0"
48
+ "vite-plus": "^0.3.0",
49
+ "wrangler": "^4.131.2"
50
50
  },
51
51
  "peerDependencies": {
52
52
  "@cloudflare/vitest-plugin": "^1.0.0",
53
53
  "typescript": ">=7 <8",
54
- "vite-plus": ">=0.2.9 <1",
54
+ "vite-plus": ">=0.3.0 <1",
55
55
  "wrangler": ">=4 <5"
56
56
  },
57
57
  "peerDependenciesMeta": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants-rgwdXdWu.mjs","names":[],"sources":["../src/constants.ts"],"sourcesContent":["export const CODE_FILES = [\"**/*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\"] as const;\nexport const COMMONJS_FILES = [\"**/*.{cjs,cts}\"] as const;\nexport const CONFIG_FILES = [\"**/*.config.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\"] as const;\nexport const TEST_FILES = [\n \"**/test/**\",\n \"**/tests/**\",\n \"**/__tests__/**\",\n \"**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}\",\n] as const;\nexport const RUNTIME_OVERRIDE_EXCLUDE_FILES: readonly string[] = [\n ...COMMONJS_FILES,\n ...CONFIG_FILES,\n ...TEST_FILES,\n] as const;\n\nexport const DEFAULT_IGNORE_PATTERNS = [\n \"node_modules/**\",\n \"dist/**\",\n \"dist-ssr/**\",\n \"**/.wrangler/**\",\n \"**/migrations/**\",\n \"**/drizzle/migrations.js\",\n \"**/drizzle/meta/*.json\",\n] as const;\nexport const CLOUDFLARE_WORKER_IGNORE_PATTERNS = [\"**/worker-configuration.d.ts\"] as const;\nexport const REACT_NATIVE_IGNORE_PATTERNS = [\"**/.expo/**\"] as const;\n\nexport const DEFAULT_STAGED_CHECK_GLOB = \"*.{js,jsx,ts,tsx,mjs,cjs,mts,cts,svelte,vue}\";\nexport const DEFAULT_STAGED_CHECK_COMMAND = \"vp check --fix\";\nexport const DEFAULT_STAGED_FORMAT_GLOB = \"*.{css,html,json,jsonc,less,md,mdx,scss,yaml,yml}\";\nexport const DEFAULT_STAGED_FORMAT_COMMAND = \"vp fmt --write --no-error-on-unmatched-pattern\";\nexport const DEFAULT_WRANGLER_CONFIG_PATH = \"./wrangler.jsonc\";\n"],"mappings":";AAAA,MAAa,aAAa,CAAC,sCAAsC;AACjE,MAAa,iBAAiB,CAAC,gBAAgB;AAC/C,MAAa,eAAe,CAAC,6CAA6C;AAC1E,MAAa,aAAa;CACxB;CACA;CACA;CACA;AACF;AACA,MAAa,iCAAoD;CAC/D,GAAG;CACH,GAAG;CACH,GAAG;AACL;AAEA,MAAa,0BAA0B;CACrC;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AACA,MAAa,oCAAoC,CAAC,8BAA8B;AAChF,MAAa,+BAA+B,CAAC,aAAa;AAE1D,MAAa,4BAA4B;AACzC,MAAa,+BAA+B;AAC5C,MAAa,6BAA6B;AAC1C,MAAa,gCAAgC;AAC7C,MAAa,+BAA+B"}