@elliemae/pui-cli 9.0.0-alpha.7 → 9.0.0-alpha.9

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.
Files changed (83) hide show
  1. package/README.md +1 -1
  2. package/app.tsconfig.json +1 -1
  3. package/dist/cjs/cli.js +2 -14
  4. package/dist/cjs/commands/build.js +1 -2
  5. package/dist/cjs/commands/buildcdn.js +1 -2
  6. package/dist/cjs/commands/codemod.js +1 -12
  7. package/dist/cjs/commands/gendoc.js +1 -2
  8. package/dist/cjs/commands/lint.js +11 -9
  9. package/dist/cjs/commands/pack.js +1 -2
  10. package/dist/cjs/commands/skills.js +1 -2
  11. package/dist/cjs/commands/start.js +1 -2
  12. package/dist/cjs/commands/storybook.js +1 -12
  13. package/dist/cjs/commands/test.js +1 -12
  14. package/dist/cjs/commands/tscheck.js +1 -2
  15. package/dist/cjs/commands/utils.js +12 -8
  16. package/dist/cjs/commands/version.js +1 -12
  17. package/dist/cjs/commands/vitest.js +1 -12
  18. package/dist/cjs/index.cjs +1 -1
  19. package/dist/cjs/index.js +2 -2
  20. package/dist/cjs/lint-config/eslint/flat/compat.mjs +10 -3
  21. package/dist/cjs/lint-config/eslint/flat/react.mjs +2 -3
  22. package/dist/cjs/lint-config/stylelint/config.mjs +27 -0
  23. package/dist/cjs/lint-config/stylelint/export.mjs +1 -0
  24. package/dist/cjs/lint-config/stylelint.config.cjs +3 -19
  25. package/dist/cjs/monorepo/utils.cjs +15 -7
  26. package/dist/cjs/monorepo/utils.js +5 -8
  27. package/dist/cjs/skills/migrate-to-pui-cli-9/SKILL.md +115 -11
  28. package/dist/cjs/testing/vitest.config.js +2 -1
  29. package/dist/esm/cli.js +2 -14
  30. package/dist/esm/commands/build.js +1 -2
  31. package/dist/esm/commands/buildcdn.js +1 -2
  32. package/dist/esm/commands/codemod.js +1 -2
  33. package/dist/esm/commands/gendoc.js +1 -2
  34. package/dist/esm/commands/lint.js +11 -9
  35. package/dist/esm/commands/pack.js +1 -2
  36. package/dist/esm/commands/skills.js +1 -2
  37. package/dist/esm/commands/start.js +1 -2
  38. package/dist/esm/commands/storybook.js +1 -2
  39. package/dist/esm/commands/test.js +1 -2
  40. package/dist/esm/commands/tscheck.js +1 -2
  41. package/dist/esm/commands/utils.js +13 -9
  42. package/dist/esm/commands/version.js +1 -2
  43. package/dist/esm/commands/vitest.js +1 -2
  44. package/dist/esm/index.cjs +1 -1
  45. package/dist/esm/index.js +1 -1
  46. package/dist/esm/lint-config/eslint/flat/compat.mjs +10 -3
  47. package/dist/esm/lint-config/eslint/flat/react.mjs +2 -3
  48. package/dist/esm/lint-config/stylelint/config.mjs +27 -0
  49. package/dist/esm/lint-config/stylelint/export.mjs +1 -0
  50. package/dist/esm/lint-config/stylelint.config.cjs +3 -19
  51. package/dist/esm/monorepo/utils.cjs +15 -7
  52. package/dist/esm/monorepo/utils.js +5 -8
  53. package/dist/esm/skills/migrate-to-pui-cli-9/SKILL.md +115 -11
  54. package/dist/esm/testing/vitest.config.js +2 -1
  55. package/dist/types/lib/commands/build.d.ts +1 -1
  56. package/dist/types/lib/commands/buildcdn.d.ts +1 -1
  57. package/dist/types/lib/commands/codemod.d.ts +1 -1
  58. package/dist/types/lib/commands/gendoc.d.ts +1 -1
  59. package/dist/types/lib/commands/lint.d.ts +1 -1
  60. package/dist/types/lib/commands/pack.d.ts +1 -1
  61. package/dist/types/lib/commands/skills.d.ts +1 -1
  62. package/dist/types/lib/commands/start.d.ts +1 -1
  63. package/dist/types/lib/commands/storybook.d.ts +1 -1
  64. package/dist/types/lib/commands/test.d.ts +1 -1
  65. package/dist/types/lib/commands/tscheck.d.ts +1 -1
  66. package/dist/types/lib/commands/utils.d.ts +43 -2
  67. package/dist/types/lib/commands/version.d.ts +1 -1
  68. package/dist/types/lib/commands/vitest.d.ts +1 -1
  69. package/dist/types/lib/index.d.cts +1 -1
  70. package/dist/types/lib/index.d.ts +1 -1
  71. package/dist/types/lib/lint-config/eslint/flat/compat.d.mts +7 -2
  72. package/dist/types/lib/lint-config/stylelint/config.d.mts +3 -0
  73. package/dist/types/lib/lint-config/stylelint/export.d.mts +1 -0
  74. package/dist/types/lib/lint-config/stylelint.config.d.cts +2 -10
  75. package/dist/types/tsconfig.tsbuildinfo +1 -1
  76. package/lib/lint-config/eslint/flat/compat.mjs +10 -3
  77. package/lib/lint-config/eslint/flat/react.mjs +2 -3
  78. package/lib/lint-config/stylelint/config.mjs +27 -0
  79. package/lib/lint-config/stylelint/export.mjs +1 -0
  80. package/lib/lint-config/stylelint.config.cjs +3 -19
  81. package/lib/skills/migrate-to-pui-cli-9/SKILL.md +115 -11
  82. package/library.tsconfig.json +1 -1
  83. package/package.json +21 -21
