@elliemae/pui-cli 8.62.2 → 9.0.0-alpha.10

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 (290) hide show
  1. package/README.md +43 -0
  2. package/app.tsconfig.json +1 -1
  3. package/build/docs/404.html +16 -0
  4. package/build/docs/api/functions/loadRoutes/index.html +22 -0
  5. package/build/docs/api/index.html +22 -0
  6. package/build/docs/api/type-aliases/LIB_NAME/index.html +17 -0
  7. package/build/docs/api/variables/babelConfig/index.html +40 -0
  8. package/build/docs/api/variables/commitlintConfig/index.html +20 -0
  9. package/build/docs/api/variables/eslintBaseConfig/index.html +132 -0
  10. package/build/docs/api/variables/eslintConfig/index.html +180 -0
  11. package/build/docs/api/variables/eslintFlatBaseConfig/index.html +18 -0
  12. package/build/docs/api/variables/eslintFlatBaseConfigStrict/index.html +18 -0
  13. package/build/docs/api/variables/eslintFlatConfig/index.html +18 -0
  14. package/build/docs/api/variables/eslintFlatConfigStrict/index.html +18 -0
  15. package/build/docs/api/variables/jestConfig/index.html +98 -0
  16. package/build/docs/api/variables/jestNodeConfig/index.html +98 -0
  17. package/build/docs/api/variables/lintStagedConfig/index.html +24 -0
  18. package/build/docs/api/variables/prettierConfig/index.html +30 -0
  19. package/build/docs/api/variables/stylelintConfig/index.html +17 -0
  20. package/build/docs/api/variables/vitestConfig/index.html +17 -0
  21. package/build/docs/assets/css/styles.74603f39.css +1 -0
  22. package/build/docs/assets/js/04ee7372.eaa386ed.js +1 -0
  23. package/build/docs/assets/js/0551d4dd.ebb18f4f.js +1 -0
  24. package/build/docs/assets/js/0a1d0315.fc8f91a7.js +1 -0
  25. package/build/docs/assets/js/1126.fa547e9c.js +1 -0
  26. package/build/docs/assets/js/1127.f28430e6.js +1 -0
  27. package/build/docs/assets/js/1298.fb0939c9.js +1 -0
  28. package/build/docs/assets/js/13097d8d.c1821d28.js +1 -0
  29. package/build/docs/assets/js/1617.b2623271.js +1 -0
  30. package/build/docs/assets/js/16b7bc88.c3779e27.js +1 -0
  31. package/build/docs/assets/js/1700.4f7a9007.js +1 -0
  32. package/build/docs/assets/js/17896441.84339068.js +1 -0
  33. package/build/docs/assets/js/1b9df811.aaa95da1.js +1 -0
  34. package/build/docs/assets/js/213.e69351b3.js +1 -0
  35. package/build/docs/assets/js/2297.e63290f4.js +1 -0
  36. package/build/docs/assets/js/232a0286.33b2782b.js +1 -0
  37. package/build/docs/assets/js/2399.cc5803e0.js +1 -0
  38. package/build/docs/assets/js/242.73516ab6.js +1 -0
  39. package/build/docs/assets/js/247.e1522e52.js +1 -0
  40. package/build/docs/assets/js/2673.da75a556.js +1 -0
  41. package/build/docs/assets/js/2805.f0505f8c.js +1 -0
  42. package/build/docs/assets/js/3395.eb3dad5b.js +1 -0
  43. package/build/docs/assets/js/3499.2d5c6821.js +1 -0
  44. package/build/docs/assets/js/3552.9272c0d9.js +1 -0
  45. package/build/docs/assets/js/3720.8e7f36d4.js +2 -0
  46. package/build/docs/assets/js/3720.8e7f36d4.js.LICENSE.txt +9 -0
  47. package/build/docs/assets/js/37d86055.47211796.js +1 -0
  48. package/build/docs/assets/js/3992.0ac29b2f.js +2 -0
  49. package/build/docs/assets/js/3992.0ac29b2f.js.LICENSE.txt +1 -0
  50. package/build/docs/assets/js/4069.301f1115.js +1 -0
  51. package/build/docs/assets/js/4134.553b3645.js +1 -0
  52. package/build/docs/assets/js/4257.9afce6ac.js +1 -0
  53. package/build/docs/assets/js/4772.6294b364.js +1 -0
  54. package/build/docs/assets/js/4884.9dbe23e5.js +1 -0
  55. package/build/docs/assets/js/4fb6949f.369cc1b9.js +1 -0
  56. package/build/docs/assets/js/5196.98f7e06a.js +1 -0
  57. package/build/docs/assets/js/5248.ee436cea.js +1 -0
  58. package/build/docs/assets/js/5428.71752e9a.js +1 -0
  59. package/build/docs/assets/js/5964.0728ed91.js +1 -0
  60. package/build/docs/assets/js/5968.5f4ccba7.js +1 -0
  61. package/build/docs/assets/js/5befad71.5f19afb5.js +1 -0
  62. package/build/docs/assets/js/5d5f1db0.c5aa5afa.js +1 -0
  63. package/build/docs/assets/js/5e8c322a.ef3b894b.js +1 -0
  64. package/build/docs/assets/js/5e95c892.f550b901.js +1 -0
  65. package/build/docs/assets/js/5fb3c522.da5628e8.js +1 -0
  66. package/build/docs/assets/js/6486.68ae0007.js +1 -0
  67. package/build/docs/assets/js/6704.2615a5c6.js +1 -0
  68. package/build/docs/assets/js/6bd11e52.08b95209.js +1 -0
  69. package/build/docs/assets/js/6e96545e.30c1b801.js +1 -0
  70. package/build/docs/assets/js/7080.efd5ba6c.js +1 -0
  71. package/build/docs/assets/js/71f6d02b.cfd98385.js +1 -0
  72. package/build/docs/assets/js/7201.e90ba636.js +1 -0
  73. package/build/docs/assets/js/7344.95656e38.js +1 -0
  74. package/build/docs/assets/js/7516.b6668d60.js +1 -0
  75. package/build/docs/assets/js/7525.a8d0db87.js +1 -0
  76. package/build/docs/assets/js/7540.7a4353cf.js +1 -0
  77. package/build/docs/assets/js/7985.8c6943d6.js +1 -0
  78. package/build/docs/assets/js/8049.8ba75278.js +1 -0
  79. package/build/docs/assets/js/80e87108.f9507b95.js +1 -0
  80. package/build/docs/assets/js/8152.f2bebb2f.js +1 -0
  81. package/build/docs/assets/js/821.8d4e2a80.js +1 -0
  82. package/build/docs/assets/js/8290.a4f7a2ca.js +1 -0
  83. package/build/docs/assets/js/8355.864847a1.js +1 -0
  84. package/build/docs/assets/js/8389.26a9caca.js +1 -0
  85. package/build/docs/assets/js/8585.3cb09ff7.js +1 -0
  86. package/build/docs/assets/js/8788.03856709.js +1 -0
  87. package/build/docs/assets/js/9178.50ac2954.js +1 -0
  88. package/build/docs/assets/js/9210.1ac21da8.js +1 -0
  89. package/build/docs/assets/js/9354.37ad86f9.js +1 -0
  90. package/build/docs/assets/js/936.c151b43f.js +1 -0
  91. package/build/docs/assets/js/9574.b172d607.js +1 -0
  92. package/build/docs/assets/js/97.70eddfb5.js +1 -0
  93. package/build/docs/assets/js/9852.f77caf52.js +1 -0
  94. package/build/docs/assets/js/9953.f6278635.js +1 -0
  95. package/build/docs/assets/js/a7bd4aaa.30ffad02.js +1 -0
  96. package/build/docs/assets/js/a94703ab.f1796514.js +1 -0
  97. package/build/docs/assets/js/aba21aa0.3bbcf0cc.js +1 -0
  98. package/build/docs/assets/js/b7b585d8.6d53e73f.js +1 -0
  99. package/build/docs/assets/js/b8ac1d98.62684003.js +1 -0
  100. package/build/docs/assets/js/bde5209a.f5bca8b2.js +1 -0
  101. package/build/docs/assets/js/c377a04b.0f8625c6.js +1 -0
  102. package/build/docs/assets/js/dfd75424.51c4e2cb.js +1 -0
  103. package/build/docs/assets/js/e5f79924.c793a74d.js +1 -0
  104. package/build/docs/assets/js/f736c962.dbd0d004.js +1 -0
  105. package/build/docs/assets/js/main.00e13c37.js +2 -0
  106. package/build/docs/assets/js/main.00e13c37.js.LICENSE.txt +51 -0
  107. package/build/docs/assets/js/runtime~main.cb214d1a.js +1 -0
  108. package/build/docs/eslint-rules-migration/index.html +135 -0
  109. package/build/docs/img/favicon.ico +0 -0
  110. package/build/docs/img/logo.jpeg +0 -0
  111. package/build/docs/img/logo.svg +22 -0
  112. package/build/docs/img/readme.md +1 -0
  113. package/build/docs/index.html +179 -0
  114. package/build/docs/pui-cli-9-migration/index.html +150 -0
  115. package/build/docs/readme.md +1 -0
  116. package/build/docs/sitemap.xml +1 -0
  117. package/build/docs/ssl-certificate-setup/index.html +284 -0
  118. package/build/docs/stylelint-migration/index.html +57 -0
  119. package/build/docs/usage-guide/index.html +439 -0
  120. package/dist/cjs/cli.js +3 -13
  121. package/dist/cjs/commands/build.js +1 -2
  122. package/dist/cjs/commands/buildcdn.js +1 -2
  123. package/dist/cjs/commands/codemod.js +1 -12
  124. package/dist/cjs/commands/gendoc.js +1 -2
  125. package/dist/cjs/commands/lint.js +11 -9
  126. package/dist/cjs/commands/pack.js +1 -2
  127. package/dist/cjs/commands/skills.js +206 -0
  128. package/dist/cjs/commands/start.js +1 -2
  129. package/dist/cjs/commands/storybook.js +1 -12
  130. package/dist/cjs/commands/test.js +1 -13
  131. package/dist/cjs/commands/tscheck.js +1 -2
  132. package/dist/cjs/commands/utils.js +16 -12
  133. package/dist/cjs/commands/version.js +1 -12
  134. package/dist/cjs/commands/vitest.js +1 -13
  135. package/dist/cjs/index.cjs +13 -1
  136. package/dist/cjs/index.js +8 -2
  137. package/dist/cjs/lint-config/eslint/common.cjs +1 -1
  138. package/dist/cjs/lint-config/eslint/flat/common.mjs +169 -0
  139. package/dist/cjs/lint-config/eslint/flat/compat.mjs +27 -0
  140. package/dist/cjs/lint-config/eslint/flat/index.mjs +21 -0
  141. package/dist/cjs/lint-config/eslint/flat/non-react-export.mjs +10 -0
  142. package/dist/cjs/lint-config/eslint/flat/non-react.mjs +6 -0
  143. package/dist/cjs/lint-config/eslint/flat/presets.mjs +96 -0
  144. package/dist/cjs/lint-config/eslint/flat/react-export.mjs +7 -0
  145. package/dist/cjs/lint-config/eslint/flat/react.mjs +59 -0
  146. package/dist/cjs/lint-config/eslint/flat/rules.mjs +185 -0
  147. package/dist/cjs/lint-config/eslint/typescript/non-react.cjs +1 -1
  148. package/dist/cjs/lint-config/eslint/typescript/react.cjs +1 -1
  149. package/dist/cjs/lint-config/stylelint/config.mjs +27 -0
  150. package/dist/cjs/lint-config/stylelint/export.mjs +1 -0
  151. package/dist/cjs/lint-config/stylelint.config.cjs +3 -19
  152. package/dist/cjs/monorepo/utils.cjs +16 -8
  153. package/dist/cjs/monorepo/utils.js +5 -8
  154. package/dist/cjs/{release.config.cjs → release.config.mjs} +3 -2
  155. package/dist/cjs/{semantic-release-plugin.cjs → semantic-release-plugin.mjs} +3 -3
  156. package/dist/cjs/skills/migrate-to-pui-cli-9/SKILL.md +271 -0
  157. package/dist/cjs/testing/jest.config.cjs +5 -9
  158. package/dist/cjs/testing/resolver.cjs +1 -1
  159. package/dist/cjs/testing/setup-react-env.js +1 -1
  160. package/dist/cjs/testing/vitest.config.js +2 -1
  161. package/dist/cjs/transpile/esbuild.js +1 -1
  162. package/dist/cjs/webpack/csp-plugin.js +2 -4
  163. package/dist/cjs/webpack/helpers.js +2 -6
  164. package/dist/cjs/webpack/prop-types-shim.js +0 -1
  165. package/dist/cjs/webpack/webpack.dev.babel.js +1 -23
  166. package/dist/cjs/webpack/webpack.lib.base.babel.js +0 -8
  167. package/dist/esm/cli.js +3 -13
  168. package/dist/esm/commands/build.js +1 -2
  169. package/dist/esm/commands/buildcdn.js +1 -2
  170. package/dist/esm/commands/codemod.js +1 -2
  171. package/dist/esm/commands/gendoc.js +1 -2
  172. package/dist/esm/commands/lint.js +11 -9
  173. package/dist/esm/commands/pack.js +1 -2
  174. package/dist/esm/commands/skills.js +175 -0
  175. package/dist/esm/commands/start.js +1 -2
  176. package/dist/esm/commands/storybook.js +1 -2
  177. package/dist/esm/commands/test.js +1 -3
  178. package/dist/esm/commands/tscheck.js +1 -2
  179. package/dist/esm/commands/utils.js +17 -13
  180. package/dist/esm/commands/version.js +1 -2
  181. package/dist/esm/commands/vitest.js +1 -3
  182. package/dist/esm/index.cjs +13 -1
  183. package/dist/esm/index.js +13 -1
  184. package/dist/esm/lint-config/eslint/common.cjs +1 -1
  185. package/dist/esm/lint-config/eslint/flat/common.mjs +169 -0
  186. package/dist/esm/lint-config/eslint/flat/compat.mjs +27 -0
  187. package/dist/esm/lint-config/eslint/flat/index.mjs +21 -0
  188. package/dist/esm/lint-config/eslint/flat/non-react-export.mjs +10 -0
  189. package/dist/esm/lint-config/eslint/flat/non-react.mjs +6 -0
  190. package/dist/esm/lint-config/eslint/flat/presets.mjs +96 -0
  191. package/dist/esm/lint-config/eslint/flat/react-export.mjs +7 -0
  192. package/dist/esm/lint-config/eslint/flat/react.mjs +59 -0
  193. package/dist/esm/lint-config/eslint/flat/rules.mjs +185 -0
  194. package/dist/esm/lint-config/eslint/typescript/non-react.cjs +1 -1
  195. package/dist/esm/lint-config/eslint/typescript/react.cjs +1 -1
  196. package/dist/esm/lint-config/stylelint/config.mjs +27 -0
  197. package/dist/esm/lint-config/stylelint/export.mjs +1 -0
  198. package/dist/esm/lint-config/stylelint.config.cjs +3 -19
  199. package/dist/esm/monorepo/utils.cjs +16 -8
  200. package/dist/esm/monorepo/utils.js +5 -8
  201. package/dist/esm/{release.config.cjs → release.config.mjs} +3 -2
  202. package/dist/esm/{semantic-release-plugin.cjs → semantic-release-plugin.mjs} +3 -3
  203. package/dist/esm/skills/migrate-to-pui-cli-9/SKILL.md +271 -0
  204. package/dist/esm/testing/jest.config.cjs +5 -9
  205. package/dist/esm/testing/resolver.cjs +1 -1
  206. package/dist/esm/testing/setup-react-env.js +1 -1
  207. package/dist/esm/testing/vitest.config.js +2 -1
  208. package/dist/esm/transpile/esbuild.js +1 -1
  209. package/dist/esm/webpack/csp-plugin.js +2 -4
  210. package/dist/esm/webpack/helpers.js +2 -6
  211. package/dist/esm/webpack/prop-types-shim.js +0 -1
  212. package/dist/esm/webpack/webpack.dev.babel.js +2 -26
  213. package/dist/esm/webpack/webpack.lib.base.babel.js +0 -8
  214. package/dist/types/docusaurus.config.d.ts +3 -2
  215. package/dist/types/lib/commands/build.d.ts +1 -1
  216. package/dist/types/lib/commands/buildcdn.d.ts +1 -1
  217. package/dist/types/lib/commands/codemod.d.ts +1 -1
  218. package/dist/types/lib/commands/gendoc.d.ts +1 -1
  219. package/dist/types/lib/commands/lint.d.ts +1 -1
  220. package/dist/types/lib/commands/pack.d.ts +1 -1
  221. package/dist/types/lib/commands/skills.d.ts +11 -0
  222. package/dist/types/lib/commands/start.d.ts +1 -1
  223. package/dist/types/lib/commands/storybook.d.ts +1 -1
  224. package/dist/types/lib/commands/test.d.ts +1 -1
  225. package/dist/types/lib/commands/tscheck.d.ts +1 -1
  226. package/dist/types/lib/commands/utils.d.ts +43 -2
  227. package/dist/types/lib/commands/version.d.ts +1 -1
  228. package/dist/types/lib/commands/vitest.d.ts +1 -1
  229. package/dist/types/lib/index.d.cts +6 -2
  230. package/dist/types/lib/index.d.ts +5 -1
  231. package/dist/types/lib/lint-config/eslint/flat/common.d.mts +6 -0
  232. package/dist/types/lib/lint-config/eslint/flat/compat.d.mts +9 -0
  233. package/dist/types/lib/lint-config/eslint/flat/index.d.mts +6 -0
  234. package/dist/types/lib/lint-config/eslint/flat/non-react-export.d.mts +4 -0
  235. package/dist/types/lib/lint-config/eslint/flat/non-react.d.mts +3 -0
  236. package/dist/types/lib/lint-config/eslint/flat/presets.d.mts +34 -0
  237. package/dist/types/lib/lint-config/eslint/flat/react-export.d.mts +4 -0
  238. package/dist/types/lib/lint-config/eslint/flat/react.d.mts +4 -0
  239. package/dist/types/lib/lint-config/eslint/flat/rules.d.mts +361 -0
  240. package/dist/types/lib/lint-config/stylelint/config.d.mts +3 -0
  241. package/dist/types/lib/lint-config/stylelint/export.d.mts +1 -0
  242. package/dist/types/lib/lint-config/stylelint.config.d.cts +2 -10
  243. package/dist/types/lib/release.config.d.mts +10 -0
  244. package/dist/types/lib/semantic-release-plugin.d.mts +4 -0
  245. package/dist/types/lib/server/appRoutes.d.ts +1 -1
  246. package/dist/types/lib/server/csp.d.ts +1 -1
  247. package/dist/types/lib/server/middlewares.d.ts +1 -1
  248. package/dist/types/lib/webpack/csp-plugin.d.ts +3 -3
  249. package/dist/types/lib/webpack/helpers.d.ts +1 -6
  250. package/dist/types/lib/webpack/interceptor-middleware.d.ts +2 -2
  251. package/dist/types/lib/webpack/webpack.base.babel.d.ts +1 -1
  252. package/dist/types/lib/webpack/webpack.lib.base.babel.d.ts +1 -1
  253. package/dist/types/lib/webpack/webpack.lib.prod.babel.d.ts +1 -1
  254. package/dist/types/lib/webpack/webpack.prod.babel.d.ts +1 -1
  255. package/dist/types/lib/webpack/webpack.storybook.d.ts +1 -1
  256. package/dist/types/tsconfig.tsbuildinfo +1 -1
  257. package/lib/lint-config/commitlint.config.cjs +1 -0
  258. package/lib/lint-config/eslint/common.cjs +164 -0
  259. package/lib/lint-config/eslint/flat/common.mjs +169 -0
  260. package/lib/lint-config/eslint/flat/compat.mjs +27 -0
  261. package/lib/lint-config/eslint/flat/index.mjs +21 -0
  262. package/lib/lint-config/eslint/flat/non-react-export.mjs +10 -0
  263. package/lib/lint-config/eslint/flat/non-react.mjs +6 -0
  264. package/lib/lint-config/eslint/flat/presets.mjs +96 -0
  265. package/lib/lint-config/eslint/flat/react-export.mjs +7 -0
  266. package/lib/lint-config/eslint/flat/react.mjs +59 -0
  267. package/lib/lint-config/eslint/flat/rules.mjs +185 -0
  268. package/lib/lint-config/eslint/non-react.cjs +14 -0
  269. package/lib/lint-config/eslint/react.cjs +26 -0
  270. package/lib/lint-config/eslint/typescript/common.cjs +49 -0
  271. package/lib/lint-config/eslint/typescript/non-react.cjs +12 -0
  272. package/lib/lint-config/eslint/typescript/react.cjs +19 -0
  273. package/lib/lint-config/lint-staged.config.js +15 -0
  274. package/lib/lint-config/prettier.config.cjs +8 -0
  275. package/lib/lint-config/stylelint/config.mjs +27 -0
  276. package/lib/lint-config/stylelint/export.mjs +1 -0
  277. package/lib/lint-config/stylelint.config.cjs +3 -0
  278. package/lib/release.config.mjs +28 -0
  279. package/lib/semantic-release-plugin.mjs +30 -0
  280. package/lib/skills/migrate-to-pui-cli-9/SKILL.md +271 -0
  281. package/library.tsconfig.json +1 -1
  282. package/package.json +103 -89
  283. package/dist/cjs/server/versionPathMiddleware.js +0 -44
  284. package/dist/cjs/testing/setup-env.js +0 -8
  285. package/dist/esm/server/versionPathMiddleware.js +0 -24
  286. package/dist/esm/testing/setup-env.js +0 -7
  287. package/dist/types/lib/release.config.d.cts +0 -7
  288. package/dist/types/lib/semantic-release-plugin.d.cts +0 -1
  289. package/dist/types/lib/server/versionPathMiddleware.d.ts +0 -8
  290. package/dist/types/lib/testing/setup-env.d.ts +0 -1
