create-packer 1.46.4 → 1.47.0

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 (283) 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 +97 -97
  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 +87 -87
  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 +6 -6
  112. package/template/web-app/react-rsbuild/package.json +79 -79
  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/tsconfig.json +33 -33
  137. package/template/web-app/react-rsbuild/tsconfig.node.json +10 -10
  138. package/template/web-app/react-vite/.gitignore +3 -3
  139. package/template/web-app/react-vite/.vscode/extensions.json +7 -7
  140. package/template/web-app/react-vite/.vscode/settings.json +4 -4
  141. package/template/web-app/react-vite/domain/components/index.ts +1 -1
  142. package/template/web-app/react-vite/domain/models/app.ts +7 -7
  143. package/template/web-app/react-vite/domain/router/components/route-layout.tsx +19 -19
  144. package/template/web-app/react-vite/domain/router/components/sub-route-outlet.tsx +22 -22
  145. package/template/web-app/react-vite/domain/router/home/ids.ts +3 -3
  146. package/template/web-app/react-vite/domain/router/home/index.ts +2 -2
  147. package/template/web-app/react-vite/domain/router/home/routes.tsx +13 -13
  148. package/template/web-app/react-vite/domain/router/ids.ts +6 -6
  149. package/template/web-app/react-vite/domain/router/router.tsx +28 -28
  150. package/template/web-app/react-vite/domain/router/router.types.ts +3 -3
  151. package/template/web-app/react-vite/eslint.config.js +114 -114
  152. package/template/web-app/react-vite/mockUtils.ts +6 -6
  153. package/template/web-app/react-vite/package.json +78 -78
  154. package/template/web-app/react-vite/pages/index.tsx +18 -18
  155. package/template/web-app/react-vite/pages/not-found.tsx +3 -3
  156. package/template/web-app/react-vite/postcss.config.cjs +8 -8
  157. package/template/web-app/react-vite/scripts/createChunks.ts +27 -27
  158. package/template/web-app/react-vite/scripts/index.ts +1 -1
  159. package/template/web-app/react-vite/shared/hooks/defineRouter/defineRouter.types.ts +33 -33
  160. package/template/web-app/react-vite/shared/hooks/defineRouter/deineRouter.tsx +161 -161
  161. package/template/web-app/react-vite/shared/hooks/defineRouter/index.ts +2 -2
  162. package/template/web-app/react-vite/shared/hooks/index.ts +7 -6
  163. package/template/web-app/react-vite/shared/hooks/useDebounceFn.ts +37 -0
  164. package/template/web-app/react-vite/shared/hooks/useInterval.ts +26 -26
  165. package/template/web-app/react-vite/shared/hooks/useLazyRender.ts +30 -0
  166. package/template/web-app/react-vite/shared/hooks/useLowPriorityState.ts +26 -26
  167. package/template/web-app/react-vite/shared/hooks/useSyncState.ts +15 -15
  168. package/template/web-app/react-vite/shared/hooks/useVisible.ts +27 -27
  169. package/template/web-app/react-vite/shared/service/api.ts +1 -1
  170. package/template/web-app/react-vite/shared/service/home.ts +9 -9
  171. package/template/web-app/react-vite/shared/service/index.ts +3 -3
  172. package/template/web-app/react-vite/shared/service/request.ts +5 -5
  173. package/template/web-app/react-vite/tsconfig.json +33 -33
  174. package/template/web-app/react-vite/tsconfig.node.json +10 -10
  175. package/template/web-app/vue/.vscode/extensions.json +9 -9
  176. package/template/web-app/vue/domain/components/app.vue +18 -18
  177. package/template/web-app/vue/domain/components/createComponentInstance.ts +43 -43
  178. package/template/web-app/vue/domain/components/index.ts +2 -2
  179. package/template/web-app/vue/domain/router/home/index.ts +2 -2
  180. package/template/web-app/vue/domain/router/home/names.ts +3 -3
  181. package/template/web-app/vue/domain/router/home/routes.ts +8 -8
  182. package/template/web-app/vue/domain/router/index.ts +26 -26
  183. package/template/web-app/vue/domain/router/names.ts +5 -5
  184. package/template/web-app/vue/eslint.config.js +123 -123
  185. package/template/web-app/vue/main.css +4 -4
  186. package/template/web-app/vue/main.ts +7 -7
  187. package/template/web-app/vue/mockUtils.ts +6 -6
  188. package/template/web-app/vue/pages/home/view.vue +16 -16
  189. package/template/web-app/vue/pages/index.ts +1 -1
  190. package/template/web-app/vue/pages/index.vue +3 -3
  191. package/template/web-app/vue/pages/not-found.vue +3 -3
  192. package/template/web-app/vue/postcss.config.cjs +8 -8
  193. package/template/web-app/vue/scripts/createChunks.ts +27 -27
  194. package/template/web-app/vue/scripts/index.ts +1 -1
  195. package/template/web-app/vue/shared/hooks/index.ts +2 -2
  196. package/template/web-app/vue/shared/hooks/useList.ts +86 -86
  197. package/template/web-app/vue/shared/hooks/useVisible.ts +27 -27
  198. package/template/web-app/vue/shared/service/api.ts +1 -1
  199. package/template/web-app/vue/shared/service/home.ts +7 -7
  200. package/template/web-app/vue/shared/service/index.ts +3 -3
  201. package/template/web-app/vue/shared/service/request.ts +5 -5
  202. package/template/web-app/vue/tsconfig.json +25 -25
  203. package/template/web-app/vue/tsconfig.node.json +10 -10
  204. package/template/web-app/vue/vite-env.d.ts +18 -18
  205. package/template/web-app/vue/vite.config.ts +68 -68
  206. package/template/web-app/vue-rsbuild/.vscode/extensions.json +9 -9
  207. package/template/web-app/vue-rsbuild/domain/components/app.vue +18 -18
  208. package/template/web-app/vue-rsbuild/domain/components/createComponentInstance.ts +43 -43
  209. package/template/web-app/vue-rsbuild/domain/components/index.ts +2 -2
  210. package/template/web-app/vue-rsbuild/domain/router/home/index.ts +2 -2
  211. package/template/web-app/vue-rsbuild/domain/router/home/names.ts +3 -3
  212. package/template/web-app/vue-rsbuild/domain/router/home/routes.ts +8 -8
  213. package/template/web-app/vue-rsbuild/domain/router/index.ts +26 -26
  214. package/template/web-app/vue-rsbuild/domain/router/names.ts +5 -5
  215. package/template/web-app/vue-rsbuild/env.d.ts +18 -18
  216. package/template/web-app/vue-rsbuild/eslint.config.js +114 -114
  217. package/template/web-app/vue-rsbuild/main.css +4 -4
  218. package/template/web-app/vue-rsbuild/main.ts +7 -7
  219. package/template/web-app/vue-rsbuild/package.json +73 -73
  220. package/template/web-app/vue-rsbuild/pages/home/view.vue +16 -16
  221. package/template/web-app/vue-rsbuild/pages/index.ts +1 -1
  222. package/template/web-app/vue-rsbuild/pages/index.vue +3 -3
  223. package/template/web-app/vue-rsbuild/pages/not-found.vue +3 -3
  224. package/template/web-app/vue-rsbuild/postcss.config.cjs +9 -9
  225. package/template/web-app/vue-rsbuild/rsbuild.config.ts +77 -77
  226. package/template/web-app/vue-rsbuild/scripts/createChunks.ts +26 -26
  227. package/template/web-app/vue-rsbuild/scripts/index.ts +1 -1
  228. package/template/web-app/vue-rsbuild/shared/hooks/index.ts +2 -2
  229. package/template/web-app/vue-rsbuild/shared/hooks/useList.ts +86 -86
  230. package/template/web-app/vue-rsbuild/shared/hooks/useVisible.ts +27 -27
  231. package/template/web-app/vue-rsbuild/shared/service/api.ts +1 -1
  232. package/template/web-app/vue-rsbuild/shared/service/home.ts +7 -7
  233. package/template/web-app/vue-rsbuild/shared/service/index.ts +3 -3
  234. package/template/web-app/vue-rsbuild/shared/service/request.ts +5 -5
  235. package/template/web-app/vue-rsbuild/tsconfig.json +25 -25
  236. package/template/web-app/vue-rsbuild/tsconfig.node.json +10 -10
  237. package/template/web-extension/.vscode/extensions.json +7 -7
  238. package/template/web-extension/.vscode/settings.json +4 -4
  239. package/template/web-extension/.wxt/eslint-auto-imports.mjs +56 -56
  240. package/template/web-extension/.wxt/eslintrc-auto-import.json +21 -21
  241. package/template/web-extension/.wxt/tsconfig.json +27 -27
  242. package/template/web-extension/.wxt/types/globals.d.ts +15 -15
  243. package/template/web-extension/.wxt/types/i18n.d.ts +81 -81
  244. package/template/web-extension/.wxt/types/imports-module.d.ts +20 -20
  245. package/template/web-extension/.wxt/types/imports.d.ts +50 -50
  246. package/template/web-extension/.wxt/types/paths.d.ts +17 -17
  247. package/template/web-extension/.wxt/wxt.d.ts +7 -7
  248. package/template/web-extension/entrypoints/background/index.ts +7 -7
  249. package/template/web-extension/entrypoints/content/domain/app/index.ts +1 -1
  250. package/template/web-extension/entrypoints/content/domain/app/tools/index.ts +1 -1
  251. package/template/web-extension/entrypoints/content/domain/app/tools/insertApp.tsx +58 -58
  252. package/template/web-extension/entrypoints/content/modules/common/index.ts +2 -2
  253. package/template/web-extension/entrypoints/content/modules/common/insert.tsx +9 -9
  254. package/template/web-extension/entrypoints/content/modules/index.ts +1 -1
  255. package/template/web-extension/eslint.config.js +107 -107
  256. package/template/web-extension/package.json +86 -86
  257. package/template/web-extension/postcss.config.cjs +8 -8
  258. package/template/web-extension/shared/background/index.ts +1 -1
  259. package/template/web-extension/shared/background/message.ts +7 -7
  260. package/template/web-extension/shared/components/app-context/view.tsx +19 -19
  261. package/template/web-extension/shared/components/index.ts +1 -1
  262. package/template/web-extension/shared/hooks/index.ts +2 -2
  263. package/template/web-extension/shared/hooks/useSyncState.ts +15 -15
  264. package/template/web-extension/shared/hooks/useVisible.ts +27 -27
  265. package/template/web-extension/shared/service/index.ts +1 -1
  266. package/template/web-extension/shared/service/request.ts +5 -5
  267. package/template/web-extension/tsconfig.node.json +10 -10
  268. package/template/lib/workspace/node_modules/.pnpm/node_modules/react-lib/.gitignore +0 -26
  269. package/template/lib/workspace/node_modules/.pnpm/node_modules/ts-lib/.gitignore +0 -25
  270. package/template/lib/workspace/packages/ts/coverage/base.css +0 -224
  271. package/template/lib/workspace/packages/ts/coverage/block-navigation.js +0 -87
  272. package/template/lib/workspace/packages/ts/coverage/clover.xml +0 -16
  273. package/template/lib/workspace/packages/ts/coverage/coverage-final.json +0 -3
  274. package/template/lib/workspace/packages/ts/coverage/favicon.png +0 -0
  275. package/template/lib/workspace/packages/ts/coverage/index.html +0 -131
  276. package/template/lib/workspace/packages/ts/coverage/index.ts.html +0 -88
  277. package/template/lib/workspace/packages/ts/coverage/prettify.css +0 -1
  278. package/template/lib/workspace/packages/ts/coverage/prettify.js +0 -2
  279. package/template/lib/workspace/packages/ts/coverage/sort-arrow-sprite.png +0 -0
  280. package/template/lib/workspace/packages/ts/coverage/sorter.js +0 -196
  281. package/template/lib/workspace/packages/ts/coverage/sum.ts.html +0 -94
  282. package/template/web-app/react-rsbuild/shared/hooks/useLoadingAction.ts +0 -27
  283. package/template/web-app/react-vite/shared/hooks/useLoadingAction.ts +0 -27
