create-packer 1.46.4 → 1.47.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.
Files changed (290) hide show
  1. package/package.json +1 -1
  2. package/template/cli/package.json +53 -53
  3. package/template/cli/scripts/pub.js +39 -39
  4. package/template/cli/src/createTemp.ts +58 -58
  5. package/template/docusaurus/src/components/HomepageFeatures/index.tsx +70 -70
  6. package/template/docusaurus/src/components/HomepageFeatures/styles.module.css +11 -11
  7. package/template/docusaurus/src/css/custom.css +30 -30
  8. package/template/docusaurus/src/pages/index.module.css +23 -23
  9. package/template/docusaurus/src/pages/index.tsx +40 -40
  10. package/template/electron-react/.vscode/extensions.json +7 -7
  11. package/template/electron-react/configs/createChunks.ts +26 -26
  12. package/template/electron-react/configs/rsbuild.main.config.ts +54 -54
  13. package/template/electron-react/configs/rsbuild.preload.config.ts +54 -54
  14. package/template/electron-react/configs/rsbuild.renderer.config.ts +73 -73
  15. package/template/electron-react/env.d.ts +12 -12
  16. package/template/electron-react/eslint.config.mjs +108 -108
  17. package/template/electron-react/package.json +7 -7
  18. package/template/electron-react/pnpm-lock.yaml +10158 -10158
  19. package/template/electron-react/postcss.config.cjs +8 -8
  20. package/template/electron-react/renderer/domain/components/app-context.tsx +31 -31
  21. package/template/electron-react/renderer/domain/components/app.tsx +25 -25
  22. package/template/electron-react/renderer/domain/components/index.ts +1 -1
  23. package/template/electron-react/renderer/domain/models/app.ts +7 -7
  24. package/template/electron-react/renderer/domain/router/components/index.ts +2 -2
  25. package/template/electron-react/renderer/domain/router/components/route-layout.tsx +19 -19
  26. package/template/electron-react/renderer/domain/router/components/sub-route-outlet.tsx +22 -22
  27. package/template/electron-react/renderer/domain/router/home/ids.ts +3 -3
  28. package/template/electron-react/renderer/domain/router/home/index.ts +2 -2
  29. package/template/electron-react/renderer/domain/router/home/routes.tsx +13 -13
  30. package/template/electron-react/renderer/domain/router/ids.ts +6 -6
  31. package/template/electron-react/renderer/domain/router/index.ts +4 -4
  32. package/template/electron-react/renderer/domain/router/router.tsx +28 -28
  33. package/template/electron-react/renderer/domain/router/router.types.ts +3 -3
  34. package/template/electron-react/renderer/main.tsx +4 -4
  35. package/template/electron-react/renderer/pages/home/index.ts +1 -1
  36. package/template/electron-react/renderer/pages/index.tsx +18 -18
  37. package/template/electron-react/renderer/pages/not-found.tsx +3 -3
  38. package/template/electron-react/renderer/scripts/createChunks.ts +26 -26
  39. package/template/electron-react/renderer/scripts/index.ts +1 -1
  40. package/template/electron-react/renderer/shared/components/componentInstance.tsx +80 -80
  41. package/template/electron-react/renderer/shared/components/index.ts +1 -1
  42. package/template/electron-react/renderer/shared/hooks/defineRouter/defineRouter.types.ts +33 -33
  43. package/template/electron-react/renderer/shared/hooks/defineRouter/deineRouter.tsx +161 -161
  44. package/template/electron-react/renderer/shared/hooks/defineRouter/index.ts +2 -2
  45. package/template/electron-react/renderer/shared/hooks/index.ts +6 -6
  46. package/template/electron-react/renderer/shared/hooks/useInterval.ts +26 -26
  47. package/template/electron-react/renderer/shared/hooks/useLoadingAction.ts +27 -27
  48. package/template/electron-react/renderer/shared/hooks/useLowPriorityState.ts +26 -26
  49. package/template/electron-react/renderer/shared/hooks/useSyncState.ts +15 -15
  50. package/template/electron-react/renderer/shared/hooks/useVisible.ts +27 -27
  51. package/template/electron-react/renderer/shared/service/api.ts +1 -1
  52. package/template/electron-react/renderer/shared/service/home.ts +9 -9
  53. package/template/electron-react/renderer/shared/service/index.ts +3 -3
  54. package/template/electron-react/renderer/shared/service/request.ts +5 -5
  55. package/template/electron-react/tsconfig.json +33 -33
  56. package/template/electron-react/tsconfig.node.json +10 -10
  57. package/template/electron-vue/.vscode/extensions.json +9 -9
  58. package/template/electron-vue/configs/createChunks.ts +26 -26
  59. package/template/electron-vue/configs/rsbuild.main.config.ts +54 -54
  60. package/template/electron-vue/configs/rsbuild.preload.config.ts +54 -54
  61. package/template/electron-vue/configs/rsbuild.renderer.config.ts +64 -64
  62. package/template/electron-vue/env.d.ts +18 -18
  63. package/template/electron-vue/eslint.config.mjs +115 -115
  64. package/template/electron-vue/package.json +6 -6
  65. package/template/electron-vue/pnpm-lock.yaml +10158 -10158
  66. package/template/electron-vue/postcss.config.cjs +9 -9
  67. package/template/electron-vue/renderer/domain/components/app.vue +18 -18
  68. package/template/electron-vue/renderer/domain/components/createComponentInstance.ts +43 -43
  69. package/template/electron-vue/renderer/domain/components/index.ts +2 -2
  70. package/template/electron-vue/renderer/domain/router/home/index.ts +2 -2
  71. package/template/electron-vue/renderer/domain/router/home/names.ts +3 -3
  72. package/template/electron-vue/renderer/domain/router/home/routes.ts +8 -8
  73. package/template/electron-vue/renderer/domain/router/index.ts +26 -26
  74. package/template/electron-vue/renderer/domain/router/names.ts +5 -5
  75. package/template/electron-vue/renderer/main.css +4 -4
  76. package/template/electron-vue/renderer/main.ts +7 -7
  77. package/template/electron-vue/renderer/pages/home/view.vue +12 -12
  78. package/template/electron-vue/renderer/pages/index.ts +1 -1
  79. package/template/electron-vue/renderer/pages/index.vue +3 -3
  80. package/template/electron-vue/renderer/pages/not-found.vue +3 -3
  81. package/template/electron-vue/renderer/shared/hooks/index.ts +2 -2
  82. package/template/electron-vue/renderer/shared/hooks/useList.ts +86 -86
  83. package/template/electron-vue/renderer/shared/hooks/useVisible.ts +27 -27
  84. package/template/electron-vue/renderer/shared/service/api.ts +1 -1
  85. package/template/electron-vue/renderer/shared/service/home.ts +7 -7
  86. package/template/electron-vue/renderer/shared/service/index.ts +3 -3
  87. package/template/electron-vue/renderer/shared/service/request.ts +5 -5
  88. package/template/electron-vue/tsconfig.json +25 -25
  89. package/template/electron-vue/tsconfig.node.json +10 -10
  90. package/template/lib/workspace/.storybook/main.ts +16 -16
  91. package/template/lib/workspace/.storybook/preview.tsx +17 -17
  92. package/template/lib/workspace/eslint.config.mjs +119 -119
  93. package/template/lib/workspace/packages/react/src/button/button.stories.ts +44 -44
  94. package/template/web-app/react-rsbuild/.vscode/extensions.json +7 -7
  95. package/template/web-app/react-rsbuild/.vscode/settings.json +4 -4
  96. package/template/web-app/react-rsbuild/domain/components/app-context.tsx +31 -31
  97. package/template/web-app/react-rsbuild/domain/components/app.tsx +25 -25
  98. package/template/web-app/react-rsbuild/domain/components/index.ts +1 -1
  99. package/template/web-app/react-rsbuild/domain/models/app.ts +7 -7
  100. package/template/web-app/react-rsbuild/domain/router/components/index.ts +2 -2
  101. package/template/web-app/react-rsbuild/domain/router/components/route-layout.tsx +19 -19
  102. package/template/web-app/react-rsbuild/domain/router/components/sub-route-outlet.tsx +22 -22
  103. package/template/web-app/react-rsbuild/domain/router/home/ids.ts +3 -3
  104. package/template/web-app/react-rsbuild/domain/router/home/index.ts +2 -2
  105. package/template/web-app/react-rsbuild/domain/router/home/routes.tsx +13 -13
  106. package/template/web-app/react-rsbuild/domain/router/ids.ts +6 -6
  107. package/template/web-app/react-rsbuild/domain/router/index.ts +4 -4
  108. package/template/web-app/react-rsbuild/domain/router/router.tsx +28 -28
  109. package/template/web-app/react-rsbuild/domain/router/router.types.ts +3 -3
  110. package/template/web-app/react-rsbuild/eslint.config.js +107 -107
  111. package/template/web-app/react-rsbuild/main.tsx +4 -6
  112. package/template/web-app/react-rsbuild/package.json +7 -7
  113. package/template/web-app/react-rsbuild/pages/home/index.ts +1 -1
  114. package/template/web-app/react-rsbuild/pages/index.tsx +18 -18
  115. package/template/web-app/react-rsbuild/pages/not-found.tsx +3 -3
  116. package/template/web-app/react-rsbuild/postcss.config.cjs +8 -8
  117. package/template/web-app/react-rsbuild/rsbuild.config.ts +91 -91
  118. package/template/web-app/react-rsbuild/scripts/createChunks.ts +26 -26
  119. package/template/web-app/react-rsbuild/scripts/index.ts +1 -1
  120. package/template/web-app/react-rsbuild/shared/components/componentInstance.tsx +80 -80
  121. package/template/web-app/react-rsbuild/shared/components/index.ts +1 -1
  122. package/template/web-app/react-rsbuild/shared/hooks/defineRouter/defineRouter.types.ts +33 -33
  123. package/template/web-app/react-rsbuild/shared/hooks/defineRouter/deineRouter.tsx +161 -161
  124. package/template/web-app/react-rsbuild/shared/hooks/defineRouter/index.ts +2 -2
  125. package/template/web-app/react-rsbuild/shared/hooks/index.ts +7 -6
  126. package/template/web-app/react-rsbuild/shared/hooks/useDebounceFn.ts +37 -0
  127. package/template/web-app/react-rsbuild/shared/hooks/useInterval.ts +26 -26
  128. package/template/web-app/react-rsbuild/shared/hooks/useLazyRender.ts +30 -0
  129. package/template/web-app/react-rsbuild/shared/hooks/useLowPriorityState.ts +26 -26
  130. package/template/web-app/react-rsbuild/shared/hooks/useSyncState.ts +15 -15
  131. package/template/web-app/react-rsbuild/shared/hooks/useVisible.ts +27 -27
  132. package/template/web-app/react-rsbuild/shared/service/api.ts +1 -1
  133. package/template/web-app/react-rsbuild/shared/service/home.ts +9 -9
  134. package/template/web-app/react-rsbuild/shared/service/index.ts +3 -3
  135. package/template/web-app/react-rsbuild/shared/service/request.ts +5 -5
  136. package/template/web-app/react-rsbuild/shared/styles/theme.ts +0 -10
  137. package/template/web-app/react-rsbuild/tsconfig.json +33 -33
  138. package/template/web-app/react-rsbuild/tsconfig.node.json +10 -10
  139. package/template/web-app/react-vite/.gitignore +3 -3
  140. package/template/web-app/react-vite/.vscode/extensions.json +7 -7
  141. package/template/web-app/react-vite/.vscode/settings.json +4 -4
  142. package/template/web-app/react-vite/domain/components/index.ts +1 -1
  143. package/template/web-app/react-vite/domain/models/app.ts +7 -7
  144. package/template/web-app/react-vite/domain/router/components/route-layout.tsx +19 -19
  145. package/template/web-app/react-vite/domain/router/components/sub-route-outlet.tsx +22 -22
  146. package/template/web-app/react-vite/domain/router/home/ids.ts +3 -3
  147. package/template/web-app/react-vite/domain/router/home/index.ts +2 -2
  148. package/template/web-app/react-vite/domain/router/home/routes.tsx +13 -13
  149. package/template/web-app/react-vite/domain/router/ids.ts +6 -6
  150. package/template/web-app/react-vite/domain/router/router.tsx +28 -28
  151. package/template/web-app/react-vite/domain/router/router.types.ts +3 -3
  152. package/template/web-app/react-vite/eslint.config.js +114 -114
  153. package/template/web-app/react-vite/main.tsx +1 -3
  154. package/template/web-app/react-vite/mockUtils.ts +6 -6
  155. package/template/web-app/react-vite/package.json +5 -5
  156. package/template/web-app/react-vite/pages/index.tsx +18 -18
  157. package/template/web-app/react-vite/pages/not-found.tsx +3 -3
  158. package/template/web-app/react-vite/postcss.config.cjs +8 -8
  159. package/template/web-app/react-vite/scripts/createChunks.ts +27 -27
  160. package/template/web-app/react-vite/scripts/index.ts +1 -1
  161. package/template/web-app/react-vite/shared/hooks/defineRouter/defineRouter.types.ts +33 -33
  162. package/template/web-app/react-vite/shared/hooks/defineRouter/deineRouter.tsx +161 -161
  163. package/template/web-app/react-vite/shared/hooks/defineRouter/index.ts +2 -2
  164. package/template/web-app/react-vite/shared/hooks/index.ts +7 -6
  165. package/template/web-app/react-vite/shared/hooks/useDebounceFn.ts +37 -0
  166. package/template/web-app/react-vite/shared/hooks/useInterval.ts +26 -26
  167. package/template/web-app/react-vite/shared/hooks/useLazyRender.ts +30 -0
  168. package/template/web-app/react-vite/shared/hooks/useLowPriorityState.ts +26 -26
  169. package/template/web-app/react-vite/shared/hooks/useSyncState.ts +15 -15
  170. package/template/web-app/react-vite/shared/hooks/useVisible.ts +27 -27
  171. package/template/web-app/react-vite/shared/service/api.ts +1 -1
  172. package/template/web-app/react-vite/shared/service/home.ts +9 -9
  173. package/template/web-app/react-vite/shared/service/index.ts +3 -3
  174. package/template/web-app/react-vite/shared/service/request.ts +5 -5
  175. package/template/web-app/react-vite/shared/styles/theme.ts +0 -10
  176. package/template/web-app/react-vite/tsconfig.json +33 -33
  177. package/template/web-app/react-vite/tsconfig.node.json +10 -10
  178. package/template/web-app/vue/.stylelintrc +2 -2
  179. package/template/web-app/vue/.vscode/extensions.json +9 -9
  180. package/template/web-app/vue/domain/components/app.vue +18 -18
  181. package/template/web-app/vue/domain/components/createComponentInstance.ts +43 -43
  182. package/template/web-app/vue/domain/components/index.ts +2 -2
  183. package/template/web-app/vue/domain/router/home/index.ts +2 -2
  184. package/template/web-app/vue/domain/router/home/names.ts +3 -3
  185. package/template/web-app/vue/domain/router/home/routes.ts +8 -8
  186. package/template/web-app/vue/domain/router/index.ts +26 -26
  187. package/template/web-app/vue/domain/router/names.ts +5 -5
  188. package/template/web-app/vue/eslint.config.js +123 -123
  189. package/template/web-app/vue/main.css +4 -4
  190. package/template/web-app/vue/main.ts +7 -7
  191. package/template/web-app/vue/mockUtils.ts +6 -6
  192. package/template/web-app/vue/package.json +71 -71
  193. package/template/web-app/vue/pages/home/view.vue +18 -16
  194. package/template/web-app/vue/pages/index.ts +1 -1
  195. package/template/web-app/vue/pages/index.vue +3 -3
  196. package/template/web-app/vue/pages/not-found.vue +3 -3
  197. package/template/web-app/vue/postcss.config.cjs +8 -8
  198. package/template/web-app/vue/scripts/createChunks.ts +27 -27
  199. package/template/web-app/vue/scripts/index.ts +1 -1
  200. package/template/web-app/vue/shared/hooks/index.ts +2 -2
  201. package/template/web-app/vue/shared/hooks/useList.ts +86 -86
  202. package/template/web-app/vue/shared/hooks/useVisible.ts +27 -27
  203. package/template/web-app/vue/shared/service/api.ts +1 -1
  204. package/template/web-app/vue/shared/service/home.ts +7 -7
  205. package/template/web-app/vue/shared/service/index.ts +3 -3
  206. package/template/web-app/vue/shared/service/request.ts +5 -5
  207. package/template/web-app/vue/tsconfig.json +25 -25
  208. package/template/web-app/vue/tsconfig.node.json +10 -10
  209. package/template/web-app/vue/vite-env.d.ts +18 -18
  210. package/template/web-app/vue/vite.config.ts +68 -68
  211. package/template/web-app/vue-rsbuild/.stylelintrc +2 -2
  212. package/template/web-app/vue-rsbuild/.vscode/extensions.json +9 -9
  213. package/template/web-app/vue-rsbuild/domain/components/app.vue +18 -18
  214. package/template/web-app/vue-rsbuild/domain/components/createComponentInstance.ts +43 -43
  215. package/template/web-app/vue-rsbuild/domain/components/index.ts +2 -2
  216. package/template/web-app/vue-rsbuild/domain/router/home/index.ts +2 -2
  217. package/template/web-app/vue-rsbuild/domain/router/home/names.ts +3 -3
  218. package/template/web-app/vue-rsbuild/domain/router/home/routes.ts +8 -8
  219. package/template/web-app/vue-rsbuild/domain/router/index.ts +26 -26
  220. package/template/web-app/vue-rsbuild/domain/router/names.ts +5 -5
  221. package/template/web-app/vue-rsbuild/env.d.ts +18 -18
  222. package/template/web-app/vue-rsbuild/eslint.config.js +114 -114
  223. package/template/web-app/vue-rsbuild/main.css +4 -4
  224. package/template/web-app/vue-rsbuild/main.ts +7 -7
  225. package/template/web-app/vue-rsbuild/package.json +6 -6
  226. package/template/web-app/vue-rsbuild/pages/home/view.vue +18 -16
  227. package/template/web-app/vue-rsbuild/pages/index.ts +1 -1
  228. package/template/web-app/vue-rsbuild/pages/index.vue +3 -3
  229. package/template/web-app/vue-rsbuild/pages/not-found.vue +3 -3
  230. package/template/web-app/vue-rsbuild/postcss.config.cjs +9 -9
  231. package/template/web-app/vue-rsbuild/rsbuild.config.ts +77 -77
  232. package/template/web-app/vue-rsbuild/scripts/createChunks.ts +26 -26
  233. package/template/web-app/vue-rsbuild/scripts/index.ts +1 -1
  234. package/template/web-app/vue-rsbuild/shared/hooks/index.ts +2 -2
  235. package/template/web-app/vue-rsbuild/shared/hooks/useList.ts +86 -86
  236. package/template/web-app/vue-rsbuild/shared/hooks/useVisible.ts +27 -27
  237. package/template/web-app/vue-rsbuild/shared/service/api.ts +1 -1
  238. package/template/web-app/vue-rsbuild/shared/service/home.ts +7 -7
  239. package/template/web-app/vue-rsbuild/shared/service/index.ts +3 -3
  240. package/template/web-app/vue-rsbuild/shared/service/request.ts +5 -5
  241. package/template/web-app/vue-rsbuild/tsconfig.json +25 -25
  242. package/template/web-app/vue-rsbuild/tsconfig.node.json +10 -10
  243. package/template/web-extension/.vscode/extensions.json +7 -7
  244. package/template/web-extension/.vscode/settings.json +4 -4
  245. package/template/web-extension/.wxt/eslint-auto-imports.mjs +56 -56
  246. package/template/web-extension/.wxt/eslintrc-auto-import.json +21 -21
  247. package/template/web-extension/.wxt/tsconfig.json +27 -27
  248. package/template/web-extension/.wxt/types/globals.d.ts +15 -15
  249. package/template/web-extension/.wxt/types/i18n.d.ts +81 -81
  250. package/template/web-extension/.wxt/types/imports-module.d.ts +20 -20
  251. package/template/web-extension/.wxt/types/imports.d.ts +50 -50
  252. package/template/web-extension/.wxt/types/paths.d.ts +17 -17
  253. package/template/web-extension/.wxt/wxt.d.ts +7 -7
  254. package/template/web-extension/entrypoints/background/index.ts +7 -7
  255. package/template/web-extension/entrypoints/content/domain/app/index.ts +1 -1
  256. package/template/web-extension/entrypoints/content/domain/app/tools/index.ts +1 -1
  257. package/template/web-extension/entrypoints/content/domain/app/tools/insertApp.tsx +58 -58
  258. package/template/web-extension/entrypoints/content/modules/common/index.ts +2 -2
  259. package/template/web-extension/entrypoints/content/modules/common/insert.tsx +9 -9
  260. package/template/web-extension/entrypoints/content/modules/index.ts +1 -1
  261. package/template/web-extension/eslint.config.js +107 -107
  262. package/template/web-extension/package.json +4 -4
  263. package/template/web-extension/postcss.config.cjs +8 -8
  264. package/template/web-extension/shared/background/index.ts +1 -1
  265. package/template/web-extension/shared/background/message.ts +7 -7
  266. package/template/web-extension/shared/components/app-context/view.tsx +19 -19
  267. package/template/web-extension/shared/components/index.ts +1 -1
  268. package/template/web-extension/shared/hooks/index.ts +2 -2
  269. package/template/web-extension/shared/hooks/useSyncState.ts +15 -15
  270. package/template/web-extension/shared/hooks/useVisible.ts +27 -27
  271. package/template/web-extension/shared/service/index.ts +1 -1
  272. package/template/web-extension/shared/service/request.ts +5 -5
  273. package/template/web-extension/shared/styles/theme.ts +0 -10
  274. package/template/web-extension/tsconfig.node.json +10 -10
  275. package/template/lib/workspace/node_modules/.pnpm/node_modules/react-lib/.gitignore +0 -26
  276. package/template/lib/workspace/node_modules/.pnpm/node_modules/ts-lib/.gitignore +0 -25
  277. package/template/lib/workspace/packages/ts/coverage/base.css +0 -224
  278. package/template/lib/workspace/packages/ts/coverage/block-navigation.js +0 -87
  279. package/template/lib/workspace/packages/ts/coverage/clover.xml +0 -16
  280. package/template/lib/workspace/packages/ts/coverage/coverage-final.json +0 -3
  281. package/template/lib/workspace/packages/ts/coverage/favicon.png +0 -0
  282. package/template/lib/workspace/packages/ts/coverage/index.html +0 -131
  283. package/template/lib/workspace/packages/ts/coverage/index.ts.html +0 -88
  284. package/template/lib/workspace/packages/ts/coverage/prettify.css +0 -1
  285. package/template/lib/workspace/packages/ts/coverage/prettify.js +0 -2
  286. package/template/lib/workspace/packages/ts/coverage/sort-arrow-sprite.png +0 -0
  287. package/template/lib/workspace/packages/ts/coverage/sorter.js +0 -196
  288. package/template/lib/workspace/packages/ts/coverage/sum.ts.html +0 -94
  289. package/template/web-app/react-rsbuild/shared/hooks/useLoadingAction.ts +0 -27
  290. package/template/web-app/react-vite/shared/hooks/useLoadingAction.ts +0 -27