@@ -1,22 +1,30 @@
1
1
  const path = require('path');
2
- const { execSync } = require('child_process');
2
+ const { execFileSync } = require('child_process');
3
3
 
4
4
  const WORKSPACE_DIR_ENV_VAR = 'NPM_CONFIG_WORKSPACE_DIR';
5
5
  const WORKSPACE_MANIFEST_FILENAME = 'pnpm-workspace.yaml';
6
6
 
7
+ const findUpCli = path.join(
8
+ path.dirname(require.resolve('find-up-cli/package.json')),
9
+ 'cli.js',
10
+ );
11
+
7
12
  const getPNPMWorkspaceLocation = (cwd) => {
8
- let location = null;
9
-
10
13
  for (const fileName of [WORKSPACE_MANIFEST_FILENAME, 'pnpm-workspace.yml']) {
11
14
  try {
12
- const result = execSync(`npx find-up ${fileName}`, { cwd });
13
- location = result.toString().trim();
14
- break;
15
+ const location = execFileSync(
16
+ process.execPath,
17
+ [findUpCli, fileName, `--cwd=${cwd}`],
18
+ { encoding: 'utf8' },
19
+ ).trim();
20
+ if (location) {
21
+ return location;
22
+ }
15
23
  } catch {
16
24
  // ignore
17
25
  }
18
26
  }
19
- return location;
27
+ return null;
20
28
  };
21
29
 