@@ -1 +1 @@
1
- export * as componentInstance from './componentInstance'
1
+ export * as componentInstance from './componentInstance'
@@ -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,6 @@
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 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,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
+ }
@@ -1,27 +1,27 @@
1
- import { useCallback, useState, DependencyList, useRef } from 'react'
2
-
3
- export default function useLoadingAction<C extends (...arg: any) => Promise<any> | any>(
4
- callback: C,
5
- deps: DependencyList,
6
- debounce = true
7
- ) {
8
- const [loading, setLoading] = useState(false)
9
- const loadingSync = useRef(loading)
10
- function $setLoading(loading: boolean) {
11
- setLoading(loading)
12
- loadingSync.current = loading
13
- }
14
- const action = useCallback(async (...arg: any) => {
15
- if (debounce && loadingSync.current) {
16
- return
17
- }
18
- try {
19
- $setLoading(true)
20
- return await callback(...arg)
21
- } finally {
22
- $setLoading(false)
23
- }
24
- }, deps) as C
25
-
26
- return [loading, action] as const
27
- }
1
+ import { useCallback, useState, DependencyList, useRef } from 'react'
2
+
3
+ export default function useLoadingAction<C extends (...arg: any) => Promise<any> | any>(
4
+ callback: C,
5
+ deps: DependencyList,
6
+ debounce = true
7
+ ) {
8
+ const [loading, setLoading] = useState(false)
9
+ const loadingSync = useRef(loading)
10
+ function $setLoading(loading: boolean) {
11
+ setLoading(loading)
12
+ loadingSync.current = loading
13
+ }
14
+ const action = useCallback(async (...arg: any) => {
15
+ if (debounce && loadingSync.current) {
16
+ return
17
+ }
18
+ try {
19
+ $setLoading(true)
20
+ return await callback(...arg)
21
+ } finally {
22
+ $setLoading(false)
23
+ }
24
+ }, deps) as C
25
+
26
+ return [loading, action] as const
27
+ }
@@ -1,26 +1,26 @@
1
- import { useEffect, useState, useTransition, DependencyList } from 'react'
2
-
3
- /**
4
- *
5
- * @param callback
6
- * @param watches If set, it is autorun callback
7
- * @returns
8
- */
9
- export default function useLowPriorityState<V>(callback: () => V, watches?: DependencyList) {
10
- const [value, setValue] = useState<V>(callback)
11
- const [loading, startTransition] = useTransition()
12
-
13
- function startLoad() {
14
- startTransition(() => {
15
- setValue(callback())
16
- })
17
- }
18
-
19
- useEffect(() => {
20
- if (watches) {
21
- startLoad()
22
- }
23
- }, watches)
24
-
25
- return [value, { loading, startLoad }] as const
26
- }
1
+ import { useEffect, useState, useTransition, DependencyList } from 'react'
2
+
3
+ /**
4
+ *
5
+ * @param callback
6
+ * @param watches If set, it is autorun callback
7
+ * @returns
8
+ */
9
+ export default function useLowPriorityState<V>(callback: () => V, watches?: DependencyList) {
10
+ const [value, setValue] = useState<V>(callback)
11
+ const [loading, startTransition] = useTransition()
12
+
13
+ function startLoad() {
14
+ startTransition(() => {
15
+ setValue(callback())
16
+ })
17
+ }
18
+
19
+ useEffect(() => {
20
+ if (watches) {
21
+ startLoad()
22
+ }
23
+ }, watches)
24
+
25
+ return [value, { loading, startLoad }] as const
26
+ }
@@ -1,15 +1,15 @@
1
- import { useRef, useState, Dispatch, SetStateAction } from 'react'
2
- import { isFunction } from 'es-toolkit'
3
-
4
- export function useSyncState<S>(initialState: S | (() => S)) {
5
- const [state, setState] = useState(initialState)
6
- const syncState = useRef<S>(state)
7
-
8
- const $setState: Dispatch<SetStateAction<S>> = newState => {
9
- const $newState = (isFunction(newState) ? newState(state) : newState) as S
10
- setState($newState)
11
- syncState.current = $newState
12
- }
13
-
14
- return [syncState, state, $setState] as const
15
- }
1
+ import { useRef, useState, Dispatch, SetStateAction } from 'react'
2
+ import { isFunction } from 'es-toolkit'
3
+
4
+ export function useSyncState<S>(initialState: S | (() => S)) {
5
+ const [state, setState] = useState(initialState)
6
+ const syncState = useRef<S>(state)
7
+
8
+ const $setState: Dispatch<SetStateAction<S>> = newState => {
9
+ const $newState = (isFunction(newState) ? newState(state) : newState) as S
10
+ setState($newState)
11
+ syncState.current = $newState
12
+ }
13
+
14
+ return [syncState, state, $setState] as const
15
+ }
@@ -1,27 +1,27 @@
1
- import { useState } from 'react'
2
- import { isFunction } from 'es-toolkit'
3
-
4
- export interface useVisibleConfigType {
5
- defaultVisible?: boolean
6
- onBeforeShow?: () => Promise<boolean | void>
7
- onBeforeHide?: () => Promise<boolean | void>
8
- }
9
- export default function useVisible(config?: useVisibleConfigType) {
10
- const [visible, setVisible] = useState(config?.defaultVisible ?? false)
11
- const onShow = async () => {
12
- let isShow: boolean | void = true
13
- if (isFunction(config?.onBeforeShow)) {
14
- isShow = await config?.onBeforeShow?.()
15
- }
16
- setVisible(isShow !== false)
17
- }
18
- const onClose = async () => {
19
- let isHide: boolean | void = true
20
- if (isFunction(config?.onBeforeHide)) {
21
- isHide = await config?.onBeforeHide?.()
22
- }
23
- setVisible(isHide === false)
24
- }
25
-
26
- return { visible, onShow, onClose }
27
- }
1
+ import { useState } from 'react'
2
+ import { isFunction } from 'es-toolkit'
3
+
4
+ export interface useVisibleConfigType {
5
+ defaultVisible?: boolean
6
+ onBeforeShow?: () => Promise<boolean | void>
7
+ onBeforeHide?: () => Promise<boolean | void>
8
+ }
9
+ export default function useVisible(config?: useVisibleConfigType) {
10
+ const [visible, setVisible] = useState(config?.defaultVisible ?? false)
11
+ const onShow = async () => {
12
+ let isShow: boolean | void = true
13
+ if (isFunction(config?.onBeforeShow)) {
14
+ isShow = await config?.onBeforeShow?.()
15
+ }
16
+ setVisible(isShow !== false)
17
+ }
18
+ const onClose = async () => {
19
+ let isHide: boolean | void = true
20
+ if (isFunction(config?.onBeforeHide)) {
21
+ isHide = await config?.onBeforeHide?.()
22
+ }
23
+ setVisible(isHide === false)
24
+ }
25
+
26
+ return { visible, onShow, onClose }
27
+ }