@@ -23,7 +23,7 @@
23
23
  "@tanstack/react-query": "5.51.15",
24
24
  "axios": "1.7.9",
25
25
  "define-zustand": "3.4.0",
26
- "es-toolkit": "1.39.8",
26
+ "es-toolkit": "1.43.0",
27
27
  "immer": "10.0.1",
28
28
  "qs": "6.11.2",
29
29
  "react": "18.3.1",
@@ -44,7 +44,7 @@
44
44
  "@types/qs": "6.9.7",
45
45
  "@types/react": "18.3.3",
46
46
  "@types/react-dom": "18.3.0",
47
- "@vitejs/plugin-react": "5.0.1",
47
+ "@vitejs/plugin-react": "5.1.2",
48
48
  "autoprefixer": "10.4.14",
49
49
  "commitizen": "4.3.0",
50
50
  "cssnano": "6.0.0",
@@ -65,9 +65,9 @@
65
65
  "stylelint-config-standard": "36.0.1",
66
66
  "typescript": "5.8.2",
67
67
  "typescript-eslint": "8.15.0",
68
- "vite": "7.1.3",
69
- "vite-plugin-checker": "0.10.2",
70
- "vite-plugin-mock-dev-server": "1.9.3",
68
+ "vite": "7.3.0",
69
+ "vite-plugin-checker": "0.12.0",
70
+ "vite-plugin-mock-dev-server": "2.0.7",
71
71
  "vite-plugin-svgr": "4.5.0"