22
30
  exports.findMonoRepoRoot = (cwd = process.cwd()) => {
@@ -1,18 +1,15 @@
1
1
  import path from "node:path";
2
- import { execSync } from "child_process";
2
+ import { findUpSync } from "find-up";
3
3
  const WORKSPACE_DIR_ENV_VAR = "NPM_CONFIG_WORKSPACE_DIR";
4
4
  const WORKSPACE_MANIFEST_FILENAME = "pnpm-workspace.yaml";
5
5
  const getPNPMWorkspaceLocation = (cwd) => {
6
- let location = null;
7
6
  for (const fileName of [WORKSPACE_MANIFEST_FILENAME, "pnpm-workspace.yml"]) {
8
- try {
9
- const result = execSync(`npx find-up ${fileName}`, { cwd });
10
- location = result.toString().trim();
11
- break;
12
- } catch {
7
+ const location = findUpSync(fileName, { cwd });
8
+ if (location) {
9
+ return location;
13
10
  }
14
11
  }
15
- return location;
12
+ return null;
16
13
  };
17
14
  const findMonoRepoRoot = (cwd = process.cwd()) => {
18
15
  const workspaceManifestDirEnvVar = process.env[WORKSPACE_DIR_ENV_VAR] ?? process.env[WORKSPACE_DIR_ENV_VAR.toLowerCase()];
@@ -1,15 +1,17 @@
1
1
  ---
2
2
  name: migrate-to-pui-cli-9
3
3
  description: >-
4
- Migrate a PUI app or library to pui-cli 9 (Node 24, pnpm 11, ESLint 9 flat config).
5
- Use when upgrading @elliemae/pui-cli, migrating from .eslintrc.cjs to eslint.config.mjs,
6
- fixing ESLint 9 lint failures, or adopting the shared flat config from pui-cli.
4
+ Migrate a PUI app or library to pui-cli 9 (Node 24, pnpm 11, ESLint 10 flat config, Stylelint 17,
5
+ Husky 9, Vitest 4). Use when upgrading @elliemae/pui-cli, migrating from .eslintrc.cjs to
6
+ eslint.config.mjs, upgrading Husky 8 hooks, fixing Vitest 4 / coverage-v8 breakages, or adopting
7
+ shared configs from pui-cli. App/library production builds stay on Webpack.
7
8
  ---
8
9
 
9
10
  # Migrate to pui-cli 9
10
11
 
11
12
  Upgrades a PUI repo from pui-cli 8 (ESLint 8 + `.eslintrc.cjs`) to pui-cli 9
12
- (ESLint 9 + `eslint.config.mjs` + Node 24 + pnpm 11).
13
+ (ESLint 10 + `eslint.config.mjs` + Node 24 + pnpm 11). Production bundling remains Webpack;
14
+ Vitest 4 uses Vite only as the test runner when you run `pui-cli vitest`.
13
15
 
14
16
  ## Pre-flight: Toolchain
15
17
 
@@ -42,7 +44,7 @@ pnpm add -D @elliemae/pui-cli@9
42
44
 
43
45
  Re-run install and smoke-test build/test without ESLint changes yet if the bump is large.
44
46
 
45
- ### Phase 3 — ESLint 9 flat config
47
+ ### Phase 3 — ESLint 10 flat config
46
48
 
47
49
  **React apps and libraries:**
48
50
 
@@ -95,13 +97,111 @@ export default [
95
97
 
96
98
  Remove overrides in a follow-up debt PR. Do not copy Airbnb or legacy `.eslintrc` rules.
97
99
 
98
- ### Phase 5 — Verify
100
+ ### Phase 5 — Husky 9 (if `.husky/` exists)
101
+
102
+ Skip this phase if the repo has no git hooks. Most PUI apps/libs copied hooks from pui-cli boilerplate and still use Husky 8.
103
+
104
+ 1. Upgrade and remove deprecated package:
105
+
106
+ ```bash
107
+ pnpm add -D husky@9
108
+ pnpm remove husky-init # if present
109
+ ```
110
+
111
+ 2. Update `package.json` `prepare` script:
112
+
113
+ ```diff
114
+ - "prepare": "[ -n \"$CI\" ] || husky install"
115
+ + "prepare": "[ -n \"$CI\" ] || husky"
116
+ ```
117
+
118
+ 3. Simplify each hook in `.husky/` — remove the shebang and `husky.sh` source. Keep only the command(s):
119
+
120
+ **`.husky/pre-commit`** (typical PUI repo):
121
+
122
+ ```sh
123
+ pnpm -s dlx lint-staged
124
+ ```
125
+
126
+ **`.husky/commit-msg`** (if commitlint is enabled):
127
+
128
+ ```sh
129
+ pnpm exec commitlint --edit $1
130
+ ```
131
+
132
+ ```diff
133
+ - #!/bin/sh
134
+ - . "$(dirname "$0")/_/husky.sh"
135
+ -
136
+ pnpm -s dlx lint-staged
137
+ ```
138
+
139
+ 4. Delete `.husky/.gitignore` if present (Husky 9 regenerates `.husky/_` on install).
140
+
141
+ 5. Run `pnpm prepare`, then verify hooks with a test commit.
142
+
143
+ **Environment variable changes (Husky 9):**
144
+
145
+ | Husky 8 | Husky 9 |
146
+ | ----------------------------------------- | ------------- |
147
+ | `HUSKY_SKIP_HOOKS` / `HUSKY_SKIP_INSTALL` | `HUSKY=0` |
148
+ | `HUSKY_GIT_PARAMS` in commit-msg hooks | `$1`, `$2`, … |
149
+
150
+ Reference hooks: [pui-cli/.husky](https://git.elliemae.io/platform-ui/pui-cli/tree/master/.husky)
151
+
152
+ ### Phase 6 — Stylelint 17 (if CSS / styled-components)
153
+
154
+ 1. Simplify `stylelint.config.cjs` — remove `stylelint-config-styled-components` workarounds.
155
+ 2. Optional ESM: `stylelint.config.mjs` importing `@elliemae/pui-cli/stylelint`.
156
+ 3. Run `pnpm exec pui-cli lint` (CSS pass).
157
+
158
+ See [stylelint-migration.md](https://docs.pui.mortgagetech.q1.ice.com/cli/stylelint-migration) in pui-cli docs.
159
+
160
+ ### Phase 7 — Vitest 4 (if using `pui-cli vitest`)
161
+
162
+ Skip if the repo uses Jest (`pui-cli test`) only.
163
+
164
+ 1. Align devDependencies with pui-cli 9 (Vitest 4 stack):
165
+
166
+ ```bash
167
+ pnpm add -D vitest@4 @vitest/coverage-v8@4 vite@8 @vitejs/plugin-react@6 vite-tsconfig-paths@6
168
+ pnpm remove @vitest/coverage-c8 @types/uuid # when upgrading uuid to 14+
169
+ ```
170
+
171
+ 2. Prefer extending shared config:
172
+
173
+ ```typescript
174
+ import { defineConfig, mergeConfig } from 'vitest/config';
175
+ import { vitestConfig } from '@elliemae/pui-cli/vitest';
176
+
177
+ export default mergeConfig(
178
+ vitestConfig,
179
+ defineConfig({
180
+ test: {
181
+ /* overrides */
182
+ },
183
+ }),
184
+ );
185
+ ```
186
+
187
+ 3. Update custom Vitest 1.x options:
188
+
189
+ | Old | New |
190
+ | ------------------------- | ---------------------------- |
191
+ | `test.deps.optimizer.web` | `test.deps.optimizer.client` |
192
+ | `@vitest/coverage-c8` | `@vitest/coverage-v8` |
193
+
194
+ 4. If `tsconfig.json` extends `@elliemae/pui-cli/app.tsconfig.json` or `library.tsconfig.json`, ensure pui-cli 9 is installed — shared tsconfigs use `moduleResolution: "bundler"`. Custom tsconfigs importing `vitest/config` may need the same.
195
+
196
+ 5. Smoke-test: `pnpm exec pui-cli vitest --passWithNoTests`
197
+
198
+ ### Phase 8 — Verify
99
199
 
100
200
  - [ ] `pnpm exec pui-cli lint` — 0 errors
101
201
  - [ ] `pnpm exec pui-cli tscheck --files`
102
- - [ ] `pnpm test`
103
- - [ ] `pnpm run build` (or `pui-cli build`)
104
- - [ ] Pre-commit / lint-staged passes
202
+ - [ ] `pnpm test` (or `pui-cli vitest` if applicable)
203
+ - [ ] `pnpm run build` (or `pui-cli build`) — Webpack, unchanged
204
+ - [ ] Pre-commit / lint-staged passes (after Husky 9 migration if applicable)
105
205
  - [ ] CI green on the target branch
106
206
 
107
207
  ## Common lint fixes after upgrade
@@ -114,6 +214,9 @@ Remove overrides in a follow-up debt PR. Do not copy Airbnb or legacy `.eslintrc
114
214
  | Stale `eslint-disable` comments | Remove disables for rules no longer in config |
115
215
  | Test/fixture files flagged | Shared config includes `lib/**/tests/**` globs — ensure pui-cli 9.0.0+ |
116
216
  | `.d.ts` files | pui-cli turns off `no-explicit-any` for `**/*.d.ts` |
217
+ | Cannot find module `vite` in tscheck | Set `moduleResolution: "bundler"` or extend pui-cli 9 tsconfig |
218
+ | Vitest `optimizer.web` unknown | Rename to `test.deps.optimizer.client` (Vitest 4) |
219
+ | Coverage fails after upgrade | Remove `@vitest/coverage-c8`; use `@vitest/coverage-v8@4` |
117
220
 
118
221
  Full rule comparison: [eslint-rules-migration.md](https://docs.pui.mortgagetech.q1.ice.com/cli/eslint-rules-migration) (also at `docs/eslint-rules-migration.md` in pui-cli).
119
222
 
@@ -130,11 +233,12 @@ Skills are copied to `.cursor/skills/`, `.claude/skills/`, and `.github/skills/`
130
233
  ## What NOT to change
131
234
 
132
235
  - Application business logic — migration is tooling/config only
133
- - Webpack/babel config unless pui-cli 9 release notes require it
134
- - Prettier / Stylelint / commitlint configs unless pui-cli 9 bumps those presets
236
+ - Webpack/babel production build config pui-cli 9 does not migrate apps to Vite for bundling
237
+ - Prettier / commitlint configs unless pui-cli 9 bumps those presets
135
238
 
136
239
  ## Additional resources
137
240
 
138
241
  - [pui-cli 9 migration guide](https://docs.pui.mortgagetech.q1.ice.com/cli/pui-cli-9-migration)
139
242
  - [ESLint rules migration guide](https://docs.pui.mortgagetech.q1.ice.com/cli/eslint-rules-migration)
243
+ - [Stylelint migration guide](https://docs.pui.mortgagetech.q1.ice.com/cli/stylelint-migration)
140
244
  - Reference one-liner: `pui-react-boilerplate/eslint.config.mjs`
@@ -14,11 +14,12 @@ const vitestConfig = defineConfig({
14
14
  include: ["./{app,lib}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
15
15
  exclude: [...configDefaults.exclude, ".idea", ".git", ".cache", "e2e"],
16
16
  coverage: {
17
+ provider: "v8",
17
18
  reportsDirectory: "./reports/coverage"
18
19
  },
19
20
  deps: {
20
21
  optimizer: {
21
- web: {
22
+ client: {
22
23
  include: ["app.config.json", "@elliemae/pui-app-sdk"]
23
24
  }
24
25
  }
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  type Arguments = {
3
3
  service: boolean;
4
4
  };
@@ -1,2 +1,2 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  export declare const buildCDNCmd: CommandModule<Record<string, never>>;
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  type Arguments = {
3
3
  transform: string;
4
4
  };
@@ -1,2 +1,2 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  export declare const gendocCmd: CommandModule<Record<string, never>, Record<string, never>>;
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  type Arguments = {
3
3
  css: boolean;
4
4
  js: boolean;
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  type Arguments = {
3
3
  production: boolean;
4
4
  target: string;
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  type SkillTarget = 'cursor' | 'claude' | 'copilot';
3
3
  type TargetOption = SkillTarget | 'all';
4
4
  type Arguments = {
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  type Arguments = {
3
3
  prod: boolean;
4
4
  };
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  type Arguments = {
3
3
  build: boolean;
4
4
  docs: boolean;
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  type Arguments = {
3
3
  fix: boolean;
4
4
  watch: boolean;
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  export type Arguments = {
3
3
  files: string[];
4
4
  };
@@ -1,5 +1,46 @@
1
- import { execaCommand } from 'execa';
2
- export declare const exec: (command: string, options?: Parameters<typeof execaCommand>[1]) => Promise<import("execa").ExecaReturnValue<Buffer<ArrayBufferLike>>>;
1
+ import { type Options } from 'execa';
2
+ export declare const exec: <OptionsType extends Options = Options>(command: string, options?: OptionsType) => Promise<import("execa").Result<{
3
+ shell: true;
4
+ } & {
5
+ preferLocal?: boolean;
6
+ localDir?: string | URL;
7
+ node?: boolean;
8
+ nodeOptions?: readonly string[];
9
+ nodePath?: string | URL;
10
+ shell?: boolean | string | URL;
11
+ cwd?: string | URL;
12
+ env?: Readonly<Partial<Record<string, string>>>;
13
+ extendEnv?: boolean;
14
+ input?: string | Uint8Array | import("stream").Readable;
15
+ inputFile?: string | URL;
16
+ stdin?: import("node_modules/execa/types/stdio/type.js").StdinOptionCommon<false>;
17
+ stdout?: import("node_modules/execa/types/stdio/type.js").StdoutStderrOptionCommon<false>;
18
+ stderr?: import("node_modules/execa/types/stdio/type.js").StdoutStderrOptionCommon<false>;
19
+ stdio: "inherit" | "pipe" | "ignore" | "overlapped" | readonly [import("node_modules/execa/types/stdio/type.js").StdinOptionCommon<false, false>, import("node_modules/execa/types/stdio/type.js").StdoutStderrOptionCommon<false, false>, import("node_modules/execa/types/stdio/type.js").StdoutStderrOptionCommon<false, false>, ...import("node_modules/execa/types/stdio/type.js").StdioExtraOptionCommon<false>[]];
20
+ all?: boolean;
21
+ encoding?: import("node_modules/execa/types/arguments/encoding-option.js").EncodingOption;
22
+ lines?: import("node_modules/execa/types/arguments/specific.js").FdGenericOption<boolean>;
23
+ stripFinalNewline?: import("node_modules/execa/types/arguments/specific.js").FdGenericOption<boolean>;
24
+ maxBuffer?: import("node_modules/execa/types/arguments/specific.js").FdGenericOption<number>;
25
+ buffer?: import("node_modules/execa/types/arguments/specific.js").FdGenericOption<boolean>;
26
+ ipc?: boolean | undefined;
27
+ serialization?: "json" | "advanced" | undefined;
28
+ ipcInput?: import("execa").Message | undefined;
29
+ verbose?: import("node_modules/execa/types/verbose.js").VerboseOption;
30
+ reject?: boolean;
31
+ timeout?: number;
32
+ cancelSignal?: AbortSignal | undefined;
33
+ gracefulCancel?: boolean | undefined;
34
+ forceKillAfterDelay?: number | boolean | undefined;
35
+ killSignal?: keyof import("os").SignalConstants | number;
36
+ detached?: boolean | undefined;
37
+ cleanup?: boolean | undefined;
38
+ uid?: number;
39
+ gid?: number;
40
+ argv0?: string;
41
+ windowsHide?: boolean;
42
+ windowsVerbatimArguments?: boolean;
43
+ }>>;
3
44
  export declare const logInfo: {
4
45
  (...data: any[]): void;
5
46
  (message?: any, ...optionalParams: any[]): void;
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  type Arguments = {
3
3
  deleteTags: boolean;
4
4
  useRegistry: boolean;
@@ -1,4 +1,4 @@
1
- import { type CommandModule } from 'yargs';
1
+ import type { CommandModule } from 'yargs';
2
2
  type Arguments = {
3
3
  fix?: boolean;
4
4
  watch?: boolean;
@@ -5,7 +5,7 @@ import { eslintFlatConfig } from "./lint-config/eslint/flat/react-export.mjs";
5
5
  import { eslintFlatConfigStrict } from "./lint-config/eslint/flat/react-export.mjs";
6
6
  import { esConfig as eslintBaseConfig } from "./lint-config/eslint/non-react.cjs";
7
7
  import { esReactConfig as eslintConfig } from "./lint-config/eslint/react.cjs";
8
- import { stylelintConfig } from "./lint-config/stylelint.config.cjs";
8
+ import { stylelintConfig } from "./lint-config/stylelint/export.mjs";
9
9
  import { prettierConfig } from "./lint-config/prettier.config.cjs";
10
10
  import { commitlintConfig } from "./lint-config/commitlint.config.cjs";
11
11
  import { jestConfig } from "./testing/jest.config.cjs";
@@ -6,7 +6,7 @@ export { eslintFlatConfig, eslintFlatConfigStrict, } from './lint-config/eslint/
6
6
  export { esConfig as eslintBaseConfig } from './lint-config/eslint/non-react.cjs';
7
7
  /** @deprecated Use eslintFlatConfig in eslint.config.mjs */
8
8
  export { esReactConfig as eslintConfig } from './lint-config/eslint/react.cjs';
9
- export { stylelintConfig } from './lint-config/stylelint.config.cjs';
9
+ export { stylelintConfig } from './lint-config/stylelint/export.mjs';
10
10
  export { prettierConfig } from './lint-config/prettier.config.cjs';
11
11
  export { commitlintConfig } from './lint-config/commitlint.config.cjs';
12
12
  export { jestConfig } from './testing/jest.config.cjs';
@@ -1,4 +1,9 @@
1
+ /** React — uses context.getFilename / getScope (eslint-plugin-react@7). */
2
+ /** @type {import('eslint').ESLint.Plugin} */
3
+ export const reactPlugin: import("eslint").ESLint.Plugin;
4
+ /** Redux-saga — uses context.getScope in no-yield-in-race. */
1
5
  /** @type {import('eslint').ESLint.Plugin} */
2
6
  export const reduxSagaPlugin: import("eslint").ESLint.Plugin;
3
- /** Storybook flat presets with ESLint 10 compatibility shims applied. */
4
- export const storybookFlatConfigs: import("@eslint/compat").FixupConfigArray;
7
+ /** Storybook flat presets uses legacy context APIs (eslint-plugin-storybook@0.12). */
8
+ /** @type {import('eslint').Linter.Config[]} */
9
+ export const storybookFlatConfigs: import("eslint").Linter.Config[];
@@ -0,0 +1,3 @@
1
+ /** @type {import('stylelint').Config} */
2
+ export const stylelintConfig: import("stylelint").Config;
3
+ export default stylelintConfig;
@@ -0,0 +1 @@
1
+ export { stylelintConfig, default } from "./config.mjs";
@@ -1,10 +1,2 @@
1
- export namespace stylelintConfig {
2
- export let ignoreFiles: string[];
3
- export let customSyntax: string;
4
- let _extends: string[];
5
- export { _extends as extends };
6
- export let rules: {
7
- "selector-type-no-unknown": null;
8
- "function-no-unknown": null;
9
- };
10
- }
1
+ export { stylelintConfig };
2
+ import { stylelintConfig } from "./stylelint/export.mjs";