@@ -0,0 +1,271 @@
1
+ ---
2
+ name: migrate-to-pui-cli-9
3
+ description: >-
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, semantic-release 25). Use when upgrading @elliemae/pui-cli, migrating from
6
+ .eslintrc.cjs to eslint.config.mjs, release.config.cjs to release.config.mjs, upgrading Husky 8
7
+ hooks, fixing Vitest 4 / coverage-v8 breakages, or adopting shared configs from pui-cli.
8
+ App/library production builds stay on Webpack.
9
+ ---
10
+
11
+ # Migrate to pui-cli 9
12
+
13
+ Upgrades a PUI repo from pui-cli 8 (ESLint 8 + `.eslintrc.cjs`) to pui-cli 9
14
+ (ESLint 10 + `eslint.config.mjs` + Node 24 + pnpm 11). Production bundling remains Webpack;
15
+ Vitest 4 uses Vite only as the test runner when you run `pui-cli vitest`.
16
+
17
+ ## Pre-flight: Toolchain
18
+
19
+ | Requirement | Version |
20
+ | ------------------- | --------------------------------- |
21
+ | Node.js | **24** (see repo `.node-version`) |
22
+ | pnpm | **11** |
23
+ | `@elliemae/pui-cli` | **9.x** (alpha/beta until GA) |
24
+
25
+ ```bash
26
+ fnm use 24 # or nvm/volta equivalent
27
+ corepack enable
28
+ pnpm install
29
+ ```
30
+
31
+ ## Migration steps (phased PRs recommended)
32
+
33
+ ### Phase 1 — Toolchain only
34
+
35
+ 1. Update `.node-version` to `24` if needed.
36
+ 2. Ensure CI Jenkins/docker images use Node 24.
37
+ 3. Upgrade pnpm to 11 (`packageManager` field in root `package.json`).
38
+ 4. Run `pnpm install`, `pnpm test`, `pnpm run build` — fix any Node/pnpm breakages only.
39
+
40
+ ### Phase 2 — Bump pui-cli
41
+
42
+ ```bash
43
+ pnpm add -D @elliemae/pui-cli@9
44
+ ```
45
+
46
+ Re-run install and smoke-test build/test without ESLint changes yet if the bump is large.
47
+
48
+ ### Phase 3 — ESLint 10 flat config
49
+
50
+ **React apps and libraries:**
51
+
52
+ ```js
53
+ // eslint.config.mjs
54
+ import { eslintFlatConfig } from '@elliemae/pui-cli/eslint';
55
+
56
+ export default eslintFlatConfig;
57
+ ```
58
+
59
+ **Node / TS services (non-React):**
60
+
61
+ ```js
62
+ // eslint.config.mjs
63
+ import { eslintFlatBaseConfig } from '@elliemae/pui-cli/eslint';
64
+
65
+ export default eslintFlatBaseConfig;
66
+ ```
67
+
68
+ Then:
69
+
70
+ 1. Delete `.eslintrc.cjs` and `.eslintignore` (ignores are in the shared config).
71
+ 2. Run `pnpm exec pui-cli lint --fix`.
72
+ 3. Run `pnpm exec pui-cli lint` until **zero errors** (warnings may remain).
73
+
74
+ **Strict mode** (only after default config is clean):
75
+
76
+ ```js
77
+ import { eslintFlatConfigStrict } from '@elliemae/pui-cli/eslint';
78
+ export default eslintFlatConfigStrict;
79
+ ```
80
+
81
+ ### Phase 4 — Repo-specific overrides (if needed)
82
+
83
+ Add overrides **after** importing the shared config only when lint debt blocks the migration:
84
+
85
+ ```js
86
+ import { eslintFlatConfig } from '@elliemae/pui-cli/eslint';
87
+
88
+ export default [
89
+ ...eslintFlatConfig,
90
+ {
91
+ rules: {
92
+ // Temporary: legacy had ~100 no-explicit-any warnings via @typescript-eslint v5
93
+ '@typescript-eslint/no-explicit-any': 'warn',
94
+ },
95
+ },
96
+ ];
97
+ ```
98
+
99
+ Remove overrides in a follow-up debt PR. Do not copy Airbnb or legacy `.eslintrc` rules.
100
+
101
+ ### Phase 5 — Husky 9 (if `.husky/` exists)
102
+
103
+ 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.
104
+
105
+ 1. Upgrade and remove deprecated package:
106
+
107
+ ```bash
108
+ pnpm add -D husky@9
109
+ pnpm remove husky-init # if present
110
+ ```
111
+
112
+ 2. Update `package.json` `prepare` script:
113
+
114
+ ```diff
115
+ - "prepare": "[ -n \"$CI\" ] || husky install"
116
+ + "prepare": "[ -n \"$CI\" ] || husky"
117
+ ```
118
+
119
+ 3. Simplify each hook in `.husky/` — remove the shebang and `husky.sh` source. Keep only the command(s):
120
+
121
+ **`.husky/pre-commit`** (typical PUI repo):
122
+
123
+ ```sh
124
+ pnpm -s dlx lint-staged
125
+ ```
126
+
127
+ **`.husky/commit-msg`** (if commitlint is enabled):
128
+
129
+ ```sh
130
+ pnpm exec commitlint --edit $1
131
+ ```
132
+
133
+ ```diff
134
+ - #!/bin/sh
135
+ - . "$(dirname "$0")/_/husky.sh"
136
+ -
137
+ pnpm -s dlx lint-staged
138
+ ```
139
+
140
+ 4. Delete `.husky/.gitignore` if present (Husky 9 regenerates `.husky/_` on install).
141
+
142
+ 5. Run `pnpm prepare`, then verify hooks with a test commit.
143
+
144
+ **Environment variable changes (Husky 9):**
145
+
146
+ | Husky 8 | Husky 9 |
147
+ | ----------------------------------------- | ------------- |
148
+ | `HUSKY_SKIP_HOOKS` / `HUSKY_SKIP_INSTALL` | `HUSKY=0` |
149
+ | `HUSKY_GIT_PARAMS` in commit-msg hooks | `$1`, `$2`, … |
150
+
151
+ Reference hooks: [pui-cli/.husky](https://git.elliemae.io/platform-ui/pui-cli/tree/master/.husky)
152
+
153
+ ### Phase 6 — Stylelint 17 (if CSS / styled-components)
154
+
155
+ 1. Simplify `stylelint.config.cjs` — remove `stylelint-config-styled-components` workarounds.
156
+ 2. Optional ESM: `stylelint.config.mjs` importing `@elliemae/pui-cli/stylelint`.
157
+ 3. Run `pnpm exec pui-cli lint` (CSS pass).
158
+
159
+ See [stylelint-migration.md](https://docs.pui.mortgagetech.q1.ice.com/cli/stylelint-migration) in pui-cli docs.
160
+
161
+ ### Phase 7 — Vitest 4 (if using `pui-cli vitest`)
162
+
163
+ Skip if the repo uses Jest (`pui-cli test`) only.
164
+
165
+ 1. Align devDependencies with pui-cli 9 (Vitest 4 stack):
166
+
167
+ ```bash
168
+ pnpm add -D vitest@4 @vitest/coverage-v8@4 vite@8 @vitejs/plugin-react@6 vite-tsconfig-paths@6
169
+ pnpm remove @vitest/coverage-c8 @types/uuid # when upgrading uuid to 14+
170
+ ```
171
+
172
+ 2. Prefer extending shared config:
173
+
174
+ ```typescript
175
+ import { defineConfig, mergeConfig } from 'vitest/config';
176
+ import { vitestConfig } from '@elliemae/pui-cli/vitest';
177
+
178
+ export default mergeConfig(
179
+ vitestConfig,
180
+ defineConfig({
181
+ test: {
182
+ /* overrides */
183
+ },
184
+ }),
185
+ );
186
+ ```
187
+
188
+ 3. Update custom Vitest 1.x options:
189
+
190
+ | Old | New |
191
+ | ------------------------- | ---------------------------- |
192
+ | `test.deps.optimizer.web` | `test.deps.optimizer.client` |
193
+ | `@vitest/coverage-c8` | `@vitest/coverage-v8` |
194
+
195
+ 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.
196
+
197
+ 5. Smoke-test: `pnpm exec pui-cli vitest --passWithNoTests`
198
+
199
+ ### Phase 8 — semantic-release 25 (libraries that publish to npm)
200
+
201
+ Skip if the repo does not run `semantic-release` (most apps). Libraries with `release.config.cjs` extending `@elliemae/pui-cli/releaseConfig` must migrate — pui-cli 9 exports an ESM shareable config; semantic-release 25 loads ESM `extends` via dynamic `import()`.
202
+
203
+ 1. Upgrade local pins if present:
204
+
205
+ ```bash
206
+ pnpm add -D semantic-release@25 @semantic-release/changelog@6 @semantic-release/exec@7 @semantic-release/git@10
207
+ ```
208
+
209
+ 2. Replace `release.config.cjs` with `release.config.mjs`:
210
+
211
+ ```javascript
212
+ /** @type {import('semantic-release').GlobalConfig} */
213
+ export default {
214
+ extends: '@elliemae/pui-cli/releaseConfig',
215
+ };
216
+ ```
217
+
218
+ 3. Delete `release.config.cjs`.
219
+
220
+ 4. Custom plugins: use relative `.mjs` paths with `export default`, or keep `.cjs` plugins by path.
221
+
222
+ 5. Dry-run: `pnpm exec semantic-release --dry-run`
223
+
224
+ ### Phase 9 — Verify
225
+
226
+ - [ ] `pnpm exec pui-cli lint` — 0 errors
227
+ - [ ] `pnpm exec pui-cli tscheck --files`
228
+ - [ ] `pnpm test` (or `pui-cli vitest` if applicable)
229
+ - [ ] `pnpm run build` (or `pui-cli build`) — Webpack, unchanged
230
+ - [ ] Pre-commit / lint-staged passes (after Husky 9 migration if applicable)
231
+ - [ ] CI green on the target branch
232
+
233
+ ## Common lint fixes after upgrade
234
+
235
+ | Symptom | Fix |
236
+ | ------------------------------------ | ----------------------------------------------------------------------------------- |
237
+ | `import-x/no-unresolved` | Use `import type` for type-only imports |
238
+ | `@typescript-eslint/no-explicit-any` | Type the value or add targeted override (warn) during transition |
239
+ | `@typescript-eslint/no-unused-vars` | Remove or prefix with `_` |
240
+ | Stale `eslint-disable` comments | Remove disables for rules no longer in config |
241
+ | Test/fixture files flagged | Shared config includes `lib/**/tests/**` globs — ensure pui-cli 9.0.0+ |
242
+ | `.d.ts` files | pui-cli turns off `no-explicit-any` for `**/*.d.ts` |
243
+ | Cannot find module `vite` in tscheck | Set `moduleResolution: "bundler"` or extend pui-cli 9 tsconfig |
244
+ | Vitest `optimizer.web` unknown | Rename to `test.deps.optimizer.client` (Vitest 4) |
245
+ | Coverage fails after upgrade | Remove `@vitest/coverage-c8`; use `@vitest/coverage-v8@4` |
246
+ | `release.config.cjs` extends fails | Migrate to `release.config.mjs`; requires semantic-release 22+ (pui-cli 9 ships 25) |
247
+
248
+ 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).
249
+
250
+ ## Install this skill in Cursor
251
+
252
+ From the consumer repo (after `@elliemae/pui-cli` is installed):
253
+
254
+ ```bash
255
+ pnpm exec pui-cli skills install migrate-to-pui-cli-9 --target all
256
+ ```
257
+
258
+ Skills are copied to `.cursor/skills/`, `.claude/skills/`, and `.github/skills/` for Cursor, Claude Code, and GitHub Copilot.
259
+
260
+ ## What NOT to change
261
+
262
+ - Application business logic — migration is tooling/config only
263
+ - Webpack/babel production build config — pui-cli 9 does not migrate apps to Vite for bundling
264
+ - Prettier / commitlint configs unless pui-cli 9 bumps those presets
265
+
266
+ ## Additional resources
267
+
268
+ - [pui-cli 9 migration guide](https://docs.pui.mortgagetech.q1.ice.com/cli/pui-cli-9-migration)
269
+ - [ESLint rules migration guide](https://docs.pui.mortgagetech.q1.ice.com/cli/eslint-rules-migration)
270
+ - [Stylelint migration guide](https://docs.pui.mortgagetech.q1.ice.com/cli/stylelint-migration)
271
+ - Reference one-liner: `pui-react-boilerplate/eslint.config.mjs`
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "lib": ["dom", "dom.iterable", "ES2022"],
4
- "moduleResolution": "node",
4
+ "moduleResolution": "bundler",
5
5
  "target": "ES2022",
6
6
  "module": "ESNext",
7
7
  "allowJs": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elliemae/pui-cli",
3
- "version": "8.62.2",
3
+ "version": "9.0.0-alpha.10",
4
4
  "description": "ICE MT UI Platform CLI",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/cjs/index.cjs",
@@ -11,27 +11,43 @@
11
11
  },
12
12
  "exports": {
13
13
  ".": {
14
+ "types": "./dist/types/lib/index.d.ts",
14
15
  "import": "./dist/esm/index.js",
15
16
  "require": "./dist/cjs/index.cjs"
16
17
  },
17
18
  "./releaseConfig": {
18
- "require": "./dist/cjs/release.config.cjs"
19
+ "import": "./lib/release.config.mjs",
20
+ "default": "./lib/release.config.mjs"
19
21
  },
20
22
  "./storybook": {
21
23
  "require": "./dist/cjs/webpack/webpack.storybook.js"
22
24
  },
23
25
  "./vitest": {
26
+ "types": "./dist/types/lib/testing/vitest.config.d.ts",
24
27
  "import": "./dist/esm/testing/vitest.config.js"
25
28
  },
26
29
  "./server/routes": {
30
+ "types": "./dist/types/lib/server/appRoutes.d.ts",
27
31
  "require": "./dist/cjs/server/appRoutes.js"
28
32
  },
29
33
  "./app.tsconfig.json": "./app.tsconfig.json",
30
- "./library.tsconfig.json": "./library.tsconfig.json"
34
+ "./library.tsconfig.json": "./library.tsconfig.json",
35
+ "./eslint": {
36
+ "import": "./lib/lint-config/eslint/flat/index.mjs",
37
+ "default": "./lib/lint-config/eslint/flat/index.mjs"
38
+ },
39
+ "./stylelint": {
40
+ "import": "./lib/lint-config/stylelint/export.mjs",
41
+ "default": "./lib/lint-config/stylelint/export.mjs"
42
+ }
31
43
  },
32
44
  "files": [
33
45
  "dist",
34
46
  "build",
47
+ "lib/lint-config",
48
+ "lib/release.config.mjs",
49
+ "lib/semantic-release-plugin.mjs",
50
+ "lib/skills",
35
51
  "./app.tsconfig.json",
36
52
  "./library.tsconfig.json"
37
53
  ],
@@ -40,8 +56,8 @@
40
56
  "url": "https://git.elliemae.io/platform-ui/pui-cli.git"
41
57
  },
42
58
  "engines": {
43
- "pnpm": ">=8",
44
- "node": ">=20"
59
+ "pnpm": ">=11",
60
+ "node": ">=24"
45
61
  },
46
62
  "publishConfig": {
47
63
  "access": "public"
@@ -54,34 +70,36 @@
54
70
  "indent": 4
55
71
  },
56
72
  "dependencies": {
57
- "@axe-core/react": "~4.11.2",
58
- "@babel/cli": "~7.28.6",
59
- "@babel/core": "~7.29.0",
60
- "@babel/eslint-parser": "~7.28.6",
61
- "@babel/node": "~7.29.0",
73
+ "@axe-core/react": "~4.11.3",
74
+ "@babel/cli": "~7.29.7",
75
+ "@babel/core": "~7.29.7",
76
+ "@babel/eslint-parser": "~7.29.7",
77
+ "@babel/node": "~7.29.7",
62
78
  "@babel/plugin-proposal-class-properties": "~7.18.6",
63
- "@babel/plugin-proposal-export-default-from": "~7.27.1",
79
+ "@babel/plugin-proposal-export-default-from": "~7.29.7",
64
80
  "@babel/plugin-syntax-dynamic-import": "~7.8.3",
65
- "@babel/plugin-syntax-import-assertions": "~7.28.6",
66
- "@babel/plugin-transform-modules-commonjs": "~7.28.6",
67
- "@babel/plugin-transform-react-constant-elements": "~7.27.1",
68
- "@babel/plugin-transform-react-inline-elements": "~7.27.1",
69
- "@babel/plugin-transform-react-jsx-source": "~7.27.1",
70
- "@babel/plugin-transform-runtime": "~7.29.0",
71
- "@babel/preset-env": "~7.29.2",
72
- "@babel/preset-react": "~7.28.5",
73
- "@babel/preset-typescript": "~7.28.5",
74
- "@babel/runtime": "~7.29.2",
75
- "@commitlint/cli": "~17.8.1",
76
- "@commitlint/config-conventional": "~17.8.1",
77
- "@elliemae/browserslist-config-elliemae-latest-browsers": "~1.14.4",
81
+ "@babel/plugin-syntax-import-assertions": "~7.29.7",
82
+ "@babel/plugin-transform-modules-commonjs": "~7.29.7",
83
+ "@babel/plugin-transform-react-constant-elements": "~7.29.7",
84
+ "@babel/plugin-transform-react-inline-elements": "~7.29.7",
85
+ "@babel/plugin-transform-react-jsx-source": "~7.29.7",
86
+ "@babel/plugin-transform-runtime": "~7.29.7",
87
+ "@babel/preset-env": "~7.29.7",
88
+ "@babel/preset-react": "~7.29.7",
89
+ "@babel/preset-typescript": "~7.29.7",
90
+ "@babel/runtime": "~7.29.7",
91
+ "@commitlint/cli": "21.0.1",
92
+ "@commitlint/config-conventional": "21.0.1",
93
+ "@elliemae/browserslist-config-elliemae-latest-browsers": "~1.15.0",
94
+ "@eslint/compat": "~2.1.0",
95
+ "@eslint/js": "~10.0.1",
78
96
  "@faker-js/faker": "~7.6.0",
79
97
  "@nrwl/cli": "~15.9.7",
80
98
  "@nrwl/tao": "~15.9.7",
81
99
  "@nrwl/workspace": "~15.9.7",
82
100
  "@pmmmwh/react-refresh-webpack-plugin": "~0.6.2",
83
101
  "@semantic-release/changelog": "~6.0.3",
84
- "@semantic-release/exec": "~6.0.3",
102
+ "@semantic-release/exec": "~7.1.0",
85
103
  "@semantic-release/git": "~10.0.1",
86
104
  "@storybook/addon-a11y": "~6.5.16",
87
105
  "@storybook/addon-essentials": "~6.5.16",
@@ -94,10 +112,9 @@
94
112
  "@storybook/manager-webpack5": "~6.5.16",
95
113
  "@storybook/react": "~6.5.16",
96
114
  "@storybook/theming": "~6.5.16",
97
- "postcss-styled-syntax": "~0.7.1",
98
115
  "@svgr/webpack": "~7.0.0",
99
116
  "@swc/cli": "~0.8.1",
100
- "@swc/core": "1.15.21",
117
+ "@swc/core": "1.15.40",
101
118
  "@swc/jest": "~0.2.39",
102
119
  "@testing-library/jest-dom": "~5.17.0",
103
120
  "@testing-library/react": "~14.3.1",
@@ -108,34 +125,35 @@
108
125
  "@types/cors": "~2.8.19",
109
126
  "@types/dotenv-webpack": "~7.0.8",
110
127
  "@types/duplicate-package-checker-webpack-plugin": "~2.1.5",
128
+ "@types/express": "~4.17.25",
111
129
  "@types/express-serve-static-core": "~4.19.8",
112
130
  "@types/ip": "~1.1.3",
113
131
  "@types/jest": "~29.5.14",
114
132
  "@types/jest-axe": "~3.5.9",
133
+ "@types/lodash": "~4.17.24",
134
+ "@types/minimist": "~1.2.5",
115
135
  "@types/moment-locales-webpack-plugin": "~1.2.6",
116
- "@types/node": "~18.19.130",
136
+ "@types/node": "~24.12.4",
117
137
  "@types/normalize-path": "~3.0.2",
118
138
  "@types/postcss-preset-env": "~7.7.0",
119
139
  "@types/rimraf": "~3.0.2",
120
140
  "@types/speed-measure-webpack-plugin": "~1.3.6",
121
141
  "@types/supertest": "~2.0.16",
122
142
  "@types/testing-library__jest-dom": "~5.14.9",
123
- "@types/uuid": "~9.0.8",
124
143
  "@types/webpack-bundle-analyzer": "~4.7.0",
125
- "@typescript-eslint/eslint-plugin": "~5.62.0",
126
- "@typescript-eslint/parser": "~5.62.0",
127
- "@vitejs/plugin-react": "~4.7.0",
128
- "@vitest/coverage-c8": "~0.33.0",
129
- "@vitest/coverage-v8": "~0.34.6",
144
+ "@types/ws": "~8.18.1",
145
+ "@types/yargs": "~17.0.35",
146
+ "@vitejs/plugin-react": "~6.0.2",
147
+ "@vitest/coverage-v8": "~4.1.8",
130
148
  "autoprefixer": "~10.5.0",
131
- "axe-core": "~4.11.3",
149
+ "axe-core": "~4.12.0",
132
150
  "babel-plugin-date-fns": "~2.0.0",
133
151
  "babel-plugin-dynamic-import-node": "~2.3.3",
134
152
  "babel-plugin-import-remove-resource-query": "~1.0.0",
135
153
  "babel-plugin-lodash": "~3.3.4",
136
154
  "babel-plugin-module-resolver": "~5.0.3",
137
155
  "babel-plugin-source-map-support": "~2.2.0",
138
- "babel-plugin-styled-components": "~2.1.4",
156
+ "babel-plugin-styled-components": "~2.3.0",
139
157
  "babel-plugin-transform-import-meta": "~2.3.3",
140
158
  "babel-plugin-transform-react-remove-prop-types": "~0.4.24",
141
159
  "babel-plugin-transform-remove-console": "~6.9.4",
@@ -150,57 +168,47 @@
150
168
  "compression-webpack-plugin": "~10.0.0",
151
169
  "copy-webpack-plugin": "~11.0.0",
152
170
  "cors": "~2.8.6",
153
- "cross-env": "~7.0.3",
171
+ "cross-env": "~10.1.0",
154
172
  "css-loader": "~6.11.0",
155
173
  "css-minimizer-webpack-plugin": "~5.0.1",
156
174
  "depcheck": "~1.4.7",
157
175
  "docdash": "~2.0.2",
158
- "dotenv": "~16.6.1",
176
+ "dotenv": "~17.4.2",
159
177
  "dotenv-webpack": "~8.1.1",
160
178
  "duplicate-package-checker-webpack-plugin": "~3.0.0",
161
- "enhanced-resolve": "~5.21.0",
179
+ "enhanced-resolve": "~5.22.1",
162
180
  "esbuild": "~0.28.0",
163
181
  "esbuild-loader": "~3.2.0",
164
182
  "esbuild-plugin-svgr": "~1.1.0",
165
- "eslint": "~8.57.1",
166
- "eslint-config-airbnb": "~19.0.4",
167
- "eslint-config-airbnb-base": "~15.0.0",
168
- "eslint-config-airbnb-typescript": "~17.1.0",
169
- "eslint-config-prettier": "~8.10.2",
170
- "eslint-config-react-app": "~7.0.1",
171
- "eslint-import-resolver-babel-module": "~5.3.2",
172
- "eslint-import-resolver-typescript": "~3.10.1",
173
- "eslint-import-resolver-webpack": "~0.13.11",
174
- "eslint-plugin-compat": "~4.2.0",
175
- "eslint-plugin-eslint-comments": "~3.2.0",
176
- "eslint-plugin-import": "~2.32.0",
177
- "eslint-plugin-jest": "~27.9.0",
178
- "eslint-plugin-jsdoc": "~43.2.0",
183
+ "eslint": "~10.4.1",
184
+ "eslint-config-prettier": "~10.1.8",
185
+ "eslint-import-resolver-typescript": "~4.4.5",
186
+ "eslint-plugin-import-x": "~4.16.2",
187
+ "eslint-plugin-jest": "~29.15.2",
179
188
  "eslint-plugin-jsx-a11y": "~6.10.2",
180
- "eslint-plugin-mdx": "~2.3.4",
181
- "eslint-plugin-prettier": "~4.2.5",
189
+ "eslint-plugin-mdx": "~3.8.1",
182
190
  "eslint-plugin-react": "~7.37.5",
183
- "eslint-plugin-react-hooks": "~4.6.2",
191
+ "eslint-plugin-react-hooks": "~7.1.1",
184
192
  "eslint-plugin-redux-saga": "~1.3.2",
185
193
  "eslint-plugin-storybook": "~0.12.0",
186
- "eslint-plugin-testing-library": "~5.11.1",
187
- "eslint-plugin-wdio": "~8.37.0",
188
- "execa": "~7.2.0",
189
- "express": "~4.22.1",
194
+ "eslint-plugin-testing-library": "~7.16.2",
195
+ "eslint-plugin-wdio": "~9.27.2",
196
+ "execa": "~9.6.1",
197
+ "express": "~4.22.2",
190
198
  "express-static-gzip": "~2.2.0",
191
199
  "fast-glob": "~3.3.3",
192
- "favicons": "~7.2.0",
200
+ "favicons": "~7.3.0",
193
201
  "favicons-webpack-plugin": "~6.0.1",
194
- "find-up": "~6.3.0",
195
- "find-up-cli": "~5.0.0",
196
- "glob": "~11.1.0",
202
+ "find-up": "~8.0.0",
203
+ "find-up-cli": "~6.0.0",
204
+ "glob": "~13.0.6",
205
+ "globals": "~17.6.0",
197
206
  "happy-dom": "~12.10.3",
198
- "helmet": "~8.1.0",
207
+ "helmet": "~8.2.0",
199
208
  "html-loader": "~4.2.0",
200
209
  "html-webpack-plugin": "~5.6.7",
201
210
  "http-server": "~14.1.1",
202
- "husky": "~8.0.3",
203
- "husky-init": "~8.0.0",
211
+ "husky": "~9.1.7",
204
212
  "imports-loader": "~4.0.1",
205
213
  "ip": "~1.1.9",
206
214
  "jest-axe": "~7.0.1",
@@ -212,15 +220,16 @@
212
220
  "jscodeshift": "~0.16.1",
213
221
  "jsdoc": "~4.0.5",
214
222
  "lerna": "~6.6.2",
215
- "lint-staged": "~13.3.0",
223
+ "lint-staged": "~17.0.7",
224
+ "lodash": "~4.18.1",
216
225
  "mini-css-extract-plugin": "~2.10.2",
217
226
  "minimist": "~1.2.8",
218
227
  "moment": "~2.30.1",
219
228
  "moment-locales-webpack-plugin": "~1.2.0",
220
229
  "msw": "~1.3.5",
221
- "node-gyp": "~9.4.1",
230
+ "node-gyp": "~12.3.0",
222
231
  "node-plop": "~0.32.3",
223
- "nodemon": "~2.0.22",
232
+ "nodemon": "~3.1.14",
224
233
  "normalize-path": "~3.0.0",
225
234
  "npm-check-updates": "~17.1.18",
226
235
  "npm-run-all": "~4.1.5",
@@ -228,11 +237,12 @@
228
237
  "pino-http": "~8.6.1",
229
238
  "pino-pretty": "~10.3.1",
230
239
  "plop": "~3.1.2",
231
- "postcss": "~8.5.12",
240
+ "postcss": "~8.5.15",
232
241
  "postcss-html": "~1.8.1",
233
242
  "postcss-loader": "~7.3.4",
234
243
  "postcss-preset-env": "9.6.0",
235
- "prettier": "~2.8.8",
244
+ "postcss-styled-syntax": "~0.7.1",
245
+ "prettier": "~3.8.3",
236
246
  "prisma": "~4.16.2",
237
247
  "pug": "~3.0.4",
238
248
  "pug-loader": "~2.4.0",
@@ -240,51 +250,55 @@
240
250
  "react-docgen": "~5.4.3",
241
251
  "react-refresh": "~0.18.0",
242
252
  "react-test-renderer": "~18.3.1",
253
+ "regenerator-runtime": "~0.14.1",
243
254
  "resize-observer-polyfill": "~1.5.1",
244
255
  "resolve-typescript-plugin": "~2.0.1",
245
256
  "rimraf": "5.0.10",
246
- "semantic-release": "~21.1.2",
257
+ "semantic-release": "~25.0.3",
247
258
  "slackify-markdown": "~4.5.0",
248
259
  "speed-measure-webpack-plugin": "~1.6.0",
249
260
  "storybook-addon-turbo-build": "~1.1.0",
250
261
  "storybook-react-router": "~1.0.8",
251
262
  "style-loader": "~3.3.4",
252
- "stylelint": "~15.11.0",
253
- "stylelint-config-recommended": "~12.0.0",
254
- "stylelint-config-styled-components": "~0.1.1",
263
+ "stylelint": "~17.12.0",
264
+ "stylelint-config-recommended": "~18.0.0",
255
265
  "supertest": "~6.3.4",
256
266
  "swc-loader": "~0.2.7",
257
267
  "ts-node": "~10.9.2",
258
- "tsc-alias": "~1.8.16",
268
+ "tsc-alias": "~1.8.17",
259
269
  "tsconfig-paths-webpack-plugin": "~3.5.2",
260
- "tsx": "~3.14.0",
270
+ "tsx": "~4.22.4",
261
271
  "typedoc": "~0.28.19",
262
272
  "typescript": "5.9.3",
263
- "update-notifier": "~6.0.2",
273
+ "typescript-eslint": "~8.60.1",
274
+ "update-notifier": "~7.3.1",
264
275
  "url-loader": "~4.1.1",
265
- "uuid": "~9.0.1",
266
- "vite": "~5.4.21",
267
- "vite-tsconfig-paths": "~4.3.2",
268
- "vitest": "~1.6.1",
269
- "webpack": "~5.106.2",
276
+ "uuid": "~14.0.0",
277
+ "vite": "~8.0.16",
278
+ "vite-tsconfig-paths": "~6.1.1",
279
+ "vitest": "~4.1.8",
280
+ "webpack": "~5.107.2",
270
281
  "webpack-bundle-analyzer": "~4.10.2",
271
282
  "webpack-cli": "~5.1.4",
272
- "webpack-dev-server": "~5.2.3",
283
+ "webpack-dev-server": "~5.2.4",
273
284
  "webpack-manifest-plugin": "~5.0.1",
274
285
  "webpack-merge": "~5.10.0",
275
286
  "whatwg-fetch": "~3.6.20",
276
287
  "workbox-webpack-plugin": "~6.6.1",
277
- "ws": "~8.20.0",
278
- "yargs": "~17.7.2"
288
+ "ws": "~8.21.0",
289
+ "yargs": "~18.0.0"
279
290
  },
280
291
  "devDependencies": {
281
- "@elliemae/pui-doc-gen": "~3.7.2",
292
+ "@docusaurus/types": "~3.10.1",
293
+ "@elliemae/pui-doc-gen": "~3.8.0",
294
+ "eslint-plugin-prettier": "~5.5.6",
282
295
  "react": "~18.3.1",
283
296
  "react-dom": "~18.3.1",
284
297
  "redux": "~4.2.1",
285
- "redux-saga": "~1.4.2",
298
+ "redux-saga": "~1.5.0",
286
299
  "styled-components": "~5.3.11"
287
300
  },
301
+ "type": "module",
288
302
  "scripts": {
289
303
  "build": "tsx ./lib/cli.ts pack -p -t node",
290
304
  "build:dev": "tsx ./lib/cli.ts pack -t node",