72
72
  },
73
73
  "config": {
@@ -1,18 +1,18 @@
1
- import { useEffect } from 'react'
2
- import { Outlet, useLocation } from 'react-router'
3
- import { useRouter, routerIds } from '@/domain/router'
4
-
5
- const Layout = () => {
6
- const location = useLocation()
7
- const navigate = useRouter(state => state.navigate)
8
-
9
- useEffect(() => {
10
- if (location.pathname === '/') {
11
- navigate({ id: routerIds.home })
12
- }
13
- }, [location])
14
-
15
- return <Outlet />
16
- }
17
-
18
- export default Layout
1
+ import { useEffect } from 'react'
2
+ import { Outlet, useLocation } from 'react-router'
3
+ import { useRouter, routerIds } from '@/domain/router'
4
+
5
+ const Layout = () => {
6
+ const location = useLocation()
7
+ const navigate = useRouter(state => state.navigate)
8
+
9
+ useEffect(() => {
10
+ if (location.pathname === '/') {
11
+ navigate({ id: routerIds.home })
12
+ }
13
+ }, [location])
14
+
15
+ return <Outlet />
16
+ }
17
+
18
+ export default Layout
@@ -1,3 +1,3 @@
1
- export default function NotFound() {
2
- return <div>404</div>
3
- }
1
+ export default function NotFound() {
2
+ return <div>404</div>
3
+ }
@@ -1,8 +1,8 @@
1
- module.exports = {
2
- plugins: {
3
- 'postcss-import': {},
4
- 'postcss-nesting': {},
5
- autoprefixer: {},
6
- ...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})
7
- }
8
- }
1
+ module.exports = {
2
+ plugins: {
3
+ 'postcss-import': {},
4
+ 'postcss-nesting': {},
5
+ autoprefixer: {},
6
+ ...(process.env.NODE_ENV === 'production' ? { cssnano: {} } : {})
7
+ }
8
+ }
@@ -1,27 +1,27 @@
1
- import { isRegExp, remove } from 'es-toolkit'
2
- import { concat, forEach, forOwn, isArray, size } from 'es-toolkit/compat'
3
- import pkg from '../package.json'
4
-
5
- export function createChunks(chunks: { [key: string]: Array<string | RegExp> }) {
6
- const vendor = Object.keys(pkg.dependencies)
7
- const result: { [key: string]: string[] } = {}
8
-
9
- forOwn(chunks, (values, key) => {
10
- if (!isArray(result[key])) {
11
- result[key] = []
12
- }
13
- forEach(values, value => {
14
- let modules: string[] = []
15
- if (isRegExp(value)) {
16
- modules = remove(vendor, name => value.test(name))
17
- } else {
18
- modules = remove(vendor, name => name === value)
19
- }
20
- if (size(modules) > 0) {
21
- result[key] = concat(result[key], modules)
22
- }
23
- })
24
- })
25
- result.vendor = vendor
26
- return result
27
- }
1
+ import { isRegExp, remove } from 'es-toolkit'
2
+ import { concat, forEach, forOwn, isArray, size } from 'es-toolkit/compat'
3
+ import pkg from '../package.json'
4
+
5
+ export function createChunks(chunks: { [key: string]: Array<string | RegExp> }) {
6
+ const vendor = Object.keys(pkg.dependencies)
7
+ const result: { [key: string]: string[] } = {}
8
+
9
+ forOwn(chunks, (values, key) => {
10
+ if (!isArray(result[key])) {
11
+ result[key] = []
12
+ }
13
+ forEach(values, value => {
14
+ let modules: string[] = []
15
+ if (isRegExp(value)) {
16
+ modules = remove(vendor, name => value.test(name))
17
+ } else {
18
+ modules = remove(vendor, name => name === value)
19
+ }
20
+ if (size(modules) > 0) {
21
+ result[key] = concat(result[key], modules)
22
+ }
23
+ })
24
+ })
25
+ result.vendor = vendor
26
+ return result
27
+ }
@@ -1 +1 @@
1
- export * from './createChunks'
1
+ export * from './createChunks'
@@ -1,33 +1,33 @@
1
- import { FunctionComponent, ReactNode } from 'react'
2
- import { RouteObject } from 'react-router'
3
-
4
- export type routeType = Omit<RouteObject, 'children' | 'id'> & {
5
- id: string
6
- meta?: {
7
- title?: string
8
- /** 只在当前路由才显示的小提示 */
9
- tip?: string
10
- }
11
- /** 静态配置,便于回退 */
12
- unauthorizedOrigin?: boolean
13
- /** 动态使用,用于程序校验 */
14
- unauthorized?: boolean
15
- query?: () => Record<string, any>
16
- menu?: {
17
- hidden?: boolean
18
- icon?: FunctionComponent
19
- label?: ReactNode
20
- }
21
- children?: routeType[]
22
- }
23
-
24
- export type editableRouteType = Omit<routeType, 'element' | 'errorElement' | 'children'>
25
-
26
- export interface routerFactoryArgType {
27
- basename: string
28
- routes: routeType[]
29
- }
30
-
31
- export type routeByIdType = Omit<routeType, 'children'> & {
32
- pos: string
33
- }
1
+ import { FunctionComponent, ReactNode } from 'react'
2
+ import { RouteObject } from 'react-router'
3
+
4
+ export type routeType = Omit<RouteObject, 'children' | 'id'> & {
5
+ id: string
6
+ meta?: {
7
+ title?: string
8
+ /** 只在当前路由才显示的小提示 */
9
+ tip?: string
10
+ }
11
+ /** 静态配置,便于回退 */
12
+ unauthorizedOrigin?: boolean
13
+ /** 动态使用,用于程序校验 */
14
+ unauthorized?: boolean
15
+ query?: () => Record<string, any>
16
+ menu?: {
17
+ hidden?: boolean
18
+ icon?: FunctionComponent
19
+ label?: ReactNode
20
+ }
21
+ children?: routeType[]
22
+ }
23
+
24
+ export type editableRouteType = Omit<routeType, 'element' | 'errorElement' | 'children'>
25
+
26
+ export interface routerFactoryArgType {
27
+ basename: string
28
+ routes: routeType[]
29
+ }
30
+
31
+ export type routeByIdType = Omit<routeType, 'children'> & {
32
+ pos: string
33
+ }
@@ -1,161 +1,161 @@
1
- import { DependencyList, useEffect, useMemo } from 'react'
2
- import { useMatches, useSearchParams, NavigateOptions, createBrowserRouter } from 'react-router'
3
- import { omit, cloneDeep, last } from 'es-toolkit'
4
- import { assign, isArray, reduce, get, map, split, forEach } from 'es-toolkit/compat'
5
- import { stringify, parse } from 'qs'
6
- import { defineStore } from 'define-zustand'
7
- import { routeByIdType, routeType, editableRouteType } from './defineRouter.types'
8
-
9
- export default function defineRouter(router: ReturnType<typeof createBrowserRouter>) {
10
- const useRouter = defineStore({
11
- state: () => ({
12
- routes: cloneDeep(router.routes) as routeType[]
13
- }),
14
- getters: {
15
- routesById: state => {
16
- return (function flat(routes: routeType[], parentRoute?: routeByIdType) {
17
- return reduce(
18
- routes,
19
- (result, { children, ...route }, i) => {
20
- const $route: routeByIdType = {
21
- ...route,
22
- pos: parentRoute?.pos ? `${parentRoute?.pos}-${i}` : `${i}`
23
- }
24
- if (parentRoute) {
25
- $route.path = `${
26
- parentRoute.path === '/' ? '' : parentRoute.path
27
- }/${$route.path}`
28
- }
29
- result[$route.id] = $route
30
- if (isArray(children)) {
31
- assign(result, flat(children, $route))
32
- }
33
- return result
34
- },
35
- {} as Record<string, routeByIdType>
36
- )
37
- })(state.routes)
38
- }
39
- },
40
- actions: (setState, getState) => {
41
- function posToLodashPath(pos: string) {
42
- if (pos) {
43
- return `[${split(pos, '-').join('].children[')}]`
44
- }
45
- return ''
46
- }
47
-
48
- function updateRoute(id: routeType['id'], updator: (route: editableRouteType) => void) {
49
- const { routesById, routes } = getState()
50
- const newRoutes = cloneDeep(routes)
51
- const path = posToLodashPath(routesById[id].pos)
52
- const route: routeType = get(newRoutes, path)
53
- const newRoute = cloneDeep(omit(route, ['element', 'errorElement', 'children']))
54
- updator(newRoute)
55
- assign(route, newRoute)
56
- setState({ routes: newRoutes })
57
- }
58
- function getRoute(id: routeType['id'], path?: string | string[]) {
59
- const { routesById } = getState()
60
- const route = routesById[id]
61
- if (path) {
62
- return get(route, path)
63
- }
64
- return route
65
- }
66
-
67
- function genRouteUrl(id: routeType['id'], query?: Record<string, any>) {
68
- const path = getRoute(id, 'path')
69
- if (path) {
70
- const { origin } = window.location
71
- let url = origin + router.basename + path
72
- url += query ? `?${stringify(query)}` : ''
73
- return url
74
- }
75
- return void 0
76
- }
77
-
78
- function openRoute(id: routeType['id'], query?: Record<string, any>) {
79
- const url = genRouteUrl(id, query)
80
- if (url) {
81
- window.open(url)
82
- }
83
- }
84
-
85
- function reloadRoute(id: routeType['id'], query?: Record<string, any>) {
86
- const url = genRouteUrl(id, query)
87
- if (url) {
88
- window.location.replace(url)
89
- }
90
- }
91
-
92
- function navigate(
93
- to: { id: routeType['id']; query?: Record<string, any> },
94
- opts?: NavigateOptions
95
- ) {
96
- return router.navigate(
97
- {
98
- pathname: getRoute(to.id, 'path'),
99
- search: to.query ? stringify(to.query) : ''
100
- },
101
- opts
102
- )
103
- }
104
-
105
- return {
106
- navigate,
107
- getRoute,
108
- genRouteUrl,
109
- openRoute,
110
- reloadRoute,
111
- updateRoute
112
- }
113
- }
114
- })
115
- function useQuery<Q>() {
116
- const [params] = useSearchParams()
117
- const query = parse(params.toString())
118
-
119
- return query as Q
120
- }
121
-
122
- function useMatchRoutes(): routeType[] {
123
- const matches = useMatches()
124
- const getRoute = useRouter(state => state.getRoute)
125
- return useMemo(() => map(matches, o => getRoute(o.id)), [matches])
126
- }
127
-
128
- /**
129
- * @description 验证器返回false则无权限
130
- */
131
- function useRoutePermission(
132
- config: {
133
- redirectRouteId: string
134
- validator: (currentRoute?: routeType) => boolean
135
- },
136
- deps: DependencyList
137
- ) {
138
- const matchRoutes = useMatchRoutes()
139
- const currentRoute = last(matchRoutes)
140
- const updateRoute = useRouter(state => state.updateRoute)
141
- const navigate = useRouter(state => state.navigate)
142
- const routesById = useRouter(state => state.routesById)
143
-
144
- useEffect(() => {
145
- forEach(routesById, route => {
146
- updateRoute(route.id, route => {
147
- route.unauthorized = !config.validator(route)
148
- })
149
- })
150
- }, deps)
151
-
152
- useEffect(() => {
153
- const result = config.validator(currentRoute)
154
- if (!result && config.redirectRouteId) {
155
- navigate({ id: config.redirectRouteId }, { replace: true })
156
- }
157
- }, [currentRoute?.id, ...deps])
158
- }
159
-
160
- return { useRouter, useQuery, useMatchRoutes, useRoutePermission }
161
- }
1
+ import { DependencyList, useEffect, useMemo } from 'react'
2
+ import { useMatches, useSearchParams, NavigateOptions, createBrowserRouter } from 'react-router'
3
+ import { omit, cloneDeep, last } from 'es-toolkit'
4
+ import { assign, isArray, reduce, get, map, split, forEach } from 'es-toolkit/compat'
5
+ import { stringify, parse } from 'qs'
6
+ import { defineStore } from 'define-zustand'
7
+ import { routeByIdType, routeType, editableRouteType } from './defineRouter.types'
8
+
9
+ export default function defineRouter(router: ReturnType<typeof createBrowserRouter>) {
10
+ const useRouter = defineStore({
11
+ state: () => ({
12
+ routes: cloneDeep(router.routes) as routeType[]
13
+ }),
14
+ getters: {
15
+ routesById: state => {
16
+ return (function flat(routes: routeType[], parentRoute?: routeByIdType) {
17
+ return reduce(
18
+ routes,
19
+ (result, { children, ...route }, i) => {
20
+ const $route: routeByIdType = {
21
+ ...route,
22
+ pos: parentRoute?.pos ? `${parentRoute?.pos}-${i}` : `${i}`
23
+ }
24
+ if (parentRoute) {
25
+ $route.path = `${
26
+ parentRoute.path === '/' ? '' : parentRoute.path
27
+ }/${$route.path}`
28
+ }
29
+ result[$route.id] = $route
30
+ if (isArray(children)) {
31
+ assign(result, flat(children, $route))
32
+ }
33
+ return result
34
+ },
35
+ {} as Record<string, routeByIdType>
36
+ )
37
+ })(state.routes)
38
+ }
39
+ },
40
+ actions: (setState, getState) => {
41
+ function posToLodashPath(pos: string) {
42
+ if (pos) {
43
+ return `[${split(pos, '-').join('].children[')}]`
44
+ }
45
+ return ''
46
+ }
47
+
48
+ function updateRoute(id: routeType['id'], updator: (route: editableRouteType) => void) {
49
+ const { routesById, routes } = getState()
50
+ const newRoutes = cloneDeep(routes)
51
+ const path = posToLodashPath(routesById[id].pos)
52
+ const route: routeType = get(newRoutes, path)
53
+ const newRoute = cloneDeep(omit(route, ['element', 'errorElement', 'children']))
54
+ updator(newRoute)
55
+ assign(route, newRoute)
56
+ setState({ routes: newRoutes })
57
+ }
58
+ function getRoute(id: routeType['id'], path?: string | string[]) {
59
+ const { routesById } = getState()
60
+ const route = routesById[id]
61
+ if (path) {
62
+ return get(route, path)
63
+ }
64
+ return route
65
+ }
66
+
67
+ function genRouteUrl(id: routeType['id'], query?: Record<string, any>) {
68
+ const path = getRoute(id, 'path')
69
+ if (path) {
70
+ const { origin } = window.location
71
+ let url = origin + router.basename + path
72
+ url += query ? `?${stringify(query)}` : ''
73
+ return url
74
+ }
75
+ return void 0
76
+ }
77
+
78
+ function openRoute(id: routeType['id'], query?: Record<string, any>) {
79
+ const url = genRouteUrl(id, query)
80
+ if (url) {
81
+ window.open(url)
82
+ }
83
+ }
84
+
85
+ function reloadRoute(id: routeType['id'], query?: Record<string, any>) {
86
+ const url = genRouteUrl(id, query)
87
+ if (url) {
88
+ window.location.replace(url)
89
+ }
90
+ }
91
+
92
+ function navigate(
93
+ to: { id: routeType['id']; query?: Record<string, any> },
94
+ opts?: NavigateOptions
95
+ ) {
96
+ return router.navigate(
97
+ {
98
+ pathname: getRoute(to.id, 'path'),
99
+ search: to.query ? stringify(to.query) : ''
100
+ },
101
+ opts
102
+ )
103
+ }
104
+
105
+ return {
106
+ navigate,
107
+ getRoute,
108
+ genRouteUrl,
109
+ openRoute,
110
+ reloadRoute,
111
+ updateRoute
112
+ }
113
+ }
114
+ })
115
+ function useQuery<Q>() {
116
+ const [params] = useSearchParams()
117
+ const query = parse(params.toString())
118
+
119
+ return query as Q
120
+ }
121
+
122
+ function useMatchRoutes(): routeType[] {
123
+ const matches = useMatches()
124
+ const getRoute = useRouter(state => state.getRoute)
125
+ return useMemo(() => map(matches, o => getRoute(o.id)), [matches])
126
+ }
127
+
128
+ /**
129
+ * @description 验证器返回false则无权限
130
+ */
131
+ function useRoutePermission(
132
+ config: {
133
+ redirectRouteId: string
134
+ validator: (currentRoute?: routeType) => boolean
135
+ },
136
+ deps: DependencyList
137
+ ) {
138
+ const matchRoutes = useMatchRoutes()
139
+ const currentRoute = last(matchRoutes)
140
+ const updateRoute = useRouter(state => state.updateRoute)
141
+ const navigate = useRouter(state => state.navigate)
142
+ const routesById = useRouter(state => state.routesById)
143
+
144
+ useEffect(() => {
145
+ forEach(routesById, route => {
146
+ updateRoute(route.id, route => {
147
+ route.unauthorized = !config.validator(route)
148
+ })
149
+ })
150
+ }, deps)
151
+
152
+ useEffect(() => {
153
+ const result = config.validator(currentRoute)
154
+ if (!result && config.redirectRouteId) {
155
+ navigate({ id: config.redirectRouteId }, { replace: true })
156
+ }
157
+ }, [currentRoute?.id, ...deps])
158
+ }
159
+
160
+ return { useRouter, useQuery, useMatchRoutes, useRoutePermission }
161
+ }
@@ -1,2 +1,2 @@
1
- export { default as defineRouter } from './deineRouter'
2
- export * from './defineRouter.types'
1
+ export { default as defineRouter } from './deineRouter'
2
+ export * from './defineRouter.types'
@@ -1,6 +1,7 @@
1
- export { default as useLoadingAction } from './useLoadingAction'
2
- export { default as useInterval } from './useInterval'
3
- export { default as useVisible } from './useVisible'
4
- export { default as useLowPriorityState } from './useLowPriorityState'
5
- export * from './useSyncState'
6
- export * from './defineRouter'
1
+ export { default as useInterval } from './useInterval'
2
+ export { default as useVisible } from './useVisible'
3
+ export { default as useLowPriorityState } from './useLowPriorityState'
4
+ export * from './useSyncState'
5
+ export * from './defineRouter'
6
+ export * from './useDebounceFn'
7
+ export * from './useLazyRender'
@@ -0,0 +1,37 @@
1
+ import { useCallback, DependencyList, useState } from 'react'
2
+ import { useSyncState } from './useSyncState'
3
+
4
+ interface optionsType {
5
+ /**
6
+ * @description 开启后会等待loading结束才可以继续执行
7
+ * @default true
8
+ */
9
+ debounce?: boolean
10
+ }
11
+
12
+ export function useDebounceFn<C extends (...arg: any) => Promise<any>>(
13
+ callback: C | undefined,
14
+ deps: DependencyList,
15
+ options?: optionsType
16
+ ) {
17
+ const [loadingSync, loading, setLoading] = useSyncState(false)
18
+ const [error, setError] = useState<Error | null>(null)
19
+ const debounce = options?.debounce ?? true
20
+
21
+ const handle = useCallback(async (...arg: any) => {
22
+ if (debounce && loadingSync.current) {
23
+ return
24
+ }
25
+ try {
26
+ setLoading(true)
27
+ setError(null)
28
+ return await callback?.(...arg)
29
+ } catch (e: any) {
30
+ setError(e)
31
+ } finally {
32
+ setLoading(false)
33
+ }
34
+ }, deps) as C
35
+
36
+ return [handle, { loading, error }] as const
37
+ }
@@ -1,26 +1,26 @@
1
- import { useState } from 'react'
2
- import { useInterval as useRUInterval } from 'react-use'
3
-
4
- interface actionsType {
5
- start: () => void
6
- stop: () => void
7
- }
8
- export default function useInterval(
9
- cb: (actions: actionsType) => Promise<void> | void,
10
- delay: number
11
- ): actionsType {
12
- const [startInterval, setStartInterval] = useState(false)
13
- const start: actionsType['start'] = () => {
14
- setStartInterval(true)
15
- }
16
- const stop: actionsType['stop'] = () => {
17
- setStartInterval(false)
18
- }
19
- useRUInterval(
20
- async () => {
21
- cb({ start, stop })
22
- },
23
- startInterval ? delay : null
24
- )
25
- return { start, stop }
26
- }
1
+ import { useState } from 'react'
2
+ import { useInterval as useRUInterval } from 'react-use'
3
+
4
+ interface actionsType {
5
+ start: () => void
6
+ stop: () => void
7
+ }
8
+ export default function useInterval(
9
+ cb: (actions: actionsType) => Promise<void> | void,
10
+ delay: number
11
+ ): actionsType {
12
+ const [startInterval, setStartInterval] = useState(false)
13
+ const start: actionsType['start'] = () => {
14
+ setStartInterval(true)
15
+ }
16
+ const stop: actionsType['stop'] = () => {
17
+ setStartInterval(false)
18
+ }
19
+ useRUInterval(
20
+ async () => {
21
+ cb({ start, stop })
22
+ },
23
+ startInterval ? delay : null
24
+ )
25
+ return { start, stop }
26
+ }